学生成绩系统C语言课程设计报告书.docx
- 文档编号:23981211
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:29
- 大小:388.47KB
学生成绩系统C语言课程设计报告书.docx
《学生成绩系统C语言课程设计报告书.docx》由会员分享,可在线阅读,更多相关《学生成绩系统C语言课程设计报告书.docx(29页珍藏版)》请在冰豆网上搜索。
学生成绩系统C语言课程设计报告书
淮海工学院计算机工程学院
课程设计报告
设计名称:
学生成绩系统
姓名:
学号:
专业班级:
系(院):
计算机科学与技术系
设计时间:
设计地点:
计算机工程学院机房、教室、学生宿舍、图书馆
成绩:
指导教师评语:
签名:
年月日
1.课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
(1)巩固和加深学生对C++课程的基本知识的理解和掌握;
(2)掌握C++编程和程序调试的基本技能;(3)利用C++进行简单软件设计的基本思路和方法;(4)提高运用C++解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。
本次课程设计利用《C++程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,使学生能够独立完成所布置的任务。
2.课程设计任务与要求:
要求:
1)设计题目、设计要求以及系统功能需求分析;
2)总体设计:
包括模块说明、模块结构图和系统流程图;
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)源程序代码及设计成果:
完整源程序清单和设计成果;
5)总结:
调试分析过程描述:
包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C++和本次课程设计的认识等内容.;
任务:
设计一个学生成绩排名系统,该系统的主要功能如下:
1) 具备对成绩的管理功能(添加、删除、排序)
2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)
3) 具备按学号、姓名、或课程名查询成绩的功能。
4)学生成绩应该保存在文件中。
备注:
成绩记录以下信息:
学号,姓名,课程名,成绩(百分制)。
可以用能表示学生成绩的结构体数组存储数据。
3.课程设计说明书
概要设计
一、模块说明
在我设计的程序中一共包括了六个模块,分别是:
添加模块、删除模块、排序模块、统计模块、查找模块、界面模块。
这六个模块都是独立分开作为子函数的,其它五个则是作为switch语句中的一部分,通过switch语句,从界面模块中调用,把六大模块联系了起来,同时,为了实现多次使用这六大模块,在其它模块中也加入了界面模块的调用。
二、模块结构图
三、系统流程图
各功能模块流程图:
添加信息
删除信息
信息排序
统计信息
查找信息
界面模块
4.课程设计成果
程序源代码,运行结果
#include
#include
#include
#include
usingnamespacestd;
classchengji
{
public:
intnum;
stringname;
intm_num;
inte_num;
intc_num;
intt_num;
inta_num;
public:
chengji()//构造函数初始化
{
num=0;
name='0';
m_num=0;
e_num=0;
c_num=0;
t_num=m_num+e_num+c_num;//求总成绩
a_num=t_num/3;//求平均成绩
}
voidtianjia(int);//实现添加功能的成员函数
voidshanchu(int);//实现删除功能的成员函数
friendvoidpaixu();//实现排序功能的友员函数
friendvoidtongji();//实现统计功能的友元函数
friendvoidchazhao();//实现查找功能的友元函数
friendvoidjiemian();//实现界面功能的友元函数
friendvoidsave();
}student[41];
voidchengji:
:
tianjia(inttnum)//定义添加功能的成员函数
{
stringtname;
inttm_num;
intte_num;
inttc_num;
ofstreamoutfile("C:
\chengji.txt",ios:
:
out);
//定义文件流对象,打开磁盘文件″chengji.txt″
cout<<"请输入姓名:
";
cin>>tname;//输入姓名
cout<<"请输入数学成绩:
";
cin>>tm_num;//输入数学成绩
cout<<"请输入英语成绩:
";
cin>>te_num;//输入英语成绩
cout<<"请输入C++成绩:
";
cin>>tc_num;//输入C++成绩
num=tnum;//将学号赋给类中的num
name=tname;//将姓名赋给类中的name
m_num=tm_num;//将数学成绩赋给类中的m_num
e_num=te_num;//将英语成绩赋给类中的e_num
c_num=tc_num;//将C++成绩赋给类中的c_num
t_num=m_num+e_num+c_num;//将学号赋给类中的t_num
a_num=t_num/3;//将学号赋给类中的a_num
for(inti=0;i<41;i++)
{
outfile< <<""< < <<""< } outfile.close(); cout<<"添加成功! "< jiemian();//调用界面函数 } voidchengji: : shanchu(intn)//定义删除功能的成员函数 { student[n-1].num=0; student[n-1].name='0'; student[n-1].m_num=0; student[n-1].e_num=0; student[n-1].c_num=0; student[n-1].t_num=0; student[n-1].a_num=0; cout<<"删除成功! "< jiemian();//调用界面函数 } voidpaixu()//定义排序功能的友员函数 { cout<<"请选择排序的方式: 1: 按数学成绩2: 按英语成绩 3: 按C++成绩4: 按总分"< intn1; cin>>n1; switch(n1) { case1: //按数学成绩排序 { chengjifangshi[41],change; intn2,n3=-1,n4,k; for(n2=0;n2<41;n2++) { if(student[n2].num! =0) { n3++; fangshi[n3].num=n2+1; fangshi[n3].name=student[n2].name; fangshi[n3].m_num=student[n2].m_num; } } if(fangshi[0].num==0) { cout<<"没有数据,请重新选择! "< jiemian(); } else { n4=n3+1; for(n2=0;n2 { k=n2; for(n3=n2+1;n3 { if(fangshi[k].m_num { k=n3; } } change.num=fangshi[k].num; change.name=fangshi[k].name; change.m_num=fangshi[k].m_num; fangshi[k].num=fangshi[n2].num; fangshi[k].name=fangshi[n2].name; fangshi[k].m_num=fangshi[n2].m_num; fangshi[n2].num=change.num; fangshi[n2].name=change.name; fangshi[n2].m_num=change.m_num; } for(n2=0;n2 { cout< < } jiemian(); } break; } case2: //按英语成绩排序 { chengjifangshi[50],change; intn2,n3=-1,n4; for(n2=0;n2<50;n2++) { if(student[n2].num! =0) { n3++; fangshi[n3].num=n2+1; fangshi[n3].name=student[n2].name; fangshi[n3].e_num=student[n2].e_num; } } if(fangshi[0].num==0) { cout<<"没有数据,请重新选择! "< jiemian(); } else { n4=n3+1; for(n2=0;n2 { for(n3=n4-1;n3>n2;n3--) { if(fangshi[n3].e_num>fangshi[n3-1].e_num) { change.num=fangshi[n3].num; change.name=fangshi[n3].name; change.e_num=fangshi[n3].e_num; fangshi[n3].num=fangshi[n3-1].num; fangshi[n3].name=fangshi[n3-1].name; fangshi[n3].e_num=fangshi[n3-1].e_num; fangshi[n3-1].num=change.num; fangshi[n3-1].name=change.name; fangshi[n3-1].e_num=change.e_num; } } } for(n2=0;n2 { cout< < } jiemian();//调用界面函数 } break; } case3: //按C++成绩排序 { chengjifangshi[50],change; intn2,n3=-1,n4; for(n2=0;n2<50;n2++) { if(student[n2].num! =0) { n3++; fangshi[n3].num=n2+1; fangshi[n3].name=student[n2].name; fangshi[n3].c_num=student[n2].c_num; } } if(fangshi[0].num==0) { cout<<"没有数据,请重新选择! "< jiemian();//调用界面函数 } else { n4=n3+1; for(n2=0;n2 { for(n3=n4-1;n3>n2;n3--) { if(fangshi[n3].c_num>fangshi[n3-1].c_num) { change.num=fangshi[n3].num; change.name=fangshi[n3].name; change.c_num=fangshi[n3].c_num; fangshi[n3].num=fangshi[n3-1].num; fangshi[n3].name=fangshi[n3-1].name; fangshi[n3].c_num=fangshi[n3-1].c_num; fangshi[n3-1].num=change.num; fangshi[n3-1].name=change.name; fangshi[n3-1].c_num=change.c_num; } } } for(n2=0;n2 { cout< < } jiemian();//调用界面函数 } break; } case4: //按总分进行排序 { chengjifangshi[50],change; intn2,n3=-1,n4; for(n2=0;n2<50;n2++) { if(student[n2].num! =0) { n3++; fangshi[n3].num=n2+1; fangshi[n3].name=student[n2].name; fangshi[n3].t_num=student[n2].t_num; } } if(fangshi[0].num==0) { cout<<"没有数据,请重新选择! "< jiemian();//调用界面函数 } else { n4=n3+1; for(n2=0;n2 { for(n3=n4-1;n3>n2;n3--) { if(fangshi[n3].t_num>fangshi[n3-1].t_num) { change.num=fangshi[n3].num; change.name=fangshi[n3].name; change.t_num=fangshi[n3].t_num; fangshi[n3].num=fangshi[n3-1].num; fangshi[n3].name=fangshi[n3-1].name; fangshi[n3].t_num=fangshi[n3-1].t_num; fangshi[n3-1].num=change.num; fangshi[n3-1].name=change.name; fangshi[n3-1].t_num=change.t_num; } } } for(n2=0;n2 { cout< < //输出符合条件的学号.姓名.总分 } jiemian();//调用界面函数 } break; } default: { cout<<"输入错误,已返回主菜单"< jiemian();//调用界面函数 break; } } } voidtongji()//定义统计功能的友元函数 { intn1,n2=0,n_m=0,n_e=0,n_c=0,t_m=0,t_e=0,t_c=0,t_t=0; //n_m为统计数学分数的人数,n_e为统计英语分数的人数,n_c为统计C++分数的人数 intm_max=0,e_max=0,c_max=0,t_max=0, m_min=101,e_min=101,c_min=101,t_min=101; for(n1=0;n1<41;n1++) { if(student[n1].num! =0) { n2++; t_m=t_m+student[n1].m_num;//t_m为数学成绩的总分 t_e=t_e+student[n1].e_num;//t_e为英语成绩的总分 t_c=t_c+student[n1].c_num;//t_c为C++成绩的总分 t_t=t_t+student[n1].t_num;//t_t为所有成绩的总分 } if(student[n1].m_num>=60)//数学及格人数的统计 { n_m++; } if(student[n1].e_num>=60)//英语及格人数的统计 { n_e++; } if(student[n1].c_num>=60)//C++及格人数的统计 { n_c++; } if(student[n1].m_num>m_max) { m_max=student[n1].m_num; } if(student[n1].e_num>e_max) { e_max=student[n1].e_num; } if(student[n1].c_num>c_max) { c_max=student[n1].c_num; } if(student[n1].t_num>t_max) { t_max=student[n1].t_num; } if(student[n1].m_num =0) { m_min=student[n1].m_num; } if(student[n1].e_num =0) { e_min=student[n1].e_num; } if(student[n1].c_num =0) { c_min=student[n1].c_num; } if(student[n1].t_num =0) { t_min=student[n1].t_num; } } if(n2==0) { cout<<"对不起,无记录"< jiemian();//调用界面函数 } elsecout<<"总人数为: "< cout<<"数学平均分为: "< "< cout<<"英语平均分为: "< "< cout<<"C++平均分为: "< "< cout<<"数学最高分为: "< "< cout<<"英语最高分为: "< "< cout<<"C++最高分为: "< "< cout<<"总分最高为: "< "< cout<<"总分平均分为: "< } voidchazhao()//定义查找函数 { intn0,n1; cout<<"请选择查找的方式: "< 按学号"< <<"2: 按姓名"< 按课程"< cin>>n0; switch(n0) { case1: //按学号查找 { cout<<"请输入要查找的学号: "< intcznum; cin>>cznum; if(student[cznum-1].num! =0) { cout<<"学号是: "< cout<<"姓名是: "< cout<<"数学成绩是: "< " < cout<<"C++成绩是: "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生成绩系统C 语言课程设计报告书 学生 成绩 系统 语言 课程设计 报告书