C语言课程设计报告成绩管理系统.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言课程设计报告成绩管理系统.pdf》由会员分享,可在线阅读,更多相关《C语言课程设计报告成绩管理系统.pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-一、 课程设计的容(1)信息维护:要求:学生信息数据要以文件的形式保存, 能实现学生信息数据的维护。 此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按查询、按*查询(3)成绩统计:要求:A 输入任意的一个课程名如数学和一个分数段如60-70 ,统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果使用表格的形式显示排序后的输出结果 使用多种方法排序者,加分二其它要求:1 只能使用 C/C+语言,源程序要有适当的注释,使程序容易阅读2 至少采用文本菜单界面如果能采用图形菜单界面更好3 学生可自
2、动增加新功能模块视情况可另外加分4写出课程设计报告,具体要求见相关说明文档二、课程设计的要求与数据1、进一步掌握和利用 C 语言进展程设计的能力;2、进一步理解和运用构造化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的根本方法;4、学会调试一个较长程序的根本方法;5、学会利用流程图或 N-S 图表示算法;6、掌握书写程序设计开发文档的能力。三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的容应包括以下 6 个局部:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括
3、主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图 ;5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改良?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等容;6) 附录:主要源程序代码,含必要的注释。3、辩论:在实验室建立程序运行的环境,并在指导教师的监视下,独立解决问题、运行程序和答复教师提出的问题。.z.-目目录录1 设计目的与要求P42 总体设计P43 详细设计P53.1 功能模块设计P5
4、*功能模块(可选) P53.1.2 YY 功能模块(可选) P63.1.3 ZZ 功能模块(可选)P73.2 数据构造设计P84 调试分析P9 4.1 构造体P9 4.2 链表P115 遇到的问题及解决方法分析P126 总结P137 源文件P13 7.1 链表P13 7.2 构造体P281 1、目的与要求、目的与要求一目的:编制一程序实现对学生成绩的管理,让自己既动手又动脑, 独立实践,将课本上的理论知识和实际应用问题进展有机结合, 锻炼自己分析、解决实际问题的能力,提高自身工程开发及程序调试能力。二 要求:1、整个系统均用C语言实现;2、利用指针、构造体、链表来实现学生成绩的数据构造设计;3
5、、系统具有输入、显示、查询查询时可实现按查询、按*查询、删除、排序、插入,保存、读取根本功能;4、系统的各个功能模块都用函数的形式来实现;.z.-5、学生信息数据要以文件的形式保存, 能实现学生信息数据的维护。 此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息;6、可以输入任意的一个课程名如数学和一个分数段如 60-70 ,统计出在此分数段的学生情况;7、能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果;8、可自动增加新功能模块;9、可以将学生信息从文件中读取出来。2 2 总体设计总体设计1 1、 主函数 main()利用 if-else,While 循环语句和
6、 switch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。2 2、 菜单项选择择函数 void menu();这是一个无参函数,主要实现功能选择的界面,在这个界面里有显示系统的13 大功能,根据每个功能前面的序号进展选择。等执行完每一个函数功能后,按任0键回到主界面也要通过这个函数提示来实现!3 3、 自定义函数 void printstart()、void Wrong()、void Nofind()、void printc()、voidprinte(Node *p)用 void Wrong()来提示输入错误, 用 void Nofind()提示没有找到学生资料, 用 voi
7、d printc()来输出中文,用 void printe(Node *p)来输出中文。.z.-main()main()void Add(Link l)void Maths(Link l)void Add(Link l)void Maths(Link l)void Qur(Link l)void English(Link l)void Qur(Link l)void English(Link l)void Del(Link l)void select(Link l)void Del(Link l)void select(Link l)void Modify(Link l)void Save(L
8、ink l)void Modify(Link l)void Save(Link l)void Disp(Link l)void menu()void Disp(Link l)void menu()void Tongji(Link l) void printc()void Tongji(Link l) void printc()void Chinese(Link l)void printe(Node *p)void Chinese(Link l)void printe(Node *p)3 3 详细设计详细设计3.13.1 功能模块设计功能模块设计排序数学成绩功能模块函数函数 void Maths
9、(Link l)void Maths(Link l)该函数用于对数学成绩进展降序,ll=(Link)malloc(sizeof(Node)用于做新的链表连接,如果原链表为空的话,返回;不为空的话,p=l-ne*t;建立接点用于保存信息,对指定链表地址进展排序。流程图如下图:.z.-Link llll=(Link)malloc(sizeof(Node)用于做新的连表l-ne*t=NULL是否没有资料可以 p=l-ne*t排序 while(p)return s=(Node*)malloc(sizeof(Node)rr=llwhile(rr-ne*t!=NULL& rr-ne*t-data.mgra
10、de=p-data.mgrade)是 rr-ne*t=NULL否rr-ne*t=ss-ne*t=rr-ne*t;rr-ne*t=sp=p-ne*tl-ne*t=ll-ne*t 排序完成显示学生资料功能模块函数函数 void Disp(Link l)void Disp(Link l)该函数负责显示学生资料,这是一个不返回值函数。算法:算法:先将 p 结点的指针指向第一个结点, 将 p 结点(即第一个结点)的数据输出。然后再将p 结点的指针指向 p 指针的的指针(即下一结点),将p 结点(即第一结点)的数据输出。重复执行此步聚直到 p 指针指向 NULL 为止。流程图如下图:原来链表是否为空是否提
11、示没有 p 指向下一结点 p=p-ne*t资料可以输出 p 指向的结点,即学生信息显示 return p指向下一结点 p=p-ne*t删除资料功能模块函数 void Del(Link l)该函数用于有选择地删除学生资料,如果原来的链表为空的话,会返回;不为空的话, 选择.z.-用按哪种类型删除,如果按*删除,就输入*,后判断是否取得地址,取得就执行删除;按名字删除就输入名字,运行同*一样。流程图如下图:原链表是否为空是否没有资料 1按 1*还是 2 按名字? 2可以删除输入你要删除的*输入你要删除的名字P P 是否取得输入地址是否取得输入地址 P P 是否取得输入地址是否取得输入地址是是否否否
12、否是是Return rReturn r 指向下一指向下一 Nofind() Nofind () r Nofind() Nofind () r 指向下一指向下一结点结点执行 free(p)执行 free(p)3.23.2 数据构造设计数据构造设计( (可选可选) )一个构造体变量中可以存放一组数据 如一个学生的*、 、成绩等数据 。一个构造体变量的指针就是该变量所占据的存段起始地址。 可以设一个指针变量, 用来指向一构造体变量, 此时指针变量的值是构造体的起始地址。指针量变也可以用来指向一构造体数组中的元素。struct studentchar num10;/* * */char name20;
13、char se*4;int cgrade;int mgrade;int egrade;.z.-int totle;int ave;char neartime10;/* 最近更新时间 */;typedef struct nodestruct student data;struct node *ne*t;Node,*Link;6 6 总总 结结经过一个多星期的 C 语言课程设计,感觉自己收获不少!首先是:要到达这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本,使 C 语言的知识强化了不少。其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不
14、返回值函数两者在主函数中的调用是不同的更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了 C 语言的重要性。 这个学生成绩管理系统都是在自己知识围完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。相信这次的课程设计使我的 C 语言知识扎实了很多。由于这是第一次进展设计,写文档,难免会写得不好!7 7 源程序源程序.z.-7. 17. 1 链表链表#include stdio.h#include stdlib.h#include string.hint
15、 shoudsave=0; /* */struct studentchar num10;/* * */char name20;char se*4;int cgrade;int mgrade;int egrade;int totle;int ave;char neartime10;/* 最近更新时间 */;typedef struct nodestruct student data;struct node *ne*t;Node,*Link;void menu()printf(*);printf(t1 登记学生资料ttttt2 删除学生资料n);printf(t3 查询学生资料ttttt4 修改学
16、生资料n);printf(t5 显示学生资料ttttt6 统计学生资料n);printf(t7 排序语文成绩ttttt8 排序数学成绩n);printf(t9 排序英语成绩ttttt10 选出分段分数n);printf(t11 保存学生资料ttttt12 帮助信息ttn);printf(t0 退出系统tttttttn);printf(*n);void printstart()printf(-n);void Wrong().z.-printf(n=提示:输入错误!n);void Nofind()printf(n=提示:没有找到该学生!n);void printc() /* 本函数用于输出中文 *
17、/printf(*t t性别语文成绩 数学成绩英语成绩总分平均分n);void printe(Node *p)/* 本函数用于输出英文 */printf(%-12s%st%st%dt%dt%dt %dt %dn,p-data.num,p-data.name,p-data.se*,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);Node* Locate(Link l,char findmess,char nameornum) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */Node *r;if(st
18、rcmp(nameornum,num)=0) /* 按*查询 */r=l-ne*t;while(r!=NULL)if(strcmp(r-data.num,findmess)=0)return r;r=r-ne*t;else if(strcmp(nameornum,name)=0) /* 按查询 */r=l-ne*t;while(r!=NULL)if(strcmp(r-data.name,findmess)=0)return r;r=r-ne*t;return 0;void Add(Link l) /* 增加学生 */Node *p,*r,*s;.z.-char num10;r=l;s=l-ne
19、*t;while(r-ne*t!=NULL)r=r-ne*t; /* 将指针置于最末尾 */while(1)printf(请你输入*(以0返回上一级菜单:);scanf(%s,num);if(strcmp(num,0)=0)break;while(s)if(strcmp(s-data.num,num)=0)printf(=提示:*为%s的学生已经存在,假设要修改请你选择4 修改!n,num);printstart();printc();printe(s);printstart();printf(n);return;s=s-ne*t;p=(Node *)malloc(sizeof(Node);s
20、trcpy(p-data.num,num);printf(请你输入:);scanf(%s,p-data.name);getchar();printf(请你输入性别:);scanf(%s,p-data.se*);getchar();printf(请你输入语文成绩:);scanf(%d,&p-data.cgrade);getchar();printf(请你输入数学成绩:);scanf(%d,&p-data.mgrade);getchar();printf(请你输入英语成绩:);scanf(%d,&p-data.egrade);getchar();p-data.totle=p-data.egrade
21、+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle / 3;.z.-/* 信息输入已经完成 */p-ne*t=NULL;r-ne*t=p;r=p;shoudsave=1;void Qur(Link l) /* 查询学生 */int sel;char findmess20;Node *p;if(!l-ne*t)printf(n=提示:没有资料可以查询!n);return;printf(n=1 按*查找n=2 按查找n);scanf(%d,&sel);if(sel=1)/* * */printf(请你输入要查找的*:);scanf(%s,fin
22、dmess);p=Locate(l,findmess,num);if(p)printf(tttt 查找结果n);printstart();printc();printe(p);printstart();elseNofind();else if(sel=2) /* */printf(请你输入要查找的:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p)printf(tttt 查找结果n);printstart();.z.-printc();printe(p);printstart();elseNofind();elseWrong();void
23、Del(Link l) /* 删除 */int sel;Node *p,*r;char findmess20;if(!l-ne*t)printf(n=提示:没有资料可以删除!n);return;printf(n=1 按*删除n=2 按删除n);scanf(%d,&sel);if(sel=1)printf(请你输入要删除的*:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)r=l;while(r-ne*t!=p)r=r-ne*t;r-ne*t=p-ne*t;free(p);printf(n=提示:该学生已经成功删除!n);shoudsave=
24、1;elseNofind();else if(sel=2)printf(请你输入要删除的:);scanf(%s,findmess);.z.-p=Locate(l,findmess,name);if(p)r=l;while(r-ne*t!=p)r=r-ne*t;r-ne*t=p-ne*t;free(p);printf(n=提示:该学生已经成功删除!n);shoudsave=1;elseNofind();elseWrong();void Modify(Link l)Node *p;char findmess20;if(!l-ne*t)printf(n=提示:没有资料可以修改!n);return;p
25、rintf(请你输入要修改的学生*:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)printf(请你输入新*(原来是%s):,p-data.num);scanf(%s,p-data.num);printf(请你输入新(原来是%s):,p-data.name);scanf(%s,p-data.name);getchar();printf(请你输入新性别(原来是%s):,p-data.se*);scanf(%s,p-data.se*);printf(请你输入新的语文成绩(原来是%d 分):,p-data.cgrade);scanf(%d,&p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 成绩管理系统
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内