C++实现学生成绩统计管理系统.docx

上传人:b****5 文档编号:8798321 上传时间:2023-05-15 格式:DOCX 页数:20 大小:20.75KB
下载 相关 举报
C++实现学生成绩统计管理系统.docx_第1页
第1页 / 共20页
C++实现学生成绩统计管理系统.docx_第2页
第2页 / 共20页
C++实现学生成绩统计管理系统.docx_第3页
第3页 / 共20页
C++实现学生成绩统计管理系统.docx_第4页
第4页 / 共20页
C++实现学生成绩统计管理系统.docx_第5页
第5页 / 共20页
C++实现学生成绩统计管理系统.docx_第6页
第6页 / 共20页
C++实现学生成绩统计管理系统.docx_第7页
第7页 / 共20页
C++实现学生成绩统计管理系统.docx_第8页
第8页 / 共20页
C++实现学生成绩统计管理系统.docx_第9页
第9页 / 共20页
C++实现学生成绩统计管理系统.docx_第10页
第10页 / 共20页
C++实现学生成绩统计管理系统.docx_第11页
第11页 / 共20页
C++实现学生成绩统计管理系统.docx_第12页
第12页 / 共20页
C++实现学生成绩统计管理系统.docx_第13页
第13页 / 共20页
C++实现学生成绩统计管理系统.docx_第14页
第14页 / 共20页
C++实现学生成绩统计管理系统.docx_第15页
第15页 / 共20页
C++实现学生成绩统计管理系统.docx_第16页
第16页 / 共20页
C++实现学生成绩统计管理系统.docx_第17页
第17页 / 共20页
C++实现学生成绩统计管理系统.docx_第18页
第18页 / 共20页
C++实现学生成绩统计管理系统.docx_第19页
第19页 / 共20页
C++实现学生成绩统计管理系统.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++实现学生成绩统计管理系统.docx

《C++实现学生成绩统计管理系统.docx》由会员分享,可在线阅读,更多相关《C++实现学生成绩统计管理系统.docx(20页珍藏版)》请在冰点文库上搜索。

C++实现学生成绩统计管理系统.docx

C++实现学生成绩统计管理系统

 

课程设计任务书

题目:

C++实现学生成绩统计管理系统

学号

姓名

专业计算机科学与技术

课程C++

指导教师职称讲师

完成时间:

20年月----20年月

枣庄学院计算机科学系制

课程设计任务书及成绩评定

课程设计的任务和具体要求

1、开设本课程的目的是使学生通过小型软件的开发过程,进一步掌握面向对象的程序设计方法,培养学生的创新能力和创新意识。

2.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

3.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

 

指导教师签字:

日期:

指导教师评语

 

成绩:

指导教师签字:

日期:

课程设计所需软件、硬件等

1、微型计算机

2、Windowsxp

3、VC6.0

 

课程设计进度计划

起至日期

工作内容

备注

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

#include

#include

#include

#defineSmax200

usingnamespacestd;

classstudent

{

Public:

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<

<

<

}

intstudent:

:

sinto(stringa1,stringa2,floatb1,floatb2,floatb3)

{

num=a1;name=a2;

eng=b1;math=b2;clang=b3;

return0;

}

voidstudent:

:

sshow()//输出

{

cout<

<

<

:

fixed)<

(1)<

cout<

:

fixed)<

}

floatstudent:

:

sall()//求总分

{returneng+math+clang;

}

floatstudent:

:

save()//求平均分

{returnsall()/3;}

voidstudent:

:

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;break;

case7:

n=3;break;

case6:

n=4;break;

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;

}

 

voidleo:

:

linit()

{lsize(0);

cout<<"学生数据清除成功"<

cout<<"当前无学生数据。

请添加...."<

}

voidleo:

:

ldelet(stringa)

