C語言實現(xiàn)運動會管理系統(tǒng)
本文實例為大家分享了C語言實現(xiàn)運動會管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
問題描述:
(1) 初始化輸入:N-參賽院系總數(shù),M-男子競賽項目數(shù),W-女子競賽項目數(shù);
(2) 各項目名次取法有如下幾種:
取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;
(3) 由程序提醒用戶填寫比賽結(jié)果,輸入各項目獲獎運動員的信息。
(4) 所有信息記錄完畢后,用戶可以查詢各個院系或個人的比賽成績,生成團(tuán)體總分報表,查看參賽院系信息、獲獎運動員、比賽項目信息等。
C語言實現(xiàn)程序如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> ? typedef struct stunode { ?? ?char sport[20]; ?? ?char sex[10]; ?? ?char name[10]; ?? ?char college[20]; ?? ?char grade[10];? ?? ?int rank; ?? ?struct stunode *next; }STU; ??? ??? ??? ?/*定義鏈表結(jié)點的結(jié)構(gòu)體類型struct stunode,取別名STU*/? STU head;?? ??? ?/*定義頭結(jié)點head*/ char stu[20][20];?? ??? ?/*定義結(jié)構(gòu)體數(shù)組stu[20][20],用于存放院系名*/? void maininterface(); void createList(); void printall(); void findperson(); void findcollege(); void freelist(); void findcollogescore(); void modify(); void allscore(); void getprize();? int getscore(); int N,M,W;?? ??? ?/*定義整型N,M,W,用于初始化存放參賽院系總數(shù)、男子競賽項目數(shù)和女子競賽項目數(shù)*/ int k=0;?? ??? ?/*用于創(chuàng)建鏈表時的計數(shù)(區(qū)分首次創(chuàng)建鏈表和再次創(chuàng)建鏈表)*/? int main(int argc, char *argv[]) ?{ ??? ?int i; ?? ?int select; ?? ?head.next=NULL;?? ??? ?/*將頭結(jié)點的next至為NULL*/? ?? ?printf("\t\t\t------------------------\n"); ?? ?printf("\t\t\t*******系統(tǒng)初始化*******\n"); ?? ?printf("\t\t\t1.請輸入?yún)①愒合悼倲?shù):"); ?? ?scanf("%d",&N);?? ? ?? ?printf("\t\t\t2.請輸入男子競賽項目數(shù):"); ?? ?scanf("%d",&M); ?? ?printf("\t\t\t3.請輸入女子競賽項目數(shù):"); ?? ?scanf("%d",&W); ?? ?printf("\t\t\t4.請輸入?yún)①惖脑合得?); ?? ?for(i=0;i<N;i++) ?? ?{ ?? ??? ?scanf("%s",&stu[i])?? ?; ?? ?} ?? ?printf("\n\t\t\t-----------------------\n"); ?? ?printf("\t\t\t ?運動會參賽學(xué)院有:"); ?? ?for(i=0;i<N;i++) ?? ?{ ?? ??? ?printf("%s ",stu[i])?? ?; ?? ?} ?? ?printf("\n\t\t\t"); ?? ?system("pause"); ?? ?while(1) ?? ?{ ?? ??? ?maininterface(); ?? ??? ?printf("\n*請選擇需要的操作:"); ?? ??? ?scanf("%d",&select); ?? ??? ?fflush(stdin);?? ?/*清除鍵盤緩沖區(qū)*/? ?? ??? ?switch(select)?? ?/*根據(jù)用戶選擇,調(diào)用相應(yīng)函數(shù)完成操作*/? ?? ??? ?{ ?? ??? ??? ?case 1:createList();break; ?? ??? ??? ?case 2:findperson();break; ?? ??? ??? ?case 3:findcollege();break; ?? ??? ??? ?case 4:findcollogescore();break; ?? ??? ??? ?case 5:allscore();break; ?? ??? ??? ?case 6:getprize();break; ?? ??? ??? ?case 7:modify();break; ?? ??? ??? ?case 8:printall();break; ?? ??? ??? ?case 0:freelist();exit(0); ?? ??? ??? ?default:printf("輸入錯誤!\n"); ?? ??? ?}? ?? ??? ?system("pause"); ?? ?} ?? ?return 0; } /*函數(shù)功能:顯示菜單*/? void maininterface() { ?? ?system("cls");?? ?/*清屏*/? ?? ?printf("\t\t--------------------------\n"); ?? ?printf("\t\t******運動會管理系統(tǒng)******\n"); ?? ?printf("\t\t1.輸入項目獲獎信息\n");? ?? ?printf("\t\t2.查詢個人的比賽成績\n");? ?? ?printf("\t\t3.查詢院系的比賽信息\n"); ?? ?printf("\t\t4.查詢院系的比賽成績\n"); ?? ?printf("\t\t5.生成團(tuán)體總分報表\n"); ?? ?printf("\t\t6.查看各項目獲獎運動員信息\n"); ?? ?printf("\t\t7.修改項目信息\n"); ?? ?printf("\t\t8.顯示所有信息\n"); ?? ?printf("\t\t0.退出\n"); ?? ?printf("\t\t--------------------------\n"); ?? ?return; }
功能函數(shù)如下:
/*函數(shù)功能:創(chuàng)建某項目的n個獲獎信息*/? void createList() { ?? ?int i,n,j=0; ?? ?int a,b; ?? ?float c; ?? ?int grade1[60],grade2[60];? ?? ?int place[60]; ?? ?char sport4[20]="跳高",sport5[20]="跳高",sport6[20]="鉛球";? ?? ?STU *p,*tail,*p3; ?? ?if(k==0)?? ??? ?/*首次創(chuàng)建鏈表*/? ?? ?{ ?? ??? ?k++; ?? ??? ?if(head.next!=NULL) ?? ??? ?{ ?? ??? ??? ?printf("項目獲獎鏈表已創(chuàng)建!\n"); ?? ??? ??? ?return; ?? ??? ?} ?? ??? ?tail=&head;?? ??? ??? ?/*初始建立鏈表tail指向頭結(jié)點head*/? ?? ??? ?printf("*請輸入?yún)①惾藬?shù):"); ?? ??? ?scanf("%d",&n); ?? ??? ?printf("\n------------------------\n"); ?? ??? ?for(i=1;i<=n;i++)?? ??? ?/*輸入n個項目信息到鏈表中*/? ?? ??? ?{ ?? ??? ??? ?p=(STU *)malloc(sizeof(STU));?? ??? ?/*新建立一個結(jié)點*/? ?? ??? ??? ?if(p==NULL) ?? ??? ??? ?{ ?? ??? ??? ??? ?printf("建立鏈表時內(nèi)存分配失??!\n"); ?? ??? ??? ??? ?return;? ?? ??? ??? ?} ?? ??? ??? ?printf("項目 性別 姓名 學(xué)院 成績\n"); ?? ??? ??? ?scanf("%s%s%s%s%f",p->sport,p->sex,p->name,p->college,&p->grade); ?? ??? ??? ?/*將結(jié)點添加到鏈表尾部*/? ?? ??? ??? ?p->rank=0; ?? ??? ??? ?grade1[j]=p->grade; ?? ??? ??? ?j++; ?? ??? ??? ?tail->next=p;?? ??? ?/*將p所指結(jié)點的next賦給新結(jié)點的next*/ ?? ??? ??? ?p->next=NULL;?? ??? ?/*將新結(jié)點的地址賦給p所指結(jié)點的next*/ ?? ??? ??? ?tail=p; ?? ??? ?} ?? ??? ?if(strcmp(p->sport,sport4)==0||strcmp(p->sport,sport5)==0||strcmp(p->sport,sport6)==0) ?? ??? ?{ ?? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*初始化palce,grade2和grade1*/ ?? ??? ??? ?{ ?? ??? ??? ??? ?place[i]=0; ?? ??? ??? ??? ?grade2[i]=0; ?? ??? ??? ?} ?? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?grade2[i]=grade1[i]; ?? ??? ??? ?} ?? ??? ??? ?for(a=0;a<j-1;a++)?? ??? ?/*利用冒泡法進(jìn)行排序*/ ?? ??? ??? ?{ ?? ??? ??? ??? ?for(b=0;b<j-a-1;b++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(grade2[b]<grade2[b+1]) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?c=grade2[b];?? ??? ?/*交換數(shù)據(jù)*/ ?? ??? ??? ??? ??? ??? ?grade2[b]=grade2[b+1]; ?? ??? ??? ??? ??? ??? ?grade2[b+1]=c; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*比較,找到所對應(yīng)的排名*/ ?? ??? ??? ?{ ?? ??? ??? ??? ?for(a=0;a<j;a++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(grade2[i]==grade1[a]) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?place[a]=i+1; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?p3=head.next; ?? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?p3->rank=place[i]; ?? ??? ??? ??? ?p3=p3->next; ?? ??? ??? ?} ?? ??? ?}else{ ?? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*初始化palce,grade2和grade1*/ ?? ??? ??? ?{ ?? ??? ??? ??? ?place[i]=0; ?? ??? ??? ??? ?grade2[i]=0; ?? ??? ??? ?} ?? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?grade2[i]=grade1[i]; ?? ??? ??? ?} ?? ??? ??? ?for(a=0;a<j-1;a++)?? ??? ?/*利用冒泡法進(jìn)行排序*/ ?? ??? ??? ?{ ?? ??? ??? ??? ?for(b=0;b<j-a-1;b++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(grade2[b]>grade2[b+1]) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?c=grade2[b];?? ??? ?/*交換數(shù)據(jù)*/ ?? ??? ??? ??? ??? ??? ?grade2[b]=grade2[b+1]; ?? ??? ??? ??? ??? ??? ?grade2[b+1]=c; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*比較,找到所對應(yīng)的排名*/ ?? ??? ??? ?{ ?? ??? ??? ??? ?for(a=0;a<j;a++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(grade2[i]==grade1[a]) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?place[a]=i+1; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?p3=head.next; ?? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ?{?? ? ?? ??? ??? ??? ?p3->rank=place[i]; ?? ??? ??? ??? ?p3=p3->next; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?return; ?? ?} ?? ?if(k==1)?? ??? ?/*再次創(chuàng)建鏈表(相當(dāng)于在上一次創(chuàng)建的鏈表的尾部插入)*/? ?? ?{ ?? ??? ?j=0; ?? ??? ?STU *p1,*p2,*p5; ?? ??? ?p1=&head; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?if(p1->next==NULL)break;?? ??? ?/*當(dāng)鏈表循環(huán)至尾部時結(jié)束循環(huán)*/? ?? ??? ??? ?p1=p1->next;?? ??? ?/*p1指向下一個結(jié)點*/? ?? ??? ?} ?? ??? ?p5=&head; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?if(p5->next==NULL)break;?? ??? ?/*當(dāng)鏈表循環(huán)至尾部時結(jié)束循環(huán)*/? ?? ??? ??? ?p5=p5->next;?? ??? ?/*p1指向下一個結(jié)點*/? ?? ??? ?} ?? ??? ?printf("請輸入?yún)①惾藬?shù):"); ?? ??? ?scanf("%d",&n); ?? ??? ?for(i=1;i<=n;i++){ ?? ??? ??? ?p2=(STU*)malloc(sizeof(STU));?? ??? ?/*新建立一個結(jié)點*/ ?? ??? ??? ?if(p2==NULL) ?? ??? ??? ?{ ?? ??? ??? ??? ?printf("動態(tài)內(nèi)存分配失??!"); ?? ??? ??? ??? ?return; ?? ??? ??? ?} ?? ??? ??? ?printf("項目 性別 姓名 學(xué)院 成績\n"); ?? ??? ??? ?scanf("%s%s%s%s%f",p2->sport,p2->sex,p2->name,p2->college,&p2->grade); ?? ??? ??? ?p2->rank=0; ?? ??? ??? ?grade1[j]=p2->grade; ?? ??? ??? ?j++; ?? ??? ??? ?p2->next=p1->next;?? ??? ?/*將p1所指結(jié)點的next賦給新的結(jié)點的next*/? ?? ??? ??? ?p1->next=p2;?? ??? ??? ?/*將新的結(jié)點的地址賦給p1所指結(jié)點的next*/? ?? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*初始化palce,grade2和grade1*/? ?? ??? ??? ?{ ?? ??? ??? ??? ?place[i]=0; ?? ??? ??? ??? ?grade2[i]=0; ?? ??? ??? ?} ?? ??? ??? ?a=0; ?? ??? ??? ?b=0; ?? ??? ??? ?c=0; ?? ??? ??? ?if(strcmp(p2->sport,sport4)==0||strcmp(p2->sport,sport5)==0||strcmp(p2->sport,sport6)==0) ?? ??? ??? ?{ ?? ??? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*初始化palce,grade2和grade1*/? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?place[i]=0; ?? ??? ??? ??? ??? ?grade2[i]=0; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?grade2[i]=grade1[i]; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(a=0;a<j-1;a++)?? ??? ?/*利用冒泡法進(jìn)行排序*/ ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(b=0;b<j-a-1;b++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(grade2[b]<grade2[b+1]) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?c=grade2[b];?? ??? ?/*交換數(shù)據(jù)*/ ?? ??? ??? ??? ??? ??? ??? ?grade2[b]=grade2[b+1]; ?? ??? ??? ??? ??? ??? ??? ?grade2[b+1]=c; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*比較,找到所對應(yīng)的排名*/ ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(a=0;a<j;a++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(grade2[i]==grade1[a]) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?place[a]=i+1; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?p3=p5; ?? ??? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?p3=p3->next; ?? ??? ??? ??? ??? ?p3->rank=place[i]; ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ?} ?? ??? ??? ?}else{ ?? ??? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*初始化palce,grade2和grade1*/? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?place[i]=0; ?? ??? ??? ??? ??? ?grade2[i]=0; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?grade2[i]=grade1[i]; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(a=0;a<j-1;a++)?? ??? ?/*利用冒泡法進(jìn)行排序*/ ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(b=0;b<j-a-1;b++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(grade2[b]<grade2[b+1]) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?c=grade2[b];?? ??? ?/*交換數(shù)據(jù)*/ ?? ??? ??? ??? ??? ??? ??? ?grade2[b]=grade2[b+1]; ?? ??? ??? ??? ??? ??? ??? ?grade2[b+1]=c; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(i=0;i<j;i++)?? ??? ?/*比較,找到所對應(yīng)的排名*/ ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(a=0;a<j;a++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(grade2[i]==grade1[a]) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?place[a]=i+1; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?p3=p5; ?? ??? ??? ??? ?for(i=0;i<j;i++) ?? ??? ??? ??? ?{?? ? ?? ??? ??? ??? ??? ?p3=p3->next; ?? ??? ??? ??? ??? ?p3->rank=place[i]; ?? ??? ??? ??? ??? ?? ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}?? ??? ? ?? ??? ?return; ?? ?} } /*函數(shù)功能:輸出所有項目信息*/? void printall() { ?? ?STU *p; ?? ?if(head.next==NULL) ?? ?{ ?? ??? ?printf("未創(chuàng)建學(xué)生鏈表!\n"); ?? ??? ?return; ?? ?} ?? ?p=head.next;?? ??? ?/*p指向第一個結(jié)點*/? ?? ?printf("-------------------------------------\n"); ?? ?printf("項目\t性別\t姓名\t學(xué)院\t成績\t名次\n"); ?? ?while(p!=NULL)?? ??? ?/*當(dāng)p不為NULL*/? ?? ?{ ?? ??? ?printf("%s\t%s\t%s\t%s\t%.2f\t%d\n",p->sport,p->sex,p->name,p->college,p->grade,p->rank); ?? ??? ?p=p->next;?? ??? ?/*p指向下一個結(jié)點*/? ?? ?} ?? ?return; } /*函數(shù)功能:查詢個人的比賽成績*/? void findperson() { ?? ?int tatal,goal; ?? ?char name1[10]; ?? ?printf("*請輸入查詢的運動員姓名:"); ?? ?scanf("%s",&name1); ?? ?printf("--------------------------------------------\n"); ?? ?printf("項目\t性別\t姓名\t學(xué)院\t名次\t成績\t得分\n"); ?? ?STU *p3; ?? ?p3=head.next;?? ??? ?/*p3指向第一個結(jié)點*/? ?? ?while(p3!=NULL)?? ??? ?/*當(dāng)p3不為NULL*/ ?? ?{ ?? ??? ? ?? ??? ?if(strcmp(p3->name,name1)==0) ?? ??? ?{ ?? ??? ??? ?goal=getscore(p3->rank);?? ??? ?/*調(diào)用getscore函數(shù)換算出名次所對應(yīng)的分?jǐn)?shù)*/? ?? ??? ??? ?printf("%s\t%s\t%s\t%s\t%.2f\t%d\t%d\n",p3->sport,p3->sex,p3->name,p3->college,p3->grade,p3->rank,goal); ?? ??? ??? ?tatal+=goal; ?? ??? ?}?? ? ?? ??? ?p3=p3->next;?? ??? ?/*p3指向下一個結(jié)點*/? ?? ??? ? ?? ?}? ?? ?printf("總分:%d\n",tatal); ?? ?return; ?? ? } /*函數(shù)功能:釋放鏈表中所有存放運動項目信息的結(jié)點*/? void freelist() { ?? ?STU *p; ?? ?p=head.next;?? ??? ??? ?/*從第一個結(jié)點開始釋放*/? ?? ?while(p!=NULL)?? ??? ??? ?/*循環(huán)釋放鏈表中每個結(jié)點的空間*/ ?? ?{ ?? ??? ?head.next=p->next; ?? ??? ?free(p);?? ??? ??? ?/*釋放p指向的結(jié)點空間*/? ?? ??? ?p=head.next;?? ??? ?/*指針變量p指向下一個待釋放的結(jié)點*/? ?? ?} ?? ?return; } /*函數(shù)功能:查詢學(xué)院比賽信息*/ void findcollege() { ?? ?STU *p4; ?? ?p4=head.next;?? ??? ?/*p4指向第一個結(jié)點*/ ?? ?char college1[10]; ?? ?printf("*請輸入查詢的學(xué)院:"); ?? ?scanf("%s",&college1); ?? ?printf("-------------------------------------\n"); ?? ?printf("項目\t性別\t姓名\t學(xué)院\t成績\t名次\n"); ?? ?while(p4!=NULL) ?? ?{ ?? ??? ?if(strcmp(p4->college,college1)==0)?? ??? ?/*如果相等,輸出鏈表*/? ?? ??? ?{ ?? ??? ??? ?printf("%s\t%s\t%s\t%s\t%.2f\t%d\n",p4->sport,p4->sex,p4->name,p4->college,p4->grade,p4->rank); ?? ??? ?} ?? ??? ?p4=p4->next;?? ??? ?/*p4指向下一個結(jié)點*/ ?? ?} ?? ?return; } /*函數(shù)功能:得分計算*/ int getscore(score1) { ?? ?int n=0; ?? ?if(score1==1) ?? ?{ ?? ??? ?n=7; ?? ??? ?return n;? ?? ?}else if(score1==2) ?? ?{ ?? ??? ?n=5; ?? ??? ?return n; ?? ?}else if(score1==3) ?? ?{ ?? ??? ?n=3; ?? ??? ?return n; ?? ?}else if(score1==4) ?? ?{ ?? ??? ?n=2; ?? ??? ?return n; ?? ?}else if(score1==5) ?? ?{ ?? ??? ?n=1; ?? ??? ?return n; ?? ?}else ?? ?{ ?? ??? ?n=0; ?? ??? ?return n; ?? ?} ?? ?return; } /*函數(shù)信息:查看學(xué)院獲獎信息*/ void findcollogescore() { ?? ?int tatal,goal; ?? ?char name1[20]; ?? ?printf("*請輸入查詢的學(xué)院:"); ?? ?scanf("%s",&name1); ?? ?printf("--------------------------------------------\n"); ?? ?printf("項目\t性別\t姓名\t學(xué)院\t成績\t名次\t得分\n"); ?? ?STU *p3; ?? ?p3=head.next;?? ??? ?/*p3指向第一個結(jié)點*/? ?? ?while(p3!=NULL) ?? ?{ ?? ??? ? ?? ??? ?if(strcmp(p3->college,name1)==0)?? ??? ?/*如果相等,輸出鏈表*/ ?? ??? ?{ ?? ??? ??? ?goal=getscore(p3->rank); ?? ??? ??? ?printf("%s\t%s\t%s\t%s\t%.2f\t%d\t%d\n",p3->sport,p3->sex,p3->name,p3->college,p3->grade,p3->rank,goal); ?? ??? ??? ?tatal+=goal; ?? ??? ?}?? ? ?? ??? ?p3=p3->next;?? ??? ?/*p3指向下一個結(jié)點*/ ?? ??? ? ?? ?}? ?? ?printf("總分:%d\n",tatal); ?? ?return; ?? ? } /*函數(shù)功能:生成團(tuán)體團(tuán)體總分報表*/? void allscore() { ?? ?int tatal[60],goal=0,i,man[60],women[60],pla[60],data[60],tatal2[60],man2[60],women2[60]; ?? ?STU *p3; ?? ? ?? ?char ma[10]={"男"}; ?? ?char wo[10]={"女"};? ?? ?printf("-------------------------------------\n"); ?? ?printf("院系\t男子\t女子\t總分\t排名\n"); ?? ?for(i=0;i<N;i++) ?? ?{ ?? ??? ?p3=head.next;?? ??? ?/*p3指向第一個結(jié)點*/ ?? ??? ?tatal[i]=0; ?? ??? ?man[i]=0; ?? ??? ?women[i]=0; ?? ??? ?while(p3!=NULL) ?? ??? ?{ ?? ??? ??? ?if(strcmp(p3->college,stu[i])==0&&strcmp(p3->sex,ma)==0)?? ??? ?/*判斷是否為同一男子項目*/? ?? ??? ??? ?{ ?? ??? ??? ??? ?goal=getscore(p3->rank); ?? ??? ??? ??? ?man[i]+=goal;?? ??? ?/*計算男子總分*/ ?? ??? ??? ?} ?? ??? ??? ?if(strcmp(p3->college,stu[i])==0&&strcmp(p3->sex,wo)==0)?? ??? ?/*判斷是否為同一女子項目*/? ?? ??? ??? ?{ ?? ??? ??? ??? ?goal=getscore(p3->rank); ?? ??? ??? ??? ?women[i]+=goal;?? ??? ?/*計算女子總分*/ ?? ??? ??? ?} ?? ??? ??? ?p3=p3->next;?? ??? ?/*p3指向下一個結(jié)點*/ ?? ??? ?} ?? ??? ?tatal[i]=man[i]+women[i];?? ??? ?/*計算總分*/? ?? ?} ?? ?for(i=0;i<N;i++) ?? ?{ ?? ??? ??? ?data[i]=tatal[i]; ?? ?} ?? ?int a,b,c; ?? ?for(a=0;a<N-1;a++)?? ??? ?/*利用冒泡法進(jìn)行排序*/? ?? ?{ ?? ??? ?for(b=0;b<N-a-1;b++) ?? ??? ?{ ?? ??? ??? ?if(data[b]<data[b+1]) ?? ??? ??? ?{ ?? ??? ??? ??? ?c=data[b];?? ??? ?/*交換數(shù)據(jù)*/? ?? ??? ??? ??? ?data[b]=data[b+1]; ?? ??? ??? ??? ?data[b+1]=c; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?for(i=0;i<N;i++){?? ??? ?/*初始化pla*/? ?? ??? ?pla[i]=0; ?? ??? ?? ?? ?} ?? ?for(i=0;i<N;i++)?? ??? ?/*比較,找到所對應(yīng)的排名*/? ?? ?{ ?? ??? ?for(a=0;a<N;a++) ?? ??? ?{ ?? ??? ??? ?if(data[i]==tatal[a]) ?? ??? ??? ?{ ?? ??? ??? ??? ?pla[a]=i+1; ?? ??? ??? ?}? ?? ??? ?} ?? ?} ?? ?int p; ?? ? ?? ?for(p=0;p<N;p++) ?? ?{ ?? ??? ?p3=head.next;?? ??? ?/*p3指向第一個結(jié)點*/ ?? ??? ?man2[p]=0; ?? ??? ?women2[p]=0; ?? ??? ?while(p3!=NULL) ?? ??? ?{ ?? ??? ??? ?if(strcmp(p3->college,stu[p])==0&&strcmp(p3->sex,ma)==0) ?? ??? ??? ?{ ?? ??? ??? ??? ?goal=getscore(p3->rank); ?? ??? ??? ??? ?man2[p]+=goal; ?? ??? ??? ?} ?? ??? ??? ?if(strcmp(p3->college,stu[p])==0&&strcmp(p3->sex,wo)==0) ?? ??? ??? ?{ ?? ??? ??? ??? ?goal=getscore(p3->rank); ?? ??? ??? ??? ? ?? ??? ??? ??? ?women2[p]+=goal; ?? ??? ??? ?} ?? ??? ??? ?p3=p3->next;?? ??? ?/*p3指向下一個結(jié)點*/ ?? ??? ?} ?? ??? ?tatal2[p]=man2[p]+women2[p]; ?? ??? ?printf("%s\t%d\t%d\t%d\t%d\n",stu[p],man2[p],women2[p],tatal2[p],pla[p]); ?? ?} ?? ?return; ?? ? } /*函數(shù)功能:查看各項目獲獎運動員*/ ?void getprize() ?{ ??? ?STU *p; ??? ?int i,j; ?? ? p=&head; ?? ? printf("-------------------------------------\n"); ?? ? printf("各項目前三名信息如下:\n") ; ?? ? printf("項目\t性別\t姓名\t學(xué)院\t成績\t名次\n"); ?? ? while(p!=NULL) ?? ? { ?? ? ?? ?if((p->rank)>=1&&(p->rank)<=3)?? ??? ?/*選取各項目排名前三的運動員*/ ?? ? ?? ?{ ?? ? ?? ??? ?printf("%s\t%s\t%s\t%s\t%.2f\t%d\n",p->sport,p->sex,p->name,p->college,p->grade,p->rank); ?? ? ?? ?} ?? ? ?? ?p=p->next; ?? ? }? ?? ? return; ?} ?/*函數(shù)功能:在鏈表中修改指定的項目信息*/ ?void modify() ?{ ??? ?int n,i; ??? ?char sport1[20],sex1[10],name1[10],college1[20]; ??? ?STU *p,*p1; ??? ?p=head.next;?? ??? ?/*p指向第一個結(jié)點*/ ??? ?printf("請輸入要修改位置的相關(guān)信息:\n"); ??? ?printf("項目 性別 姓名 學(xué)院\n");? ??? ?scanf("%s%s%s%s",&sport1,&sex1,&name1,&college1); ??? ?if(head.next==NULL) ??? ?{ ??? ??? ?printf("未創(chuàng)建項目鏈表!"); ?? ??? ? return;? ??? ?} ??? ?while(p!=NULL) ??? ?{ ??? ??? ?if(strcmp(p->sport,sport1)==0&&strcmp(p->sex,sex1)==0&&strcmp(p->name,name1)==0&&strcmp(p->college,college1)==0) ??? ??? ?{ ??? ??? ??? ?p1=p; ??? ??? ??? ?break; ??? ??? ?} ??? ??? ?p=p->next;?? ??? ?/*p指向下一個結(jié)點*/ ??? ?} ??? ?char sport2[10]="項目",sex2[10]="性別",name2[10]="姓名",college2[10]="學(xué)院",grade2[10]="成績",rank2[10]="名次"; ??? ?char xiugai[10]; ??? ?printf("請輸入要修改的信息:"); ??? ?scanf("%s",&xiugai);? ??? ?if(xiugai[1]==sport2[1]) ??? ?{ ??? ??? ?printf("請輸入修改后的內(nèi)容:") ; ??? ??? ?scanf("%s",p1->sport);? ??? ??? ?printf("修改成功!") ;? ??? ?}else if(xiugai[1]==sex2[1]) ??? ?{ ??? ??? ?printf("請輸入修改后的內(nèi)容:") ; ??? ??? ?scanf("%s",p1->sex);? ??? ??? ?printf("修改成功!") ;? ??? ?}else if(xiugai[1]==name2[1]) ??? ?{ ??? ??? ?printf("請輸入修改后的內(nèi)容:") ; ??? ??? ?scanf("%s",p1->name);? ??? ??? ?printf("修改成功!") ;? ??? ?}else if(xiugai[1]==college2[1]) ??? ?{ ??? ??? ?printf("請輸入修改后的內(nèi)容:") ; ??? ??? ?scanf("%s",p1->college);? ??? ??? ?printf("修改成功!") ;? ??? ?}else if(xiugai[1]==grade2[1]) ??? ?{ ??? ??? ?printf("請輸入修改后的內(nèi)容:") ; ??? ??? ?scanf("%f",p1->grade);? ??? ??? ?printf("修改成功!") ; ??? ?}else if(xiugai[1]==rank2[1]) ??? ?{ ??? ??? ?printf("請輸入修改后的內(nèi)容:") ; ??? ??? ?scanf("%d",&p1->rank);? ??? ??? ?printf("修改成功!") ; ??? ?} ??? ?return; }
具體實現(xiàn)如下:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++11中std::function與std::bind的用法實例
大家都知道C++11中增加了許多的新特性,下面這篇文章主要給大家介紹了關(guān)于C++11中std::function與std::bind的用法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05C++標(biāo)準(zhǔn)之(ravalue reference) 右值引用介紹
臨時對象的產(chǎn)生和拷貝所帶來的效率折損,一直是C++所為人詬病的問題,下面簡單地介紹一下Copy Elision、RVO,對此不感興趣的可以直接跳過2012-11-11