大型实验研究分析报告歌手比赛系统Word文件下载.docx

上传人:b****2 文档编号:5195750 上传时间:2023-05-04 格式:DOCX 页数:35 大小:304.47KB
下载 相关 举报
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第1页
第1页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第2页
第2页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第3页
第3页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第4页
第4页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第5页
第5页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第6页
第6页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第7页
第7页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第8页
第8页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第9页
第9页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第10页
第10页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第11页
第11页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第12页
第12页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第13页
第13页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第14页
第14页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第15页
第15页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第16页
第16页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第17页
第17页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第18页
第18页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第19页
第19页 / 共35页
大型实验研究分析报告歌手比赛系统Word文件下载.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大型实验研究分析报告歌手比赛系统Word文件下载.docx

《大型实验研究分析报告歌手比赛系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《大型实验研究分析报告歌手比赛系统Word文件下载.docx(35页珍藏版)》请在冰点文库上搜索。

大型实验研究分析报告歌手比赛系统Word文件下载.docx

计算总分功能:

根据10个评委地打分(去掉最高分和最低分),计算选手地总分.

计算平均分功能:

根据10个评委地打分(去掉最高分和最低分),计算选手地平均分.

还有2个辅助功能:

寻找最高分和最低分.

3.2系统分析及设计

系统涉及对象有两个基本类:

选手类和评委类.还有一个菜单类.

可以采用面向对象地方式实现歌手比赛系统,根据不同地需求,分为选手类和评委类.其中选手类中以评委类为成员变量.系统地主要地类结构如图2所示.jLBHr。

图2系统主要类结构图

分别设计菜单类、选手类、评委类,菜单类提供选择功能.

用文本文件进行数据地保存,需要保存地数据主要包括选手地编号、信息、平均分和排名等.

3.3系统地实现

(1)类地编写

系统工程名为:

Test.包含了Student类(选手类),Judge类(图书类)两个基本类,另设menu类,进行具体功能地选择及实现.Student类包含选手地编号、姓名、评委地打分(Judge声明地对象obj)、选手地总分和平均分.Judge类包含10个评委地打分.xHAQX。

具体类结构声明如下:

●Student类:

classStudent

{

public:

voidsetID(stringID);

voidsetName(stringname);

voidsetObj(Judge&

j);

voiidsetSUM(doublesum);

voidsetAVE(doubleave);

stringgetID();

stringgetName();

JudgegetObj();

doublegetSUM();

doublegetAVE();

Student(Student&

);

Student(void);

~Student(void);

private:

stringID;

stringname;

Judgeobj;

doubleSUM;

doubleAVE;

};

●Judge类

classJudge

voidsetGrade(doubleg[10]);

double*getGrade();

voiddisplay();

doublesumGrade();

//计算总分

doubleaveGrade();

//计算平均分

doublegetMax();

//辅助函数,寻找最高分

doublegetMin();

//辅助函数,寻找最低分

Judge(void);

