電 話:18937133779
網(wǎng) 址:http://www.gycxdjzzl.com
郵 箱:zboao@qq.com
安全
運(yùn)動(dòng)會(huì)管理系統(tǒng)可以這樣設(shè)計(jì)
1 數(shù)據(jù)庫(kù)文檔設(shè)計(jì)
2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
3 程序 (對(duì)數(shù)據(jù)庫(kù)的管理)
1 數(shù)據(jù)庫(kù)文檔 信息 存儲(chǔ)格式
運(yùn)動(dòng)會(huì)管理系統(tǒng) 首先要有運(yùn)動(dòng)員,參賽單位,運(yùn)動(dòng)會(huì)運(yùn)動(dòng)項(xiàng)目
可以分三個(gè)庫(kù)存放(這里的庫(kù)是廣義的,可以使用數(shù)據(jù)庫(kù)軟件系統(tǒng)的庫(kù),可以使用自己定義的庫(kù)形式,或是文本文件)
運(yùn)動(dòng)員庫(kù)信息:
ID (唯一標(biāo)示符)
姓名,性別,出生年月,(身高,體重,籍貫 等)
本次參賽項(xiàng)目: 項(xiàng)目1{項(xiàng)目ID 比賽時(shí)間 名次 破紀(jì)錄} 項(xiàng)目2...
參賽歷史: {運(yùn)動(dòng)會(huì)屆 單位 項(xiàng)目 名次 破紀(jì)錄} ...
(如果不實(shí)現(xiàn)歷史查詢功能,可去掉參賽歷史記錄)
參賽單位:
單位ID
單位名稱
參賽運(yùn)動(dòng)員{ID } ...
參賽項(xiàng)目{項(xiàng)目ID }...
往屆參賽{運(yùn)動(dòng)員,項(xiàng)目及成績(jī),}
運(yùn)動(dòng)項(xiàng)目:
項(xiàng)目ID
項(xiàng)目名稱
比賽時(shí)間
參賽運(yùn)動(dòng)員ID
名次1 2 3 4 5 6
運(yùn)動(dòng)會(huì)紀(jì)錄{運(yùn)動(dòng)會(huì)屆,紀(jì)錄年月日,紀(jì)錄,保持者ID}
省(地區(qū))運(yùn)動(dòng)會(huì)紀(jì)錄{運(yùn)動(dòng)會(huì)屆,紀(jì)錄年月日,紀(jì)錄,保持者}
全運(yùn)會(huì)紀(jì)錄{運(yùn)動(dòng)會(huì)屆,紀(jì)錄年月日,紀(jì)錄,保持者ID}
亞運(yùn)會(huì)紀(jì)錄...
世界紀(jì)錄...
三個(gè)庫(kù)文件最好采用固定紀(jì)錄長(zhǎng)度存儲(chǔ),方便存取管理操作,尤其是運(yùn)動(dòng)員信息庫(kù)
2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
設(shè)計(jì)三個(gè)類分別對(duì)應(yīng)三個(gè)庫(kù),數(shù)據(jù)成員與庫(kù)字段設(shè)置相同
運(yùn)動(dòng)員信息類中的參賽項(xiàng)目可以采用鏈表形式 或數(shù)組形式
參賽歷史采用鏈表形式
Class 運(yùn)動(dòng)員
成員函數(shù)實(shí)現(xiàn)
構(gòu)造函數(shù)(有參 無(wú)參)
析構(gòu)函數(shù) (回收動(dòng)態(tài)分配單元)
讀取數(shù)據(jù)庫(kù)(讀取當(dāng)前紀(jì)錄)
讀取數(shù)據(jù)庫(kù)(讀取本運(yùn)動(dòng)員的歷史記錄)
保存入數(shù)據(jù)(本運(yùn)動(dòng)員信息創(chuàng)建保存,覆蓋保存)
本次運(yùn)動(dòng)會(huì)參賽項(xiàng)目及成績(jī)( 可設(shè) 成績(jī)?yōu)?-1 為參加項(xiàng)目 0 為無(wú)取得名次)
本次代表單位
往屆運(yùn)動(dòng)會(huì)參賽項(xiàng)目及成績(jī)
往屆代表單位
...
等等
Class 參賽單位
數(shù)據(jù)成員與庫(kù)字段設(shè)置相同
參賽運(yùn)動(dòng)員ID可以用數(shù)組或鏈表
參賽項(xiàng)目可以用數(shù)組或鏈表
成員函數(shù)
構(gòu)造函數(shù)(有參,無(wú)參),析構(gòu)函數(shù)
讀庫(kù),寫(xiě)庫(kù)
本屆運(yùn)動(dòng)會(huì)成績(jī)統(tǒng)計(jì),項(xiàng)目統(tǒng)計(jì),運(yùn)動(dòng)員統(tǒng)計(jì)
往屆運(yùn)動(dòng)會(huì)成績(jī)統(tǒng)計(jì),
Class 項(xiàng)目
數(shù)據(jù)成員設(shè)置與庫(kù)對(duì)應(yīng)
成員函數(shù)
構(gòu)造函數(shù)析構(gòu)函數(shù)
庫(kù)存取
項(xiàng)目統(tǒng)計(jì)(各單位得分統(tǒng)計(jì))
紀(jì)錄查詢
3 主程序
聲明類對(duì)象
打開(kāi)數(shù)據(jù)庫(kù)
菜單功能
參賽單位管理
添加修改參賽單位
查詢參賽單位
運(yùn)動(dòng)員,項(xiàng)目,積分統(tǒng)計(jì)
運(yùn)動(dòng)會(huì)項(xiàng)目管理
項(xiàng)目計(jì)劃安排
項(xiàng)目結(jié)果錄入
項(xiàng)目歷史查詢
運(yùn)動(dòng)員檔案管理
添加
修改
查詢
刪除
不完善,樓主清自己再根據(jù)需要和要求完善
這需要找一個(gè)學(xué)過(guò)編程的來(lái)設(shè)計(jì)哦
這是源代碼哦,要加分的!~~~~~
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include<string.h>
int a,b,c,d,i,j;
struct node
{
int num;
};
struct node *f[22];
void exit0()
{
FILE *fp;
int k;
alp:if((fp=fopen("sore.txt","w"))==NULL)
{
printf("創(chuàng)建文件失敗\n");
printf(" 1*****重試\n");
printf(" 2*****強(qiáng)制退出(數(shù)據(jù)將不會(huì)保存到文件)\n");
printf(" 3*****回到主菜單\n");
alj: scanf("%d",&k);
if(k==1)
goto alp;
else if(k==2)
exit(0);
else if(k==3)
return;
else
{
printf("輸入錯(cuò)誤,請(qǐng)重新輸入:");
goto alj;
}
}
fprintf(fp,"\n\n");
fprintf(fp,"運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)表\n\n\n");
fprintf(fp,"項(xiàng)目代號(hào)");
for(i=1;i<=c+d;i++)
fprintf(fp,"%5d",i);
fprintf(fp," ");
fprintf(fp,"\n 學(xué)校代號(hào)\n");
for(i=1;i<=a;i++)
{
fprintf(fp,"%10d",i);
for(b=1;b<=c+d;b++)
{
fprintf(fp,"%5d",f[i][b].num);
}
fprintf(fp,"\n");
}
fprintf(fp,"\n\n");
fprintf(fp," 注:本次運(yùn)動(dòng)會(huì)有%d個(gè)學(xué)校參賽\n\n",a);
fprintf(fp," 其中1 ~ %d組是男子組,%d ~ %d組是女子組\n",c,c+1,c+d);
printf("\n比賽成績(jī)已保存到當(dāng)前路徑下的sore.txt文件中\(zhòng)n\n");
fclose(fp);
exit(1);
}
int choose()
{
int choo;
printf("\n\n 1*輸入成績(jī)\n");
printf(" 2*統(tǒng)計(jì)各學(xué)校的總分\n");
printf(" 3*出按學(xué)校編號(hào)排序輸\n");
printf(" 4*按學(xué)??偡峙判蜉敵鯸n");
printf(" 5*按男團(tuán)體總分排序輸出\n");
printf(" 6*按女團(tuán)體總分排序輸出\n");
printf(" 7*按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的成績(jī)\n");
printf(" 8*按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校\n");
printf(" 9*退出\n\n");
printf("請(qǐng)選擇:");
scanf("%d",&choo);
return(choo-1);
}
void input()
{
int ab,ac,ae,af,g=1,get[5]={0,0,0,0,0};
printf("\n請(qǐng)輸入項(xiàng)目代號(hào):");
ale:scanf("%d",&ab);
if(ab>c+d||ab<1)
{
printf("\n此項(xiàng)目代號(hào)不存在,重新輸入\n");
goto ale;
}
ae=0;
for(i=0;i<=a;i++)
{
if(f[i][ab].num!=0)
{
ae=1;
break;
}
}
if(ae==1)
{
al2: printf("\n此項(xiàng)目成績(jī)?cè)?jīng)已被錄入過(guò),是否要重新錄入(您輸入的項(xiàng)目代號(hào)可能有誤,強(qiáng)烈建議您查證后再錄入):\n");
printf(" 1++++重新錄入(若重新錄入,以前的該項(xiàng)目成績(jī)將被刪除)\n");
printf(" 2++++不要,待查證后再錄入\n\n");
scanf("%d",&af);
if(af==2)
{
printf("您已取消錄入?。。。。n");
return;
}
else if(af==1)
{
for(i=1;i<=a;i++)
{
if(f[i][ab].num!=0)
{
f[i][0].num=f[i][0].num-f[i][ab].num;
if(ab<=c)
f[i][c+d+1].num=f[i][c+d+1].num-f[i][ab].num;
else
f[i][c+d+2].num=f[i][c+d+2].num-f[i][ab].num;
}
f[i][ab].num=0;
}
}
else
goto al2;
}
al: printf("\n此項(xiàng)目是以前幾名為勝出者:\n\n");
printf(" 3-------以前三名\n");
printf(" 5-------以前五名\n\n");
scanf("%d",&ac);
if(ac==3)
{
printf("\n請(qǐng)依次輸入獲勝學(xué)校代號(hào):");
af=5;
for(i=0;i<3;i++)
{
alq: scanf("%d",&ae);
if(ae>a||ae<1)
{
printf("%d學(xué)校代號(hào)不存在,重新輸入第%d名的學(xué)校代號(hào)\n",ae,g);
goto alq;
}
for(b=0;b<5;b++)
{
if(ae==get[b])
{
printf("同一個(gè)學(xué)校不能在同一項(xiàng)目中有兩個(gè)名次,請(qǐng)重新輸入第%d名的學(xué)校代號(hào)?。。n",g);
goto alq;
}
else
get[b]=ae;
}
f[ae][0].num=f[ae][0].num+af;
f[ae][ab].num=af;
if(ab<=c)
f[ae][c+d+1].num=f[ae][c+d+1].num+af;
else
f[ae][c+d+2].num=f[ae][c+d+2].num+af;
if(af>3)
af=af-2;
else
af--;
g++;
}
}
else if(ac==5)
{
printf("請(qǐng)依次輸入獲勝學(xué)校代號(hào):");
af=7;
for(i=0;i<5;i++)
{
alw: scanf("%d",&ae);
if(ae>a||ae<1)
{
printf("%d學(xué)校代號(hào)不存在,重新輸入第%d名的學(xué)校代號(hào)\n",ae,g);
goto alw;
}
for(b=0;b<5;b++)
{
if(ae==get[b])
{
printf("同一個(gè)學(xué)校不能在同一項(xiàng)目中有兩個(gè)名次,請(qǐng)重新輸入第%d名的學(xué)校代號(hào)?。?!\n",g);
goto alw;
}
else
get[b]=ae;
}
f[ae][0].num=f[ae][0].num+af;
f[ae][ab].num=af;
if(ab<=c)
f[ae][c+d+1].num=f[ae][c+d+1].num+af;
else
f[ae][c+d+2].num=f[ae][c+d+2].num+af;
if(af>3)
af=af-2;
else
af--;
g++;
}
}
else
goto al;
printf("\n\n 輸入完成 ! ! ! ! \n");
}
void each()
{
printf("\n 對(duì)應(yīng)的格式為:\n 學(xué)校代號(hào):團(tuán)體總成績(jī)\n\n ");
for(i=1;i<=a;i++)
{
printf("%2d:%3d ",i,f[i][0].num);
if(i%3==0)
printf("\n ");
}
}
void biaohao()
{
printf("\n項(xiàng)目代號(hào) ");
for(i=1;i<=c+d;i++)
{
if(i>9)
printf("%4d ",i);
else
printf("%5d ",i);
}
printf("\n");
printf("學(xué)校代號(hào) \n");
for(i=1;i<=a;i++)
{
printf(" %d ",i);
for(b=1;b<=c+d;b++)
{
if(f[i][b].num>9)
printf("%4d",f[i][b].num);
else
printf("%5d",f[i][b].num);
}
printf("\n");
}
}
void zongfen()
{
struct nod
{
int ke;
int num;
};
int ha;
struct nod *de;
de=(struct nod *)malloc(sizeof(struct nod)*a+1);
printf("\n 按學(xué)校編號(hào)排序輸出\n\n");
printf(" 學(xué)校代號(hào) 總分\n\n");
for(i=1;i<=a;i++)
{
de[i].ke=i;
de[i].num=f[i][0].num;
}
for(i=1;i<=a;i++)
{
for(b=i;b<=a;b++)
{
if(de[b].num>de[i].num)
{
ha=de[b].ke;
de[b].ke=de[i].ke;
de[i].ke=ha;
ha=de[b].num;
de[b].num=de[i].num;
de[i].num=ha;
}
}
}
for(i=1;i<=a;i++)
{
printf("%13d%8d\n",de[i].ke,de[i].num);
}
}
void nanzong()
{
struct nod
{
int ke;
int num;
};
int ha;
struct nod *de;
de=(struct nod *)malloc(sizeof(struct nod)*a+1);
printf("\n 按男子團(tuán)體總分排序輸出\n\n");
printf(" 學(xué)校代號(hào) 男子團(tuán)體總分\n\n");
for(i=1;i<=a;i++)
{
de[i].ke=i;
de[i].num=f[i][c+d+1].num;
}
for(i=1;i<=a;i++)
{
for(b=i;b<=a;b++)
{
if(de[b].num>de[i].num)
{
ha=de[b].ke;
de[b].ke=de[i].ke;
de[i].ke=ha;
ha=de[b].num;
de[b].num=de[i].num;
de[i].num=ha;
}
}
}
for(i=1;i<=a;i++)
{
printf("%13d%12d\n",de[i].ke,de[i].num);
}
}
void nvzong()
{
struct nod
{
int ke;
int num;
};
int ha;
struct nod *de;
de=(struct nod *)malloc(sizeof(struct nod)*a+1);
printf(" 按女子團(tuán)體總分排序輸出\n\n");
printf(" 學(xué)校代號(hào) 女子團(tuán)體總分\n\n");
for(i=1;i<=a;i++)
{
de[i].ke=i;
de[i].num=f[i][c+d+2].num;
}
for(i=1;i<=a;i++)
{
for(b=i;b<=a;b++)
{
if(de[b].num>de[i].num)
{
ha=de[b].ke;
de[b].ke=de[i].ke;
de[i].ke=ha;
ha=de[b].num;
de[b].num=de[i].num;
de[i].num=ha;
}
}
}
for(i=1;i<=a;i++)
{
printf("%15d%13d\n",de[i].ke,de[i].num);
}
}
void xuexiao()
{
int dr,dt;
printf("\n請(qǐng)輸入您要查詢的學(xué)校代號(hào):");
aly:scanf("%d",&dr);
if(dr>a||dr<1)
{
printf("學(xué)校代號(hào)不存在,重新輸入\n");
goto aly;
}
printf("請(qǐng)輸入您要查詢的項(xiàng)目代號(hào):");
alo:scanf("%d",&dt);
if(dt>c+d||dt<1)
{
printf("項(xiàng)目代號(hào)不存在,重新輸入\n");
goto alo;
}
printf("\n\n %3d 學(xué)校的%3d 項(xiàng)目成績(jī)?yōu)?3d\n",dr,dt,f[dr][dt].num);
}
void xiangmu()
{
int ge,sedy=0;
printf("\n 請(qǐng)輸入您要查詢的項(xiàng)目代號(hào):");
all:scanf("%d",&ge);
printf("\n");
if(ge>c+d||ge<1)
{
printf("沒(méi)有此項(xiàng)目代號(hào),重新輸入\n");
goto all;
}
for(i=1;i<=a;i++)
{
if(f[b][ge].num==2)
sedy=1;
}
if(sedy==0)
{
printf("此項(xiàng)目沒(méi)有錄入成績(jī)\n");
return;
}
for(i=1;i<=a;i++)
{
if(f[i][ge].num==7)
{
printf(" 此項(xiàng)目取前5名獲獎(jiǎng)?wù)運(yùn)n");
break;
}
}
if(i==a+1)
printf(" 此項(xiàng)目取前3名獲獎(jiǎng)?wù)運(yùn)n");
printf("\n 獲勝名單由成績(jī)高到低依次為:\n\n ");
for(i=7;i>0;i--)
{
for(b=1;b<=a;b++)
{
if(f[b][ge].num==i)
printf("%5d",b);
}
}
}
void(*g[])()={input,each,biaohao,zongfen,nanzong,nvzong,xuexiao,xiangmu,exit0};
void main()
{
int choos;
printf("\n\n * * * 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì) * * *\n\n\n");
printf("共有多少個(gè)學(xué)校參賽:");
scanf("%d",&a);
while(a<=0||a>20)
{
if(a<=0)
{
printf("\n 參賽學(xué)校個(gè)數(shù)不能是負(fù)數(shù)或零\n\n");
printf("共有多少個(gè)學(xué)校參賽:");
scanf("%d",&a);
}
if(a>20)
{
printf("\n 參賽學(xué)校個(gè)數(shù)不能大于20\n\n");
printf("共有多少個(gè)學(xué)校參賽:");
scanf("%d",&a);
}
}
printf("有幾個(gè)男子組:");
scanf("%d",&c);
printf("有幾個(gè)女子組:");
scanf("%d",&d);
for(i=0;i<=a;i++)
{
f[i]=(struct node *)malloc(sizeof(struct node)*(c+d+3));
for(j=0;j<=c+d+2;j++)
f[i][j].num=0;
}
choos=choose();
while(1)
{
while(choos<0||choos>8)
choos=choose();
(*g[choos])();
printf("\n");
choos=choose();
}
}
(全國(guó)總部)河南省鄭州市金水區(qū)農(nóng)業(yè)路71號(hào)中州國(guó)際飯店1617-1618
+18937133779
zboao@qq.com
中博奧技術(shù)有限公司& 版權(quán)所有
工信部備案號(hào):豫ICP備11015869號(hào)-8