学生成绩管理系统实验报告材料.doc

上传人:夺命阿水 文档编号:16213 上传时间:2022-06-30 格式:DOC 页数:46 大小:1.25MB
返回 下载 相关 举报
学生成绩管理系统实验报告材料.doc_第1页
第1页 / 共46页
学生成绩管理系统实验报告材料.doc_第2页
第2页 / 共46页
学生成绩管理系统实验报告材料.doc_第3页
第3页 / 共46页
学生成绩管理系统实验报告材料.doc_第4页
第4页 / 共46页
学生成绩管理系统实验报告材料.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《学生成绩管理系统实验报告材料.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统实验报告材料.doc(46页珍藏版)》请在课桌文档上搜索。

1、本课程设计是针对刚学完C语言的计算机类专业学生的课程设计教学。C语言是学生的第一门计算机高级语言课程,课程完毕后,学生已经对C语言程序设计有了较全面的了解,但接触的根本上是为了阐述相关概念或知识点而列举的示例,都是较小的程序,程序功能单一,因此缺乏整体观点和编写一个具体实用的综合程序的思想。本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工具开发一个简单实用的综合程序。为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。要求学生以VC+6.0为开发工具,完成一个小型应用软件的设计

2、和开发。进一步提高学生进展程序设计的能力。1选题2进展系统分析3程序设计实现4系统测试5编写、上交课程设计报告1系统设计要实用。2对系统进展功能模块分析,主要功能模块正确实现。3编程简练,可读性好,界面友好,功能全面。4课程设计报告格式要规X。本课程设计选题为“学生成绩管理系统。系统主要功能是管理学生成绩信息,要求能实现学生成绩添加、删除、修改、查找、平均分、排序等功能。经过分析,确定本系统结构图如如下图所示: 以下各个函数所需的头文件以与预定义#include#include#include#include#include#define N 128#define stlen sizeof(s

3、truct st)/结构体长度结构体 根据系统所管理数据信息的要求和特点,将学生成绩信息定义成以下结构体类型struct stint no; /序号int flag; /标记char num8; /学号char name8; /某某float cpp; /C语言成绩float eng; /英语成绩float math; /数学成绩float ave; /平均分;为了简化函数的参数传递struct st sN;int tot=0;/结构体个数int flag0=0;/标记为0的个数方便各个函数相互调用void head();int all(int t);int change();int dela

4、ll();int delpart();int display(int t);int find();int findswitch(int t);int input();int insert();int part(int t);int recycle();int reset();int save();int sort();int sortswitch(int x);int view();int viewplus();口令函数为了验证是否为主人操作,正确后才可以进入系统,否如此3次错误退出系统void main()system(mode con cols=94 lines=30);/94行30列居中

5、SetConsoleTitle(学生管理系统); /标题system(color F0);/白底黑字printf(欢迎使用学生管理系统n);printf(请输入口令!n);char get10,pw=123;/密码int count=3;while(count)gets(get);if(strcmp(get,pw)=0)printf(口令正确!正在进入系统.n);Sleep(500);head();elseif(count!=1)printf(口令错误!请重新输入!n);printf(您还有%d次机会!n,-count);elseprintf(口令错误!按任意键退出系统!n);getch();

6、exit(1);主函数进入主界面void head()FILE *fp;if(fp=fopen(data.dat,r)=NULL)/如果没有文件fp=fopen(data.dat,wb+); /创建一个文件fp=fopen(data.dat,rb);fseek(fp,0L,SEEK_END);/指向文件尾tot=ftell(fp)/stlen; /结构体个数fseek(fp,0L,SEEK_SET);/指向文件头fread(s,stlen,tot,fp);for(int i=0;itot;i+)if(si.flag=0)flag0+;/查找标记为0的个数fclose(fp);while(1)s

7、ystem(cls);printf(tttt*n);printf(tttt* 欢迎使用学生管理系统 *n);printf(tttt* 按键进入相应功能 *n);printf(tttt*n);printf(tttt* 1.输入学生数据 *n);printf(tttt* 2.显示 *n);printf(tttt* 3.回收站 *n);printf(tttt* 4.重置系统 *n);printf(tttt* 0.退出 *n);printf(tttt*nn);switch(getch()case 1:input();break;case 2:view();break;case 3:recycle();

8、break;case 4:reset();break;case 0:exit(1);default :printf(输入有误!请重新输入。n);Sleep(500);6.3输入函数输入数据int input()/输入FILE *fp;fp=fopen(data.dat,ab+);/system(cls);printf(请输入【学号】【某某】【C语言成绩】【英语成绩】【高数成绩】n);printf(【学号】输入【0】保存并返回主菜单)n);for(int i=0;iN-tot;i+)scanf(%s,si.num);if(strlen(si.num)=1&si.num0=0) /如果输入的长度为

