1、学生成绩管理系统C语言源码#include#include#include#include#define N 1000 /*链表导入数组的长度,可以说是记录数*/ #define LEN sizeof(struct student) /*用LEN代替结构体的长度*/ #define IFORM %s%s%d%d%d%d%d /*输入数据的格式*/ #define IFORM2 p1-number,p1-name,&p1-grade0,&p1-grade1,&p1-grade2,&p1-grade3,&p1-grade4 /*输入数据存放到链表的格式*/ #define OFORM %s %s
2、%d %d %d %d %d /*将数据输出到文件的格式*/ #define OFORM1 %-10s %-6s %-4d %-4d %-4d %-4d %-4d/*将数据打印到屏幕上的格式*/ #define OFORM2 p1-number,p1-name,p1-grade0,p1-grade1,p1-grade2,p1-grade3,p1-grade4 /*输出引用结构体得格式*/ #define SINFO 请输入学号、姓名、大学英语、高等数学、线性代数、政治、计算机导论n /*输入数据的提示符*/ #define SINFO2 学号t 姓名 大学英语 高等数学 线性代数 政治 计算机
3、导论n /*打印在屏幕上的各数据项的属性*/struct student char number12; char name10; int grade5; struct student * next; /*定义存放学生基本信息的结构体*/ FILE *fp; /*定义文件的指针*/ int open=0; /*用于表示是否有文件处于打开状态*/ struct student * head; /*定义链表的头*/ struct student * p1,* p2; /*定义用于链表输入输出的两个变量*/ char name100,ch; /*name用于存放打开的文件名,ch用于销毁回车符。*/
4、struct tm *ptr; /*定义时间的 结构体变量*/ time_t t; /*定义时间的变量*/ int main() int snew(void); int squery(void); int sinsert(void); int sdelete(void); int sinput(void); int soutput(void); int sclear(void); int salter(void); int sorder(void); int choose; int i; printf(nn-nn); printf( 欢 迎 使 用 学 生 成 绩 管 理 系 统 ! ); p
5、rintf(nn-nn); printf(ntt正 在 加 载 程 序 ,请 稍 等n); printf(tt-ntt); for(i=0;i); system(cls); printf(nn-nn); printf( 欢 迎 使 用 学 生 成 绩 管 理 系 统 ! ); printf(nn-nn); printf(ntt程 序 加 载 完 成 !n); printf(tt-n); printf(ttnn); system(pause); system(cls); printf(nnttt 学 生 成 绩 管 理 系 统nn); if(open=1) printf(当前被打开的文件为:%s
6、 ,name); else printf(暂无文件被打开 ); t = time(NULL); ptr = gmtime(&t); printf(ctime(&t); printf(-n); printf( 1、新建t 2、查询t 3、插入t 4、删除t5、 修改nn); printf( 6、导入t 7、导出t 8、清空t 9、排序t10、退出nn); printf(-n); printf(请选择相应操作: ); while(scanf(%d,&choose)!=EOF) switch(choose) case 1: snew(); break; case 2: squery(); break
7、; case 3: sinsert(); break; case 4: sdelete(); break; case 5: salter(); break; case 6: sinput(); break; case 7: soutput(); break; case 8: sclear(); break; case 9: sorder(); break; case 10: system(cls); printf(nn-nn); printf( 谢 谢 使 用 ! ); printf(nn-nn); system(pause); exit(0); default : ch=getchar();
8、 system(cls); printf(nnttt 学 生 成 绩 管 理 系 统nn); if(open=1) printf(当前被打开的文件为:%-35s,name); else printf(暂无文件被打开 ); t = time(NULL); ptr = gmtime(&t); printf(ctime(&t); printf(-n); printf( 1、新建t 2、查询t 3、插入t 4、删除t5、 修改nn); printf( 6、导入t 7、导出t 8、清空t 9、排序t10、退出nn); printf(-n); printf(请选择相应操作: ); choose=12; r
9、eturn 0; int snew() int n=0,exit=1; char temp; system(cls); printf(n学生成绩查询系统新建n-nn); if(open=1) printf(是否关闭当前文件(%s)?(Y/N)n,name); ch=getchar(); scanf(%c,&temp); while(temp!=Y & temp!=N & temp!=y & temp!=n) system(cls); printf(n学生成绩查询系统 新建n-nn); printf(输入错误!请重新输入n); printf(是否关闭当前文件(%s)?(Y/N)n,name);
10、ch=getchar(); scanf(%c,&temp); if(temp=Y | temp=y) fclose(fp);open=0; if(temp=N | temp=n) return 1; if(open=0) system(cls); while(ch=getchar()!=n & ch!=EOF); printf(n学生成绩查询系统 新建n-nn); printf(请输入新建文件的名称及路径(如 D:abc.txt):n); while(scanf(%s,name)!=EOF) fp=fopen(name,w+); open=1; system(cls); printf(n学生成
11、绩查询系统新建录入数据n-nn); head=NULL; printf(是否录入数据?是(1)、否(0)n); scanf(%d,&exit); while(exit=1) n+; if(n=1) p1=p2=(struct student *)malloc(LEN);head=p1; else p1=(struct student *)malloc(LEN);p2-next =p1;p2=p1; system(cls); printf(n学生成绩查询系统新建录入数据n-nn); printf(SINFO); while(scanf(IFORM,IFORM2)!=7) system(cls);
12、 printf(n学生成绩查询系统新建录入数据n-nn); printf(输入错误!,请重新输入n); printf(SINFO); printf(录入的数据为:n); printf(OFORM,OFORM2); while(ch=getchar()!=n & ch!=EOF); printf(n是否继续录入数据?是(1)、否(0)n); scanf(%d,&exit); system(cls); printf(n学生成绩查询系统新建录入数据n-nn); if(n0) p2-next =NULL; n=0; p1=head; while(p1!=NULL) n+; if(n1) fprintf
13、(fp,n); fprintf(fp,OFORM,OFORM2); p1=p1-next ; fclose(fp); fp=fopen(name,r+); system(cls); printf(n学生成绩查询系统新建n-nn); printf(新建文件成功!nn); printf(文件名为:%sn,name); system(pause);break; int squery() int choose,back=1,exit=0,success=0; int choose2,choose3,yes; char num12; system(cls); printf(n学生成绩查询系统查询n-nn
14、); if(open=0) printf(没有打开的文件!请先导入或新建一个文件n); system(pause); return 1; if(open=1) printf(请选择查询条件:n); printf(1、浏览文件t2、学号查询t 3、姓名查询n); printf(4、成绩查询t5、退出查询n); while(ch=getchar()!=n & ch!=EOF); while(scanf(%d,&choose)!=EOF) switch(choose) case 1: system(cls); printf(n学生成绩查询系统查询浏览文件n-nn); fclose(fp); fp=f
15、open(name,r+); p1=head; printf(SINFO2); while(p1!=NULL) printf(OFORM1,OFORM2); printf(n); p1=p1-next ; system(pause);break; case 2: system(cls); printf(n学生成绩查询系统查询学号查询n-nn); printf(请输入需要查询的学号:n); if(scanf(%s,num)=EOF) strcpy(num,fdsafga); system(cls); printf(n学生成绩查询系统查询学号查询查询结果n-nn); fclose(fp); fp=
16、fopen(name,r+); p1=head; printf(SINFO2); while(p1!=NULL) if(strcmp(num,p1-number)=0) printf(OFORM1,OFORM2); printf(n); success=1; p1=p1-next ; if(success=0) printf(无记录!n); success=0; system(pause);break; case 3: system(cls); printf(n学生成绩查询系统查询姓名查询n-nn); printf(请输入需要查询的姓名:n); if(scanf(%s,num)=EOF) st
17、rcpy(num,fdsafga); system(cls); printf(n学生成绩查询系统查询姓名查询查询结果n-nn); fclose(fp); fp=fopen(name,r+); p1=head; printf(SINFO2); while(p1!=NULL) if(strcmp(num,p1-name)=0) printf(OFORM1,OFORM2); printf(n); success=1; p1=p1-next ; if(success=0) printf(无记录!n); success=0; system(pause);break; case 4: system(cls
18、); printf(n学生成绩查询系统查询成绩查询科目选择n-nn); printf(请选择查询的科目:n); printf(1、大学英语t2、高等数学 t3、线性代数n); printf(4、政治 t5、计算机导论n); while(ch=getchar()!=n & ch!=EOF); while(scanf(%d,&choose2)=EOF) system(cls); printf(n学生成绩查询系统查询成绩查询科目选择n-nn); printf(选择错误!请重新选择n); printf(1、大学英语t2、高等数学 t3、线性代数n); printf(4、政治 t5、计算机导论n); s
19、ystem(cls); printf(n学生成绩查询系统查询成绩查询分数选择n-nn); printf(请选择查询条件:n); printf(1、 60分 t2、6070分t3、7080分n); printf(4、8090分t5、90100分n); while(scanf(%d,&choose3)=EOF) system(cls); printf(n学生成绩查询系统查询成绩查询分数选择n-nn); printf(选择错误!请重新选择n); printf(1、 =1 & choose2=1 & choose3gradechoose2-1gradechoose2-1=60 & p1-gradechoose2-1gradechoose2-1=70 & p1-gradechoose2-180);