C课程设计学生成绩管理系统

上传人:仙*** 文档编号:32509989 上传时间:2021-10-14 格式:DOC 页数:25 大小:701.02KB
收藏 版权申诉 举报 下载
C课程设计学生成绩管理系统_第1页
第1页 / 共25页
C课程设计学生成绩管理系统_第2页
第2页 / 共25页
C课程设计学生成绩管理系统_第3页
第3页 / 共25页
资源描述:

《C课程设计学生成绩管理系统》由会员分享,可在线阅读,更多相关《C课程设计学生成绩管理系统(25页珍藏版)》请在装配图网上搜索。

1、二一二一一 学年第 一 学期信息科学与工程学院课程设计报告书课程名称: 班 级: 学 号: 姓 名: 指导教师: 二一 年 九 月学生成绩管理程序一、 需求分析:设计要求:u 能录入学生信息存储在文件中,每位学生录入的信息有:姓名、学号、性别、班级、和三门功课(数学,英语,计算机)的成绩。如: 学号 姓名 性别 班级 数学 英语 计算机 0701 王鹏 男 1班 70 58 980702 李燕 女 2班 68 88 950703 赵亚芳 女 3班 58 48 96 0704 刘飞 男 4班 67 78 58u 能够统计每个学生三门课程的总成绩;u 能按学生学号查询其三门功课成绩并显示;u 能浏

2、览全部学生成绩;u 能按总成绩由高到低显示学生信息。系统功能分析: 该学生成绩管理系统有八大功能:1. 录入功能:能录入学生的学号,姓名,性别,英语,计算机等2. 排序功能:能按总分排序3. 查询功能:能按姓名查找该生的成绩并且显示其全部成绩4. 删除功能:能按学号删除某一个学生的成绩5. 修改功能:能按姓名修改某个学生的成绩6. 插入功能:能在已输入的成绩中插入一个新学生的成绩7. 显示功能:操作完以上的功能后每次返回主菜单选择该项便可将结果显示出来8. 保存与读取功能:能将数据自定义的txt格式保存在外部磁盘并且读取,二、 概要设计:(1) 主函数结构图: 主 函 数 录 入 模 块 排

3、序 模 块 删 除 模 块 修 改 模 块 插 入 模 块 显 示 模 块 查 询 模 块保 存 和 入 读 模 块(2)模块功能详细说明及思路:A、录入模块:此模块可以连续输入80个学生的资料,若学生数少于80,录入完后输入n就可退出此模块,输入y可以继续B、排序模块:在此模块可以将已经输入进来的学生按总分进行排序,此处排序使用的冒泡排序法C、查询模块:此模块中使用学生姓名对比查找,如对比存在就显示出来D、修改模块:此模块中先通过姓名对比找到要修改的学生成绩,然后覆盖原来已有的成绩从而达到修改某一个学生的任何一门功课的成绩E、删除模块:此模块中用到的删除原理为覆盖要删除的学生的资料。过程简述

4、,先输入要删除的学生的学号,系统找到此学生的信息后会给一个提示,是否删除信息,如是系统会再次要求输入学号并给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。然后文件中的学生总数减一。F、插入模块:此模块能是在定义num当前已有的学生个数后,通过循环在后面加入的,直到输入N或n为止,即可完成插入函数G、显示模块:此模块能是被其它函数调用执行一次操作,再回到主菜单调用显示出经过以上操作的最终结果H、保存和读入模块:此模块能将信息以txt形式保存在外部磁盘上,并且也能从外部磁盘读入给程序使用三、详细设计: (1)各个模块的程序

