学生成绩管理系统设计.docx
- 文档编号:27001943
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:23
- 大小:31.55KB
学生成绩管理系统设计.docx
《学生成绩管理系统设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计.docx(23页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统设计
学号
武汉理工大学华夏学院
课程设计
课程名称C语言课程设计
题目学生成绩管理系统的设计
专业_________________
班级_________________
姓名_________________
成绩_________________
指导教师_________________
2012年2月13日至2012年2月17日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
设计题目:
学生成绩管理系统的设计
要求完成的主要任务:
1.任务描述
要求设计一个学生成绩管理的程序。
实现:
1、学生基本信息及所选科目成绩的录入;2、信息的查询(分系、班级;分科目)与修改;3、对每个系每个班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);4、对所开课程的成绩分析(求其平均成绩,最高分和最低分);5、对考生考试成绩进行排名。
2.本课程涉及的知识点
变量的定义、输入和输出函数、产生随机数函数、if语句、数据文件及其他相关的函数等。
3.要求完成的任务
完成整个规定任务的设计及调试,得出正确结果,并经教师检查及答辩;
写出规范的课程设计说明书;
课程设计结束后交设计说明书等文档和设计内容。
从2月14日起,学生每天至少要到设计教室半天以上;
设计报告撰写格式要求:
设计报告的主要内容是详细写出在设计过程中所用到的主要技术或方法;
课程设计报告按国际通用格式书写,具体格式要求请见资料:
“课程设计说明书的书写内容与格式”
时间安排:
第一天:
学生先在实验室集中,由指导教师介绍课程设计的目的、布置任务后选题;
第二天-第四天:
学生在实验室完成设计,经教师检查并回答提问,确认设计完成;
第五天:
教师在计算机上先检查设计报告、学生修改后打印提交
指导教师签字:
2012年2月13日
系主任签字:
2012年2月13日
说明
1、设计的目的
1)复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握;
2)利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;
3)培养学生在项目开发中团队合作精神、创新意识及实战能力。
2、设计的任务
根据学生的实际情况,进行分组选题。
主要的课程设计题目如下(学生也可自主选题):
1、图书管理系统2、学生信息管理系统
3、学生成绩管理系统4、学生通讯录管理系统
5、职工信息管理系统6、设计简单的计算器
课程设计采用学生自主设计和指导老师辅导相结合的方式。
3、设计要求与设计报告
设计要求:
1、任选上述题目之一,或自选题目。
2、模块化的程序设计
3、锯齿形的程序书写格式。
4、必须通过编译连接运行
设计报告:
1、设计目的和任务
2、总体设计:
包括程序设计组成框图、流程图。
3、详细设计:
包括模块功能说明:
函数功能、入口及出口参数说明,函数调用关系描述等。
4、调试与测试:
包括调试方法,测试结果分析与讨论,测试过程中遇到的主要问题及采取的解决措施。
5、源程序清单和执行结果:
清单中应有足够的注释。
设计目的和任务
(主要介绍设计的任务,为什么要设计,设计要达到什么样的目的。
)
设计目的:
(1)基本掌握面向过程程序设计的基本思路和方法;
(2)达到熟练掌握C语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
程序功能:
(1).学生基本信息及成绩所选科目成绩的录入。
(2).基本信息的查询(分系、班级;分科目)与修改。
(3).对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);
(4).对所开课程的成绩分析(求其平均成绩,最高分和最低分);
(5).对学生考试成绩进行排名;
目录
一、总体设计1
二、详细设计1
三、调试与测试1
四、源程序清单和执行结果1
五、建议和体会1
六、参考文献1
一:
总体设计
设计流程图如下:
二、详细设计
1、输入初始的学生信息:
其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu*p1)来实现此操作。
2、查询模块:
可用stu*lookdata(stu*p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:
可用insert()函数来实现。
其中通过学号的大小来比较的,并且以此来排序。
4、输出学生的信息以及成绩:
通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage()来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:
可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
三、调试与测试
四、源程序设计和测试结果
五、建议和体会
六、参考文献
指导教师的评语及评分
考核小组意见及评分
综合评分
三:
调试与测试
问题一、学生初始信息模块:
其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu*p1)来实现此操作。
当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。
解决办法及步骤:
1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错
3、输出用于循环检查语句中的学生信息,发现乱码
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。
问题二、查询模块:
可用stu*lookdata(stu*p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。
四:
源程序清单和执行结果
源程序如下:
#include"stdio.h"
#include"math.h"
#defineN30
structstudent
{
longintnum;
charname[10];
charsex[3];
intChinese,Math,English,total,average;
}stu[N]={{4001,"lks","m",100,100,100},{4002,"lyt","w",99,63,89},{4003,"asd","w",60,70,80},{4004,"fgh","m",41,100,98},
{4005,"asd","m",74,74,87},{4006,"yt","m",85,58,78},{4007,"qwe","w",74,100,87},{4008,"dcs","w",74,85,96},
{4009,"qfg","m",74,78,36},{4010,"gft","m",45,85,98},{4011,"mn","m",60,77,17},{4012,"yer","w",78,78,100},{4013,"lsd","m",100,89,85}},s;
intM=13;
voidmodify(structstudentstu[])
{
intt;longnum;charz;
t=search(stu)-400;
printf("inputnum:
");
scanf("%ld",&stu[t].num);
printf("inputname:
");
scanf("%s",stu[t].name);
printf("inputsex:
");
scanf("%s",stu[t].sex);
printf("inputscoreofChinese:
");
scanf("%d",&stu[t].Chinese);
printf("inputscoreofMath:
");
scanf("%d",&stu[t].Math);
printf("inputscoreofEnglish:
");
scanf("%d",&stu[t].English);
stu[t].average=(stu[t].English+stu[t].Math+stu[t].Chinese)/3;
stu[t].total=stu[t].English+stu[t].Math+stu[t].Chinese;
printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
printf("\t%4ld\t",stu[t].num);
printf("%s\t",stu[t].name);
printf("%s\t",stu[t].sex);printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[t].Chinese,stu[t].Math,stu[t].English,stu[t].total,stu[t].average);
printf("Next?
y/n?
?
?
");
scanf("%s",&z);
if(z=='y')
modify(stu);
}
voidoutput(structstudentstu[])
{
inti;printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
for(i=0;i { printf("\t%4ld\t",stu[i].num); printf("%s\t",stu[i].name); printf("%s\t",stu[i].sex);printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average); } } voidsort(structstudentstu[]) { inti,j,t; printf("1.anyingyuchengchejipaixu\n2.anyuwenchengjipaixu\n3.anshuxuechengjipaixu\n4.anpingjuechengjipaixu\n5.anzongfenpaixu\n"); scanf("%d",&t); switch(t) { case1: for(i=0;i for(j=0;j { if(stu[j].English { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } } output(stu); getch(); break; case2: for(i=0;i for(j=0;j { if(stu[j].Chinese { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } } output(stu); getch(); break; case3: for(i=0;i for(j=0;j { if(stu[j].Math { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } } output(stu); getch(); break; case4: for(i=0;i for(j=0;j { if(stu[j].average { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } } output(stu); getch(); break; case5: for(i=0;i for(j=0;j { if(stu[j].total { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } } output(stu); getch(); break; } } intsearch(structstudentstu[]) { longt,i,z,K='y';charname[20]; printf("1.anxuehaochazhao\n2.anxingmingchazhao\n"); scanf("%d",&z); switch(z) { case1: printf("qingshuruxuehao: \n"); scanf("%ld",&t); for(i=0;i { if(stu[i].num==t) { K='x';printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n"); printf("\t%4ld\t",stu[i].num); printf("%s\t",stu[i].name); printf("%s\t",stu[i].sex); printf("%4d\t%4d\t%4d\t%4d%6d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average); return(stu[i].num); getche(); break; } } if(K='y') { printf("Nofind"); getchar(); } break; case2: printf("qingshuruxingming: "); scanf("%s",name); for(i=0;i { if(strcmp(stu[i].name,name)==0) { K='x';printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n"); printf("\t%4ld\t",stu[i].num); printf("%s\t",stu[i].name); printf("%s\t",stu[i].sex); printf("%4d\t%4d\t%4d\t%4d%6d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average); getche(); break; } } if(K='y') { printf("Nofind"); getchar(); } break; } } voidinsert(structstudentstu[]) { inti;charz='y'; for(i=M;i<=N&&z=='y';i++) { printf("inputnum: "); scanf("%ld",&stu[i].num); printf("inputname: "); scanf("%s",stu[i].name); printf("inputname: "); scanf("%s",stu[i].sex); printf("inputscoreofChinese: "); scanf("%d",&stu[i].Chinese); printf("inputscoreofMath: "); scanf("%d",&stu[i].Math); printf("inputscoreofEnglish: "); scanf("%d",&stu[i].English);stu[i].average=(stu[i].English+stu[i].Math+stu[i].Chinese)/3; stu[i].total=stu[i].English+stu[i].Math+stu[i].Chinese; printf("Next? y/n? ? ? "); z=getche(); if(z! ='y') { M=i+1; sort(stu); output(stu); } } } voiddelete(structstudentstu[]) { longt,i,z;charl,name[20]; printf("1.anxuehaoshanchu/n2.anxingmingchanchu"); scanf("%d",&z); switch(z) { case1: printf("qingshuruxuehao: "); scanf("%ld",&t); for(i=0;i { if(stu[i].num==t) {printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n"); printf("\t%4ld\t",stu[i].num); printf("%s\t",stu[i].name); printf("%s\t",stu[i].sex);printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average); break; } } printf("Goon? y/n? ? ? "); scanf("%s",&l); if(l=='y') { for(;i { stu[i]=stu[i+1]; } stu[M-1].num=0; output(stu); } else break; case2: printf("qingshuruxingming: "); scanf("%s",name); for(i=0;i { if(strcmp(stu[i].name,name)==0) { printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n"); printf("\t%4ld\t",stu[i].num); printf("%s\t",stu[i].name); printf("%s\t",stu[i].sex);printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average); break; } } printf("Goon? y/n? ? ? "); scanf("%s",&l); if(l=='y') { for(;i { stu[i]=stu[i+1]; } stu[M-1].num=0; output(stu); } else break; } } main() { intchoice,i; clrscr(); for(i=0;i {stu[i].average=(stu[i].English+stu[i].Math+stu[i].Chinese)/3;; stu[i].total=stu[i].English+stu[i].Math+stu[i].Chinese; } for(;;) { printf("\n------xueshengchengjiguanlixitong------\n"); printf("1.modifyxueshengjilu\n"); printf("2.outputxueshengjilu\n"); printf("3.sortxueshengjilu\n"); printf("4.searchxueshengjilu\n"); printf("5.insertxueshengjilu\n"); printf("6.deletexueshengjilu\n"); printf("7.exit\n"); printf("plleaseinput(1-7): \n"); scanf("%d",&choice); switch(choice) { case1: modify(stu); break; case2: output(stu); break; case3: sort(stu); break; case4: search(stu); break; case5: insert(stu);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)