Judge(Judge&

~Judge(void);

doublegrade[10];

●Menu类:

classmenu

voidselect();

//选择操作

voidinputMessage();

//输入选手信息

voidinputGrade();

//评委打分

voidsort();

//根据选手成绩进行排序

voidconsult();

//查询某个选手地成绩

voidinsert();

//插入新选手地信息和成绩

voidinput();

//将选手数据写入文件

menu(void);

~menu(void);

intcount;

//计数,共有多少组数据

Studentstu[MAX];

Judgejud[MAX];

(3)交互界面以及登录菜单地实现

系统运行开始地界面如图5所示:

图5开始登录界面

主要通过选择结构和循环结构实现界面地前进和后退.例如,第一个登录界面出现7个选择:

1.输入选手数据,2.评委打分,3.成绩排序(按平均分)4.数据查询5.追加选手数据6.写入数据文件7.退出系统.用switchcase分别实现,选择之后转到下一个界面.LDAYt。

四、实验调试、测试、运行记录及分析

系统在调试测试过程中遇到若干问题,不过经过仔细反复地检查已经消除各种bug.

主要地测试经过如下:

开始页面:

在开始界面输入“1”即可跳转到输入选手信息界面,输入选手信息.

输入选手信息完毕后,自动返回开始页面.

输入“2”,即可跳转到评委打分页面.为各选手打分.

输入分数完毕后,自动返回至开始页面.

输入“3”,跳转到排序页面,根据选手地平均分进行排名.排序完毕后,自动返回到开始页面.

输入“4”,跳转到数据查询页面.输入想查询地选手地编号,即可得知该选手地10位评委地打分.查询完毕后,自动跳转到开始页面.Zzz6Z。

输入“5”,跳转到追加选手数据页面.输入新插入地选手地编号及姓名,以及10个评委对该选手地打分.为验证选手数据已更新,进行查询操作及排序操作.dvzfv。

输入“6”,将所有选手地信息,包括编号、信息、10个评委地打分,写入数据文件.

输入“7”,退出系统.

容错测试:

1.如果输入相同ID地选手:

2.如果插入相同地选手:

3.如果输入了选手ID和姓名,但还未进行打分就进行排序:

4.程序开始就选择5,追加选手数据,测试插入是否成功(数据查询和排序)

遇到地问题及解决方法如下:

●问题1:

问题描述:

很少使用文件地读取方法,因此一开始在实现将信息写入文件地功能时遇到了困难,不知如何下手.

解决方法:

利用网络资源,搜索c++地读写文件方式,在稍作修改后,应用到本次实验中.成功实现了文件地读写.rqyn1。

图6调试测试问题1

五、实验总结

我设计地歌手比赛系统基本满足任务书地功能要求,类地结构和关系清晰,功能完善,完成了歌手比赛系统地基本功能,能正常运行.Emxvx。

存在地缺点主要是数据存储方面,因评委只有十人,不存在大批量地数据,因此采用基本地数组结构存储数据.其次在存储选手信息方面,采用了类地数组方式,有浪费内存地弊端,并且,一旦选手人数过多,也会影响程序效率.可以用更好地数据存储方式来存储数据,例如vector等.SixE2。

通过这次C++地大型实验,我深刻地明白到:

课本知识与实践能力相结合地重要性.要想把一门专业课程学好,必须增强自己地动手实践能力,更多地实践才能让我们地编程能力有更多地提高.并且,我们也要充分利用好网络资源,写代码地过程其实是一个复习旧知识、学习新知识地过程,当我们遇到不明白地地方,或者对程序功能抱有疑问时,要学会自己去查找资料并且解决问题,而网络资源能帮我们解答很多基本地疑问.充分利用好网络地代码资源,不断充实自己、丰富自己地代码知识.6ewMy。

六、附录:

源代码

Judge.h

#include<

iostream>

usingnamespacestd;

voidsetGrade(doubleg[10]);

double*getGrade();

voiddisplay();

doublesumGrade();

//计算总分

doubleaveGrade();

doublegetMax();

doublegetMin();

intjudgeN();

doublegrade[10];

Judge.cpp

#include"

Judge.h"

Judge:

:

Judge(void)

for(inti=0;

i<

10;

i++)

grade[i]=0;

}

Judge(Judge&

j)

grade[i]=j.grade[i];

~Judge(void)

voidJudge:

setGrade(doubleg[10])

{

grade[i]=g[i];

}

double*Judge:

getGrade()

returngrade;

display()

i<

cout<

<

"

第"

i+1<

位评委地打分是:

grade[i]<

endl;

doubleJudge:

sumGrade()

doublemax=getMax();

doublemin=getMin();

doubleSum=0;

Sum=Sum+grade[i];

Sum=Sum-max;

Sum=Sum-min;

returnSum;

aveGrade()

doubleAve;

Ave=Sum/8;

returnAve;

getMax()//辅助函数,寻找最高分

doublemax=0;

if(max<

grade[i])

max=grade[i];

returnmax;

getMin()//辅助函数,寻找最低分

doublemin=100;

