《2022年2022年教务信息管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年教务信息管理系统 .pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、包括:学生基本信息,如学号,姓名,性别,年龄,等;2.学生选修课程基本信息,包括课程编号, 课程名称,考试成绩,平时成绩,综合成绩,学分,重修否,若重修,需考虑重修学期,重修成绩,并考虑多次重修情况。只能用C 语言,要有用户界面,必须用结构体和链表等数据结构。/*-1-*/ #include #include /*头文件 */ #include #include #include #include #include #include #define NULL 0 #define ESC 0 x001b /* 退出 */ #define F1 0 x3b00 /* 查看帮助信息,调用HelpMa
2、ssage() 函数 */ #define F2 0 x3c00 /*输入学生成绩 */ #define F3 0 x3d00 /* 按学号查找 */ #define F4 0 x3e00 /*按姓名查找 */ #define F5 0 x3f00 /*列出所有学生成绩 */ #define F6 0 x4000 /* 统计*/ struct stuType /*定义结构体变量 */ char NO11; /*学号长度为 10*/ char XM10; char AGE2; /*年龄长度为 2*/ float CJ4; /*包含 4 门成绩 */ 名师资料总结 - - -精品资料欢迎下载 -
3、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - ; /*-2-*/ int JY_NO(char *stu_num,FILE *fp) /*检验学号的正确性 */ struct stuType stud; int NO; char *p=stu_num; if(strcmp(stu_num,#)=0) return 1; /*若输入 #返回真值 ,不再循环输入*/ while(*p!=0) /*学号必须是数字,否则返回重新输入*/ NO=(int)*p; if(NO57)
4、 puts(ttUndefined SN!Please input again!n);/*非法学号 !请重新输入 !*/ return 0; else p+; /*指针加 1*/ if(strlen(stu_num)!=10) /*若学号长度不为 10,则返回重新输入 */ puts(ttLength of SN Error!n);/*学号长度不对 */ return 0; if(getchar()!=n) /*若学号后面的字符不是回车符,则学号长度大于10*/ printf(ttThe length of SN should more than 10!Please input again!n
5、);/* 学号长度大于 10 个,请重新输入 */ dowhile(getchar()!=n); /*用 getchar 接收多余的字符 */ return 0; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - rewind(fp); /*使文件指针指向头 */ while(!feof(fp) /*若文件指针未到结尾 ,就继续执行下面的循环 ,feof 遇到文件结束符返回非零值,否则返回 0*/ fread(&stu
6、d,sizeof(struct stuType),1,fp); /*读取一定长度的数据 */ if(strcmp(stu_num,stud.NO)=0) /*学号的唯一性 */ printf(tt Repeat SN,Please input again!n);/*学号重复 !请重新输入 */ printf(ttThe Record of this student:n);/*该学生成绩如下 */ printf(ttChinese:%.1fn,stud.CJ0);/*语文*/ printf(ttMath:%.1fn,stud.CJ1);/*数学*/ printf(ttEnglish:%.1fn,
7、stud.CJ2);/*英语*/ printf(ttTotal:%.1fn,stud.CJ3);/*总评*/ return 0; return 1; /*-3-*/ int JY_NO2(char *stu_num) /*检验学号 */ int NO; char *p=stu_num; if(strcmp(stu_num,#)=0)return 1; /*若输入 “#”,则返回真值结束 */ if(strlen(stu_num)!=10) /*学号长度不为 10*/ puts(ttLength of SN Error!n);/*学号长度不对 */ return 0; while(*p!=0)
8、/*学号必须用数字 ,若包含有字母,或其它字符则返回假值重新输入 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - NO=(int)*p; if(NO57) puts(ttUndefined SN!Please input again!n);/*非法学号 !请重新输入 */ return 0; else p+; /*指针加 1*/ if(getchar()!=n) /*检验学号长度是否大于10,并把多余的字符去掉 */ p
9、rintf(ttThe length of SN should more than 10!Please input again!n);/* 学号长度大于 10 个,请重新输入 */ dowhile(getchar()!=n); return 0; return 1; /*-4-*/ int JY_XM(char *stu_XM) /*检验姓名 */ int PD; char *p; p=stu_XM; while(*p!=0) /*姓名只能用英文 */ PD=(int)*p; if(PD0) puts(ttName should use English, Please input again!
10、n);/*姓名只能用英文请重新输入 */ return 0; else p+; /*使指针加 1,指向下一汉字 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - if(getchar()!=n) /*姓名长度不得大于5 个*/ printf(ttThe length of Name is more than 5, Please input again!n);/*姓名长度大于 5 个请重新输入 */ dowhile(getc
11、har()!=n); return 0; return 1; /*字符串全为汉字返回真 */ /*-5-*/ int JY_AGE(float stu_AGE) /*年龄只能在 0100 之间*/ if(stu_AGE100) printf(ttInput Error! Record should between 0100!n);/*输入错误 ,成绩只能在 0100 之间*/ return 0; return 1; /*-6-*/ int JY_CJ(float stu_CJ) /*学生成绩只能在 0100 之间*/ if(stu_CJ100) printf(ttInput Error! Re
12、cord should between 0100!n);/*输入错误 ,成绩只能在 0100 之间*/ return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - return 1; /*-7-*/ void CreatFile() /*输入文件 */ FILE *fp; struct stuType stu,stu0=,; /*对 stu0 xianfuzhi*/ fp=fopen(stu.dat,wb+); /*打
13、开或创建一个二进制文件,打开时将原来的内容删除 */ if(fp=NULL) printf(ttFile opens Error!ntttPress Anykey back.);/*文件打开失败 ,按任意键返回 */ getch(); return; else while(1) stu=stu0; do printf(nttPlease input SN:); /*输入学号并检验其正确性*/ scanf(%10s,stu.NO); while(!JY_NO(stu.NO,fp); if(strcmp(stu.NO,#)=0)break; do printf(nttPlease input Na
14、me:); /*输入姓名并检验其正确性*/ scanf(%10s,stu.XM); while(!JY_XM(stu.XM); do printf(nttPlease input age:); /*输入年龄绩并检验其正确性*/ scanf(%f,&stu.AGE); while(!JY_AGE(stu.AGE0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - do printf(nttPlease input record
15、 of Chinese:); /*输入成绩并检验其正确性*/ scanf(%f,&stu.CJ0); while(!JY_CJ(stu.CJ0); do printf(nttPlease input record of Math:); /*同上*/ scanf(%f,&stu.CJ1); while(!JY_CJ(stu.CJ1); do printf(nttPlease input record of English:); scanf(%f,&stu.CJ2); while(!JY_CJ(stu.CJ2); do printf(nttPlease input record of Total:
16、); scanf(%f,&stu.CJ3); while(!JY_CJ(stu.CJ3); fwrite(&stu,sizeof(struct stuType),1,fp); /*写文件 */ fclose(fp); /*关闭文件 */ /*-8-*/ void Search_Xuehao() /*按学号查询 */ FILE *fp; int flag; struct stuType stu,stud; fp=fopen(stu.dat,rb); if(fp=NULL) /*若文件打不开则输出下面的信息*/ printf(ttFile opens Error!ntttPress Anykey
17、back.); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - getch(); return; else do puts(nttPress# or search); do printf(ttPlease input the SN what you want:); scanf(%10s,stu.NO); while(!JY_NO2(stu.NO); if(strcmp(stu.NO,#)=0)break; /*若输入 “#”则
18、结束循环 */ flag=0; rewind(fp); while(fread(&stud,sizeof(struct stuType),1,fp) /*检查文件指针结束*/ if(strcmp(stu.NO,stud.NO)=0) /*比较学号 */ puts(ttThe Record of this student:); printf(ttSN:%sn,stud.NO); printf(ttName:%sn,stud.XM); printf(ttAGE:%.1fn,stud.AGE0); printf(ttChinese:%.1fn,stud.CJ0); printf(ttMath:%.1
19、fn,stud.CJ1); printf(ttEnglish:%.1fn,stud.CJ2); printf(ttTotal:%.1fn,stud.CJ3); flag=1; /*记录学号是否查到 */ if(flag=0)puts(ttUndefined SN); while(strcmp(stu.NO,#)!=0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - fclose(fp); /*关闭文件 */ /*-9-*/
20、 void Search_Xingming() /*按姓名查找 */ FILE *fp; int flag=0; struct stuType stu,stud; fp=fopen(stu.dat,rb); if(fp=NULL) printf(ttFile opens Error!nttPress Anykey back.); getch(); return; else do do printf(ttPlease input the Name of the Student what you want:); scanf(%10s,stu.XM); while(!JY_XM(stu.XM); r
21、ewind(fp); /*文件指针指向头 */ while(fread(&stud,sizeof(struct stuType),1,fp) if(strcmp(stu.XM,stud.XM)=0) /*比较姓名是否相同 */ puts(ttThe name of the Student is:); printf(ttSN:%sn,stud.NO); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - printf(ttName:
22、%sn,stud.XM); printf(ttAGE:%.1fn,stud.AGE0); printf(ttChinese:%.1fn,stud.CJ0); printf(ttMath:%.1fn,stud.CJ1); printf(ttEnglish:%.1fn,stud.CJ2); printf(ttTotal:%.1fn,stud.CJ3); flag=1; /*记录姓名是否被查到 */ if(flag=0)puts(nttUndefined Name!); puts(ttContinue?(y-yes,Else key back)?); while(getch()=y); fclose
23、(fp); /* puts(ttPress Anykey to continue.);*/ /* getch();*/ /*-10-*/ int ListFile(void) /*输出文件 ,列出所有学生成绩 */ FILE *fp; int REC=0; /*记录学生人数 */ struct stuType stu; fp=fopen(stu.dat,rb); if(fp=NULL) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - -
24、 - - printf(ttFile opens Error!nttPress Anykey back.); getch(); return 1; else printf(ttRecords of the Students:n); printf(ttSNttNametChinesetMathtEnglishtTotaln); rewind(fp); while(fread(&stu,sizeof(struct stuType),1,fp) /*每读取一个长度的数据就输出*/ printf(tt%s,stu.NO); printf(t%s,stu.XM); printf(t%.1f,stu.AG
25、E); printf(t%.1f,stu.CJ0); printf(t%.1f,stu.CJ1); printf(t%.1f,stu.CJ2); printf(t%.1f,stu.CJ3); printf(n); REC+; if(REC%20=0) /*20 个学生成绩,停一下 */ printf(ttPress Anykey to continue.n); getch(); fclose(fp); /*关闭文件 */ printf(ttContinue.); getch(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
26、名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - - - - - /*-11-*/ void Statistics() /*统计及格和优秀人数 */ FILE *fp; int REC=0,unpass4=0,good4=0; /*REC- 记录个数 ,即人数,unpass- 重修人数 ,good- 优秀人数 */ float highest4=0,score4=0; /*highest- 最高分 ,score- 总分*/ struct stuType stu; fp=fopen(stu.dat,rb); if(fp=NULL) printf(ttFil
27、e opens Error!nttPress Anykey back.); getch(); return; else rewind(fp); while(fread(&stu,sizeof(struct stuType),1,fp) REC+; score0=score0+stu.CJ0; /*语文*/ if(stu.CJ0=80)good0+; if(highest0stu.CJ0)highest0=stu.CJ0; score1=score1+stu.CJ1; /*数学*/ if(stu.CJ1=80)good1+; if(highest1stu.CJ1)highest1=stu.CJ1
28、; score2=score2+stu.CJ2; /*英语*/ if(stu.CJ2=80)good2+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - if(highest2stu.CJ2)highest2=stu.CJ2; score3=score3+stu.CJ3; /*总评*/ if(stu.CJ3=60)unpass3+; if(stu.CJ3=80)good3+; if(highest3stu.CJ3)high
29、est3=stu.CJ3; if(REC=0) /*可以防止记录为 0 是 REC 作除数而造成的错误 */ printf(ttYou didt input the Name!Press Anykey back.); getch(); return; else printf(t Chineset Matht EnglishtTotaln); /* 输出统计信息 */ printf(tAverage: %.1ft %.1ft %.1ftt%.1fn,score0/REC,score1/REC,score2/REC,score3/REC); printf(tTop record: %.1ft %.
30、1ft %.1ftt%.1fn,highest0,highest1,highest2,highest3); printf(tNumber of good students: %dtt %dt %dtt %dn,good0,good1,good2,good3); printf(tNumber of unpassed students:%dtt %dt %dtt %dn,unpass0,unpass1,unpass2,unpass3); fclose(fp); printf(ntttPress Anykey to continue.); getch(); 名师资料总结 - - -精品资料欢迎下载
31、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - /*-12-*/ void HelpMessage() clrscr(); printf(nnnnn chi xi tong shi lao shi suo bu zhi zuoye bianzhi ercheng,gai xitong juyou cunchu xuesheng shuju,an xuehao,xingming chaxun,liechu xuesheng chengji he tongjigongn
32、eng.n n shiyongfangfa:xitong shulu shuju hou,jiangzai dangqian muluzhong jianli yige mingwei stu.dat wenjian,yongyubaocun shulu de shuju.xuehao shulu zhineng yong shuzi shulu qie xuehao zhineng shi10wei.xingming shulu fuhe zhongguoren de xingming,zhineng yong zhongwen pinying,qie zuichangwei5 ge han
33、zhi.n chi chenxu zai Turbo C2.0 xia yunxing tongguo nn ); getch(); /*-13-*/ int GetKey(void) /*此函数返回一个按键的数值*/ int key; key=bioskey(0); /*bioskey 为调用 BIOS 键盘接口 */ if(key8) /*位移*/ key=key&0 x00ff; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - -
34、 - - return key; /*返回按键 */ /*-14-*/ void main() int key; struct date d; /*定义时间结构体 */ getdate(&d); /*读取系统日期并把它放到结构体d 中*/ clrscr(); /*清除屏幕 */ printf(nnnnn); printf(t =n); /*版本信息 */ printf(n); printf(tt The System of Students Records Management 1.0 n); printf(n); printf(n); printf(tt Builder: XG042-WZM
35、 YS HYF WQ n); printf(tt Teacher:Song Zheyuann); printf(tt Time:200575 n); printf(n); printf(t =n); printf(tttPress Anykey to continue.); /*while(!kbhit();*/ getch(); /*从键盘读取一个字符 ,但不显示于屏幕 */ system(cls); /*调用 DOS 的清屏函数 ,TC 中可用 clrscr 代替*/ while(1) /*主菜单 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
36、- - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - printf(nnnnn); printf(t *n); printf(t *t *n); printf(t *tF1 -Help *n); printf(t *t *n); printf(t *tF2 -Data Input & Save *n); printf(t *t *n); printf(t *tF3 -Search by SN *n); printf(t *t *n); printf(t *tF4 -Search by Name *n); print
37、f(t *t *n); printf(t *tF5 -Contents Input *n); printf(t *t *n); printf(t *tF6 -Count Students Number(Passed&Good) *n); printf(t *t *n); printf(t *tESC-Quit the System *n); printf(t *t *n); printf(t *n); printf(nt Please select.tt%d%d%dnn,d.da_year,d.da_mon,d.da_day); /*提示信息 ,并显示当前系统日期 */ key=GetKey(
38、); /*调用自定义函数 ,读取一个键 */ switch(key) case F1: HelpMessage(); break; case F2: CreatFile(); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - case F3: Search_Xuehao(); break; case F4: Search_Xingming();break; case F5: ListFile(); break; case F6: Statistics(); break; case ESC:exit(1); break; /*default: puts(tttWrong SN input!); printf(tttPress Anykey back.); getch();*/ clrscr(); /*每执行完一项功能后 ,自动清屏 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -