c语言课程设计学生成绩管理系.docx

上传人:牧羊曲112 文档编号:3155493 上传时间:2023-03-11 格式:DOCX 页数:24 大小:43.04KB
返回 下载 相关 举报
c语言课程设计学生成绩管理系.docx_第1页
第1页 / 共24页
c语言课程设计学生成绩管理系.docx_第2页
第2页 / 共24页
c语言课程设计学生成绩管理系.docx_第3页
第3页 / 共24页
c语言课程设计学生成绩管理系.docx_第4页
第4页 / 共24页
c语言课程设计学生成绩管理系.docx_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《c语言课程设计学生成绩管理系.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生成绩管理系.docx(24页珍藏版)》请在三一办公上搜索。

1、c语言课程设计学生成绩管理系c语言课程设计_学生成绩管理系统3 课程设计的内容: 1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。 2、输入功能:可以一次完成若干条记录的输入。 3、显示功能:完成全部学生记录的显示。 4、查找功能:完成按姓名查找学生记录,并显示。 5、排序功能:按学生平均成绩进行排序。 6、插入功能:按平均成绩高低插入一条学生记录。 7、将学生记录存在文件score中。 8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观! 课程设计的要求: 1、 用C语言实现系统; 2、 利用结构体数组实现学生成绩的数据结构设计; 3、 系统具有增加

2、,查询,插入,排序等基本功能; 4、 系统的各个功能模块要求用函数的形式实现; 5、 完成设计任务并书写课程设计报告。 6、 将学生成绩信息存在文件中。 #include /*暂停函数*/ #include /*I/O函数*/ #include /*其它说明*/ #include /*字符串操作函数*/ #define M 1000 int N=0; /*记录已经存在的记录条数*/ int H=0; struct student /*定义数据结构*/ char number8; char name16; float score3; float average; studM,temp; /*以下

3、是函数声明*/ void load(void); /*读入记录*/ void inorder(struct student stud); /*排列记录*/ void insert(struct student stud); /*插入记录*/ void save(struct student stud); /*保存记录*/ void print(struct student stud); /*显示记录*/ void search(struct student stud); /*查找记录*/ void enter(struct student stud); /*输入记录*/ void del(vo

4、id); /*删除记录*/ void change(void); /*改变记录*/ void quit(void); /*退出系统*/ int flag(struct student stud); /*返回值为0或1*/ int menu(void); /*菜单*/ main /*主函数*/ /*以下printf语句为打印欢迎界面语句*/ printf(nnnnnnnttttttttt!n); printf( w w eeeeeee l ccccccc ooooo mmmmmmmmm eeeeeee !n); printf( w w w e e l c o o m m m e e ! n);

5、printf( w w w w e eeeee l c o o m m m eeeeeee ! n); printf( w w w w e l c o o m m m e ! n); printf( w w eeeeeee llllll ccccccc ooooo m m m eeeeeee n); printf(tttttttttb0); sleep(1); printf(nnnnntttttttt - pan); sleep(1); load; /*调用读入记录函数*/ for(;) /*无限循环*/ switch(menu) /*调用主菜单函数,返回值整数作开关语句的条件*/ case