if(min>

min=grade[i];

returnmin;

intJudge:

judgeN()

if(grade[0]==0)

return1;

else

return0;

Student.h

string>

voidsetID(stringID);

voidsetName(stringname);

voidsetObj(Judge&

voidsetSUM(doublesum);

voidsetAVE(doubleave);

doublegetSUM();

doublegetAVE();

intjudgeNull();

//判断是否为空

~Student(void);

doubleSUM;

doubleAVE;

Student.cpp

Student.h"

Student:

Student(void)

Student(Student&

s)

ID=s.getID();

name=s.getName();

AVE=s.getAVE();

SUM=s.getSUM();

obj=s.getObj();

~Student(void)

voidStudent:

setID(stringid)

ID=id;

setName(stringn)

name=n;

setObj(Judge&

j)

obj=Judge(j);

setSUM(doublesum)

SUM=sum;

setAVE(doubleave)

AVE=ave;

stringStudent:

getID()

returnID;

getName()

returnname;

doubleStudent:

getSUM()

returnSUM;

getAVE()

returnAVE;

JudgeStudent:

getObj()

returnobj;

intStudent:

judgeNull()

if(ID.empty()&

&

name.empty())

menu.h

fstream>

#defineMAX1000

voidinputMessage();

voidinputGrade();

voidsort();

//根据选手成绩排序(平均分)

voidconsult();

voidinsert();

//插入某个新选手地信息和成绩

voidinput();

intcount;

menu.cpp

StdAfx.h"

menu.h"

menu:

menu(void)

count=0;

newcount=0;

ifstreamf("

C:

\\Users\\apple\\Desktop\\data.txt"

if(!

f)

openerror!

exit

(1);

f>

>

count;

count;

stringfID,fname;

f>

fID>

fname;

stu[i].setID(fID);

stu[i].setName(fname);

doublex[10];

for(intj=0;

j<

j++)

{

f>

x[j];

}

jud[i].setGrade(x);

stu[i].setObj(jud[i]);

stu[i].setAVE(jud[i].aveGrade());

stu[i].setSUM(jud[i].sumGrade());

f.close();

~menu(void)

voidmenu:

select()

while

(1)

charn;

************************"

欢迎进入歌手比赛系统"

endl<

kavU4。

\t\t\t1.输入选手数据"

\t\t\t2.评委打分"

\t\t\t3.成绩排序(按平均分)"

\t\t\t4.数据查询"

\t\t\t5.追加选手数据"

\t\t\t6.写入数据文件"

\t\t\t7.退出系统"

请选择操作项目:

"

;

cin>

n;

switch(n)

{

case'

1'

inputMessage();

break;

2'

inputGrade();

3'

sort();

4'

consult();

5'

insert();

6'

input();

7'

return;

default:

{

cout<

输入指令错误"

}

inputMessage()

cout<

欢迎进入选手信息页面"

y6v3A。

请输入共有几位选手:

intn;

cin>

请输入各选手信息(包括编号及姓名)"

stringID;

for(inti=count;

(n+count);

{

ID>

name;

//以下判断ID是否重复

boolpank=true;

if(ID==stu[j].getID())

pank=false;

已存在ID相同地选手,请重新输入!

return;

stu[i].setID(ID);

stu[i].setName(name);

//count=n+count;

newcount=n;

inputGrade()

if(stu[0].judgeNull())

无选手信息!

操作错误!

返回开始页面."

else

欢迎进入评委打分页面"

M2ub6。

请各位评委打分(共10位评委):

for(inti=count;

(count+newcount);

doublegrade[10];

cout<

编号为"

stu[i].getID()<

地选手地分数:

for(intj=0;

cin>

grade[j];

jud[i].setGrade(grade);

stu[i].setObj(jud[i]);

stu[i].setAVE(jud[i].aveGrade());

stu[i].setSUM(jud[i].sumGrade());

count=count+newcount;

sort()

if(jud[0].judgeN())

无选手分数信息!

欢迎进入排序页面!

0YujC。

各选手按照平均分从高到低地排序如下"

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

当前位置:首页 > 初中教育 > 语文

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

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