{

intk=0;stringc;

for(inti=0;i

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删除成功!

"<

}

voidleo:

:

linsert()//添加

{

stringa="y";

while(a=="y")

{intmn=0;

if(size>Smax)cout<<"超出范围,不能再添加!

"<

else

{

cout<<"\n请输入学号,姓名,英语,数学,c++成绩:

"<

stringa1,a2;floatb1,b2,b3;

cin>>a1>>a2>>b1>>b2>>b3;

for(inti=0;i

if(item[i].getn()==a1)

{mn++;

cout<<"输入学号与下面的数据重复!

"<

shows();//输出重复的学号,姓名,英语,数学,c++成绩

item[i].sshow();}

if(!

mn)

{item[size++].sinto(a1,a2,b1,b2,b3);

cout<<"\n添加成功!

";}

}

cout<<"是否继续输入?

(y/n)";

cin>>a;

}

}

voidleo:

:

lsearch(stringa)//查找

{intN=0;

for(inti=0;i

if(item[i].getn()==a)

{

N++;

shows();//输出学号,姓名,英语,数学,c++

item[i].sshow();

}

if(!

N)cout<<"输入有误或该学生数据不存在"<

}

voidleo:

:

lchan(stringa)//修改

{if(size==0){cout<<"当前学生数据为空,请添加...."<

else{

intN=0;

for(inti=0;i

if(item[i].getn()==a)

{N++;

cout<<"你将要修改的数据如下:

"<

shows();item[i].sshow();

cout<<"请输入要修改学生的学号,姓名,英语,数学,c++成绩"<

stringa1,a2;

floatb1,b2,b3;

cin>>a1>>a2>>b1>>b2>>b3;

item[i].sinto(a1,a2,b1,b2,b3);

cout<<"修改成功!

"<

}

if(!

N)cout<<"输入的学号有误!

"<

}

voidleo:

:

lrow()//排序

{studenttemb;

if(size>1)

{

for(inti=0;i

{temb=item[i];

for(intj=i+1;j

if(item[i].sall()

{item[i]=item[j];

item[j]=temb;}

item[0].row=1;

for(inti=0;i

if(item[i].sall()>item[i+1].sall())

item[i+1].row=i+2;

elseitem[i+1].row=i+1;//并列排名

}}

elseif(size==1)item[0].row=1;

}

voidleo:

:

lview()//显示

{

if(size==0){cout<<"当前学生数据为空,请添加...."<

else

{cout<<"共有学生数据"<

shows();

for(inti=0;i

{

item[i].sshow();

}

}

}

voidleo:

:

obave()//统计科目

{if(size!

=0)

{

floatsum[3]={0};

for(inti=0;i

{

sum[0]+=item[i].gete();

sum[1]+=item[i].getm();

sum[2]+=item[i].getcl();}

cout<<"英语平均的成绩为:

"

<

:

fixed)<

(1)<

cout<<"数学平均的成绩为:

"<

cout<<"c++的平均成绩是:

"<

cout<

:

fixed)<

}

elsecout<<"当前无学生数据,请添加......";

}

voidleo:

:

lpcent()//成绩分类

{intp[3][200];

floattem=100.0/size;

stringa[3]={"英语","数学","c++"};

if(size!

=0)

{

for(inti=0;i

{item[i].objrank();

p[0][i]=item[i].rank[0];

p[1][i]=item[i].rank[1];

p[2][i]=item[i].rank[2];

}

for(intk=0;k<3;k++)

{intb[5]={0};

for(inti=0;i

{

switch(p[k][i])

{

case1:

b[0]++;break;

case2:

b[1]++;break;

case3:

b[2]++;break;

case4:

b[3]++;break;

case5:

b[4]++;break;

default:

break;}

}

cout<

优"<

<<"人中"<

cout<

:

fixed)<

(1)

<

优"<<(float)b[0]*tem<<"%良"

<<(float)b[1]*tem<<"%中"<<(float)b[2]*tem<<"%及"

<<(float)b[3]*tem<<"%不及"<<(float)b[4]*tem<<"%"<

cout<

:

fixed)<

}

}

}

voidleo:

:

lcin()

{stringa[200],b[200];floatc[200],d[200],e[200];

intf[200];

ifstreaminfile("ok.txt",ios:

:

in);

if(!

infile)cerr<<"文件打开失败。

"<

for(inti=0;i<200;i++)

{

infile>>a[i]>>b[i]>>c[i]>>d[i]>>e[i]>>f[i];

item[size].sinto(a[i],b[i],c[i],d[i],e[i]);size++;

if(f[i]==1)break;

}

infile.close();

}

voidleo:

:

lcout()

{ofstreamoutfile("ok.txt",ios:

:

out);

if(!

outfile)cerr<<"文件打开失败。

"<

for(inti=0;i

outfile<

outfile.close();

}

voidshowmenu()

{

cout<<"";

cout<<"|----------------------------------------------------------------|"<

cout<<"";

cout<<"|----------学生成绩统计管理系统--------------------------|"<

cout<<"";

cout<<"|----------------------------------------------------------------|"<

cout<<"";

cout<<"|1.显示:

显示所有学生数据(按总分排序)|"<

cout<<"";

cout<<"|2.查看:

查看所有统计结果|"<

cout<<"";

cout<<"|3.添加:

插入一个学生数据|"<

cout<<"";

cout<<"|4.删除:

删除一个学生数据|"<

cout<<"";

cout<<"|5.查找:

查找指定学生数据|"<

cout<<"";

cout<<"|6.修改:

修改指定学生数据|"<

cout<<"";

cout<<"|7.清空:

清除所有学生数据|"<

cout<<"";

cout<<"|8.帮助:

查看系统注意事项|"<

cout<<"";

cout<<"|0.退出:

将数据保存到磁盘|"<

cout<<"";

cout<<"|----------------------------------------------------------------|"<

}

voidshowtip()

{

cout<<"\n\t\t----------------操作完成!

-----------------"<

cout<<"\t\t----------------选择0-8继续------------------"<

}

 

intmain()

{

leoleo1;

stringc="s",a;

system("cls");//清屛

showmenu();

cout<<"正在打开文件,请稍后..."<

leo1.lcin();

cout<<"\t\t\t请选择菜单中的数字以便处理数据:

";

cin>>c;

while(c!

="0")

{

system("cls");

showmenu();

if(c=="1")

{cout<<"你选择了1,学生数据显示如下:

"<

leo1.lrow();//排序

leo1.lview();

}

if(c=="2")

{cout<<"你选择了2,统计结果如下:

"<

leo1.obave();//各科平均成绩,

leo1.lpcent();//各科分类情况

}

if(c=="3")

{cout<<"你选择了3,";

leo1.linsert();

}

if(c=="4")

{cout<<"你选择了4,请输出要删除的学号:

"<

cin>>a;

leo1.ldelet(a);

}

if(c=="5")

{

cout<<"你选择了5,请输出要查找的学号:

"<

cin>>a;

leo1.lsearch(a);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2