6、1: enter(stud); break; /*输入记录*/ case 2: print(stud); break; /*显示要看的一页的记录*/ case 3: search(stud); break; /*查找记录*/ case 4: inorder(stud);break; /*排序*/ case 5: insert(stud); break; /*插入记录*/ case 6: save(stud); break; /*保存文件*/ case 7: change; break; /*改变记录*/ case 8: del; break; /*删除记录*/ case 9: quit; /*

7、如菜单返回值为9程序结束*/ /*输入数据函数*/ void enter(struct student stud) int n=0,i,j,k,c; char b4; float sum; printf(How many students record do you want to enter? n= ?bbb); scanf(%d,&n); /*输入一次要输入记录数*/ for(i=0;in;) sum=0; /*统记三科总分*/ printf(Input the %dth students number ,N+1); scanf(%s,studN.number); /*输入学号*/ /*以

8、下if-else语句判断所输记录是否存在*/ if(flag(stud) /*调用返回值为0或1函数,判断所输入的学号是否已经存在,存在就执行if语句*/ printf(The record has exist.n); printf(Input again.); getch; else printf(Input the %dth students name ,N+1); scanf(%s,studN.name); /*输入姓名*/ for(j=0;j3;j+) do printf(Input the %dth students score(%d),N+1,j+1); /*打印提示*/ scan

9、f(%s,b); /*输入分数*/ studN.scorej=atof(b); /*将字符串强制转换成实型,得值赋给studN.scorej*/ if(studN.scorej100) /*判断分数是否在0-100之间*/ k=1; /*分数不在0-100之间时k值为1*/ printf(Error input !n); printf(Input again .n); /*打印出错提示*/ else k=0; /*分数在0-100之间时k值为0*/ while(k); /*由k值决定是否要循环*/ sum+=studN.scorej; /*统记三科总分*/ studN.average=sum/

10、3.0; /*平均分*/ printf(nEnter success !n); printf(nPress any key to return.); getch; N+; /*记录数加1*/ i+; H=1; clrscr; /*清屏*/ clrscr; /*清屏*/ /* 显示记录函数*/ void print(struct student stud) int i=0,k,max,maxb,n,flag=y; char m6; /*以下if-else为判断文件中是否有记录*/ if(N=0) printf(There are not record.n); printf(Press any k

11、ey to return.); /*当N为0时打印没有记录提示*/ getch; else while(flag!=n) maxb=0;i=0; /*以下分页输出记录*/ do if(N%10!=0) printf(nttThere are %d pages in all.,N/10+1); printf(nttWhich page do you want to see? ); else printf(nttThere are %d pages in all.,N/11+1); printf(nttWhich page do you want to see? ); scanf(%s,m); /

12、*输入要显示的页数*/ k=atoi(m); /*强制把m转换成整形*/ if(k) k=10*(k-1); /*此时k变为第k页的第一条信息的序号*/ if(k=N) /*判断页数是否存在*/ printf(nttThe page is not exist !); printf(nttInput again .n); else k=N+1; while(k=N); /*如果页数不存在进入do-whie循环*/ /*以下if-else语句是判断第k页是否有10条语句*/ if(k+10)N) max=N; /*当第k页不够10条记录时*/ else max=k+10; /*当第k页够10条记录

13、时*/ clrscr; /*以下for语句为取得第k页名字最大字符长度*/ for(i=k;imaxb) maxb=n; i=k; /*以下if-else是为了保证表美观*/ /*如果最大字符长度不大于8则按if 输出,则按名字方格长度为8输出*/ if(maxb8) while(imax) /*以下为输出记录*/ if(i%10=0) printf(ntttt Page:%d,(k+10)/10); printf(nt|-|-|-|-|-|-|-|); printf(nt|NO:| number | name |score(1)|score(2)|score(3)|average |n);

14、printf(t|-|-|-|-|-|-|-|n); printf(t| %-2d| %-6s|%-8s| %-5.1f | %-5.1f | %-5.1f | %-7.2f|n,i+1,studi.number, studi.name,studi.score0,studi.score1,studi.score2, studi.average); i+; printf(t|-|-|-|-|-|-|-|n); /*如果最大字符长度大于8则按else 输出,见则按名字格长度为16输出*/ else while(imax) /*以下为输出记录*/ if(i%10=0) printf(ntttt Pa

15、ge:%d,(k+10)/10); printf(ntbb|-|-|-|-|-|-|-|); printf(ntbb|NO:| number | name |score(1)|score(2)|score(3)|average |n); printf(tbb|-|-|-|-|-|-|-|n); printf(tbb| %-2d| %-6s|%-16s| %-5.1f | %-5.1f | %-5.1f | %-7.2f|n,i+1,studi.number, studi.name,studi.score0,studi.score1,studi.score2, studi.average); i

16、+; printf(tbb|-|-|-|-|-|-|-|n); printf(tttbbDo you want to go on? y or n?bbbbbbb); flag=getch; /*获取一个字符判断是否要继续显示*/ clrscr; /*清屏*/ /*查找函数*/ void search(struct student stud) int i=0,n,j; char number8,flag=y; clrscr; /*清屏*/ while(flag!=n) i=0; printf(nttttbbbbThe number-name list:n); printf(-); printf(

17、-); /*以下while语言句为输出已有的记录的学号与名字*/ while(iN) /*以下保证输出的学号和名字总长度不长于14*/ if(strlen(studi.number)4) n=4; else n=strlen(studi.number); if(n+strlen(studi.name)6) printf(%-4s-,studi.number); printf(%st,studi.name); i+; else printf(%-4s-,studi.number); printf(%stt,studi.name); i+; else /*总长度长于14时执行else语句*/ pr

