C语言课程设计成绩管理系统_第1页
C语言课程设计成绩管理系统_第2页
C语言课程设计成绩管理系统_第3页
C语言课程设计成绩管理系统_第4页
C语言课程设计成绩管理系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重庆科技学院VC+课程设计报告重庆科技学院C语言程序设计课程设计报告 学 院:_电气与信息工程学院_ 专业班级: 测控1101 学生姓名: 郭怡培 学 号: 2011444505 设计地点(单位)_计算机自主学习中心 _ _设计题目:_ 成绩管理系统_ 完成日期: 2012 年7月6日 指导教师评语: _ _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ 课程设计任务书设计题目:学生成绩管理系统学生姓名郭怡培课程名称C语言程序设计课程设计专业班级测控1101地 点I305起止时间2012年6月25日7月6日设计内容及要求现有学生成绩信息,内容如下姓名 学号 语文 数学 英语 张

2、明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47. . . . 请用C语言编写一系统,实现学生信息管理,软件的功能要求如下:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显

3、示排序结果设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求6月25日第一大节、第二大节 讲解课程设计任务6月25日第三大节、第四大节 阅读课程设计指导书,选择课题6月27日第一大节、第二大节 讲解结构体相关知识6月27日第三大节、第四大节 学生练习结构体的使用6月28日第一大节、第二大节 学生实现第一阶段的阶段性成果6月28日第三大节、第四大节 学生实现第一阶段的阶段性成果6月29日第一大节、第二大节 讲解文件读写的相关知识6月29日第三大节、第四大节 学生学习文件读写7月2日第一大节、第二大节 学生实现第一阶段任务7月2日第三大节

4、、第四大节 学生实现第一阶段任务7月3日第一大节、第二大节 规划设计方案7月3日第三大节、第四大节 编程实现7月4日第一大节、第二大节 编程实现7月4日第三大节、第四大节 编程实现7月5日第一大节、第二大节 程序测试7月5日第三大节、第四大节 编写课程设计报告7月6日第一大节、第二大节 课程设计答辩7月6日第三大节、第四大节 课程设计答辩参考资料1何钦铭 颜晖.语言程序设计.高等教育出版社.2008年2谭浩强 张基温.语言程序设计教程.高等教育出版社.2006年其它难点提示:1、首先分析题目的数据结构,看看要操作那些值(商品数据,金额数据,甚至需要保存每一笔用户的交易);然后根据题意设计操作对

5、象的结构。可以使用结构体来描述其中较为复杂的对象例如往来帐目;确定结构体的定义;可以使用数组来保存商品数据和已收款,剩余零钞数目这样的数据,使用结构体数组来保存往来帐目数据。2、找零算法一种简单的算法是优先找给大额的零钞,用完再找给小额零钞。但是这种算法充其量只能保证服务最多的顾客,但是后来的顾客就只能拿1元的硬币了。因此可以采用动态最优化算法,剩余的零钞哪个最多,优先找哪个。说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任: 指导教师:伍建全/焦晓

6、军/周力 2012年6月22日摘要本设计是用VC+编辑器完成的一个学生成绩管理系统,运用所学C语言知识,通过对菜单项中功能键的调用将学生成绩信息载入数据库,同时可以将学生信息从文件中读取出来,从而实现增加、删除、修改学生信息,按学号、姓名查询学生信息、成绩统计、各科成绩按升序、降序排序等功能。以便于对学生成绩更好更方便更高效的管理。 关键字:C语言、从文件读取、学生成绩管理系统(35个关键字)目录1设计内容和要求11.1设计内容11.2设计要求12总体设计22.1系统功能22.2系统模块22.3总体程序框图23功能模块的具体设计33.1信息维护功能33.2信息查询功能53.3信息统计功能73.