5、流程图开始输入添加的学号i输入各门科的成绩结束输入添加的姓名i输入添加的性别和班级录入模块: 删 除 模 块:stui=stunum-1;Multii=numstui.no=inumsystem(cls);i+inumi=0输入序号i求和函数:stui.sum=stui.math+stui.english+puter;Int i;i+inumi=0排序模块:temp=stuj;j+j=num-ij=1i+inumi=1Struct student temp;stuj-1.sumstuj.sum查询模块:Multii+inumi=0system(cls);!asInt i;printf(输入要查

6、询的学生姓名:);printf(tt按任意键返回主菜单.);插入模块ch!=n&ch!=NChar ch;printf(ntt输入新插入学生信息n);修改模块:break;system(cls);system(cls);i+inumi=0inti;保存模块:stui.sum=stui.math+stui.english+puter;printf(n保存失败!);fclose(fp);i+inumi=0FILE*fp;(fp=fopen(filepath,w)=NULL打开模块:fscanf(fp,t学号t姓名t性别t班级t数学t英语t计算机t平均分t总分n);fclose(fp);i+iMAX

7、&!feof(fp)i=0num=0;FILE*fp;(fp=fopen(filepath,r)=NULLprintf(找不到%s文件!n,filepath);三、 主要程序代码清单及关键注释1,程序源代码:#include#include #include#define MAX 80void input();/*原始数据录入函数*/void output();/*显示操作结果函数*/void sortall();/*对总分分排序*/void find();/*根据姓名查找成绩*/void insert();/*插入一个成绩*/void del();/*删除成绩记录*/void change(

8、);/*修改记录*/void save();/*保存函数*/void read();/*读入函数*/void average();/*求平均分*/int num=0; struct student /学生信息 int no; char name20; char sex4; char ban8; float math; float english; float computer; float ave; float sum;struct student stuMAX,*p;void main()/*主函数*/ int as; int i;start: printf(%55sn, 3武汉科技大学学生

9、成绩管理系统3n); printf(t444444444444444444444444444444444444444444444444444444444444n); printf( 制作者:武汉科技大学信息科学与工程学院自动化0901 肖小龙 n); do for (i = 0; i 80; i+) putchar(=); putchar(n); printf( 5 1 输入信息 5 2 输出信息n); printf( 5 3 按平均分排序 5 4 按姓名查找n); printf( 5 5 插入 5 6 按学号删除n); printf( 5 7 按姓名修改 5 8 保存到文件 n); prin

10、tf( 5 9 读取文件 5 0 退出n);for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 6请输入各操作对应的序号:); fflush(stdin); scanf(%d,&as); switch(as) case 1:system(cls);input();break; case 2:system(cls);output();break; case 3:system(cls);sortall();break; case 4:system(cls);find();break; case 5:system(cls);inser

11、t();break; case 6:system(cls);del();break; case 7:system(cls);change();break; case 8:system(cls);save();break; case 9:system(cls);read();break; case 0:system(exit);exit(0); default:system(cls);goto start; while(1);void input()/*原始数据录入模块*/ int i=0; char ch; do printf(tttt1.录入学生信息n5请输入第%d个学生的信息5n,i+1)

12、; printf(111111111111111111n); printf(111111111111111111n); printf(n6输入学生学号:); scanf(%d,&stui.no); fflush(stdin); printf(n6输入学生姓名:); fflush(stdin); gets(stui.name); printf(n6输入学生性别:); fflush(stdin); gets(stui.sex); printf(n6输入学生班级:); fflush(stdin); gets(stui.ban); printf(n6输入学生数学成绩:); fflush(stdin);

13、 scanf(%f,&stui.math); printf(n6输入学生英语成绩:); fflush(stdin); scanf(%f,&stui.english); printf(n6输入学生计算机成绩:); fflush(stdin); scanf(%f,&puter); printf(nn); i+; num=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getchar(); system(cls); while(ch!=n&ch!=N); system(cls);void output()/*显示数据函数*/ int i; char as; ave

14、rage(); do printf(ttt5班级学生信息表5n);for(i=0;i80;i+) putchar(-);printf(t|学号t|姓名t|性别t|班级t|数学t|英语t|计算机t|平均分t|总分);putchar(n); for(i=0;i80;i+) putchar(=); for(i=0;inum&stui.name0;i+) printf(t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2f,stui.no,stui.name,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.s

15、um); putchar(n); for(i=0;i80;i+) putchar(=); putchar(n); printf(按回车键继续:); getchar(); getchar(); as=getchar(); while(!as);system(cls);void average()/*求平均数*/ int i; for(i=0;inum;i+) stui.sum=stui.math+stui.english+puter; stui.ave=stui.sum/3; void sortall()/*按总分排序数据函数*/ struct student temp; int i,j; av

