学生成绩管理系统课程设计报告.docx
《学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统课程设计报告
新乡学院计算机与信息工程学院
课
程
设
计
报
告
课程名称
C语言课程设计
项目名称
学生成绩管理系统
班级
14计科2班
学号
姓名
指导教师
王晓洁
年月日
课程设计主要目的
1.巩固和加深学生对C语言课程的基本知识的理解和掌握;
2.掌握C语言编程和程序调试的基本技能;
3.利用C语言进行基本的软件设计;
4.掌握书写程序设计说明文档的能力;
5.提高运用C语言解决实际问题的能力。
课程设计任务要求
完成一个学生成绩管理,具体要求如下:
1.输入学生信息
2.显示学生信息
3.查询学生信息
(1)按学号查询
(2)按姓名查询
(3)按性别查询
4.更新学生信息
5.删除学生信息
6.计算学生成绩
(1)计算总分
(2)计算平均分
7.保存到文件
8.退出
教师评语
成绩:
指导教师(签名)
课程设计报告正文内容
目录
一、说明设计任务
(1)定义一个结构体类型数组;
(2)输入必要的文字,并在屏幕上显示;
(3)画出部分模块的流程图;
(4)编写代码;
(5)程序分析与调试。
二、需求分析
(1)用C语言实现程序设计;
(2)利用结构体进行相关信息处理;
(3)画出查询模块的流程图;
(4)系统的各个功能模块要求用函数的形式实现;
(5)界面友好(良好的人机互交),程序要有注释
三、设计方案
设计成绩管理系统,要求由菜单进行管理。
(1)从键盘输入包括学号、姓名、各门课程、成绩 。
(2)计算每个人的总分和平均分,并按照平均分排序 。
(3)具有查询功能。
(4)具有学生增加和减少功能 。
(5)将原始数据和计算后的数据保存在磁盘文件中。
四、测试分析
定义一个结构体类型student,变量中包括学生基本信息,如姓名、学号和性别,包括三门课程的成绩,平均成绩等。
____________________________________________________________________________________________________________
structstudent
{
intnum;学号
charname[20];名字
charsex;性别
intNO;名次
floatscore1;成绩1
floatscore2;成绩2
floatscore3;成绩3
floatsum;总分
floatave;平均分
};structstudentstu[max+1];
根据功能模块划分,学生成绩管理系统需建立的以下模块
1.输入函数
2.整体输出函数
3.查询函数
4.修改函数
5.删除函数
6.添加函数
7.保存函数
8.文件读取函数
9.按成绩排序函数
10.按学号排序函数
11.输出第n个学生信息函数
详细设计:
#include
#include
#include
#include
#definemax1000
voidinput();
voiddisplay();
voidfind();
voidchange();
voiddel();
voidsave();
voidadd();
voidsort(intn);
voidsortx(intn);
voidshuchu(intn);
intnow=0;/*标记位*/
structstudent结构体
{
intnum;
charname[20];
charsex;
intNO;
floatscore1;
floatscore2;
floatscore3;
floatsum;
floatave;
};structstudentstu[max+1];
主函数部分
为主面板的设计
voidmain()/*主函数(菜单)*/
{
intas;
do
{
printf("\n\t**********************成绩管理系统**********************\n\n");
printf("\n\t\t\t\t1.输入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.查询学员信息\n\t\t\t\t4.更新学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.添加学员信息\n\t\t\t\t7.保存学员信息\n\t\t\t\t8.退出");
printf("\n\n\n\t\t\t\t请选择");
scanf("%d",&as);
switch(as)
{
case1:
system("cls");input();break;
case2:
system("cls");display();break;
case3:
system("cls");find();break;
case4:
system("cls");change();break;
case5:
system("cls");del();break;
case6:
system("cls");add();break;
case7:
system("cls");save();break;
case8:
system("cls");exit(0);
}
}
while
(1);
}
输入数据部分
确保数据量不会超出范围
voidinput()/*输入函数*/
{
inti,n,j;
for(i=0;;i++)
{
printf("\n请输入添加的学生数量(在%d以内):
",max-now);
scanf("%d",&n);
if(n>max)printf("\n请确保添加的数量在%d以内\t!
!
!
",max);
if(n<=max)break;
}
now=n;
for(i=0;i{
printf("\n\t\t\t\t输入第%d个学生的信息\n",i+1);
printf("\n输入学生的学号:
");
scanf("%d",&stu[i].num);
getchar();
printf("\n输入学生的姓名:
");
gets(stu[i].name);
printf("\n请输入学生的性别(m/w):
");
for(j=0;;j++)
{
stu[i].sex=getchar();
if(stu[i].sex=='m'||stu[i].sex=='w')break;
elseprintf("\n\t\t\t请输入正确的性别!
!
!
");
getchar();
}
printf("\n请输入学生成绩1:
");
scanf("%f",&stu[i].score1);
printf("\n请输入学生成绩2:
");
scanf("%f",&stu[i].score2);
printf("\n请输入学生成绩3:
");
scanf("%f",&stu[i].score3);
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=(stu[i].score1+stu[i].score2+stu[i].score3)/3.0;
}
sort(n);
save();
system("cls");
}
整体输出函数
voiddisplay()/*整体输出函数*/
{
intas,i;
printf("\n\n\t\t\t\t学生成绩列表\n\n\n");
printf("\n\n\t\t\t\t1.按名次输出\n\t\t\t\t2.按学号输出\n\t\t\t\t");
printf("\n\t\t\t\t请选择");
scanf("%d",&as);
switch(as)
{
case1:
sort(now);for(i=0;icase2:
sort(now);sortx(now);for(i=0;i}
}
等等
测试系统能否正确显示菜单选项
执行程序后,得到的界面如图1所示,该图显示有本系统的菜单选项。
图1学生成绩管理主菜单界面
(2)测试系统能否正确输入学生信息
输入如下数据:
学号姓名性别成绩1成绩2成绩3
101zhaom728887
102Liw889292
103sunm927489
进入主菜单界面后,输入数字1进入输入学生信息界面,提示输入人数,然后按提示输入学生信息
输入信息界面如下所示。
图2输入学生信息界面
(3)测试程序能否正确显示学生信息
在主菜单中如果输入数字2,系统会将刚才输入的学生信息按照预定格式显示出来,分为按学号排序和按成绩排序。
显示信息界面如下
。
图3显示学生信息界面
(4)测试系统能否正确查询学生信息
在主菜单界面中,输入数字3,则进入查询学生信息子菜单,允许输入数字1-3,分别按照三种不同方式对学生信息进行查询,例如输入1按学号查询,下图是按学号查询的学号为102的信息
图4显示查询结果界面
(5)测试系统能否正确更新学生信息
在主菜单界面输入数字4,进入更新学生信息界面,按照提示输入要更新的学生的学号,并且可供单个数据修改,修改后还可以提示继续修改与否。
更新学生信息界面如图所示。
图5更新学生信息界面
(6)测试系统能否正确删除学生信息
在主菜单界面输入数字5,进入删除学生信息界面,根据提示输入学生学号。
删除学生信息界面如图6所示。
图6删除学生信息界面
(7)测试系统能否保存文件
在主菜单界面输入数字7,进入保存文件界面,界面如图所示。
五、总结
(1)对于某一部分程序,参考《C语言课程设计》时,有些知识点还没有学到,不明白什么意思,后来经过查阅资料、请教老师,掌握了这些知识点。
(2)刚开始发现程序中有时数据可算平均分,有时却算不成。
经过大量的数据和排除可能性发现只有第一次输进去的数据能计算,而后来增加进去的不能计算,查看源程序发现原来是插入数据模块丢掉了求平均数的命令,怪自己粗心,浪费了不少时间在这个简单问题上。
(3)第一次做课程设计对我来说,是一件让人痛苦的事情。
即便两周的时间,对我来说仍是个困难之事。
开始的时候根本不清楚课程设计是要设计什么,不知道到底怎样设计,因为平时所写的c程序都是一些简单而且基本的C程序,根本不是解决实际情况,符合客户要求的工程程序,所以觉得无从下手,觉得很困难,甚至没有一个思路。
开始编写修改和删除程序时,很头疼,去向其他人寻求帮助,在其他同学的帮助和提示下,我编完了修改程序,但设计过程中仍都有错误存在,困难重重。
遇到困难就开始用大量的时间进行修改以及整理,理出思路。
最终将程序调试成功,而成功的瞬间是最快乐最开心的时刻。
(4)通过这次课程设计我学会了很多东西,觉得自己设计的东西更加接近实际的程序要求。
总的来说,我收获很大,以后我会更努力地学习。
六、参考文献
1梁旭等C程序设计课程设计电子工业出版社2011
2谭浩强C程序设计(第四版)清华大学出版社2010
3张福祥.C语言程序设计[M].辽宁大学出版社,2008.1
4张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:
辽宁大学出版社,2008.
5牛莉,刘远军等.计算机等级考试辅导教程[M].北京:
中国铁道出版社,2008.