数据结构世界杯Word文档格式.docx

上传人:b****4 文档编号:18403453 上传时间:2022-12-16 格式:DOCX 页数:24 大小:808.19KB
下载 相关 举报
数据结构世界杯Word文档格式.docx_第1页
第1页 / 共24页
数据结构世界杯Word文档格式.docx_第2页
第2页 / 共24页
数据结构世界杯Word文档格式.docx_第3页
第3页 / 共24页
数据结构世界杯Word文档格式.docx_第4页
第4页 / 共24页
数据结构世界杯Word文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数据结构世界杯Word文档格式.docx

《数据结构世界杯Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构世界杯Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

数据结构世界杯Word文档格式.docx

~Graph();

//析构函数

intVerticesNum();

//返回顶点数

intEdgesNum();

//返回边数

boolIsEdge(EdgeoneEdge);

//判断是否是边

};

2.1.2相邻矩阵存储图

classGraphm:

publicGraph{

private:

int**matrix;

//指向相邻矩阵的指针

Graphm(intnumVert);

//构造函数

virtual~Graphm();

//析构函数

EdgeFirstEdge(intoneVertex);

//返回依附于顶点oneVertex的第一条边

EdgeNextEdge(EdgepreEdge);

//返回preEdge的下一条边

voidSetEdge(intfrom,intto,intweight);

//设置一条边

voiddelEdge(intfrom,intto);

//删除边

intGetEdge(intfrom,intto);

//获得一条边};

2.1.3快速排序

voidQuickSort(RecordArray[],intleft,intright);

//快速排序

voidswap(RecordArray[],intpivot,intright);

//轴值交换到数组末端

intSelectPivot(intleft,intright);

//选择轴值

intPartition(RecordArray[],intleft,intright);

//分割函数,分割后轴值已到达正确位置

2.2主程序流程

CWorldCupApp()CWorldCupDoc()

~CWorldCupDoc()

GetData(intn)

GetTeam(CStringt)

CWorldCupDoc()GetTeam(intnum)

OnNewDocument()

OnOpenDocument(LPCTSTRIpszPathName)

Serialize(CArchive&

ar)

TeamAdd(Team*t)

CMainFrame()TeamDelete(Team*t)

CWorldCupView()

~CWorldCupView()

GetDocument()

OnAddMatch()

OnAddPlayer()

OnAddScore()

OnAddTeam()

CWorldCupView()OnDraw(CDC*pDC)

OnLookMatch()

OnLookPlayer()

OnLookPlayername()

OnLookplayernumberh()

OnLookTeam()

OnLookTeamBasic()

OnLookTeamMatch()

OnLookTeamplayers()

3详细设计

3.1各程序模块间的调用关系

voidOnAddTeam();

voidOnAddPlayer();

voidOnAddMatch();

添加信息

voidOnAddScore();

voidOnLookTeam();

voidOnLookMatch()

CWorldCupViewvoidOnLookPlayer()

voidOnLookPlayername()

voidOnLookplayernumberh()查询信息

voidOnLookTeam()

voidOnLookTeamBasic()

voidOnLookTeamMatch()

voidOnLookTeamplayers()

voidOnDraw(CDC*pDC)显示输出信息

3.2函数调用关系图

QuickSort(Arraya[],intleft.Intright)

QuickSort()Swap(Arraya[],intpivot.Intright)

SelectPivot(intleft.Intright)

Partition(Arraya[],intleft.Intright)

3.2.1voidCWorldCupView:

:

OnAddTeam(){

AddTeamaboutDlg;

//关联对话框

booli;

CWorldCupDoc*pDoc=GetDocument();

//获得文件指针

if(aboutDlg.DoModal()==IDOK){

UpdateData(TRUE);

Team*t=newTeam();

t->

SetTeamName(aboutDlg.m_teamname);

//添加球队信息

SetRanking(aboutDlg.m_teamranking);

SetVertex(aboutDlg.m_teamranking);

SetTeamEnglishName(aboutDlg.m_englishname);

SetTeamHeadCoach(aboutDlg.m_headcoach);

SetTeamStarPlayer(aboutDlg.m_starplayer);

SetTeamBestResult(aboutDlg.m_bestresult);

SetTeamHistory(aboutDlg.m_history);

i=pDoc->

TeamAdd(t);

}

else{}

if(i==true){

AfxMessageBox("

添加成功!

"

);

//提示添加成功

Invalidate();

//视窗重画

}

OnAddPlayer()、OnAddMatch()、OnAddScore()同上;

3.2.2voidCWorldCupView:

OnLookMatch(){

match=false;

LookMatchaboutDlg;

//获得文件指针

team1=aboutDlg.m_team1;

//查找对阵的球队

team2=aboutDlg.m_team2;

t1=pDoc->

GetTeam(aboutDlg.m_team1);

//查不到的情况

if(t1==NULL)AfxMessageBox("

没有此场比赛信息!

else{

t2=pDoc->

GetTeam(aboutDlg.m_team2);

if(t2==NULL)AfxMessageBox("

else{//输出图结构相应边的权值即为比分信息

weight1=pDoc->

g->

GetEdge(t1->

vertex,t2->

vertex);

weight2=pDoc->

GetEdge(t2->

vertex,t1->

match=true;

players=false;

//只显示输出比赛信息,其他信息不能输出

playername=false;

playernumber=false;

team=false;

teaminformation=false;

teambasic=false;

teammatch=false;

rule=false;

worldcuphistory=false;

jixiangwu=false;

}

}

OnLookTeam();

OnLookPlayerName();

OnLookPlayerNumber();

OnLookTeamPlayers();

OnLookTeamMatch();

OnLookTeamBasic();

OnLookPlayer()同上;

3.2.3OnDraw(CDC*pDC);

if(team){

pDC->

TextOut(130,10,"

32强排行榜"

TextOut(20,45,"

队伍"

TextOut(120,45,"

排名"

while(i<

n){

te=pDoc->

GetData(i);

//获得指向球队的指针

if(i<

20){

pDC->

TextOut(20,h1,te->

GetTeamName());

ran.Format("

%d"

te->

GetRanking());

TextOut(120,h1,ran);

h1+=20;

}else{

pDC->

TextOut(220,45,"

TextOut(320,45,"

TextOut(220,h2,te->

ran.Format("

TextOut(320,h2,ran);

h2+=20;

i++;

4用户说明

1.打开程序;

2.在界面中点击打开按钮,选择worldCup;

3.可以选择添加、查询来添加查询自己想要的信息;

4.如有错误信息,修改(重新键入即可)后保存即可。

5测试结果

5.1添加与修改

1添加球队信息

2添加球员信息

3添加比赛信息

4添加球员信息

5.2查询

5.2.1查询队伍信息

1查询球队基本信息

2查询球员名单

3查询球队比赛统计

5.2.2查询对阵信息

5.2.2查询球员信息

1通过姓名查询

2通过号码查询

5.3排行榜

5.3.132强排行榜

5.3.2射手榜

5.4错误的输入与输出

5.4.1球队基本信息

5.4.2球队对阵信息

5.4.2球员信息

6源程序(主要类)

6.1Score类

classScore:

publicCObject

{

DECLARE_SERIAL(Score)

Score(constScore&

s);

voidSerialize(CArchive&

ar);

Score*operator=(Score&

s1);

CStringTiming;

CStringEvent;

CStringAgainst;

Score();

virtual~Score();

6.2Team类

classTeam:

DECLARE_SERIAL(Team)

voidSetPlayersScore(intsc,intn);

PlayersGetPlayer(intnum);

PlayersGetPlayer(CStringpn);

CStringEnglishName;

CStringHeadCoach;

CStringStarPlayer;

CStringBestResult;

CStringHistory;

intvertex;

CStringTeamName;

Playersp[24];

intRanking;

Playerspl;

Team();

~Team();

intGetVertex();

voidSetVertex(intv);

Team*operator=(Team&

t);

voidSerialize(CArchive&

ar);

voidSetTeamEnglishName(CStringenName){EnglishName=enName;

voidSetTeamHeadCoach(CStringCoach){HeadCoach=Coach;

voidSetTeamStarPlayer(CStringsPlayer){StarPlayer=sPlayer;

voidSetTeamBestResult(CStringbResult){BestResult=bResult;

voidSetTeamHistory(CStringHis){History=His;

voidSetTeamName(CStringsName){TeamName=sName;

voidSetRanking(intranking){Ranking=ranking;

voidSetPlayersName(CStringpName,intn){p[n].Name=pName;

voidSetPlayersNumber(intpNumber,intn){p[n].Number=pNumber;

voidSetPlayersRanking(intpRanking,intn){p[n].Ranking=pRanking;

voidSetPlayersTeam(CStringpTeam,intn){p[n].Team=pTeam;

voidSetPlayersPosition(CStringpPosition,intn){p[n].Position=pPosition;

voidSetPlayersGoalTiming(CStringtiming,intn){p[n].SetTiming(timing);

voidSetPlayersGoalAgainst(CStringagainst,intn){p[n].SetAgainst(against);

voidSetPlayersNationAppearance(CStringa,intn){p[n].SetNationAppearance(a);

voidSetPlayersClub(CStringc,intn){p[n].SetClub(c);

voidSetPlayersClubAppearance(CStringa,intn){p[n].SetClubAppearance(a);

CStringGetTeamName(){returnTeamName;

//PlayersGetPlayers(intn){returnp[n];

intGetRanking(){returnRanking;

CStringGetPlayersName(intn){returnp[n].Name;

intGetPlayersNumber(intn){returnp[n].Number;

intGetPlayersRanking(intn){returnp[n].Ranking;

CStringGetPlayersTeam(intn){returnp[n].Team;

CStringGetPlayersPosition(intn){returnp[n].Position;

CStringGetPlayersGoalTiming(CStringt,intn){returnp[n].GetTiming(t);

//CStringGetPlayersGoalEvent(intn){/*returnp[n].Event;

*/}

6.2Player类

classPlayers:

DECLARE_SERIAL(Players)

voidSetClub(CStringa);

voidSetClubAppearance(CStringa);

voidSetNationAppearance(CStringa);

Players(Players&

p2);

CStringGetAgainst(CStringa);

CStringGetTiming(CStringa);

voidSetAgainst(CStringa);

voidSetTiming(CStringt);

CStringName;

intNumber;

CStringTeam;

CStringPosition;

CStringNationAppearance;

CStringClub;

CStringClubAppearance;

ints;

Scoresc[20];

Players();

virtual~Players();

Players*operator=(Players&

};

7心得体会

经过这次的课设,我对数据结构有了更深层次的了解,深入了解了逻辑结构与存储结构的差别,尤其是通过这次世界杯信息查询系统,深入了解了图结构以及存储结构邻接矩阵。

由于对编程语言的不熟悉,课设进行的很艰难。

预想的数据结构在编程中可能是不切实际的、难以实现的,只能更改思路。

一开始有想过以冠军为根采用树来设计程序,发现此方法难以实现,冠军赛前有很多半决赛、1/4决赛、小组赛等等,冠军与很多与根相距较远的队伍也进行了比赛,树的猜想是不可行的一种方案。

因此选用无向图来作为逻辑结构,以队伍名作为节点,节点之间的边存储比分,队员作为队伍的一部分信息存储。

以此为大的框架进行编程。

接下来的一些细节也遇到了很多困难,与同学交流一起完成了这次课设。

这次课设受益良多,积累了很多经验,下次再遇到也不会手忙脚乱。

希望下次我会做的更好。

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1