学生成绩处理系统的设计与实现的设计说明书.docx
- 文档编号:26590928
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:24
- 大小:579.67KB
学生成绩处理系统的设计与实现的设计说明书.docx
《学生成绩处理系统的设计与实现的设计说明书.docx》由会员分享,可在线阅读,更多相关《学生成绩处理系统的设计与实现的设计说明书.docx(24页珍藏版)》请在冰豆网上搜索。
学生成绩处理系统的设计与实现的设计说明书
C\C++程序设计课程设计
设计说明书
学生成绩处理系统的设计与实现
学生姓名
学号
班级
成绩
指导教师
计算机科学与技术系
2009年7月3日
C\C++程序设计课程设计评阅书
题目
学生成绩处理系统的设计与实现
学生姓名
学号
指导教师评语及成绩
指导教师签名:
年月日
答辩评语及成绩
答辩教师签名:
年月日
教研室意见
总成绩:
室主任签名:
年月日
课程设计任务书
2008—2009学年第二学期
专业:
计算机科学与技术学号:
姓名:
课程设计名称:
软件技术基础课程设计
设计题目:
学生成绩处理系统的设计与实现
完成期限:
自2009年6月22日至2009年7月3日共2周
设计依据、要求及主要内容(可另加附页):
有如下表所示的若干个学生成绩:
学号
姓名
C语言
数学
英语
总分
平均
08001
李强
90
95
80
08002
张兵
68
75
58
08003
刘英
78
80
64
…
…
…
…
…
要求用C/C++语言编写一个程序实现学生成绩处理系统,数据的基本存储结构采用结构体数组,指针作为函数的参数。
要求实现如下功能:
1)阐述设计思想,画出流程图;
2)对学生成绩进行录入和修改;
3)横向计算每个学生各门功课的总成绩及平均成绩;纵向计算某门课程的平均分数;
4)采用选择排序、快速排序、归并排序对学生的平均成绩进行排序;
5)统计每门课程中不及格人数、60—70分、70—80分、80—90分以及90分以上人数;
6)说明测试方法,写出完整的运行结果,较好的界面设计;
7)编写课程设计报告。
以上要求中前三个阶段的任务完成后,先将设计说明书的草稿交指导老师面审,审查
合格后方可进入后续阶段的工作。
设计工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。
最终设计成果形式为:
1.设计好的软件一套;
2.撰写一份课程设计说明书一份,打印并装订成册。
指导教师(签字):
教研室主任(签字):
批准日期:
年月日
摘要
设计了一个学生成绩处理系统软件,该处理系统具有计算每个学生的总成绩、平均成绩以及对学生平均成绩进行排列功能,计算各门课的总成绩和平均成绩功能,统计每门课各分数段的人数以及修改学生信息的功能。
本成绩处理系统采用VC++作为软件开发环境,采用了结构体数组来实现。
操作简单,可适用多个学生的多门成绩处理。
关键词:
成绩处理;函数;VC++
目录
1课题描述…………………………………………………………………………1
2设计过程…………………………………………………………………………2
3程序源代码………………………………………………………………………7
4测试结果与分析…………………………………………………………………13
总结…………………………………………………………………………………17
参考文献……………………………………………………………………………18
1课题描述
学生成绩处理系统可以通过简单的操作,实现对学生成绩平均分的计算,学生成绩的排序,修改,以及对每门课程总分,平均分的计算和各分数段人数的统计。
对所输学生成绩的平均分进行选择排序,选择排序是将一组无序数据按升序排列。
首先比较a[1]和a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变;再比较a[1]和a[3]的值,以此类推,共处理n-1轮后就以升序排列。
对一门课中各个分数段人数进行统计,是用if-else语句实现多分支的方法。
学生成绩处理系统解决了教师处理学生成绩的难题,提高了成绩处理的效率。
在次以VisualC++6.0作为开发工具,编程实现了学生成绩处理的演示系统。
2设计过程
本设计采用结构体、数组实现学生成绩的基本处理。
下面给出学生成绩处理系统中学生成绩的输出、平均成绩的计算和排列、各门课程的总分平均分以及各个分数段人数的统计的流程图。
其中图2.1为学生成绩输出流程图:
图2.1学生成绩输出流程图
图2.2为对学生平均成绩进行排序流程图:
图2.2对学生平均成绩进行排序(选择排序)的流程图
图2.3为计算一门课的总成绩和平均分的流程图:
图2.3计算一门课的总成绩和平均分的流程图
图2.4为修改学生成绩信息的流程图:
图2.4修改学生成绩信息的流程图
图2.5为计算一门课各个分数段人数的流程图修改学生成绩信息的流程图:
图2.5计算一门课各个分数段人数的流程图修改学生成绩信息的流程图
3程序源代码
#include
#include
#include
#include
#include
typedefstruct
{
charname[10];
intnum;
floatCprogram;
floatEnglish;
floatMath;
floatSum;
floataverage;
}Student;
Studentstu[5];/*结构体数组变量*/
intmenu()/*菜单函数*/
{
charc;
do
{
cout<<"******************学生成绩管理系统*******************"< cout<<"1: 输入学生成绩"< cout<<"2: 输出学生成绩"< cout<<"3: 用选择排列法排列学生平均成绩"< cout<<"4: 纵向计算三门课的成绩"< cout<<"5: 修改一组学生成绩"< cout<<"6: 统计三门课程各分数段的成绩"< cout<<"0: 退出程序"< cout<<"请选择操作(0到6): "< c=getchar();/*读入选择*/ } while(c<'0'||c>'6'); return(c-'0'); } intInput(Studentstud[],intn) { inti=0; charsign; while(sign! ='n'&&sign! ='N')/*判断*/ { cout<<"请输入学生的姓名: "; cin>>stud[i].name; cout<<"请输入学生的学号: "; cin>>stud[i].num; cout<<"请输入该C语言该学生的成绩: "; cin>>stud[i].Cprogram; cout<<"请输入该学生数学的成绩: "; cin>>stud[i].Math; cout<<"请输入该学生英语的成绩: "; cin>>stud[i].English; cout<<"=====>提示: 继续写入成绩? (Y/N)"; cin>>sign;/*输入判断*/ i++; } returni; } voidOutput(Studentstud[],intn)/*输出学生成绩*/ { inti; cout<<"姓名学号C语言数学英语总分平均分"< for(i=1;i { stud[i-1].Sum=stud[i-1].Cprogram+stud[i-1].Math+stud[i-1].English; stud[i-1].average=stud[i-1].Sum/3; cout< } } voidSwap(Studentstud[],intn)/*按平均分排序*/ { inti,j; Studenttemp; for(i=0;i for(j=i+1;j { if(stud[i].average { temp=stud[i]; stud[i]=stud[j]; stud[j]=temp; } } cout<<"-------------------输入学生的信息---------------"< cout<<"姓名学号C语言数学英语总分平均分"< for(i=0;i { stud[i].Sum=stud[i].Cprogram+stud[i].Math+stud[i].English; stud[i].average=stud[i].Sum/3; cout< } } voidAverage(Studentstud[],intn)/*计算各门课的总分和平均分*/ { inti; floataver1,aver2,aver3; floatsum1=stud[0].Cprogram; floatsum2=stud[0].Math; floatsum3=stud[0].English; for(i=1;i { sum1+=stud[i].Cprogram; sum2+=stud[i].Math; sum3+=stud[i].English; aver1=sum1/n; aver2=sum2/n; aver3=sum3/n; } cout<<"-------------------输入学生的信息-------------------"< cout<<"姓名学号C语言数学英语总分平均分"< for(i=0;i { stud[i].Sum=stud[i].Cprogram+stud[i].Math+stud[i].English; stud[i].average=stud[i].Sum/3; cout< cout<<"C语言课程的总分,平均分: "< cout<<"数学课程的总分,平均分: "< cout<<"英语课程的总分,平均分: "< } } voidModify(Studentstud[],intn)/*按学号查找,修改学生成绩*/ { ints; inti=0; cout<<"输入需要修改成绩学生的学号: "< cin>>s; while((stud[i].num-s)! =0&&i i++;/*查找判断*/ if(i==n) { cout<<"=====>提示: 对不起,无该学生的成绩……"< return; } cout<<"----------------该学生的信息-------------"< cout<<"姓名学号C语言数学英语总分平均分"< cout< cout<<"---------------------------------------------------------------"< cout<<"请输入学生的姓名: "; cin>>stud[i].name; cout<<"请输入学生的学号: "; cin>>stud[i].num; cout<<"请输入该C语言该学生的成绩: "; cin>>stud[i].Cprogram; cout<<"请输入该学生数学的成绩: "; cin>>stud[i].Math; cout<<"请输入该学生英语的成绩: "; cin>>stud[i].English; stud[i].Sum=stud[i].Cprogram+stud[i].Math+stud[i].English; stud[i].average=stud[i].Sum/3; cout<<"该学生修改后的成绩信息为: "< cout< } voidcprogram(Studentstud[],intn)/*统计C语言各个分数段的人数*/ { inti; intk=0,h=0,m=0,p=0,l=0; for(i=0;i { if(stud[i].Cprogram>=90) k++; elseif(stud[i].Cprogram>=80) h++; elseif(stud[i].Cprogram>=70) m++; elseif(stud[i].Cprogram>=60) p++; else l++; } cout<<"C语言中90分以上的人数: "< "< "< "< "< } voidmath(Studentstud[],intn)/*统计数学各个分数段的人数*/ { inti; intk=0,h=0,m=0,p=0,l=0; for(i=0;i { if(stud[i].Math>=90) k++; elseif(stud[i].Math>=80) h++; elseif(stud[i].Math>=70) m++; elseif(stud[i].Math>=60) p++; else l++; } cout<<"数学中90分以上的人数: "< "< "< "< "< voidenglish(Studentstud[],intn)/*统计英语各个分数段的人数*/ { inti; intk=0,h=0,m=0,p=0,l=0; for(i=0;i { if(stud[i].English>=90) k++; elseif(stud[i].English>=80) h++; elseif(stud[i].English>=70) m++; elseif(stud[i].English>=60) p++; else l++; } cout<<"英语中90分以上的人数: "< "< "< "< "< } voidmain()/*主函数*/ { intn; for(;;) { switch(menu())/*选择判断*/ { case1: cout< n=Input(stu,n); break; case2: cout< Output(stu,n); break; case3: cout< Swap(stu,n); break; case4: cout< Average(stu,n); break; case5: cout< Modify(stu,n);/*查找并显示一个记录*/ break; case6: cout< cprogram(stu,n); math(stu,n); english(stu,n); break; case0: cout< exit(0); } } } 4测试结果及分析 运行程序,按要求输入学生成绩得到运行结果,如图4.1所示: 图4.1输入学生成绩 选择功能2,输出学生成绩信息,如图4.2所示: 图4.2输出学生成绩 选择功能3,对学生平均成绩进行排列,如图4.3所示: 图4.3对学生平均成绩进行排列 选择功能4,纵向计算三门课成绩的总分以及平均分,如图4.4所示: 图4.4纵向计算三门课的总成绩和平均成绩 选择功能5,根据学号修改学生的成绩信息,如图4.5所示: 图4.5输入要修改的学生学号 如果输入学号错误,如图4.6所示: 图4.6输入错误学号 选择功能6,统计三门课个分数段人数,如图4.7所示: 图4.7对学生三门课各分数段成绩人数进行统计 选择功能0,退出,如图4.8所示: 图4.8退出 总结 课程设计的过程是非常不容易的,但对我却有很大的启发。 这次课程设计我主要是应用以前所学的C语言以及本学期的VC,综合起来才完成了这个学生成绩处理系统的软件,比平常上机实验所编程序要复杂,锻炼了我自己。 首先,C/C++程序设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识;再次,我在课程设计中碰到了很多的问题,通过查阅相关资料以及上网查询进行解决,同时曹老师对我也进行了指导,指出了课程设计流程中的错误,提出了建议。 越来越多的人们开始依靠计算机来解决日常生活中的问题,计算机可以明显提高速度和准确率。 我所设计的成绩处理系统可以对学生成绩进行处理。 当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在C/C++编程这方面有一个大的发展。 参考文献 [1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京: 清华大学出版社,2002 [2]刘斌,王忠.面向对象程序设计VisualC++[M].北京: 清华大学出版社,2003 [3]何钦铭,颜辉.C语言程序设计[M].北京: 高等教育出版社,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 处理 系统 设计 实现 说明书