数据结构世界杯Word文档格式.docx
- 文档编号:18403453
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:24
- 大小:808.19KB
数据结构世界杯Word文档格式.docx
《数据结构世界杯Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构世界杯Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
~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决赛、小组赛等等,冠军与很多与根相距较远的队伍也进行了比赛,树的猜想是不可行的一种方案。
因此选用无向图来作为逻辑结构,以队伍名作为节点,节点之间的边存储比分,队员作为队伍的一部分信息存储。
以此为大的框架进行编程。
接下来的一些细节也遇到了很多困难,与同学交流一起完成了这次课设。
这次课设受益良多,积累了很多经验,下次再遇到也不会手忙脚乱。
希望下次我会做的更好。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 世界杯