C++实现学生成绩统计管理系统Word文档下载推荐.docx
《C++实现学生成绩统计管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++实现学生成绩统计管理系统Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
![C++实现学生成绩统计管理系统Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/16/ef8498a4-85d9-4b62-a7a1-6c1f68e93c1d/ef8498a4-85d9-4b62-a7a1-6c1f68e93c1d1.gif)
工作内容
备注
2010年12月1日-2010年12月20日
2010年12月20日-2010年12月26日
收集资料
编写程序
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
《C++程序设计》(第二版),谭浩强著,清华大学出版社
目录
1课程设计的目的………………………………………………………………1
2课程设计的要求………………………………………………………………1
3课程设计报告内容……………………………………………………………1
1程序设计题目………………………………………………………………1
2程序实现思路………………………………………………………………1
3程序模块分析………………………………………………………………1
4系统顶级用例图……………………………………………………………2
5程序清单……………………………………………………………………2
4总结……………………………………………………………………………3
参考文献…………………………………………………………………………3
附录………………………………………………………………………………3
一、课程设计教学目的
本课程设计是《高级语言程序设计(C++)》课程的组成之一,也是它的继续和延伸。
采用研究型学习方法,完成一个管理类型的小型软件。
开设本课程的目的是使学生通过小型软件的开发过程,进一步掌握面向对象的程序设计方法,培养学生的创新能力和创新意识。
二、课程设计的要求
1.了解并掌握面向对象程序设计方法,具备初步的独立分析和设计能力;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。
6.编写出课程设计说明书。
7.学生必须仔细阅读《C++语言程序设计》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课程设过程中不断检测自己的计划完成情况。
8.课程设计前期安排学习C++编程和面向对象的软件工程的有关知识,以自学和上机实验为主。
三.课程设计报告内容
1题目内容
学生成绩统计管理系统
2功能要求:
①成绩的输入(学号、姓名、英语、数学、C++语言…)。
②成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例)。
③总成绩统计(学生的总成绩、平均成绩及成绩排名)。
④成绩的统计结果显示。
⑤学生数据的添加、修改、与删除。
⑥学生数据的读取与存储。
3程序实现思路(技术线路):
先创建一个学生元素类,用于存放学生的各种数据。
然后创建另一个类,把数据存储,可便进行各种操作。
本程序中比较核心的技术就是用到了堆排序,将学生按优先级(高的排前面,低的排后面)的大小进行有序排列。
堆排序的时间复杂度较一般排序(如:
冒泡,选择等)来得低,可使程序显示数据时效率更高。
3程序模块分析:
1)添加数据:
把用户输入的数据添加到学生类对象数组中,然后再将其入堆,使其有序。
2)删除数据:
由用户输入要删除的学生的学号,然后将其从学生类对象数组中删除,使数组中的数据仍然有序。
3)查找数据:
由用户输入要查找的学生的学号,然后调用leo类中关于查找的函数,将查找结果显示在屏幕上。
4)显示数据:
调用leo类中关于显示数据的函数,把所有的学生数据都显示在屏幕上。
5)清除数据:
调用leo类中关于清除数据的函数,把所有的学生数据都清空。
6)退出程序:
若用户输入了数字0,则主函数结束循环,同时程序也就结束了。
5程序清单:
(见附录)
四、总结
通过做这个课程设计让我逐步学会了使用《面向对象程序设计》设计方法及思想来解决实际问题,更深刻的理解了C++这种面向对象程序的设计语言。
同时,通过查阅各类技术文献、资料、手册解决了许多设计时遇到的难题,也使我提高了编写技术文献的能力。
附录:
#include<
iostream>
iomanip>
string>
fstream>
#defineSmax200
usingnamespacestd;
structstudent
{
stringnum;
stringname;
floateng;
floatmath;
floatclang;
//定义c++
floatgete(){returneng;
}
floatgetm(){returnmath;
floatgetcl(){returnclang;
stringgetn(){returnnum;
stringgetna(){returnname;
intrank[3];
introw;
//排名
intsinto(string,string,float,float,float);
//输入数据
voidsshow();
//输出数据
floatsall();
//求和
floatsave();
//求平均
voidobjrank();
//成绩分类
};
voidshows()//普通函数
{
cout<
<
setw(6)<
"
排名"
学号"
setw(10)<
姓名"
<
英语"
数学"
c++"
总分"
平均分"
endl;
}
intstudent:
:
sinto(stringa1,stringa2,floatb1,floatb2,floatb3)
{
num=a1;
name=a2;
eng=b1;
math=b2;
clang=b3;
return0;
voidstudent:
sshow()//输出
row<
num<
name<
setw(6)
eng<
math<
clang<
sall()
setiosflags(ios:
fixed)<
setprecision
(1)<
save()<
setprecision(0);
floatstudent:
sall()//求总分
{returneng+math+clang;
save()//求平均分
{returnsall()/3;
objrank()
{intn;
rank[0]=(int)eng;
rank[1]=(int)math;
rank[2]=(int)clang;
for(inti=0;
i<
3;
i++)
{n=rank[i]/10;
switch(n)
{
case9:
n=1;
break;
case8:
n=2;
case7:
n=3;
case6:
n=4;
default:
n=5;
rank[i]=n;
//类student结束
//类leo开始
classleo
{private:
studentitem[Smax];
intsize;
public:
leo();
voidlsize(int);
//设置数组大小
voidlinit();
//清空
voidlinsert();
//添加
voidldelet(string);
//删除
voidlsearch(string);
//查找
voidlchan(string);
//修改
voidlpcent();
voidlrow();
//排序
voidobave();
voidlview();
//显示全部数据
voidlcin();
//从磁盘输出
voidlcout();
//储存到磁盘
leo:
leo()
{studentitem[Smax];
lsize(0);
voidleo:
lsize(inti)
{size=i;
linit()
{lsize(0);
学生数据清除成功"
当前无学生数据。
请添加...."
ldelet(stringa)
intk=0;
stringc;
for(inti=0;
size;
if(item[i].getn()==a)
{
cout<
你将要删除的数据如下:
shows();
item[i].sshow();
cout<
确定删除吗?
请输入(y/n):
;
cin>
>
c;
if(c=="
y"
||c=="
Y"
){item[i]=item[--size];
k=1;
}
if(k!
=1)cout<
\n删除失败!
elsecout<
\n删除成功!
linsert()//添加
stringa="
while(a=="
)
{intmn=0;
if(size>
Smax)cout<
超出范围,不能再添加!
else
\n请输入学号,姓名,英语,数学,c++成绩:
stringa1,a2;
floatb1,b2,b3;
cin>
a1>
a2>
b1>
b2>
b3;
for(inti=0;
if(item[i].getn()==a1)
{mn++;