评委打分系统.docx
- 文档编号:29024914
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:35
- 大小:193KB
评委打分系统.docx
《评委打分系统.docx》由会员分享,可在线阅读,更多相关《评委打分系统.docx(35页珍藏版)》请在冰豆网上搜索。
评委打分系统
一、设计目标与内容
1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;
2.基本掌握面向对象程序设计的基本思路和方法;
3.掌握用VC++开发应用程序的的一般步骤和方法;
4.能够利用所学的基本知识,设计一个简单的评委打分系统,具有以下功能:
①能够输入赛事与策略的信息
②根据赛事选择的不同选用不同的策略,并显示出最后结果
二、设计要求
2.1设计约束、限制
操作系统:
windows操作系统
数据库平台:
无
开发语言:
VC++
开发模式:
C/S模式
硬件约束:
CPU:
Pentium4
内存:
256M
硬盘:
10G
2.2基本要求
1.需要充分考虑到程序的可扩展性。
程序可能会增加非常多的种类的比赛以及打分策略。
2.第一步需要实现以下几种打分策略:
1)评委数量在6人以下的:
计算6个评委打分的平均分为选手最后得分。
2)评委数量在7-9人的:
除去一个最高分,一个最低分。
计算平均分为选手最后得分。
3)评委数量在10人以上的:
除去两个最高分,两个最低分。
计算平均分为选手最后得分。
4)实现现在各种选秀节目中常用的打分算法:
三个评委,各个评委有两种选择:
(Y/N)。
如果两个Y,则选手过关;否则不过关。
三、基本思路
3.1软件体系结构
3.1.1软件程序结构图
3.2模块描述
3.2.1打分策略录入
名称
打分策略录入
标识
STI
子系统名称
打分策略录入
系统
名称
评委打分系统
接 口
说 明
输入
策略编号,策略名称
输出
将记录保存到文件中
功 能
说 明
将系统所能提供的打分策略保存到文件中;
文件格式:
运行环
境说明
参见《评委打分系统需求规格说明书》
调用关
系说明
调用模块
被调用模块
3.2.2赛事录入
名称
赛事录入
标识
GI
子系统名称
赛事录入
系统
名称
评委打分系统
接 口
说 明
输入
赛事编号,赛事名称,打分策略编号
输出
将记录保存到文件中
功 能
说 明
将系统所能满足的赛事保存到文件中。
文件格式:
其中C1,C2对应于打分策略中的策略编号
运行环
境说明
参见《评委打分系统需求规格说明书》
调用关
系说明
调用模块
被调用模块
3.2.3比赛赛事选择
名称
比赛赛事选择
标识
GC
子系统名称
比赛赛事选择
系统
名称
评委打分系统
接 口
说 明
输入
比赛赛事名称,编号
输出
记录比赛赛事信息。
并打开打分界面
功 能
说 明
1、选择比赛赛事。
2、根据选择的赛事,从文件中获取该比赛适用的打分策略。
3、使用策略模式来选择不同的打分界面
运行环
境说明
参见《评委打分系统需求规格说明书》
调用关
系说明
调用模块
被调用模块
3.2.4评委打分
名称
评委打分
标识
子系统名称
评委打分
系统
名称
评委打分系统
接 口
说 明
输入
1、进入到打分界面
2、分数
输出
1、计算打分结果
2、将结果保存到文件中
功 能
说 明
根据系统要求来设计不同的评委打分界面。
每个界面对应于不同的打分策略。
评委打分完成后将结果保存到文件中。
运行环
境说明
参见《评委打分系统需求规格说明书》
调用关
系说明
调用模块
被调用模块
3.2.5得分结果展示
名称
得分结果展示
标识
子系统名称
得分结果展示
系统
名称
评委打分系统
接 口
说 明
输入
文件中保存的打分记录
输出
将文件中保存的记录显示在界面上
功 能
说 明
将比赛结果显示出来。
显示结果按照最后得分的降序进行排列。
运行环
境说明
参见《评委打分系统需求规格说明书》
调用关
系说明
调用模块
被调用模块
四、主要步骤
4.1设置主界面
4.2根据选择的不同进入不同的界面
1.打分策略输入
voidCTheJudgesScoringSystemDlg:
:
OnBnClickedButton1()
{
SITsit;
sit.DoModal();
//TODO:
在此添加控件通知处理程序代码
}
2.赛事录入
voidCTheJudgesScoringSystemDlg:
:
OnBnClickedButton2()
{
//TODO:
在此添加控件通知处理程序代码
GIgi;
gi.DoModal();
}
3.比赛赛事选择
voidCTheJudgesScoringSystemDlg:
:
OnBnClickedButton3()
{
//TODO:
在此添加控件通知处理程序代码
GCFgcf;
gcf.DoModal();
}
4.比赛结果显示
voidCTheJudgesScoringSystemDlg:
:
OnBnClickedButton4()
{
//TODO:
在此添加控件通知处理程序代码
FinalScoreShowfss;
fss.DoModal();
}
5.退出
voidCTheJudgesScoringSystemDlg:
:
OnBnClickedCancel()
{
//TODO:
在此添加控件通知处理程序代码
CDialogEx:
:
OnCancel();
}
6.确定
voidCTheJudgesScoringSystemDlg:
:
OnBnClickedOk()
{
//TODO:
在此添加控件通知处理程序代码
CDialogEx:
:
OnOK();
}
4.3输入赛事与策略的信息
1.打分策略输入
voidSIT:
:
OnBnClickedSave()
{
//TODO:
在此添加控件通知处理程序代码
Confirmationsure;
if(sure.DoModal()==1)
{
fstreamfsit;
fsit.open(_T("PolicyInformation.txt"),ios:
:
app);
try
{
if(!
fsit.is_open())
{
throwfalse;
}
}
catch(bool)
{
MessageBox(_T("'PolicyInformation.txt'打开失败"));
}
UpdateData(true);
fsit< PolicynName.ReleaseBuffer(); PolicyNumber.ReleaseBuffer(); PolicynName=""; PolicyNumber=""; UpdateData(false); fsit.close(); MessageBox(_T("保存成功")); } } 2.赛事录入 voidGI: : OnBnClickedOk() { //TODO: 在此添加控件通知处理程序代码 Confirmationsure=newConfirmation; inti;//指定逗号所在位置 if(sure.DoModal()==1) { fstreamfsit; fsit.open(_T("GameInformation.txt"),ios: : app); try { if(! fsit.is_open()) { throwfalse; } } catch(bool) { MessageBox(_T("'GameInformation.txt'打开失败")); } UpdateData(true); i=ScoreType.Find(','); fsit< GameName.ReleaseBuffer(); GameNumber.ReleaseBuffer(); GameName=""; GameNumber=""; UpdateData(false); fsit.close(); MessageBox(_T("保存成功")); } } 4.4根据赛事选择的不同进入不同的打分界面 BOOLGCF: : OnInitDialog() { CDialogEx: : OnInitDialog(); GCFCombo.ResetContent(); fstreamfgcf; inti=0; fgcf.open(_T("GameInformation.txt"),ios: : in); try { if(! fgcf.is_open()) { throwfalse; } } catch(bool) { MessageBox("'GameInformation.txt'打开失败"); returnfalse; } while(getline(fgcf,GMember.GameNumber[i],',')&&getline(fgcf,GMember.GameType[i],',')) { GCFCombo.AddString(GMember.GameType[i].c_str()); getline(fgcf,GMember.PolicyNumber[i]); i++; } GMember.length=i; fgcf.close(); returntrue; } voidGCF: : OnBnClickedOk() { //TODO: 在此添加控件通知处理程序代码 inti=0; intj=0; GCFComboText.GetBuffer(); UpdateData(true); for(i=0;i { if(GCFComboText.GetBuffer()==GMember.GameType[i]) { GCFComboText.ReleaseBuffer(); break; } GCFComboText.ReleaseBuffer(); } UpdateData(false); if(GMember.PolicyNumber[i]=="G1") { JS1js1; js1.DoModal(); } if(GMember.PolicyNumber[i]=="G2") { JS2js2; js2.DoModal(); } if(GMember.PolicyNumber[i]=="G3") { JS3js3; js3.DoModal(); } if(GMember.PolicyNumber[i]=="G4") { JS4js4; js4.DoModal(); } CDialogEx: : OnOK(); } 4.5打分并显示结果 1.打分JS1 BOOLJS1: : OnInitDialog() { CDialogEx: : OnInitDialog(); fjs.open(_T("PlayerScore.txt"),ios: : app); try { if(! fjs.is_open()) { throwfalse; } } catch(bool) { MessageBox(_T("'PlayerScore.txt'打开失败")); } fjs<<"#,,"< returntrue; } voidJS1: : OnBnClickedOk() { //TODO: 在此添加控件通知处理程序代码 inti=0; UpdateData(true); if(score1! =0) { i++; } if(score2! =0) { i++; } if(score3! =0) { i++; } if(score4! =0) { i++; } if(score5! =0) { i++; } if(score6! =0) { i++; } Confirmationsure("G1",i); if(sure.DoModal()==1) { FinalScore=(score1+score2+score3+score4+score5+score6)/i; fjs< UpdateData(false); } } voidJS1: : OnBnClickedButton1() { //TODO: 在此添加控件通知处理程序代码 UpdateData(true); score1=0; score2=0; score3=0; score4=0; score5=0; score6=0; FinalScore=0; PlayerNumber++; UpdateData(false); } voidJS1: : OnBnClickedCancel() { //TODO: 在此添加控件通知处理程序代码 fjs.close(); CDialogEx: : OnCancel(); 2.打分JS2 BOOLJS2: : OnInitDialog() { CDialogEx: : OnInitDialog(); fjs.open(_T("PlayerScore.txt"),ios: : app); try { if(! fjs.is_open()) { throwfalse; } } catch(bool) { MessageBox(_T("'PlayerScore.txt'打开失败")); } fjs<<"#,,"< returntrue; } voidJS2: : OnBnClickedOk() { //TODO: 在此添加控件通知处理程序代码 inti=0; doublemax=-1; doublemin=23333; UpdateData(true); if(score1! =0) { if(min>score1) { min=score1; } if(max { max=score1; } i++; } if(score2! =0) { if(min>score2) { min=score2; } if(max { max=score2; } i++; } if(score3! =0) { if(min>score3) { min=score3; } if(max { max=score3; } i++; } if(score4! =0) { if(min>score4) { min=score4; } if(max { max=score4; } i++; } if(score5! =0) { if(min>score5) { min=score5; } if(max { max=score5; } i++; } if(score6! =0) { if(min>score6) { min=score6; } if(max { max=score6; } i++; } if(score7! =0) { if(min>score7) { min=score7; } if(max { max=score7; } i++; } if(score7! =0) { if(min>score7) { min=score7; } if(max { max=score7; } i++; } if(score8! =0) { if(min>score8) { min=score8; } if(max { max=score8; } i++; } if(score9! =0) { if(min>score9) { min=score9; } if(max { max=score9; } i++; } Confirmationsure("G2",i); if(sure.DoModal()==1) { FinalScore=(score1+score2+score3+score4+score5+score6+score7+score8+score9-min-max)/ (i-2); fjs< <<","< UpdateData(false); } } voidJS2: : OnBnClickedButton1() { //TODO: 在此添加控件通知处理程序代码 UpdateData(true); score1=0; score2=0; score3=0; score4=0; score5=0; score6=0; score7=0; score8=0; score9=0; FinalScore=0; PlayerNumber++; UpdateData(false); } voidJS2: : OnBnClickedCancel() { //TODO: 在此添加控件通知处理程序代码 CDialogEx: : OnCancel(); 3.打分JS3 BOOLJS3: : OnInitDialog() { CDialogEx: : OnInitDialog(); fjs.open(_T("PlayerScore.txt"),ios: : app); try { if(! fjs.is_open()) { throwfalse; } } catch(bool) { MessageBox(_T("'PlayerScore.txt'打开失败")); } fjs<<"#,,"< returntrue; } voidJS3: : OnBnClickedButton1() { //TODO: 在此添加控件通知处理程序代码 UpdateData(true); AllScore[length]=score; CStringstr=ScoreShow;//临时存储 ScoreShow.Format("%s第%d位评委打分是%0.2lf\r\n",str,i+1,score); ScoreShow.ReleaseBuffer(); i++; length++; if(score { min2=min1; min1=score; } elseif(score { min2=score; } if(score>max1) { max2=max1; max1=score; } elseif(score>max2) { max2=score; } score=0; UpdateData(false); } voidJS3: : OnBnClickedOk() { //TODO: 在此添加控件通知处理程序代码 Confirmationsure("G3",length); doublesum=0; inti=0; if(sure.DoModal(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 评委 打分 系统