运动会管理系统源程序附件一.docx
- 文档编号:26704963
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:38
- 大小:21.24KB
运动会管理系统源程序附件一.docx
《运动会管理系统源程序附件一.docx》由会员分享,可在线阅读,更多相关《运动会管理系统源程序附件一.docx(38页珍藏版)》请在冰豆网上搜索。
运动会管理系统源程序附件一
#include
#include
#include
#include
#include
#include
usingnamespacestd;
conststringAthleticsPathName="D:
\\Athletics.dat";//定义运动员信息的默认存储路径
conststringGamePathName="D:
\\Game.dat";
intnChoice;
boolFileExist(stringPathName)
{
intresult;
struct_statbuf;
result=_stat(PathName.c_str(),&buf);
return(result==0);
}
////////////////////////////////////////////////////////////////////////////////////////
structAthletics
{
charAthletics_Num[10000];//编号
charAthletics_Name[10000];//名字
charAthletics_rank[10000];//名次
charAthletics_grade[10000];//成绩
Athletics*sNext;
};
//释放链表内存
boolFreeMem(Athletics*sHead)
{
Athletics*sCur;
if(sHead==NULL)
returnfalse;
do
{
sCur=sHead;
sHead=sHead->sNext;
deletesCur;
}
while(sHead!
=NULL);
returntrue;
}
//从给定的文件读取运动员信息
Athletics*AthleticsFromFile(stringAthleticsPathName)
{
Athletics*pRsNew,*sHead=NULL;
ifstreamStusfileIn;
StusfileIn.open(AthleticsPathName.c_str(),ios:
:
in|ios:
:
binary);
if(StusfileIn.fail())
{
cout<<"不能打开文件:
"< returnsHead; } while(! StusfileIn.eof()) { pRsNew=newAthletics; StusfileIn.read((char*)pRsNew,sizeof(*pRsNew)); pRsNew->sNext=NULL; intn=StusfileIn.gcount();//结尾处理(gcount()是返回上一次非格式化输入的字符数.) if(n==0) { deletepRsNew; break; } if(sHead==NULL) sHead=pRsNew; else { pRsNew->sNext=sHead;//把当前的值赋给下一个 sHead=pRsNew; } } StusfileIn.close();//关闭文件 returnsHead;//返回读入内存中数据链的头地址 } //追加保存数据到文件 boolAthleticsToFile(stringAthleticsPathName,Athletics*sHead) { Athletics*sCur; ofstreamStusfileOut;//建立一个输出流对象 StusfileOut.open(AthleticsPathName.c_str(),ios: : out|ios: : app|ios: : binary);//以追加方式打开文件 if(StusfileOut.fail())//打开失败 { cout<<"Cantnotopenfile: "< returnfalse; } //保存运动员信息 sCur=sHead; while(sCur! =NULL) { StusfileOut.write((char*)sCur,sizeof(*sCur));//将sCur所指的结点的运动员信息写入文件 sCur=sCur->sNext;//指向下一位同学 }; StusfileOut.close(); FreeMem(sHead); returntrue; } //保存(删除已存在数据保存新数据到文件) boolAthleticsToFileDele(stringAthleticsPathName,Athletics*sHead) { Athletics*sCur; ofstreamStusfileOut;//建立一个输出文件流对象 StusfileOut.open(AthleticsPathName.c_str(),ios: : out|ios: : binary);//清空文件内所有数据然后打开文件 if(StusfileOut.fail()) { cout<<"Cantnotopenfile: "< returnfalse; } sCur=sHead; while(sCur! =NULL) { StusfileOut.write((char*)sCur,sizeof(*sCur)); sCur=sCur->sNext; }; StusfileOut.close();//关闭文件 FreeMem(sHead); returntrue; }///////////////////////////////////////////////////////////////////////// structProject { charname[10000]; intchengji; }yundongyuan[1000]; intrenshu; intcmp(Projectx,Projecty)//比较成绩大小 { returnx.chengji } Athletics*common; /////////////////////////////////////////////////////// structGame { intGame_Num;//比赛编码 charGame_Name[100];//比赛名称 charGame_Time[100];//时间 charGame_Place[100];//地点 Game*sNext; }; ////释放链表内存 boolFreeMem1(Game*sHead) { Game*sCur; if(sHead==NULL) returnfalse; do { sCur=sHead; sHead=sHead->sNext; deletesCur; } while(sHead! =NULL); returntrue; } Game*GameFromFile(stringGamePathName) { Game*pRsNew,*sHead=NULL; ifstreamStusfileIn; StusfileIn.open(GamePathName.c_str(),ios: : in|ios: : binary); if(StusfileIn.fail()) { cout<<"Cantnotopenfile: "< returnsHead; } while(! StusfileIn.eof()) { pRsNew=newGame; StusfileIn.read((char*)pRsNew,sizeof(*pRsNew)); pRsNew->sNext=NULL; intn=StusfileIn.gcount(); if(n==0) { deletepRsNew; break; } if(sHead==NULL) sHead=pRsNew; else { pRsNew->sNext=sHead; sHead=pRsNew; } } StusfileIn.close(); returnsHead; } //追加保存数据到文件 boolGameToFile(stringGamePathName,Game*sHead) { Game*sCur; ofstreamStusfileOut; StusfileOut.open(GamePathName.c_str(),ios: : out|ios: : app|ios: : binary);//以追加方式打开文件 if(StusfileOut.fail()) { cout<<"Cantnotopenfile: "< returnfalse; } sCur=sHead; while(sCur! =NULL) { StusfileOut.write((char*)sCur,sizeof(*sCur)); sCur=sCur->sNext; }; StusfileOut.close(); FreeMem1(sHead); returntrue; } //保存(删除已存在数据保存新数据到文件) boolGameToFileDele(stringGamePathName,Game*sHead) { Game*sCur; ofstreamStusfileOut; StusfileOut.open(GamePathName.c_str(),ios: : out|ios: : binary); if(StusfileOut.fail()) { cout<<"Cantnotopenfile: "< returnfalse; } sCur=sHead; while(sCur! =NULL) { StusfileOut.write((char*)sCur,sizeof(*sCur)); sCur=sCur->sNext; }; StusfileOut.close(); FreeMem1(sHead); returntrue; } Game*commmom1; intMenuMain()//信息主菜单 { do { cout< cout<<"-----------☆☆欢迎进入运动会管理系统☆☆----------"< cout<<"☆☆☆运动会管理系统主菜单☆☆☆"< cout<<"1: 比赛项目的录入"< cout<<"2: 比赛项目的删除"< cout<<"3: 查看比赛项目"< cout<<"4: 按编号比赛项目的查询"< cout<<"5: 运动员的录入"< cout<<"6: 运动员的删除"< cout<<"7: 查看运动员信息"< cout<<"8: 按学号查询运动员信息"< cout<<"9: 比赛信息"< cout<<"0: 退出系统"< cout<<"请选择: "; cin>>nChoice; cout<<"..................................................................................."< if(nChoice<0||nChoice>9) { cout< cout<<"错误选项,请重新选择! "< } } while(nChoice<0||nChoice>9); returnnChoice; } //运动员信息按编号排序 Athletics*SSort(Athletics*sHead) { Athletics*sNew; sNew=newAthletics;//新建一个结点作为头结点 Athletics*sCur,*p,*q,*s; sNew->sNext=sHead;//让头结点和运动员信息链表接起来 p=sHead; if(sHead->sNext==NULL)//判断运动员信息是否只有一个 returnsHead; sCur=sHead->sNext; while(sCur! =NULL)//从第二个运动员信息开始依次与前面信息比较大小 { q=sNew->sNext;//每比较完一个运动员信息就将q返回到第一个信息处 s=sNew;//每比较完一个运动员信息就将s返回到头结点 if(sCur->Athletics_Num { p->sNext=sCur->sNext;//将sCur提取出来 while(sCur->Athletics_Num>q->Athletics_Num)//将提取出来的sCur依次与前面每一个比较 { q=q->sNext; } while(s->sNext! =q)//从头开始找出要插入sCur的位置的前一个结点,以便插入sCur后将链表接起来 { s=s->sNext; } s->sNext=sCur;//插入sCur结点 sCur->sNext=q;//插入sCur后将sCur与后面结点链起来 sCur=p;//重置sCur的位置,继续操作后面信息 } if(p! =sCur)//为解决排完一个后,sCur与p相同而引起漏去下一个信息设置,不能与下一句位置调换 p=p->sNext;//循环找到正在操作的那个结点的前一个结点 sCur=sCur->sNext;//循环操作每一个结点 } returnsNew->sNext;//至此已将信息按从小到大顺序排列好,返回排列好的信息的头指针 } //项目信息按编号排序 Game*SSort1(Game*sHead) { Game*sNew; sNew=newGame; Game*sCur,*p,*q,*s; sNew->sNext=sHead; p=sHead; if(sHead->sNext==NULL) returnsHead; sCur=sHead->sNext; while(sCur! =NULL) { q=sNew->sNext; s=sNew; if(sCur->Game_Num { p->sNext=sCur->sNext; while(sCur->Game_Num>q->Game_Num) { q=q->sNext; } while(s->sNext! =q) { s=s->sNext; } s->sNext=sCur; sCur->sNext=q; sCur=p; } if(p! =sCur) p=p->sNext; sCur=sCur->sNext; } returnsNew->sNext; } //项目信息的录入 boolGameInput() { charchChoice; Game*sHead=NULL; Game*pRsNew,*pRsPrev=NULL; if(FileExist(GamePathName)) { cout<<"文件"< "; cin>>chChoice; if(toupper(chChoice)=='N') returnfalse; } cout<<"请依次输入每位比赛项目信息(0结束输入)"< do { pRsNew=newGame; pRsNew->sNext=NULL; cout<<"编号: "; cin>>pRsNew->Game_Num; if(pRsNew->Game_Num==0) { deletepRsNew; break; } cout<<"比赛项目: "; cin>>pRsNew->Game_Name; cout<<"比赛地点: "; cin>>pRsNew->Game_Place; cout<<"时间: "; cin>>pRsNew->Game_Time; if(sHead==NULL) sHead=pRsNew; else { pRsPrev=sHead; while(pRsPrev->sNext! =NULL) pRsPrev=pRsPrev->sNext; pRsPrev->sNext=pRsNew; } } while(true); boolbRet;//数据保存 bRet=GameToFile(GamePathName,sHead); if(bRet==true) cout< "< else cout< "< commmom1=newGame;//全局变量 commmom1=sHead; returnbRet; } //比赛项目的录入 intgame_project_menu() { cout< cout<<"-----------☆☆欢迎进入运动会管理系统☆☆----------"< cout<<""< cout< cout<<"☆☆☆运动会管理系统比赛项目录入菜单☆☆☆"< cout< cout<<"请输入选择项: (0返回主菜单)"< if(nChoice==0) MenuMain(); GameInput(); returntrue; } //删除某个项目的信息 Game*Delete1(Game*sHead,Game*sCur) { Game*p; p=sHead; while(p! =NULL) { if(p->sNext==sCur) { p->sNext=sCur->sNext; deletesCur; returnp->sNext; } p=p->sNext; } returnp; } //通过项目编号删除 boolDelete_By_Number1(Game*sHead) { Game*sCur; intGame_Num; intcount=0;//用于计数 cout<<"请输入要删除比赛项目编号: "; cin>>Game_Num; sCur=sHead->sNext; while(sCur! =NULL) { while(sCur->Game_Num==Game_Num) { count++; sCur=Delete1(sHead,sCur);//调用删除函数 if(sCur==NULL) returntrue; } sCur=sCur->sNext; } if(count==0) { cout< "< "; } returnfalse; } //删除文件中的信息并保存////////////////////////////////////// boolGameDelete() { intnChoice; Game*sHead; if(! FileExist(GamePathName)) { cout< "< returnfalse; } sHead=newGame; sHead->sNext=GameFromFile(GamePathName); if(sHead->sNext==NULL) { cout< "< returnfalse; } Delete_By_Number1(sHead->sNext); boolbRet; bRet=GameToFileDele(GamePathName,sHead->sNext); if(bRet==true) cout< "< else cout< "< returnbRet; } //: 比赛项目的删除 intgame_delete_menu() { cout< cout<<"-----------☆☆欢迎进入运动会管理系统☆☆----------"< cout< cout<<"☆☆☆运动会管理系统比赛项目删除菜单☆☆☆"< cout< cout<<"请输入选择项: (0返回主菜单)"< GameDelete(); returntrue; } //显示项目信息 boolDisplayT() { cout<<".......................以下内容为查找结果.................................."< cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 管理 系统 源程序 附件