9、1并且是0,退出fclose(fp); return 0;/非正常退出关闭文件scanf(%s%f%f%f,&si.name,&si.cpp,&si.eng,&si.math);si.ave=(si.cpp+si.eng+si.math)/3;si.no=+tot;si.flag=0;/新增结构体自增,标记为0flag0+;/标记0个数自增fwrite(&si,stlen,1,fp);fclose(fp);/正常退出关闭文件printf(数据已超出,请删除后再添加。n);printf(正在返回主菜单.n);Sleep(500);显示函数显示数据以与下一步操作int view()if(flag0

10、=0)printf(无数据!n);elsedisplay(0);printf(tttt*n);printf(tttt* 以上为学生数据: *n);printf(tttt* 请选择操作: *n);printf(tttt* 1.多项删除 *n);printf(tttt* 2.全部删除 *n);printf(tttt* 3.修改 *n);printf(tttt* 4.插入 *n);printf(tttt* 5.查找 *n);printf(tttt* 6.排序 *n);printf(tttt* 7.另存为. *n);printf(tttt* 【其他键】返回主菜单 *n);printf(tttt*n);

11、switch(getch()case 1:/多项删除printf(tttt*n);printf(tttt* 正在进展多项删除操作 *n);printf(tttt* 输入【序号】删除 *n);printf(tttt* 多项之间加【空格】 *n);printf(tttt* 完毕加【0】 *n);printf(tttt*n);part(1);break;case 2:/全部删除printf(tttt*n);printf(tttt* 确定【全部删除】吗? *n);printf(tttt* 【回车键】确认 *n);printf(tttt* 【其他键】取消 *n);printf(tttt*n);if(ge

12、tch()=13)all(1);printf(全部删除成功!正在返回上一级。n);else printf(您已取消全部删除,正在返回上一级。n);break;case 3:/数据修改printf(tttt*n);printf(tttt* 正在进展数据修改操作 *n);printf(tttt* 请输入要修改的【序号】*n);printf(tttt* 【0】取消 *n);printf(tttt*n);change();case 4:insert();break;case 5:find();break;case 6:sort();break;case 7:save();break;Sleep(500

13、);return 0;多项删除删除局部数据到回收站int part(int t)/局部int xN,i=0,co=0;while(1)scanf(%d,&xi);co+;if(x0=0)return 0;if(xi+=0)break;printf(操作的学生序号为:);for(i=0;ico-1;i+)printf(%d ,xi);printf(n确认操作请按【回车键】,否如此按【其他键】n);if(getch()=13)if(t=1)flag0-=(co-1);if(t=0)flag0+=(co-1);FILE *fp;fp=fopen(data.dat,wb+);for(int i=0;i

14、co-1;i+)sxi-1.flag=t;/替换的值fwrite(s,stlen,tot,fp);fclose(fp);else return 0;全部删除数据全部删除到回收站int all(int t)/全部if(getch()=13)if(t=1)flag0=0;if(t=0)flag0=tot;FILE *fp;fp=fopen(data.dat,wb+);for(int j=0;jtot)printf(未找到!n);return 0;if(no0¬ot)printf(输入有误!n);return 0;if(no0&nono-1;i-)si=si-1;si.no+;printf(请

15、输入【学号】【某某】【C语言成绩】【英语成绩】【高数成绩】n);printf(输入【0】取消并返回主菜单)n);i=no-1;scanf(%s,si.num);if(strlen(si.num)=1&si.num0=0) return 0;scanf(%s%f%f%f,&si.name,&si.cpp,&si.eng,&si.math);si.ave=(si.cpp+si.eng+si.math)/3;printf(tttt*n);printf(tttt* 确定【修改数据】吗? *n);printf(tttt* 修改后数据不可恢复 *n);printf(tttt* 【回车键】确认 *n);pr

