最新C语言课程设计报告---学生成绩管理系统{修}.doc

上传人:1595****071 文档编号:34717185 上传时间:2022-08-18 格式:DOC 页数:69 大小:260KB
返回 下载 相关 举报
最新C语言课程设计报告---学生成绩管理系统{修}.doc_第1页
第1页 / 共69页
最新C语言课程设计报告---学生成绩管理系统{修}.doc_第2页
第2页 / 共69页
点击查看更多>>
资源描述

《最新C语言课程设计报告---学生成绩管理系统{修}.doc》由会员分享,可在线阅读,更多相关《最新C语言课程设计报告---学生成绩管理系统{修}.doc(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言课程设计报告-学生成绩管理系统修C语言课程设计课程教学大纲内蒙古科技大学本科生课程设计论文 题 目:学生成绩管理系统学生姓名:胡书培学 号:1067111106专 业:计算机科学与技术班 级:10级计算机1班指导教师:周李涌 2010年 12 月 30 日目录内蒙古科技大学课程设计任务书3学生成绩管理系统4【摘要】41论文题目:学生成绩管理系统42技术参数、设计

2、步骤:43设计理论分析方法:54.设计结论及分析:54.1 各个函数功能简单分析:54.1.1主菜单函数(main):54.1.2输入函数(input):54.1.3输出函数(display):64.1.4查找(find):64.1.5修改(change):64.1.6删除(del):64.1.7添加(add):64.1.8读入(read):64.1.9保存(save):64.1.10排序(sort):64.1.11学号排序(sortx):74.1.12不及格输出(no_pass):74.1.13输出(shuchu):75参考文献:76. 附录:86.1 程序部分:8内蒙古科技大学课程设计任务

3、书课程名称C语言课程设计设计题目学生成绩管理系统指导教师周李涌时间2010.12.272010.12.31一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。某班学生成绩管理,包括以下功能:v 从键盘输入包括学号、姓名、各门课程成绩(不少于2门),并将其保存在磁盘文件student里v 打开文件后,计算每个人的总分和平均分,排序并保存v 具

4、有在文件中进行单项查询或多项查询的功能(即能够按照给定的关键字,如姓名等找出满足条件的纪录)v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用4. 设计完成后提交课程设计报告四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同

5、,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社学生成绩管理系统【摘要】通过课程设计,让我对C语言有了更深的理解,让我们把学到的理论应用于具体实践中,锻炼了我们各方面的能力,从而让我们更快提高。通过一些简单函数的叠加构成了功能比较完备的学生成绩管理系统,从输入到处理再到输出,你将体会到完美的真正含义。学生成绩管理系统具有以下简单功能:1.从键盘输入包括学号、姓名、各门课程成绩(不少于2门),并将其保存在磁盘文件里2.打开文件后,计算每个人的总分,排序并保存3.具有在文件中进行单项查询或多项查询的功能(即能

6、够按照给定的关键字,如姓名等找出满足条件的纪录)4.具有输出文件数据信息的功能1论文题目:学生成绩管理系统2技术参数、设计步骤:本程序包含输入(input)、输出(display)、查找(find)、修改(change)、删除(del)、添加(add)、读入(read)、保存(save)等基本功能。先分别定义各种全局函数和全局变量now,同时定义结构体及结构体数组(本程序为实现简单操作暂定义长度为3)。其中now作为现有学生信息的一个标记作用尤为重要。每次执行完函数就返回主菜单。共含有四个开关语句,依次在main,display,find,change中,使界面更友好,用户操作更简单。设计共分

7、四步完成,依次为简单设计,添加细节,上机调试,先改错再修改。遇到的问题可以查资料或向老师提问。 3设计理论分析方法:应有全局的概念,拿到题目首先进行总体功能分析,只有对整体功能有了全局把握才能去里自己用那部分知识进行编写。这个阶段好比盖房子,如果这个阶段做好了,说明房子已改好了。剩下任务就是怎么去装修了。确定了大体方向接下来就是功能实现阶段了,即所谓装修阶段。同样需要逐一地先写出能实现此功能的简单程序。比如学生成绩管理系统,先写出最简单的输入、输出、排序等功能函数。然后通过简单函数的互相调用、嵌套构成一个新功能的复杂函数。淡然这中间要加很多其他东西,这就需要我们多看书,多问老师同学啦。等到所有

8、功能都能“正常”(按提示正确输入)实现,再考虑一些细节问题,例如:如果所有都能简单运行,可是有些时候有些输入错误或正确它都运行,这就需要我们通过改写程序使之在正确输入时运行,在错误输入时给出出错提示。就像性别问题,输入M/W时运行,输入其他就不让它运行,同时给出正确输入的提示。这样就好很多了。后面的一一修改就可以了。同时还要考虑到见名知意,如: 输入(input)、输出(display)、查找(find)、修改(change)、删除(del)、添加(add)、读入(read)、保存(save)、排序(sort)、按学号排序(sortx)、不及格(no_pass)、输出(shuchu)。当然还有

9、其他问题需要注意,在这里不一一细说。4.设计结论及分析:4.1 各个函数功能简单分析:4.1.1主菜单函数(main):主函数为一个死循环,前几个是功能实现函数,只有9是退出。也就是说每执行完一个函数,他就自动返回主菜单。只有选择9(退出)时才跳出循环。当然每选择一次它就自动清空屏幕,所以运行结果更直观。4.1.2输入函数(input):先输入要添加的学生数量n,同时now标记现有学生的数量。执行n次循环,输入n个学生的信息;其中输入性别时只有为M/W(M为男,W为女,均大写)时才跳出循环。如果出错,有提示信息。最后自动求和并保存。4.1.3输出函数(display): 三部分1.按总分名次输

10、出2.按学号顺序输出3.输出有不及格课程的学生4.1.4查找(find):查找分为按学号查找和按姓名查找,查找成功就输出,查找失败就返回,输出提示信息继续输入。4.1.5修改(change):输入学号,然后选择修改项,修改完后,提示用户“是否继续修改”,只有输入N/n时退出,输入其它字符都是继续。4.1.6删除(del):输入要删除学生的学号,如果找到就删除其信息,并提示用户删除成功,如果没找到就提示用户删除失败。4.1.7添加(add):根据信息总容量(结构体数组的长度)和第一次输入的信息量判断是否能继续添加。如果添加后信息已满,则提示用户不能继续添加,同时屏蔽了添加选项。4.1.8读入(r

11、ead):从文件读入,避免了用户多次大量输入数据。4.1.9保存(save):每次执行完修改信息包括添加、录入、修改、删除等都需要保存信息。当然在每个修改函数最后都需要调用一下保存函数。4.1.10排序(sort):按总成绩名次排序(冒泡法排序)。n为要排序的学生数量,为形参。4.1.11学号排序(sortx):按学号先后顺序进行排序(冒泡法排序)。n为要排序的学生数量,为形参。4.1.12不及格输出(no_pass):输出不及格的学生信息。4.1.13输出(shuchu):输出第n个学生信息。5参考文献:(1)C语言程序设计,谭浩强,清华大学出版社(2)C语言程序设计课程设计,刘振安,机械工

12、业出版社6. 附录:6.1 程序部分:#include#include#include#include#define max 3void input();void display();void find();void change();void del();void read();void save();void add();void sort(int n);void sortx(int n);void shuchu(int n);void no_pass();int now=0;/*标记位*/struct studentint num;char name20;char sex;int NO;

13、float score1;float score2;float sum;struct student stumax+1;void main()/*主函数(菜单)*/int as;doprintf(nttt欢迎使用学生成绩管理系统nn);printf(ntttt1.录入学员信息ntttt2.显示学员信息ntttt3.查找学员信息ntttt4.修改学员信息ntttt5.删除学员信息ntttt6.添加学员信息ntttt7.读入学员信息ntttt8.保存学员信息ntttt9.退出);printf(nnntttt请选择);scanf(%d,&as);switch(as)case 1:system(cls

14、);input();break;case 2:system(cls);display();break;case 3:system(cls);find();break;case 4:system(cls);change();break;case 5:system(cls);del();break;case 6:system(cls);add();break;case 7:system(cls);read();break;case 8:system(cls);save();break;case 9:system(cls);exit(0);while(1);void input()/*输入函数*/i

15、nt i,n,j; for(i=0;i+) printf(n请输入添加的学生数量(在%d以内):,max-now); scanf(%d,&n); if(nmax)printf(n请确保添加的数量在%d以内t!,max); if(n=max)break; now=n;for(i=0;in;i+)printf(ntttt输入第%d个学生的信息n,i+1);printf(n输入学生的学号:);scanf(%d,&stui.num);getchar();printf(n输入学生的姓名:);gets(stui.name);printf(n请输入学生的性别(M/W):);for(j=0;j+)stui.s

16、ex=getchar();if(stui.sex=M|stui.sex=W)break;else printf(nttt请确保输入性别的正确性(区分大小写)!);getchar();printf(n请输入学生成绩1:);scanf(%f,&stui.score1);printf(n请输入学生成绩2:);scanf(%f,&stui.score2);stui.sum=stui.score1+stui.score2;sort(n);save(); system(cls);void display()/*整体输出函数*/int as,i;printf(nttt班级学生成绩列表nnn);printf(

17、ntttt请选择nnttt1.按名次输出nttt2.按学号输出nttt3.不及格的学生信息nttt);scanf(%d,&as);switch(as) case 1:sort(now);for(i=0;inow;i+)shuchu(i);break; case 2:sort(now);sortx(now);for(i=0;inow;i+)shuchu(i);break;case 3:no_pass();break;void find()/*查询函数*/int num,as,i;char name20;printf(nttt请选择nnn);printf(nttt1.按学号查找nttt2.按姓名查

18、找nttt); scanf(%d,&as);switch(as) case 1:system(cls);printf(请输入要查找的学号:); doscanf(%d,&num); for(i=0;i=now) printf(ntt该生信息不存在!请重新输入学号:);while(i=now);break; case 2:system(cls);getchar();printf(请输入要查找的学生姓名:); do gets(name); for(i=0;i=now) printf(nnttt该生信息不存在!请重新输入姓名:); while(i=now);break;void change()/*修

19、改函数*/int num,as,j,i,m;char a; printf(nttt请输入要修改的学生的学号:);scanf(%d,&num);for(i=0;inow;i+)if(stui.num=num)for(j=0;j=now)printf(nntttt学号输入有误!nn);void del()/*删除函数*/int num,i;printf(nttt输入要删除的学生学号);scanf(%d,&num);for(i=0;i=now)printf(nnnttt学号输入有误!删除失败!nn);break;if(stui.num=num)if(i=now-1)now-=1;else stui=

20、stunow-1; now-=1; printf(nnttt删除成功!nn); sort(now);break;save();void add()/*添加函数*/char ch;int j;printf(ntttt还能添加%d个学生信息!nn,max-now);if(now=max) printf(nnntt存储空间已满无法继续添加!nn);break; printf(nttt是否继续添加?(Y/N); getchar(); ch=getchar(); while(ch!=n|ch!=n);void save()/*文件保存函数*/FILE *fp;/*fp为文件指针*/int i;if(fp

21、=fopen(stu_infer,wb)=NULL)printf(nnttt文件打开失败!);return;for(i=0;imax+1;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(nnttt文件保存错误!);fclose(fp);void read()/*从磁盘读入函数*/int i;FILE *fp;/*fp为文件指针*/fp=fopen(stu_infer,rb);for(i=0;imax+1;i+)fread(&stui,sizeof(struct student),1,fp);fclose(fp);void so

22、rt(int n)/*按成绩排序函数(n为排序个数)*/struct student temp;int i,j;for(j=0;jn-1;j+)for(i=0;in-j-1;i+)if(stui.sumstui+1.sum)temp=stui;stui=stui+1;stui+1=temp;for(i=0;inow;i+)stui.NO=i+1;void sortx(int n)/*按学号排序(n为排序个数)*/struct student temp;int i,j;for(j=0;jn-1;j+)for(i=0;istui+1.num)temp=stui;stui=stui+1;stui+1

23、=temp;void no_pass()/*输出有不及格课程的学生的函数*/int i;printf(nttt显示有不及格课程的学生信息:);for(i=0;inow;i+)if(stui.score160|stui.score260)shuchu(i);void shuchu(int n)/*输出第n个学生信息的函数*/printf(nt学号t姓名t性别t名次t成绩1t成绩2t总成绩n);printf(t%dt%st%ct%dt%.2ft%.2ft%.2fn,stun.num,stun.name,stun.sex,stun.NO,stun.score1,stun.score2,stun.sum);-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