求一个C语言程序。小型数据库。一个管理系统。功能包括:查询,修改等等。。带解释的 谢谢~!
数据库是用来存入数据的仓库。用户可以对文件中的数据进行新增、查询、更新、删除等操作。但是C语言和数据库是两个东西,他们之间的关系就是C语言可以用来开发数据库管理软件,也可以通过C语言借助于SQL语句来操作数据库。
C语言普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面:
其一,广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。
其二,简洁性。9 类控制语句和32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。
扩展资料数据库架构
1、内层:最接近实际存储体,亦即有关数据的实际存储方式。
2、外层:最接近用户,即有关个别用户观看数据的方式。
3、概念层:介于两者之间的间接层。
参考资料来源:百度百科--数据库
#include
#include
int chazhao(int a[],int x,int y);
int main(void)
{
int *shoushang_number;
int sousuo_number,i,n;
printf("输入手上拥有数的个数: ");
scanf("%d",&n);
shoushang_number = (int*)malloc(n*sizeof(int*));
printf("输入拥有的数字:");
for(i=0;i<n;i++)
scanf("%d",(shoushang_number+i));
printf("输入搜索数: ");
scanf("%d",&sousuo_number);
chazhao(shoushang_number,n,sousuo_number);
free(shoushang_number);
return 0;
}
int chazhao(int a[],int x,int y)
{
int b=0,k=0,h=0,c=0,j,m=0,q=0;
for(j=0;j<x;j++)
{
if((y==a[j])&&(b!=1))
{
printf("可能组合方式: 需要一个%d
",a[j]);
b++;
}
}
for(j=0;j<x;j++)
{
k=a[j];
h=j;
for(;j<x;j++)
{
if((y==(k+a[j]))&&(a[j]!=m))
{
m=a[j];
if(k==a[j])
printf("可能组合方式: 需要两个%d
",a[j]);
else
printf("可能组合方式: 需要一个%d和一个%d
",k,a[j]);
}
}
j=h;
}
m=0;
for(j=0;j<x;j++)
{
k=a[j];
h=j;
for(;j<x;j++)
{
for(c=j;c<x;c++)
{
if((y==(k+a[j]+a[c]))&&((k!=q)||(a[c]!=m)))
{
m=a[c];
q=k;
if((k==a[j])&&(k==a[c]))
printf("可能组合方式: 需要三个%d
",k);
else if((k==a[j])&&(k!=a[c]))
printf("可能组合方式: 需要两个%d和一个%d
",k,a[c]);
else if((k!=a[j])&&(a[j]==a[c]))
printf("可能组合方式: 需要两个%d和一个%d
",a[j],k);
else
printf("可能组合方式: 需要一个%d,一个%d和一个%d
",k,a[j],a[c]);
}
}
}
j=h;
}
return 0;
}
在vc上运行成功,能够满足你要求的功能,就用了数组和指针,你应该看得懂吧,给点辛苦分了!!!!
#include "stdlib.h"
#include "conio.h"
#include "math.h"
#include "ctype.h"
#include "string.h"
#define MAX 4
#define TERM 6
struct STUD{
unsigned number;
char name[20];
unsigned score[MAX];
float average;
struct STUD *next;
};
struct CLASS{
unsigned no;
unsigned students;
float score[MAX];
float average;
struct STUD *first;
};
//输出所有学生的成绩及名次
void output(struct CLASS *pclass)
{
struct STUD *p;
int n=0;
printf("Class:%u\t number of students:%u\n",pclass->no ,pclass->students );
printf("number name math physics politics "
"english average place\n");
for(n=1,p=pclass->first ;p!=NULL;p=p->next ,++n)
printf("%-8u%-12s%-8u%-8u%-8u%-8u%-10.2f%-d\n",
p->number ,p->name ,p->score[0] ,p->score [1],
p->score [2],p->score [3],p->average ,n);
}
//按平均成绩排序
void sort(struct CLASS *pclass)
{
struct STUD *p, *next, *last;
int m,n;
for(m=0;m<pclass->students -1;m++)
for(last=p=pclass->first ,n=0;n<pclass->students-1-m;
n++,last=p,p=p->next)
if(p->average<p->next->average){
next=p->next;
if(p!=pclass->first)
last->next=next;
else
pclass->first=next;
next->next=p;
p=next;
}
}
char *cou[MAX]={"math","phusics","politics","english"};
//将链表所有接点写入文件
void write_file(struct CLASS *pclass,FILE *myfile)
{
struct STUD *p;
for(p=pclass->first;p!=NULL;p=p->next)
fwrite(p,sizeof(struct STUD),1,myfile);
}
//从文件中读数据重建链表
void read_file(struct CLASS *pclass,FILE *myfile)
{
struct STUD buf,*p,*tail;
int n;
for(tail=pclass->first ,n=0;n<pclass->students ;tail=p,++n){
if(fread(&buf,sizeof(struct STUD),1,myfile)!=1){
pclass->students =n;
break;
}
p=(struct STUD *) malloc(sizeof(struct STUD));
*p=buf;
//连接成先进先出链表
if(pclass->first==NULL)
pclass->first =p;
else
tail->next =p;
p->next =NULL;
}
}
//增加信息
void insert(struct CLASS *pclass)
{
struct STUD *p,*current,*last;
int k,ch,flag;
do{
p=(struct STUD *) malloc(sizeof(struct STUD));
printf("\ninput number and name of student:");
scanf("%u%s",&p->number ,p->name );
while(1){
for(flag=1,k=0;k<MAX;++k){
printf("\niput %s:",cou[k]);
scanf("%u",&p->score[k]);
if(p->score[k]>100)
flag=0;
}
if(flag) break;
printf("score error\n");
}
p->average =(float)(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4;
//找插入点
for(last=current=pclass->first;current->next&¤t->average>p->average;
last=current,current=current->next );
if(current->next ==NULL&¤t->average>p->average){
p->next =NULL;
current->next =p;
}
else{
p->next =current;
if(current==pclass->first)
pclass->first =p;
else
last->next =p;
}
pclass->students ++;
printf("continue?(y/n)");
while(isspace(ch=getchar()));
}while (ch=='y'||ch=='Y');
}
//删除学生
void delete_stu(struct CLASS *pclass)
{
unsigned ch;
struct STUD *current,*last,*p;
do{
printf("\ninput number of student:");
scanf("%u",&p->number,&ch);
for(last=current=pclass->first;current!=NULL&¤t->number!=ch;
last=current,current=current->next);
if(current!=NULL){
if(current!=pclass->first)
last->next=current->next;
else
pclass->first=current->next;
free(current);
pclass->students--;
}
else
fprintf(stderr,"error:number of student!\n");
printf("continue?(y/n)");
while(isspace(ch=getchar()));
}while (ch=='y'||ch=='Y');
}
void create(struct CLASS *pclass)
{
struct STUD *p,*tmp=NULL;
int n=0,k,ch,flag;
do{
p=(struct STUD *) malloc(sizeof(struct STUD));
printf("\ninput number and name of student:");
scanf("%u%s",&p->number ,p->name );
while(1){
for(flag=1,k=0;k<MAX;++k){
printf("\niput %s:",cou[k]);
scanf("%u",&p->score[k]);
if(p->score[k]>100)
flag=0;
}
if(flag) break;
printf("score error\n");
}
p->average =(float)(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4;
p->next =pclass->first ;
pclass->first =p;
++n;
printf("continue?(y/n)");
while(isspace(ch=getchar()));
}while (ch=='y'||ch=='Y');
pclass->students =n;
}
//计算平均分
void average(struct CLASS *pclass)
{
static double general[MAX],g;
struct STUD *p;
int i;
for(p=pclass->first;p!=NULL;p=p->next)
for(i=0;i<MAX;++i)
general[i]+=p->score[i];
printf("\n math physics politics english\n");
for(i=0;i<MAX;++i){
pclass->score[i]=general[i]/pclass->students ;
printf("%10.2f",pclass->score[i]);
g+=general[i];
}
pclass->average =g/(MAX*pclass->students );
printf("\ngeneral average:%10.2f\n",pclass->average );
}
void main()
{
struct CLASS cla;
FILE *fp;
int flag=1,k;
char c,*menu[]={
"\n1:insert a student\n",
"2:delete a student\n",
"3:save into file\n",
"4:print class score list\n",
"5:stat average\n",
"0:exit\n",
"\nselect[0-6]:"
};
if((fp=fopen("students.dat","rb"))==NULL){
printf("input number of class:");
scanf("%u",&cla.no);
cla.students=0;
cla.first=0;
create(&cla);
sort(&cla);
}
else{
fread(&cla,sizeof(struct CLASS),1,fp);
cla.first=NULL;
read_file(&cla,fp);
fclose(fp);
}
while(flag){
for(k=0;k<=TERM;k++)
printf("%s",menu[k]);
scanf("%d",&k);
switch (k){
case 1:
insert(&cla);
break;
case 2:
delete_stu(&cla);
break;
case 3:
if((fp=fopen("students.dat","wb"))==NULL){
fprintf(stderr,"error:can't create file students!\n");
return;
}
fwrite(&cla,sizeof(struct CLASS),1,fp);
write_file(&cla,fp);
fclose(fp);
break;
case 4:
output(&cla);
break;
case 5:
average(&cla);
break;
case 0:
printf("save yout change?(y/n)");
scanf("%c%*c",&c);
c=='y'||c=='Y'?(c=1):(c==0);
if(c){
if((fp=fopen("students.dat","wb"))==NULL){
fprintf(stderr,"error:can't create file students!\n");
return;
}
rewind(fp);
fwrite(&cla,sizeof(struct CLASS),1,fp);
write_file (&cla,fp);
fclose(fp);
}
flag=0;
break;
default:
fprintf(stderr,"select error!\n");
}
}
}
我以前做过,不仅有增删改的功能,还有存盘读盘,并,交,叉,选择,投影,连接,日志功能和权限保护功能,甚至还有并发控制处理的功能。源代码不到4000行,想要的话我可以发给你,可以留下QQ详谈。
c语言一小段程序求解
include "stdio.h"\/\/包含输入输出头文件,printf就在其中main(){ int x1=0xabc,x2=0xdef;\/\/声明x1、x2为有符号整型变量并用十六进制赋初值 x2-=x1;\/\/用x2的值减去x1的值并将结果赋给x2 printf("%x\\n",x2);\/\/用十六进制输出x2的值}结果是十六进制333,即十进制的819。
求一小段C语言程序
printf("1.输入日期\\n2.天数加一\\n3.天数减一\\n4.查看日期\\n");char select;scanf("%s",&select);switch(select){ case '1':inputdate();break;case '2':adddate();break;case '3':minusdate();break;case '4':showdate();break;default:t=1;break;} }while(t);} void inputdate...
如何用c语言编写一个程序,实现按从大到小的顺序排序输出10个数
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:include<stdio.h> int main(){ int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j...
用C语言写一个小程序(一个小功能就可以了),要求:100行代码左右,不要太...
一定要用C语言写哦,100行代码,一个小功能就可以(也不要太简单,上次写了个打印图形什么,被老师骂死了,5555),因为期末课程设计,不能和其他同学相同,尽量自己写一个好吗,谢谢... 一定要用C语言写哦,100行代码,一个小功能就可以(也不要太简单,上次写了个打印图形什么,被老师骂死了,5555),因为期末课程设计,...
用C语言编一程序,输入三个整数,输出其中最小的数
可以参考以下的代码:include <stdio.h> void main(){ int a,b,c,min;scanf("%d%d%d",&a,&b,&c);min=a;if(min>b) min=b;if(min>c) min=c;printf("min=%d\\n",min);}
求大神编一个C语言或者VB小程序。
include <stdio.h> include <math.h> include <stdlib.h> define MAX_DATA_LINE 100\/\/允许的最大输入数据组数,默认为100 int main(){ double data[MAX_DATA_LINE][3];\/\/保存输入的数据 double result[MAX_DATA_LINE-1];\/\/保存计算所得弯曲度 double max_result;\/\/保存最大弯曲度 intm =...
C语言编写一个程序,把560分钟换算成用小时和分钟表示,然后输出
一分钟读懂.c语言程序设计
一个c程序由什么组成
一个C语言程序是由一个main函数和若干个其他函数组成的。资料扩展:C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的...
用C语言写一个小程序!
gotoxy(1,1);printf("|---|");gotoxy(1,2);printf("| money management system(C1.0) 2000.03 |");gotoxy(1,3);printf("|---|");gotoxy(1,4);printf("| -- money records -- | -- today cost list -- |");gotoxy(1,...
用c语言编程一个程序:有n个数已经从小到排列好,要求输入一个数将其插 ...
include <stdio.h>int main(int argc, const char *argv[]){int i = 0, j = 0;int a[11] = {10,20,30,40,50,60,70,80,90,100};int n = 0;int num = 10;int tmp = 0;printf("原有数组:\\n");for (i=0; i<num; i++){printf("%d ",a[i]);}printf("\\n");...
謇待仟德: #include<stdio.h>#include<string.h>#define N 3 void sort(int a[],char name[N][10],int n); //声明排序函数 int binsearch(int x,int a[],int n); //声明查找函数 void main() { int i,a[N],x,h; char name[N][10]; printf("输入学生姓名和C语言成绩:"); for(...
邹平县17692785262: C语言中如何设计一个小型数据库系统设计?
謇待仟德: 类似做个DOS小系统吧.自己定义一些命令,例如insert, delete,select什么的,程序要循环让用户输入命令; 声明结构体和数组来储存命令和用户输入. 例:当用户输入insert时候,可以输出进一步提示,输入插入内容并储存.其他都一样哈. 就是用命令提示,选择入口,执行相应操作!
邹平县17692785262: 求一个用C语言编程的文件型数据库?
謇待仟德: 文件型数据库的选择 Delphi
邹平县17692785262: 如何用C语言建立数据库 - ?
謇待仟德: 用SQLITE吧,像ACCESS.你可以去www.sqlite.org那里下载类库.头文件.以及管理工具.
邹平县17692785262: C语言:建立一个学生信息数据库 - ?
謇待仟德: 1)建立结构体及其10个元素的数组struct Student{int Num;char Name[10];char Sex;double Score[5];}student[10];2)建立一个关于该结构的输入函数,如:void Input(struct Student stu){printf("Input Name:");scanf("%d",&stu.Num)...
邹平县17692785262: 用C语言开发微型数据库管理系统?
謇待仟德: 建议你用sqlite去开发,属于本地数据库,查询什么的直接可以用标准的sql语句,去下载个SharpPlus Sqlite Developer可以方便建表和调试
邹平县17692785262: 求c语言大神,要建一个学生数据库,查找的时候若没有找到,请重新输入该怎么写 - ?
謇待仟德: s:printf("请输入学号:\n"); if(学号正确)printf("输入正确!\n");break;//跳出循环else{print...
邹平县17692785262: c语言 写一个10个elements的database - ?
謇待仟德: 把每一行数据当做字符串了处理,用fgets读 如有别的要求Hi我#include "stdio.h"#define N 10#define M 100 void main() { int i,j; char str[N][M]; FILE *fp; if ( (fp=fopen("cities.dat","r")) == NULL) { printf("cannot open file\n"); exit(1); } while ( !...
邹平县17692785262: 如何用C语言编写数据库 - ?
謇待仟德: 可以用来编写 层次型数据库 和网状数据库 现在美国的几家大型公司还在用c语言编写的层次型的数据库 虽然关系型数据库使用相当广泛但是 在一些具体的场合 速度都跟不上去,处理效率不高 同志的用c语言编写的 , 你的勇气可佳 好好干将来必有前途