18、intf(%-4s-,studi.number); if(strlen(studi.number)4) j=(12-strlen(studi.number); else j=12-4; for(n=0;nj;n+) printf(%c,studi.namen); /*以上输出总长度为13*/ printf(. ); /*长出部分用.省略表示*/ i+; printf(n-); printf(-); printf(nttbInput the students number you want to search:); scanf(%s,number); /*输入要查找的记录的学号*/ i=0; w

19、hile(iN) if(strcmp(studi.number,number)=0) /*查找记录*/ /*输出找到的记录*/ /*当名字长度小于8时执行if语句*/ if(strlen(studi.name)8) printf(n); printf(t |-|-|-|-|-|-|-|n); printf(t |NO:| number | name |score(1)|score(2)|score(3)|average |n); printf(t |-|-|-|-|-|-|-|n); printf(t | %-2d| %-6s|%-8s| %-5.1f | %-5.1f | %-5.1f |

20、%-7.2f|n,i+1,studi.number, studi.name,studi.score0,studi.score1, studi.score2,studi.average); printf(t |-|-|-|-|-|-|-|n); /*当名字长度大于8时执行else语句*/ else printf(n); printf(t |-|-|-|-|-|-|-|n); printf(t |NO:| number | name |score(1)|score(2)|score(3)|average |n); printf(t |-|-|-|-|-|-|-|n); printf(t | %-2

21、d| %-6s|%-16s| %-5.1f | %-5.1f | %-5.1f | %-7.2f|n,i+1,studi.number, studi.name,studi.score0,studi.score1, studi.score2,studi.average); printf(t |-|-|-|-|-|-|-|n); flag=0; i=N; /*找到并打印后i=N退出while循环*/ i+; /*找不到时i自加*/ if(flag) /*当找到记录时flag为0,否则为1*/ printf(ntttYour input is errorn); printf(ntttDo you w

22、ant to go on? y or n?bbbbbbb); flag=getch; /*获取一个字符判断是否要继续查找*/ clrscr; /*清屏*/ /*排序函数*/ void inorder(struct student stud) int i,j,k; for(i=0;iN-1;i+) k=i; /*以下for语句为选择法排序*/ for(j=i+1;jstudk.average) k=j; if(k!=i) temp=studk; studk=studi; studi=temp; H=1; printf(nnnnnnnnnnn); printf( ); printf(* Has b

23、een inoder! *n); /*排序成功提示*/ printf( ); sleep(2); /*调用暂停函数 暂停2秒钟*/ clrscr; /*清屏*/ /*插入记录函数*/ void insert(struct student stud) int i,j,k; float sum; char flag=y,b4; clrscr; /*清屏*/ while(flag=y) sum=0; k=0; printf(Input the students number you want to insert:); scanf(%s,studN.number); /*输入要插入记录的学号*/ fo

24、r(i=0;iN;i+) if(strcmp(studi.number,studN.number)=0) /*查找要插入记录是否存在*/ k=1; if(k) /*判断要插入记录是否存在*/ printf(The record has exist.n); else printf(Input the students name you want to insert:); scanf(%s,studN.name); /*输入要插入记录的名字*/ for(j=0;j3;j+) do printf(Input the students score(%d):,j+1); scanf(%s,b); /*输

25、入分数*/ studN.scorej=atof(b); if(studN.scorej100) /* k=1; printf(Error input !n); printf(Input again .n); else k=0; while(k); sum=sum+studN.scorej; /*三科总分*/ studN.average=sum/3.0; /*平均分*/ /*以下for语句为插入*/ for(j=0;jN;j+) if(studj.averagej;) studi=studi-1; i-; studj=temp; 判断分数是否在0-100之间*/ j=N; N+; H=1; /*

26、记录数加1*/ printf(nInsert success !nn); printf(If you want to go on press:yn); printf(Else press any key to menu:); flag=getch; /*获取一个字符判断是否要继续插入*/ clrscr; /*清屏*/ /*保存记录函数*/ void save(struct student stud) FILE *fp; int i=0; printf(nnnnnnnnnnn); printf( ); printf(* Saving file.*n); /*保存提示*/ printf( ); s

27、leep(1); /*调用暂停函数 暂停1秒钟*/ if(fp=fopen(score,wb)=NULL) /*以wb形式打开文件score*/ printf(Can not open the filen); sleep(1); return; for(i=0;iN;i+) if(fwrite(&studi,sizeof(struct student),1,fp)!=1) /*把记录保存到score文件中*/ printf(File write errorn); return; fclose(fp); /*关闭文件*/ clrscr; /*清屏*/ printf(nnnnnnnnnnn); printf( ); printf(* Saving success ! *n); /*保存成功提示*/ printf( ); H=0; sleep(2); /*调用暂停函数 暂停1.5秒钟*/ clrscr; /*清屏*/ /*改变记录函数*/ void change(void) int i,a,k,n,h,j; float sum; char m10,flag=y,b8; while(flag=y) sum=0; i=0; k=0; printf(nttttbbbbThe number-name list:n); printf(-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号