




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . 选题五 学籍成绩管理系统一、学籍成绩管理系统功能设计要求 1. 输入记录:将每一个学生的、学号以与数学、物理、化学、英语、网络课程的成绩作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。 2. 显示记录:根据用户提供的记录或根据学生显示一个或几个学生的各门功课的成绩和平均成绩。 3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录容进行显示。4查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录容进行显示。5. 删除记录:可删除数据文件中的任一记录。6恢复记录:能恢复被删除的任一记录。7添加记录:可以在数据文件中添加记录
2、并添加记录后对记录容进行显示。8. 统计: (A)计算各门课程全班平均成绩与总成绩;(B)统计其课程全班得:100分、 9099分、8089分、7079分、6069分、59分以下学生人数与全班总人数的百分比;(C)按字符表格形式打印全部学生的平均成绩(包括各课总的平均成绩)。9保存数据文件功能。10打开数据文件功能。 经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。程序运行结果如下表所示(记录个数至少8个)。学生学籍成绩统计表序号数学物理化学英语网络平均01望678988897581.602小明7888779
3、47482.203涛967993849689.604林圆879378988488.005黄佳798574928683.2¼¼¼¼¼¼¼¼单科平均成绩81.4086.8082.0091.483.00二、学籍成绩管理系统程序设计基本结构框架1头文件说明如:#include<string.h>#include<stdio.h>#include<graphics.h>#include<conio.h>定义结构类型;定义全局变量;定义、编写记录(数据)输入函数;定义、编写记录(
4、数据)显示函数;定义、编写记录(数据)修改函数;定义、编写记录(数据)查找函数;定义、编写记录(数据)删除函数;定义、编写记录(数据)恢复函数;定义、编写记录(数据)添加函数;定义、编写记录(数据)统计函数;定义、编写数据文件保存函数;定义、编写打开数据文件函数;2主函数结构如下:main()char i;int drive=DETECT,mode;initgraph(&drive,&mode," "); 初始化显示器为图形方式cleardevice(); 清屏幕setbkcolor(9); 设置屏幕背景颜色printf("16co4st8e320
5、,170,0,360,300,70,2,4");printf("16-10|2048,24=2(14)9中南大学");printf("16-90|14055,55=11(13)9学籍成绩管理系统"); printf("16-246|28020,20=8(12)9设计者: 电气信息1020 XXX ");printf("16-250|36020,20=8(4)9请按Enter键进入");getch(); 等待击键for( ; ;) 循环执行功能菜单cleardevice();setbkcolor(9);pr
6、intf("16-5|3040,40=30(2)9* * * * * * 菜单 * * * * * *");printf("16-130|10035,35=30(7)9a输入");printf("16-400|10035,35=30(7)9b 显示");printf("16-130|14535,35=30(7)9c修改");printf("16-400|14535,35=30(7)9d 查找");printf("16-130|20535,35=30(7)9e 删除");pri
7、ntf("16-400|20535,35=30(7)9f恢复");printf("16-130|26035,35=30(7)9g添加");printf("16-400|26035,35=30(7)9h 统计");printf("16-130|31535,35=30(7)9i 保存");printf("16-400|31535,35=30(7)9j 打开");printf("16-130|36035,35=30(7)9k 退出");printf("16-400|380
8、24,24=11(7)4请选择a至j");i=getch();if(i='k') break;else switch(i)case'a': 调用记录输入函数;break; case'b': 调用记录显示函数;break; case'c': 调用记录修改函数;break; case'd': 调用记录查找函数;break; case'e': 调用记录删除函数;break; case'f': 调用记录恢复函数;break; case'g': 调用记录添加函数; b
9、reak; case'h': 调用记录统计函数;break; case'i': 调用数据保存函数;break; case'j': 调用数据文件打开函数; break; 3各子程序函数程序:(程序设计较为匆忙,未曾优化,请见谅)#include<string.h>#include<stdio.h>#include<graphics.h>#include<conio.h>struct student char num20; /*序号*/ char name10; /*/ float score1; /*
10、数学成绩*/ float score2; /*物理成绩*/ float score3; /*化学成绩*/ float score4; /*英语成绩*/ float score5; /*网络成绩*/ float av1; /*平均成绩*/ int vs; /*判断记录是否存在的变量*/;/*struct result int f; int p; */ struct student student1; struct student total; FILE *fp; char temper20; int index=0; int position=0;/*-*/*-*/void fscan() fl
11、oat temp1=0,temp2=0,temp3=0,temp4=0,temp5=0,temp6=0; student1.vs=0; fscanf(fp,"%s%s%f%f%f%f%f%f%dn",student1.num,,&temp1,&temp2,&temp3,&temp4,&temp5,&temp6,&student1.vs); student1.score1=temp1; student1.score2=temp2; student1.score3=temp3; student1.
12、score4=temp4; student1.score5=temp5; student1.av1=temp6;void fprint() fprintf(fp,"%-7s%-7s%-7.2f%-7.2f%-7.2f%-7.2f%-7.2f%-7.2f%-7dn",student1.num,,student1.score1,student1.score2,student1.score3,student1.score4,student1.score5,student1.av1,student1.vs);void scan(int i) /*输入*/
13、float temp1=0,temp2=0,temp3=0,temp4=0,temp5=0; if(i=1|i=8) printf("请输入学生序号: "); scanf("%s",student1.num); if(i=2|i=8) printf("请输入学生: "); scanf("%s",); if(i=3|i=8) while(1) printf("请输入数学成绩: "); scanf("%f",&temp1); if(temp1&l
14、t;=100&&temp1>=0) student1.score1=temp1; break; else printf("请输入正确数据!n"); if(i=4|i=8) while(1) printf("请输入物理成绩: "); scanf("%f",&temp2); if(temp2<=100&&temp2>=0) student1.score2=temp2; break; else printf("请输入正确数据!n"); if(i=5|i=8) wh
15、ile(1) printf("请输入化学成绩: "); scanf("%f",&temp3); if(temp3<=100&&temp3>=0) student1.score3=temp3; break; else printf("请输入正确数据!n"); if(i=6|i=8) while(1) printf("请输入英语成绩: "); scanf("%f",&temp4); if(temp4<=100&&temp4>=0
16、) student1.score4=temp4; break; else printf("请输入正确数据!n"); if(i=7|i=8) while(1) printf("请输入网络成绩: "); scanf("%f",&temp5); if(temp5<=100&&temp5>=0) student1.score5=temp5; /* student1.av1=(temp1+temp2+temp3+temp5+temp5)/5; */ break; else printf("请输入正确
17、数据!n"); student1.av1=(student1.score1+student1.score2+student1.score3+student1.score5+student1.score5)/5; student1.vs=1;void print() /*输出*/ printf("|%-7s|%-7s|%-7.2f|%-7.2f|%-7.2f|%-7.2f|%-7.2f|%-7.2f|n",student1.num,,student1.score1,student1.score2,student1.score3,studen
18、t1.score4,student1.score5,student1.av1); printf("-n"); /*表头*/void handline() printf("-n"); printf(" 序号 数学 物理 化学 英语 网络 平均n"); printf("|-|-|-|-|-|-|-|-|n");void menu() /*菜单*/ cleardevice(); clrscr(); printf(">>>>>>>>>>-<<
19、<<<<<<<<"); printf("ntt>>>>>>>>>>-<<<<<<<<<<"); printf("ntttt>>>>>>>>>>-<<<<<<<<<<"); printf("ntttttt>>>>>>&
20、gt;>>>-<<<<<<<<<<"); printf("16-500|25040,40=2(9)15 菜单"); printf("16-200|10016,16=3(8)15 a 输入"); printf("16-150|15016,16=3(8)15 b 显示"); printf("16-100|20016,16=3(8)15 c 修改"); printf("16-50|25016,16=3(8)15 d 查找&q
21、uot;); printf("16-100|30016,16=3(8)15 e 删除"); printf("16-150|35016,16=3(8)15 f 恢复"); printf("16-200|40016,16=3(8)15 g 添加"); printf("16-300|20016,16=3(8)15 h 统计"); printf("16-200|25016,16=3(8)15 i 保存"); printf("16-300|30016,16=3(8)15 j 打开");
22、 printf("16-400|25016,16=3(8)15 k 退出"); printf("n(_)");void tothandline()/*-*/ int i=0; fp=fopen(temper,"r"); while(!feof(fp) fscan(); if(student1.vs!=0)/*判断是否被删除*/ i+; /*-*/ printf("显示数据 |%-7.2f|%-7.2f|%-7.2f|%-7.2f|%-7.2f|%-7.2f|n",total.score1/i,total.score
23、2/i,total.score3/i,total.score4/i,total.score5/i,total.av1/i); printf("-n");void cleartotal() /*清除统计数据*/ total.score1=0; total.score2=0; total.score3=0; total.score4=0; total.score5=0; total.av1=0;/*-*/*-*/void input();void output();void change();void search();void delete();void nodelete()
24、;void addto();void statistics(); /*统计总分*/void addup(); /*统计函数*/void save();void openfile();void quit();void choose() /*选择界面*/ char i='0' for( ; ;) menu(); cleartotal(); printf("16-400|40032,32=11(8)15 请选择a至j"); i=getch(); if(i='k') quit(); else switch(i) case'a': in
25、put();break;/*调用记录输入函数*/ case'b': output();break;/*调用记录显示函数*/ case'c': change();break;/*调用记录修改函数*/ case'd': search();break;/*调用记录查找函数*/ case'e': delete();break;/*调用记录删除函数*/ case'f': nodelete();break;/*调用记录恢复函数*/ case'g': addto();break;/*调用记录添加函数*/ case
26、'h': addup();break;/*调用记录统计函数*/ case'i': save();break;/*调用数据保存函数*/ case'j': openfile();break;/*调用数据文件打开函数*/ void main() int drive=DETECT,mode; registerbgidriver(EGAVGA_driver); initgraph(&drive,&mode," "); cleardevice(); setbkcolor(0); textcolor(RED); printf
27、("16co5st7b90,140,425,192"); printf("16-10|2048,24=2(14)0 中南大学"); printf("16-90|14055,55=11(15)0 学籍管理系统"); printf("16co5st11b246,280,517,300"); printf("16-246|28020,20=8(15)0 设计者: 电气信息 班级 "); printf("16-250|36020,20=8(15)0 请按Enter键进入"); get
28、ch(); setbkcolor(15); strcpy(temper,"temp.txt"); choose();/*-*/*-*/void indexup()/*下一页*/ index+;void indexdown()/*上一页*/ if(index>=1) index-; else printf("已经是第一页!");void input() /*输入*/ char ch='0' cleardevice();clrscr(); printf("16-400|40032,32=11(8)15 输入功能");
29、 printf("nnn 本操作将清空原数据,确定继续?(输入Y或者N)"); while(1) scanf("%c",&ch); if(ch='Y'|ch='y'|ch='n'|ch='N') break; else printf("n请输入”Y“或”N“!n"); if(ch='Y'|ch='y') if(fp=fopen(temper,"w")=NULL) printf("无法打开这个文件n&qu
30、ot;); getch(); else addto(); fclose(fp);void output() /*输出*/ int i=0; char ch; cleardevice();clrscr(); cleartotal(); printf("16-400|40032,32=11(8)15 显示全部"); if(fp=fopen(temper,"r")=NULL) printf("无法打开文件n"); else printf("nnn"); handline(); while(!feof(fp) fscan(
31、); if(student1.vs!=0)/*判断是否被删除*/ i+;statistics(); if(i>=(1+index*7)&&i<(8+7*index) print(); tothandline(); fclose(fp); printf("1上一页,2下一页,输入其他键退出,现在第%d页",index+1); ch=getch(); if(ch='1') indexdown(); output(); else if(ch='2') indexup(); output(); /*struct resul
32、t find(int w) char temp20,temp250,ch; char i; struct result res; res.f=0; res.p=0; printf("nnn 请选择您需要搜索的关键字:n1序号,2(请输入1到2):"); while(1) scanf("%c",&i); if(i='1'|i='2') break; else printf("请正确输入1到2:"); if(fp=fopen(temper,"r")=NULL) printf(&q
33、uot;无法打开这个文件n"); exit(0); printf("关键字:"); scanf("%s",temp2); printf("n查询到的信息n"); handline(); while(!feof(fp) res.p=ftell(fp); fscan(); if(i='1') strcpy(temp,student1.num); else if(i='2') strcpy(temp,); if(!strcmp(temp,temp2)&&st
34、udent1.vs!=0) res.f=1; print(); statistics(); if(w!=2) break; tothandline(); if(res.f=0) printf("nn查找不到需要的信息"); fclose(fp); return res; */int find(int a) int r=0; char temp20,temp250; char i; position=0; /* rewind(fp); */ /*复位函数*/ printf("nnn 请选择您需要搜索的关键字:n1序号,2(请输入1到2):"); while
35、(1) scanf("%c",&i); if(i='1'|i='2') break; else printf("请正确输入1到2:"); if(fp=fopen(temper,"r+")=NULL) printf("无法打开这个文件n"); exit(0); printf("关键字:"); scanf("%s",temp2); printf("n查询到的信息n"); handline(); while(!feof(f
36、p) position=ftell(fp); fscan(); if(i='1') strcpy(temp,student1.num); else if(i='2') strcpy(temp,); if(a=1&&!strcmp(temp,temp2)&&student1.vs=1) r=1; print(); break; else if(a=2&&!strcmp(temp,temp2)&&student1.vs=0) r=1; print(); break; else
37、if(a=3&&!strcmp(temp,temp2)&&student1.vs=1) r=1; print(); if(r=0) printf("nn查找不到需要的信息"); /* position=ftell(fp); */ fclose(fp); return(r);void change() /*修改*/ int i=0,r=0; cleardevice(); clrscr(); printf("16-400|40032,32=11(8)15 更新容"); r=find(1); if(fp=fopen(temper
38、,"r+")=NULL) printf("无法打开这个文件n"); exit(0); if(r!=0) printf("n输入您希望更新的容n1 序号,2 ,3 数学成绩,4 物理成绩,5 化学成绩,6 英语成绩,7 网络成绩,8 所有信息,0 退出?n输入0到8:"); scanf("%d",&i); if(i=0) choose(); scan(i); rewind(fp); /*复位函数*/ fseek(fp,position,0);/*转到这一行的起始位置*/ fprint(); handline(
39、); print(); printf("ttt按任意键继续"); getch(); fclose(fp);void search() clrscr(); find(3); getch();void delete() /*删除*/ int r=0; char ch; cleardevice(); clrscr(); printf("16-400|40032,32=11(8)15 删除"); r=find(1); if(fp=fopen(temper,"r+")=NULL) printf("无法打开这个文件n"); e
40、xit(0); if(r!=0) printf("请确定是否删除!(输入Y或者N)"); while(1) scanf("%c",&ch); if(ch!='Y'&&ch!='y'&&ch!='n'&&ch!='N') printf("n请输入Y或N!:"); else break; if(ch='Y'|ch='y') student1.vs=0; rewind(fp); /*复位函数
41、*/ fseek(fp,position,0);/*转到这一行的起始位置*/ fprint(); printf("删除成功!"); else printf("删除取消。"); printf("ttt按任意键继续"); getch(); fclose(fp);void nodelete() /*恢复*/* int r=0; char ch; cleardevice(); clrscr(); printf("16-400|40032,32=11(8)15 恢复"); if(fp=fopen(temper,"r
42、+")=NULL) printf("无法打开这个文件n"); else printf("n 以下是已经删除的数据:n"); handline(); while(!feof(fp) fscan(); if(student1.vs=0) print(); fclose(fp); printf("-n"); printf("*数 据 回 收 站*n"); printf("-n"); r=find(2); if(r=1) printf("确定要恢复吗?(输入(Y/N)):"
43、); while(1) scanf("%c",&ch); if(ch!='Y'&&ch!='y'&&ch!='n'&&ch!='N') printf("n请输入Y或N!:"); else break; if(ch='Y'|ch='y') student1.vs=1; rewind(fp); fseek(fp,position,0); fprint(); printf("恢复成功!"); else printf("操作取消!"); printf("ttt按任意键继续"); getch(); fclose(fp);*/ int r=0; char ch; cleardevice(); clrscr(); printf(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文玩鉴定合同(2篇)
- 2025管理人员安全培训考试试题附参考答案(培优)
- 25年公司厂级员工安全培训考试试题附答案(培优)
- 2025房屋装修合同协议书(律达通):仿写版
- 2025关于展会招商代理合同的范本
- 2025办公设备购销合同范本
- 2025年签订技术服务合同的注意事项及合同条款解析
- 2025版合同解除协议范本
- 2025标准版城镇住宅购房合同
- 2025办公家具采购合同范本
- 2024年3月ITSMS信息技术服务管理体系基础(真题卷)
- 节能评审和节能评估文件编制费用收费标准
- 2023-2024年《劳务劳动合同样本范本书电子版模板》
- 中国居民口腔健康状况第四次中国口腔健康流行病学调查报告
- MOOC 数据挖掘-国防科技大学 中国大学慕课答案
- 中药注射剂合理使用培训
- 第13课+清前中期的兴盛与危机【中职专用】《中国历史》(高教版2023基础模块)
- 2024年国家粮食和物资储备局直属事业单位招聘笔试参考题库附带答案详解
- 苏轼临江仙课件大学语文完美版
- 《施工测量》课件
- 情绪健康管理服务规范
评论
0/150
提交评论