7、4排序功能8 4功能模块的调试及测试94.1信息维护测试94.2信息查询测试104.3信息统计测试114.4排序测试114.5退出测试114.6文件写入测试11总结12致谢13参考文献14源程序151.设计内容和要求1.1 设计内容此次课程设计是学生成绩管理系统,实现学生成绩信息的管理,完成学生信息的增加、修改、删除,学生信息的查询(按学号、姓名),成绩统计,成绩排序(按语文、数学或英语进行的升序和降序排序),以及将学生信息从文件中读取出来。1.2 设计要求现有学生成绩信息,内容如下姓名 学号 语文 数学 英语 张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 8

8、2 56王露 04 56 45 77陈东明 05 67 38 47. . . . 请用C语言编写一系统,实现学生信息管理,软件的功能要求如下:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果 2.总体设计2.1 系统功能本系统学生成绩管理系统,主要对学生成绩信

9、息进行管理,系统可以让用户方便快捷地对每个学生的成绩信息进行操作。本系统主要包括五方面的功能,分别是信息维护、信息查询、信息统计、排序、信息写入文件。信息维护可以实现增加、删除、修改学生信息,信息查询可以实现按学号、姓名查询学生信息,成绩统计可以看到每个分数段学生人数以及占总人数的百分比,排序可以实现学生成绩按每个科目进行的升序或者降序排序,以上输入的学生信息都将写入文档中。2.2系统模块根据设计需求系统包括五个模块,信息维护模块,信息查询模块,信息统计模块,排序模块,退出模块。2.3 总体程序框图系统的总体功能框图如下图所示:学生成绩管理系统信息维护信息维护信息查询信息统计成绩排序退出增加信

10、息修改信息删除信息按学号按姓名升序降序语文数学英语系统总体设计框图3.功能模块的具体设计3.1 信息维护模块本模块又分为增加学生信息、删除学生信息、修改学生信息三个小模块。此模块主要运用if else 语句进行选择执行程序。3.1.1 程序流程图开始结束输入错误修改信息Option=3?删除信息Option=2?增加信息Option=1?输入optionint option 3.1.2 主要功能代码实现scanf(%d,&option);if(option=1)printf(请输入您的选项(序号):n);printf((1)增加学生信息:n);printf((2)删除学生信息:n);print

11、f((3)修改学生信息:n);scanf(%d,&option);if(option=1)printf(请输入要增加的学生的信息(姓名 学号 语文 数学 英语):n);scanf(%s %s %d %d %d,stustuN,stustuNum.num,&stustuNum.chi,&stustuNum.math,&stustuNum.eng);stuNum+;else if(option=2)char num10;printf(请输入要删除学生的学号:n);gets(num);gets(num);for(i=0;istuNum;i+)if(strcmp(stui.num,num

12、)=0)break; for(;istuNum-1;i+)stui=stui+1;stuNum-;else if(option=3)char num10;printf(请输入要修改学生的学号:n);gets(num);gets(num);for(i=0;istuNum;i+)if(strcmp(stui.num,num)=0)printf(请输入要修改的学生的信息(姓名 学号 语文 数学 英语):n);scanf(%s %s %d %d %d,,stui.num,&stui.chi,&stui.math,&stui.eng);break; if(i=stuNum)printf

13、(未找到该学生n); elseprintf(输入错误n); f = fopen(郭怡培.txt,w);fprintf(f,姓名 学号 语文 数学 英语 n);for(i=0;istuNum;i+)fprintf(f,%5s %8s %4d %4d %4dn,,stui.num,stui.chi,stui.math,stui.eng);fclose(f);3.2 信息查询模块本模块分按学号查询和按姓名查询两个小模块。3.2.1 程序流程图开始Option=1? int optionOption=2?按姓名查询按学号查询输入option输入错误结束3.2.2 主要功能代码实现el

14、se if(option=2)printf(请输入您的选项(序号):n);printf((1)按姓名查询:n);printf((2)按学号查询:n); scanf(%d,&option); if(option=1) char name10;printf(请输入要查询学生的姓名:n);gets(name);gets(name);for(i=0;istuNum;i+)if(strcmp(,name)=0)printf(该生的信息为:%5s %8s %4d %4d %4dn,,stui.num,stui.chi,stui.math,stui.eng);break;

