学生成绩管理系统C语言课程设计报告.docx
- 文档编号:389372
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:60
- 大小:311.76KB
学生成绩管理系统C语言课程设计报告.docx
《学生成绩管理系统C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言课程设计报告.docx(60页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C语言课程设计报告
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——学生成绩管理系统
学生姓名:
学号:
专业:
软件工程
班级:
1班
指导教师:
日期:
2015年1月1日
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
学生成绩管理系统
指导教师
时间
2015.1.1-2015.1.7
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
某班学生成绩管理,包括以下功能:
v从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里
v打开文件后,计算每个人的总分和平均分,排序并保存
v具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)
v具有插入、删除和修改功能
v具有输出文件数据信息的功能
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料
1.《C语言程序设计》,谭浩强,清华大学出版社
2.《C语言程序设计课程设计》,刘振安,机械工业出版社
第一章需求分析
1.1引言
此报告完整呈现了我开发“学生成绩管理系统”的整个软件过程,包括需求分析阶段,软件设计与实现阶段和测试阶段。
在需求分析阶段,明确所要开发的软件应具有的功能、性能与界面,使系统使用人员及系统开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
在软件设计与实现阶段,进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示,然后着手于实践。
最后在测试阶段检验了我们的软件的实用性,发现了许多不足。
这个报告即是对最后软件的总体描述
1.2任务概述
学生成绩管理系统:
包括以下功能:
v从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里
v打开文件后,计算每个人的总分和平均分,排序并保存
v具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)
v具有插入、删除和修改功能
v具有输出文件数据信息的功能
1.3数据描述
数据是关于学生的资料:
包括学号、姓名、5门功课的成绩、总分、平均分。
1.4功能需求
为实现学生成绩管理系统,该程序有以下功能:
1.输入学生成绩。
以插入节点的形式将输入的学生资料按总分降序插入链表中。
2.删除学生成绩。
用学号进行查找,查找到后直接删除。
3.查询学生成绩。
三种查找方式,1.姓名2.学号3.分数。
1.2.为精确查找,3为范围查找,输入成绩后,查找出所有高于该成绩的学生并输出。
4.修改学生成绩。
按学号查找学生,查找后可以修改学生的所有信息,包括学号。
修改成绩后自动对总分、平均分更新。
5.排序学生成绩。
排序学生成绩有三种排序方案:
1.学号升序。
2.总分升序。
3.总分降序
6.保存学生成绩。
将学生成绩保存到student文件内,以便下次运行程序时读入数据。
7.科目设置。
对五门科目的名称进行设置。
8.程序密码设置。
程序首次运行时,设置密码。
密码保存在mima.txt文件内。
以后每次运行程序都需要输入密码。
9.程序密码修改。
在进入程序主界面后,可以对程序密码进行修改。
修改密码会覆盖原有的mima.txt,将新的密码保存在该文件内。
10.程序字体颜色。
为了程序的美观性,在主菜单内设置了颜色功能。
可以修改程序的颜色。
有9种颜色可供选择。
1.5性能需求
本程序采用动态内存申请的方式,储存学生成绩资料,尽可能的节省了所占内存空间,并且在程序结束时释放所有内存。
1.6运行需求
在输入学号是学号数值大小不大于长整型的数值范围。
姓名不超过5个中文字符、11个英文字符。
学生成绩不超过宏定义的maxscore100不小于minscore0.
本程序在运行时,要求有student文件储存学生资料,mima.txt文件储存程序密码,kemu.txt文件储存科目名称。
在文件不存在时,程序会自行创建这些文件以供使用。
1.7任务计划
设计一个学生成绩管理系统,来管理学生成绩。
包括以下功能:
v从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里
v打开文件后,计算每个人的总分和平均分,排序并保存
v具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)
v具有插入、删除和修改功能
v具有输出文件数据信息的功能
第二章概要设计
2.1总体设计
2.2数据类型设计(或数据结构设计)
typedefstructstudent
{
longxuehao;
charname[12];
intchengji[N];
intzongfen;
floatpingjun;
structstudent*next;
}NODE;
2.3接口设计
voidhuanyingyu();//LED灯闪烁欢迎语
voidmytime();//输出问候语句+时间
voidmima(charmi[],charmi1[]);//密码函数
voidcaidan();//输出主菜单
NODE*daoru(NODE*l,charkemu[][20]);//已存在信息导入
voidjieshu(NODE*l);//模块0结束程序
NODE*InsertNode(NODE*head,charkemu[][20],intcount);//模块1插入学生资料(总分排序)
NODE*DeleteNode(NODE*head);//模块2删除学生资料
voidFIND(NODE*head,charkemu[N][20]);//模块3查询学生资料
voidxiugai(NODE*head,charkemu[N][20]);//模块4修改学生资料
voidDisplyNode(NODE*head,charkemu[][20]);//模块5显示学生资料
voidTongji(NODE*l,charkemu[][20]);//模块6统计学生资料
NODE*paixv(NODE*head);//模块7排列学生资料
voidmimaxiugai(char*mi1);//模块8密码修改
voidkemushezhi(charkemu[][20],intk);//模块9科目设置
voidSave(NODE*l);//模块10学生资料保存
voidyanse();//模块11颜色设置
2.4运行界面设计
第二章详细设计
3.1输入模块设计
1.流程图
2.模块代码:
/*函数功能:
菜单功能1输入学生信息以总分降序插入链表*/
NODE*InsertNode(NODE*head,charkemu[][20],intcount)
{
intj,i;
intsum,xuehao;
NODE*pr=head->next,*p=head,*temp=NULL,*q=head->next;
p=(NODE*)malloc(sizeof(NODE));/*让p指向待插入节点*/
if(p==NULL)/*若为新建节点申请内存失败,则退出程序*/
{
printf("Noenoughmemory!
\n");
exit(0);
}
p->next=NULL;/*为待插入节点的指针域赋值为空指针*/
printf("请输入第%d位学生资料:
",count);
printf("请输入学号:
(输入0返回)");
scanf("%ld",&p->xuehao);
xuehao=p->xuehao;
if(p->xuehao==0)
{
free(p);
returnhead;
}
else
{
while(xuehao!
=q->xuehao&&q->next!
=NULL)/*未找到且未到表尾*/
{
q=q->next;
}
if(xuehao==q->xuehao)
{
printf("您输入的学好对应学生信息已存在,请检查是否错误后重新输入!
\n");
free(p);
returnhead;
}
}
printf("请输入姓名:
");
scanf("%s",p->name);
for(j=0;j { w: printf("请输入%s的%s成绩: ",p->name,kemu[j]); scanf("%d",&p->chengji[j]); if(p->chengji[j]>maxscore||p->chengji[j] { printf("输入成绩超出有效范围,请重新输入! \n"); gotow; } } sum=0; for(i=0;i { sum+=(*p).chengji[i]; } p->zongfen=sum; p->pingjun=(float)sum/N; system("pause"); if(head==NULL)/*若原链表为空表*/ { head=p;/*待插入节点作为头节点*/ } else { /*若未找到待插入节点的位置且未到表尾,则继续找*/ while(pr->zongfen>p->zongfen&&pr->next! =NULL) { temp=pr;/*在temp中保存当前节点的指针*/ pr=pr->next;/*pr指向当前节点的下一节点*/ }//printf("程序运行到此"); if(pr->zongfen<=p->zongfen) { if(pr==head->next)/*若在头节点前插入新节点*/ { p->next=head->next;/*将新节点的指针域指向原链表的头节点*/ head->next=p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言 课程设计 报告