16、erage(); for(i=1;inum;i+) for(j=1;j=num-i;j+) if(stuj-1.sumstuj.sum) temp=stuj; stuj=stuj-1; stuj-1=temp; void find()/*查询函数*/ int i; char str20,as; do printf(tt3欢迎进入查询系统3n); printf(4请输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inum;i+) if(!strcmp(stui.name,str) printf(t|学号t|姓名t|性别t|班级t|数学t|英语t|计

17、算机t|平均分t|总分|n); printf(t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2fn,stui.no,stui.name,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); for(i=0;i80;i+)putchar(=); putchar(n); printf(tt4按任意键返回主菜单.); fflush(stdin); as=getchar(); while(!as); system(cls);void insert()/*插入数据函数*/ char ch; do pr

18、intf(tt3欢迎进入插入系统:3n); printf(ntt6请输入新插入学生信息n); printf(n6输入学生学号:); scanf(%d,&stunum.no); fflush(stdin); printf(n6请输入学生姓名:); fflush(stdin); gets(stunum.name); printf(n6请输入学生性别:); fflush(stdin); gets(stunum.sex); printf(n6请输入学生班级:); fflush(stdin); gets(stunum.ban); printf(n6请输入学生数学成绩:); fflush(stdin);

19、scanf(%f,&stunum.math); printf(n6请输入学生英语成绩:); fflush(stdin); scanf(%f,&stunum.english); printf(n6请输入学生计算机成绩:); fflush(stdin); scanf(%f,&puter); printf(nn); num=num+1; sortall(); printf(是否继续输入?(Y/N); fflush(stdin); ch=getchar(); system(cls); while(ch!=n&ch!=N);void del()/*删除数据函数*/ int inum,i; char ch

20、; printf(tt3欢迎进入删除系统:3n); printf(5输入要删除学员的编号:); scanf(%d,&inum); printf(6你真想删除该学生的信息吗?一但删除不能恢复6n); printf(是否继续?(Y/N); fflush(stdin); ch=getchar(); system(cls); if(ch=y|ch=Y) printf(6请再次输入要删除学员的编号:); scanf(%d,&inum); else goto a; for(i=0;inum;i+) if(stui.no=inum) if(i=num) num-=1; else stui=stunum-1;

21、 num-=1; sortall(); break; printf(删除成功!); a:; system(cls);void change()/*修改数据函数*/ int i; char str20; printf(tt欢迎进入成绩修改系统:); printf(6输入要修改的学生姓名:); fflush(stdin); gets(str); for(i=0;inum;i+) if(!strcmp(stui.name,str) system(cls); printf(ntt6请输入新插入学生信息n); printf(n输入学生学号:); scanf(%d,&stui.no); fflush(st

22、din); printf(n6输入学生姓名:); fflush(stdin); gets(stui.name); printf(n6输入学生性别:); fflush(stdin); gets(stui.sex); printf(n6输入学生班级:); fflush(stdin); gets(stui.ban); printf(n6输入学生数学成绩:); fflush(stdin); scanf(%f,&stui.math); printf(n6输入学生英语成绩:); fflush(stdin); scanf(%f,&stui.english); printf(n6输入学生计算机成绩:); ff

23、lush(stdin); scanf(%f,&puter); printf(nn); sortall(); break; system(cls);void save()/*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); exit(0); fprintf(fp,t|学号t|姓名t|性别t|班级t|数学t|英语t|计算机t|平均分t|总分n); for(i=0;inu

24、m;i+) stui.sum=stui.math+stui.english+puter; stui.ave=stui.sum/3; fprintf(fp,t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2fn,stui.no,stui.name,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls);void read()/*读取功能*/ FILE *fp

25、; int i; char filepath20; printf(输入要读入的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,r)=NULL) printf(找不到%s文件!n,filepath); system(pause); exit(0); num=0; for(i=0;iMAX&!feof(fp);i+) fscanf(fp,t学号t姓名t性别t班级t数学t英语t计算机t平均分t总分n); fscanf(fp,t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2fn,stui.no,stui.n

26、ame,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); num+; fclose(fp); printf(保存的在文件%s中的所有信息已经读入!n,filepath); system(pause); system(cls); 五,调试分析过程描述:数据测试1、 菜单主页面2、 选择输入信息添加完毕后回到主菜单,选择2,显示添加成功可以看到总分一栏并未被排序,返回主菜单选择3,再选择2即可显示可以看到排序成功,证明排序功能存在3、 选择4按姓名查找4、 选择5插入功能5、 选择删除功能6、 选择修改功能7可以看

27、到修改后刘飞的总成绩变为266,原为2037、 选择保存8可以重新打开看到记事本中已有记录,说明保存成功8、 对程序调试过程的思考:1.每次录入信息时,如果出错时,很难更改,不能进行重新更改功能,经调试和修改还未能解决,另外没能将删除的信息进行恢复,2.有部分函数执行后不能立即显示结果,需要返回到主菜单调用其他的。3.另外在录如时不能检查是否因误录入导致学号相同,再删除时只能删掉一个4.对调试的看法,首先要要按一定的步骤来处理,昨天由于没有按一定的步骤,结果花了很长时间也未能搞好。六、课程设计小结:1、在设计过程中的感受:首先经过的是暑期在家准备编写程序,并在开学第一周进行调试,并最后附一段的

28、报告总结,我对C这门语言有了新的认识,应该是获益不浅!在此过程中给我最大的体会是要想编写一个准确、高效并有使用价值的程序,一定先1.要对课本知识熟悉,因为,在调试过程中,可以发现好多出错误是在基本的知识上,2.还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。就光调试程序用的时间最对,稍改一点,就可能得不到预期的结果。这次课程设计,让我对C语言了解更进一层,而且还得到了用C语言解决实际问题的宝贵经验。其次, 通过此次编程我也发现了自己在学习中的错误和不足,不仅复习了以前学过的知识。同时也学到了一些没学过的知识,让我从中收益非浅,也为即将到来的计算机二级考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!再则, 因为初次接触等原因此次设计遇到了许多问题,我深刻体会到网络所发挥的重要作用,因为好多不懂的在网上基本能找到相关的解答。C语言程序对我们来说比较难,在匆匆忙忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,虽然匆忙但是初步了解如何调试,以后还得多练习,才能有所提高。特别是在程序能按预期的目标显示时 ,体会到原来编程也挺有意思的。最后,我也体会到编程不易,编一个好的程序更不容易。25

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!