15、 if(i=stuNum)printf(未找到该学生n); else if(option=2) char num10;printf(请输入要查询学生的学号:n);gets(num);gets(num);for(i=0;istuNum;i+)if(strcmp(stui.num,num)=0)printf(该生的信息为:%5s %8s %4d %4d %4dn,,stui.num,stui.chi,stui.math,stui.eng);break; if(i=stuNum)printf(未找到该学生n); elseprintf(输入错误n); system(pause);3.

16、3 信息统计3.3.1 程序流程图信息统计输入要统计的信息检验输入信息分析细信息进行处理输出统计结果统计结束回到初始界面3.3.2 主要功能代码实现else if(option = 3)int start,end;char s10;int count=0;doprintf(要查询的科目及分数段(如: 英语 60 80):n);scanf(%s %d %d,s,&start,&end) ;while(strcmp(s,英语)!=0&strcmp(s,语文)!=0&strcmp(s,数学)!=0)|start100|startend);if(strcmp(s,语文)=0)for(i=0;i=sta

17、rt&stui.chi=end)count+;else if(strcmp(s,英语)=0)for(i=0;i=start&stui.eng=end)count+;else for(i=0;i=start&stui.math=end)count+;printf(%s在%d%d分数段的人数为%d,占全体学生总数的%.2lfn,s,start,end,count,count*100.0/(stuNum=0?INT_MAX:stuNum);system(pause);3.4 排序3.4.1 程序流程图调用选择排序函数排序 输出排序结果输入选择判断是否符合条件返回初始界面3.4.2 主要代码功能实现e

18、lse if(option = 4)printf(请输入您的选项(序号):n);printf((1)按升序排序:n);printf((2)按降序排序:n);scanf(%d,&option);if(option=1)printf(请输入您的选项(序号):n);printf((1)按语文排序:n);printf((2)按英语排序:n);printf((3)按数学排序:n);scanf(%d,&option);if (option=1)sort(stu,up,findChi);else if(option=2)sort(stu,up,findEng);else if(option=3)sort(s

19、tu,up,findMath);else printf(输入错误);else if(option=2)printf(请输入您的选项(序号):n);printf((1)按语文排序:n);printf((2)按英语排序:n);printf((3)按数学排序:n);scanf(%d,&option);if (option=1)sort(stu,down,findChi);else if(option=2)sort(stu,down,findEng);else if(option=3)sort(stu,down,findMath);else printf(输入错误);else printf(输入错误)

20、;4.功能模块的调试及测试 4.1 信息维护调试 4.1.1 增加信息测试 从键盘输入1 测试结果: 4.1.2 删除信息测试4.1.3 修改学生信息测试结果:4.2 信息查询测试4.2.1 按姓名查询4.2.2 按学号查询4.3 成绩统计测试4.4 排序测试4.4.1 升序测试测试结果:4.4.2 降序测试测试结果:4.5 退出测试4.6 文件测试致谢写出在本次课程设计及论文完成过程中,为你提供帮助的人,并表达谢意. 通过此次课程设计,让我充分地学习到了C语言的知识,熟练地掌握了循环、函数、指针等C语言知识,灵活利用所学知识编写对我们有用的程序。在课程设计中,我学到了很多知识,三位老师的教导

21、以及同学们的团队合作给我留下了深深地印象,特别感谢三位老师两个星期来辛勤地指导我们,让我对所学知识有了更深一步地了解,也激发了我在编程方面的兴趣,希望在今后的学习生活中还能保持这两个星期的积极性。 签名 郭怡培 日期 2012/7/4参考文献1何钦铭 颜晖.语言程序设计.高等教育出版社.2008年2谭浩强 张基温.语言程序设计教程.高等教育出版社.2006年源程序#include #include #include #include typedef structchar name10;char num15;int chi;int math;int eng;student;int up(int

22、x)return x; int down(int x)return -x;int findChi(student *s)return s-chi;int findEng(student *s)return s-eng;int findMath(student *s)return s-math;int stuNum=0;void sort(student *s,int (*p)(int x),int (*q)(student *r)int i,j,k;student temp;for(i=0;istuNum-1;i+)k=i;for(j=i+1;jstuNum;j+)if(p(q(&sj)-q(

23、&sk)0) k=j;if(k!=i)temp=si;si=sk;sk=temp;void output(student *s)int i;printf(n);printf( 学 生 成 绩 管 理 系 统 n);printf(n);for(i=0;i64;i+)printf(+);printf(n);printf(+ 姓名 学号 语文 数学 英语 +n);for(i=0;istuNum;i+)printf(+ %5s %8s %4d %4d %4d +n,,si.num,si.chi,si.math,si.eng);for(i=0;i64;i+)printf(+);printf

24、(n);int main(int argc, char *argv)student stu100;int i;FILE *f;doint option; system(cls);output(stu);printf(请输入您的选项(序号):n);printf((1)信息维护:n);printf((2)信息查询:n);printf((3)成绩统计:n);printf((4)排序:n);printf((5)退出:n);scanf(%d,&option);if(option=1)printf(请输入您的选项(序号):n);printf((1)增加学生信息:n);printf((2)删除学生信息:n)

25、;printf((3)修改学生信息:n);scanf(%d,&option);if(option=1)printf(请输入要增加的学生的信息(姓名 学号 语文 数学 英语):n);scanf(%s %s %d %d %d,stustuN,stustuNum.num,&stustuNum.chi,&stustuNum.math,&stustuNum.eng);stuNum+;else if(option=2)char num10;printf(请输入要删除学生的学号:n);gets(num);gets(num);for(i=0;istuNum;i+)if(strcmp(stui.n

26、um,num)=0)break; for(;istuNum-1;i+)stui=stui+1;stuNum-;else if(option=3)char num10;printf(请输入要修改学生的学号:n);gets(num);gets(num);for(i=0;istuNum;i+)if(strcmp(stui.num,num)=0)printf(请输入要修改的学生的信息(姓名 学号 语文 数学 英语):n);scanf(%s %s %d %d %d,,stui.num,&stui.chi,&stui.math,&stui.eng);break; if(i=stuNum)

27、printf(未找到该学生n); elseprintf(输入错误n); f = fopen(郭怡培.txt,w);fprintf(f,姓名 学号 语文 数学 英语 n);for(i=0;istuNum;i+)fprintf(f,%5s %8s %4d %4d %4dn,,stui.num,stui.chi,stui.math,stui.eng);fclose(f);else if(option=2)printf(请输入您的选项(序号):n);printf((1)按姓名查询:n);printf((2)按学号查询:n); scanf(%d,&option); if(option=

28、1) char name10;printf(请输入要查询学生的姓名:n);gets(name);gets(name);for(i=0;istuNum;i+)if(strcmp(,name)=0)printf(该生的信息为:%5s %8s %4d %4d %4dn,,stui.num,stui.chi,stui.math,stui.eng);break; if(i=stuNum)printf(未找到该学生n); else if(option=2) char num10;printf(请输入要查询学生的学号:n);gets(num);gets(num);for(

29、i=0;istuNum;i+)if(strcmp(stui.num,num)=0)printf(该生的信息为:%5s %8s %4d %4d %4dn,,stui.num,stui.chi,stui.math,stui.eng);break; if(i=stuNum)printf(未找到该学生n); elseprintf(输入错误n); system(pause);else if(option = 3)int start,end;char s10;int count=0;doprintf(要查询的科目及分数段(如: 英语 60 80):n);scanf(%s %d %d,s,&start,&end) ;while(strcmp(s,英语)!=0&strcmp(s,

温馨提示

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

评论

0/150

提交评论