李伟课程设计报告学生测评系统.docx
- 文档编号:2255284
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:31
- 大小:601.72KB
李伟课程设计报告学生测评系统.docx
《李伟课程设计报告学生测评系统.docx》由会员分享,可在线阅读,更多相关《李伟课程设计报告学生测评系统.docx(31页珍藏版)》请在冰点文库上搜索。
李伟课程设计报告学生测评系统
《C语言程序设计》
课程设计报告
题目:
学生测评系统____
院(系):
信息科学与工程学院
专业班级:
___软件工程1202班___
学生姓名:
李伟
学号:
20121611052
指导教师:
梁洁
2013年6月8日至2013年6月21日
华中科技大学武昌分校制
C语言程序设计课程设计任务书
一、设计题目
学生测评系统(难度系数★★★★)
二、设计主要内容
该系统通过结构体数组或链表实现了对学生测评信息的批量录入、浏览、修改、删除、添加、查询以及考试平均成绩和综合测评总分自动计算功能。
具体要求如下:
学生的测评信息为:
学号、姓名、性别、家庭住址、联系电话、语文成绩、数学成绩、外语成绩、考试平均成绩、同学互评分、品德成绩、教师评分、综合测评总分,试设计学生测评信息管理系统,使之能提供以下功能:
(1)基本功能:
①系统以菜单方式工作:
提供一个字符主菜单使用户可以选择不同的字符来实现系统的各个功能,各个功能实现后又能够返回到主菜单。
②批量录入功能:
在录入的过程中,通过询问用户是否继续录入的方法来录入多个学生的测评信息(每个学生考试平均成绩和综合测评总分信息不用录入)。
③平均成绩和综合测评总分自动计算:
根据考试平均成绩=(语文+数学+外语)/3,计算出学生的考试平均成绩,根据综合测评总分=考试成绩*0.6+同学互评分*0.1+品德成绩*0.1+老师评分*0.2,计算出学生的综合测评总分。
④浏览功能:
按一定的格式显示所有学生测评信息。
⑤修改功能:
输入要修改的学号,先对该学号进行查询,如果查询成功,则可以根据提示对该学生测评每项信息(学生考试平均成绩和综合测评总分信息除外)进行修改,当修改了语文成绩、数学成绩、外语成绩、同学互评分、品德成绩、教师评分后,能够自动修改学生的考试平均成绩和综合测评总分的信息,如果查询不成功,则显示相应的提示信息。
⑥删除功能:
输入要删除的学号,先对该学号进行查询,如果查询成功,则删除该学生测评所有信息,如果查询不成功,则显示相应的提示信息。
⑦添加功能:
输入要添加的学号,先对该学号进行查询,如果查询成功,则提示输入的学号已存在的信息,并要求能够重新输入,如果查询不成功,则输入该学生测评的其他信息(考试平均成绩和综合测评总分信息不添加),并实现对考试平均成绩和综合测评总分自动计算,从而完成一个学生测评信息的录入。
⑧查询功能:
能够分别按输入的学号和姓名查询学生测评的信息,如果查询成功,则按一定的格式显示查询结果,如果查询不成功,则显示相应的提示信息。
(2)扩展功能:
①保存功能:
首先提示用户输入保存的文件名,将结构体数组或链表中的通讯录信息保存在指定的文件中。
三、原始资料
无
四、要求的设计成果
(1)实现该系统功能的程序代码
(2)撰写符合规范要求的课程设计报告
五、进程安排
序号
课程设计内容
学时分配
备注
1
选题与搜集资料
1天
2
分析与设计
1天
3
模块实现
4天
4
系统调试与测试
2天
5
撰写课程设计报告
2天
合计
10天
六、主要参考资料
[1] 梁旭,谷晓琳,黄明.C语言课程设计.第2版.北京:
电子工业出版社,2009.
[2] 王新.C语言课程设计.北京:
清华大学出版社,2009.
[3]谭浩强.C语言程序设计.北京:
清华大学出版社,2011.
指导教师(签名):
20年月日
目录
1系统需求分析………………………………………………………………………5
1.1系统概述………………………………………………………………………5
1.2系统功能分析…………………………………………………………………5
2系统结构设计…………………………………………………………………………6
3系统实现………………………………………………………………………………8~21
4系统测试………………………………………………………………………………22~28
结论………………………………………………………………………………………29
(要求:
目录题头用三号黑体字居中书写,隔行书写目录内容。
目录中各级题序及题标用小四号黑体字)
1系统需求分析
1.1系统概述
现代人社会交往越来越多,纸质的测评系统已经不能满足我们的要求,更新麻烦,查询困难,录入也不方便等缺点是纸质测评系统所不能克服的。
在此情况下,迫切需要一个电子版的学生测评系统来满足我们的需求,对学生测评系统进行必要的管理,满足人们对记录提供了极大的方便。
考虑到要对学生测评系统进行快速检索,所以采用结构体数组实现通讯录信息管理系统。
要求实现插入、查找、删除、修改、保存等基本功能,人机界面友好,使用文字化界面。
所以便产生该学生测评系统。
1.2系统功能分析
该系统通过结构体数组或链表实现了对学生测评信息的批量录入、浏览、修改、删除、添加、查询以及考试平均成绩和综合测评总分自动计算功能。
具体要求如下:
学生的测评信息为:
学号、姓名、性别、家庭住址、联系电话、语文成绩、数学成绩、外语成绩、考试平均成绩、同学互评分、品德成绩、教师评分、综合测评总分,试设计学生测评信息管理系统,使之能提供以下功能:
(1)基本功能:
①系统以菜单方式工作:
提供一个字符主菜单使用户可以选择不同的字符来实现系统的各个功能,各个功能实现后又能够返回到主菜单。
②批量录入功能:
在录入的过程中,通过询问用户是否继续录入的方法来录入多个学生的测评信息(每个学生考试平均成绩和综合测评总分信息不用录入)。
③平均成绩和综合测评总分自动计算:
根据考试平均成绩=(语文+数学+外语)/3,计算出学生的考试平均成绩,根据综合测评总分=考试成绩*0.6+同学互评分*0.1+品德成绩*0.1+老师评分*0.2,计算出学生的综合测评总分。
④浏览功能:
按一定的格式显示所有学生测评信息。
⑤修改功能:
输入要修改的学号,先对该学号进行查询,如果查询成功,则可以根据提示对该学生测评每项信息(学生考试平均成绩和综合测评总分信息除外)进行修改,当修改了语文成绩、数学成绩、外语成绩、同学互评分、品德成绩、教师评分后,能够自动修改学生的考试平均成绩和综合测评总分的信息,如果查询不成功,则显示相应的提示信息。
⑥删除功能:
输入要删除的学号,先对该学号进行查询,如果查询成功,则删除该学生测评所有信息,如果查询不成功,则显示相应的提示信息。
⑦添加功能:
输入要添加的学号,先对该学号进行查询,如果查询成功,则提示输入的学号已存在的信息,并要求能够重新输入,如果查询不成功,则输入该学生测评的其他信息(考试平均成绩和综合测评总分信息不添加),并实现对考试平均成绩和综合测评总分自动计算,从而完成一个学生测评信息的录入。
⑧查询功能:
能够分别按输入的学号和姓名查询学生测评的信息,如果查询成功,则按一定的格式显示查询结果,如果查询不成功,则显示相应的提示信息。
(2)扩展功能:
①保存功能:
首先提示用户输入保存的文件名,将结构体数组或链表中的通讯录信息保存在指定的文件中。
2系统结构设计
2.1系统结构图
2.2函数详细说明
main();主函数indesk();主界面函数
luru();录入函数liulan();浏览函数
update_record();修改函数delete_record();删除函数
add();添加函数search();查找函数
save_to_file();保存函数read();读取数据函数
average();求平均值函数paixu();排序函数
Main是主函数,程序首先是从主函数开始运行的。
在主函数中要判断你是第几次进入系统。
luru是录入函数,可以批量录入学生的信息,他被主函数所调用,也被主界面函数调用。
Index函数是显示主界面的,提供用户所进行的一些操作选项。
被反复调用,与其他函数(除主函数)进行相互调用。
liulan是浏览函数,调用排序函数按学号的从小到大进行排序后浏览所有的学生信息。
Update-record是更新函数,可以修改学生的信息。
Deleted-record是删除函数,可以删除学生的信息。
add是添加函数,可以添加新的学生信息。
Save_to_file是保存函数,可以保存用户所录入的学生的信息。
3系统实现
3.1学生结构体数组的定义和基本的头文件声明
#include
#include
#include
#defineN100
intn=0,t=0;
structstudent_assess//定义一个结构体数组。
{charnum[30];
charname[30];
charsex[10];
charaddress[30];
charphonenumber[30];
floatchinese_score;
floatmath_score;
floatenglish_score;
floatclass_a_score;
floatquality_score;
floatte_a_score;
}s[N];
3.2主函数
主函数判断用户是否是第一次进入系统,如果是的话就调用录入函数,不是的话就调用读入函数和主界面函数。
voidmain()//主函数
{chara;
voidluru();
voidindesk();
voidread();
printf("你是第一次登陆吗?
scanf("%c",&a);
if(a=='y')luru();
if(a=='n')
{read();
indesk();
}
}
3.3主界面函数
显示系统的所有功能,让用户选择。
voidindesk()//主菜单函数
{voidluru();
voidliulan();
voidupdate_record();
voiddelete_record();
voidadd();
voidsearch();
voidsave_to_file();
intx;
printf("****-----欢迎来到学生测评系统------****\n");
printf("*--------软工1202------李伟--------*\n");
printf("选择要执行的功能\n");
printf("1录入学生信息\n2浏览所有学生信息\n3修改学生信息\n4删除学生记录\n5添加新学生\n6查询学生信息\n7保存学生信息\n8退出系统\n");
printf("*----------------------------------*\n");
scanf("%d",&x);
if(x==1){system("cls");luru();}//录入学生信息
if(x==2){system("cls");liulan();}//浏览所有学生信息
if(x==3){system("cls");update_record();}//修改学生信息
if(x==4)delete_record();//删除学生记录
if(x==5){system("cls");add();}//添加新学生
if(x==6){system("cls");search();}//查询学生信息
if(x==7)save_to_file();//保存学生信息
if(x==8)exit(0);
}
3.4录入函数
可以批量录入学生的信息。
voidluru()//批量录入函数
{intx;
printf("请输入学生信息:
\n");
for(;t {printf("学号姓名性别家庭住址联系电话语文成绩数学外语同学评品德教师评\n"); scanf("%s%s%s%s%s%f%f%f%f%f%f",s[t].num,s[t].name,s[t].sex,s[t].address,s[t].phonenumber,&s[t].chinese_score,&s[t].math_score,&s[t].english_score,&s[t].class_a_score,&s[t].quality_score,&s[t].te_a_score); n=n+1; printf("请选择: \n1继续录入学生\n2停止录入返回主菜单\n"); scanf("%d",&x); if(x==1) continue; if(x==2) indesk(); } } 3.5浏览函数 通过调用排序函数来按学号顺序输出所有学生的信息。 voidliulan()//浏览函数 {intx; voidpaixu(); paixu(); printf("请输入1可返回主菜单: "); scanf("%d",&x); if(x==1)indesk(); } 3.6修改函数 先查找学生,然后进行修改。 voidupdate_record()//修改学生信息函数 {inti,g,count; charb[30]; printf("请输入学号: "); scanf("%s",&b); for(i=0;i<=n;i++) {if(strcmp(b,s[i].num)==0) {printf("该学生信息为: 学号: %s姓名: %s性别: %s家庭住址: %s联系电话: %s\n语文成绩: %.2f数学: %.2f英语: %.2f同学互评: %.2f品德: %.2f老师互评: %.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score); count=i; printf("请输入修改后的学生信息: (按以上顺序输入)\n"); scanf("%s%s%s%s%s%f%f%f%f%f%f",s[count].num,s[count].name,s[count].sex,s[count].address,s[count].phonenumber,&s[count].chinese_score,&s[count].math_score,&s[count].english_score,&s[count].class_a_score,&s[count].quality_score,&s[count].te_a_score); average(s[count]); printf("1返回主菜单"); scanf("%d",&g); if(g==1)indesk(); break; } } if(i>n) printf("没有找到学号是【%s】的学生。 \n1返回主菜单",b); scanf("%d",&g); if(g==1)indesk(); } 3.7删除函数 先通过学号来查询然后实现删除。 voiddelete_record()//删除函数 {voidindex(); inti,x,j; charg[30]; system("cls"); printf("请输入要删除的学号: \n"); scanf("%s",g); for(j=0;j { if(strcmp(g,s[j].num)==0) {printf("存在该生信息,删除该生信息: \n"); for(i=j;i { strcpy(s[i].num,s[i+1].num); strcpy(s[i].name,s[i+1].name); strcpy(s[i].sex,s[i+1].sex); strcpy(s[i].phonenumber,s[i+1].phonenumber); strcpy(s[i].address,s[i+1].address); strcpy(s[i].address,s[i+1].address); s[i].chinese_score=s[i+1].chinese_score; s[i].english_score=s[i+1].english_score; s[i].math_score=s[i+1].math_score; s[i].class_a_score=s[i+1].class_a_score; s[i].quality_score=s[i+1].quality_score; s[i].te_a_score=s[i+1].te_a_score; n=n-1; } printf("恭喜你删除成功! \n"); } elseif(j==n-1)printf("不存在这个学生\n"); } printf("1返回主菜单\n2继续删除\n"); scanf("%d",&x); if(x==1)indesk(); elsedelete_record(); } 3.8添加函数 先查找是否存在该学生,如果不存在就进行添加,存在的话就提示该学生信息存在不用添加。 voidadd()//添加新学生函数 {inti,m,x; charb[30]; voidpaixu(); printf("请输入要添加学生的学号: "); scanf("%s",&b); for(i=0;i {if(strcmp(s[i].num,b)==0) {printf("该学生存在(不用添加)信息为: 学号%s姓名%s性别%s家庭住址%s联系电话%s\n语文成绩%.2f数学%.2f英语%.2f同学互评%.2f品德%.2f老师互评%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score); break;} } if(i>=n) {printf("该学号不存在可以添加\n"); printf("请按下列顺序输入\n学号姓名性别家庭住址联系电话语文成绩数学外语同学评分品德教师评分\n"); scanf("%s%s%s%s%s%f%f%f%f%f%f",s[n].num,s[n].name,s[n].sex,s[n].address,s[n].phonenumber,&s[n].chinese_score,&s[n].math_score,&s[n].english_score,&s[n].class_a_score,&s[n].quality_score,&s[n].te_a_score); n=n+1; printf("共有%d个学生\n",n); } printf("您可以选择\n1按学号顺序查看所有学生信息。 \n2继续添加。 \n"); scanf("%d",&m); if(m==1) {paixu(); printf("请输入1可返回主菜单: "); scanf("%d",&x); if(x==1)indesk(); } if(m==2)add(); } 3.9查询函数 可以分别按学号和姓名来查询学生的信息。 voidsearch()//查询函数 {inti,x,k; chara[20],b[30]; voidaverage(structstudent_assessw); printf("请输入按何种方式查询: \n1按学号\n2按姓名\n"); scanf("%d",&x); if(x==1) {printf("按学号查询,请输入学号: \n"); scanf("%s",a); for(i=0;i { if(strcmp(a,s[i].num)==0) { printf("存在该生信息\n"); printf("该学生信息为: 学号%s姓名%s性别%s家庭住址%s联系电话%s\n语文成绩%.2f数学%.2f英语%.2f同学评%.2f品德%.2f老师评%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score); average(s[i]); printf("1继续查找\n2返回主菜单\n"); scanf("%d",&k); if(k==1)search(); if(k==2)indesk(); break; } } if(i>=n) {printf("没有找到这个学生\n1继续查找\n2返回主菜单\n"); scanf("%d",&k); } if(k==1)search(); if(k==2)indesk(); } if(x==2) {printf("按姓名查询,请输入姓名: "); scanf("%s",b); for(i=0;i { if(strcmp(b,s[i].name)==0) {printf("存在该生信息\n"); printf("该学生信息为: \n学号%s姓名%s性别%s家庭住址%s联系电话%s\n语文成绩%.2f数学%.2f英语%.2f同学互评%.2f品德%.2f老师互评%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score); average(s[i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 学生 测评 系统