16、intf(tttt* 【其他键】取消 *n);printf(tttt*n);if(getch()=13)FILE *fp;fp=fopen(data.dat,wb+);fwrite(s,stlen,tot+1,fp);fclose(fp);tot+;flag0+;printf(修改成功!n);else printf(您已取消修改,正在返回上一级。n);return 0;查找查找某个数据int find()while(1)system(cls);printf(tttt*n);printf(tttt* 请选择查找方式 *n);printf(tttt* 1.学号 *n);printf(tttt* 2

17、.某某 *n);printf(tttt* 0.返回主菜单 *n);printf(tttt*nn);switch(getch()case 1:printf(请输入要查找的【学号】n);findswitch(1);break;case 2:printf(请输入要查找的【某某】n);findswitch(2);break;case 0:return 0;break;default :printf(输入有误!请重新输入。n);Sleep(500);学号按照学号查找int findswitch(int t)int i;char ch8;gets(ch);for(i=0;itot;i+)if(t=1&st

18、rcmp(ch,si.num)=0)break;if(t=2&strcmp(ch,si.name)=0)break;if(si.flag=0&itot)printf(已找到!n);printf(序号t学号t某某tC语言t英语t高数t平均分n);printf(%dt%st%st%.2ft%.2ft%.2ft%.2fn,si.no,si.num,si.name,si.cpp,si.eng,si.math,si.ave);else printf(未找到!n);system(PAUSE);return 0;某某按照某某查找排序对数据进展排序int sort()/排序while(1)system(cls

19、);printf(tttt*n);printf(tttt* 请选择排序方式(降序):*n);printf(tttt* 1.学号 *n);printf(tttt* 2.某某(测试) *n);printf(tttt* 3.C语言成绩 *n);printf(tttt* 4.英语成绩 *n);printf(tttt* 5.高数成绩 *n);printf(tttt* 6.平均分 *n);printf(tttt* 0.返回主菜单 *n);printf(tttt*nn);switch(getch()case 1:printf(按照【学号】排序如下: n);sortswitch(1);break;case 2

20、:printf(按照【某某(测试)】排序如下:n);sortswitch(2);break;case 3:printf(按照【C语言成绩】排序如下: n);sortswitch(3);break;case 4:printf(按照【英语成绩】排序如下: n);sortswitch(4);break;case 5:printf(按照【高数成绩】排序如下: n);sortswitch(5);break;case 6:printf(按照【平均分】排序如下: n);sortswitch(6);break;case 0:return 0;break;default :printf(输入有误!请重新输入。n

21、);Sleep(500);学号按照学号排序int sortswitch(int x)/子排序struct st t,s0N;int i,j,k=0;FILE *fp;fp=fopen(data.dat,rb);fread(s,stlen,tot,fp);fclose(fp);for(i=0;itot;i+)if(si.flag=0)s0k+=si;for(i=0;iflag0-1;i+)k=i;for(j=i+1;j0)k=j;if(x=2&strcmp(s0k.name,s0j.name)0)k=j;if(x=3&s0k.cpps0j.cpp)k=j;if(x=4&s0k.engs0j.en

22、g)k=j;if(x=5&s0k.maths0j.math)k=j;if(x=6&s0k.aves0j.ave)k=j;if(k!=i)t=s0i;s0i=s0k;s0k=t;printf(序号t学号t某某tC语言t英语t高数t平均分n);for(i=0;iflag0;i+)printf(%dt%st%st%.2ft%.2ft%.2ft%.2fn,s0i.no,s0i.num,s0i.name,s0i.cpp,s0i.eng,s0i.math,s0i.ave);system(PAUSE);return 0;某某按照某某排序语言成绩按照C语言排序英语成绩按照英语成绩排序6.4.6.5 高数成绩按

23、照高数成绩排序6.4.6.6 平均分按照平均分排序另存为另存为文件导出TXT文件类型导出XLS文件类型int save()/保存system(cls);while(1)system(cls);printf(tttt*n);printf(tttt* 请选择导出方式: *n);printf(tttt* 1.txt文本文档 *n);printf(tttt* 2.xls表格文件 *n);printf(tttt* 0.返回主菜单 *n);printf(tttt*n);int ch=getch();if(ch=0)return 0;if(ch=1|ch=2)FILE *fp;if(ch=1)fp=fope

24、n(data.txt,w);if(ch=2)fp=fopen(data.xls,w);fprintf(fp,序号t学号t某某tC语言t英语t高数t平均分n);for(int i=0;itot;i+)if(si.flag=0)fprintf(fp,%dt%st%st%.2ft%.2ft%.2ft%.2fn,si.no,si.num,si.name,si.cpp,si.eng,si.math,si.ave);fclose(fp);printf(导出成功!n);if(!(ch=0|ch=1|ch=2)printf(输入有误!请重新输入。n);Sleep(500);显示回收站数据,并进展操作int r

25、ecycle()/回收站if(tot=flag0)printf(无数据!n);elsedisplay(1);printf(tttt*n);printf(tttt* 以上为回收站数据: *n);printf(tttt* 请选择操作: *n);printf(tttt* 1.多项恢复 *n);printf(tttt* 2.全部恢复 *n);printf(tttt* 3.多项彻底删除 *n);printf(tttt* 4.清空回收站 *n);printf(tttt* 【其他键】返回主菜单 *n);printf(tttt*n);switch(getch()case 1:printf(tttt*n);pr

26、intf(tttt* 输入【序号】恢复 *n);printf(tttt* 多项之间加【空格】 *n);printf(tttt*n);part(0);printf(数据恢复成功!正在返回上一级。n);break;case 2:printf(tttt*n);printf(tttt* 确定【全部恢复】吗? *n);printf(tttt* 【回车键】恢复 *n);printf(tttt* 【其他键】取消恢复 *n);printf(tttt*n);if(getch()=13)all(0);printf(全部恢复成功!正在返回上一级。n);else printf(您已取消全部恢复,正在返回上一级。n);

27、break;case 3:printf(tttt*n);printf(tttt* 输入【序号】彻底删除 *n);printf(tttt* 多项之间加【空格】 *n);printf(tttt*n);delpart();printf(彻底删除成功!正在返回上一级。n);break;case 4:printf(tttt*n);printf(tttt* 确定【清空回收站】吗?*n);printf(tttt* 【回车键】确认 *n);printf(tttt* 【其他键】取消 *n);printf(tttt*n);if(getch()=13)delall();printf(清空回收站成功!正在返回上一级。n);else printf(您已取消清空回收站,正在返回上一级。n);break;Sleep(500);return 0;6.5.1多项恢复多项恢复数据int part(int t)/局部int xN,i=0,co=0;while(1)scanf(%d,&xi);co+;if(x0=0)return 0;if(xi+=0)break;

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

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


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号