亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言實現(xiàn)運動會管理系統(tǒng)

 更新時間:2022年05月30日 12:32:55   作者:棲筠  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)運動會管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了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++基本算法思想之遞推算法思想

    C++基本算法思想之遞推算法思想

    遞推算法需要用戶知道答案和問題之間的邏輯關(guān)系。在許多數(shù)學(xué)問題中,都有明確的計算公式可以遵循,因此可以采用遞推算法來實現(xiàn)
    2013-10-10
  • C++ STL中的容器適配器實現(xiàn)

    C++ STL中的容器適配器實現(xiàn)

    這篇文章主要介紹了C++ STL中的容器適配器實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C++11中的原子量和內(nèi)存序詳解

    C++11中的原子量和內(nèi)存序詳解

    這篇文章主要給大家介紹了關(guān)于C++11中原子量和內(nèi)存序的相關(guān)資料,文中通過示例代碼介紹地方非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • C++ string字符串的修改與替換方法詳析

    C++ string字符串的修改與替換方法詳析

    這篇文章主要給大家介紹了關(guān)于C++ string字符串修改與替換方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C語言中字符的輸入輸出以及計算字符個數(shù)的方法詳解

    C語言中字符的輸入輸出以及計算字符個數(shù)的方法詳解

    這篇文章主要介紹了C語言中字符的輸入輸出以及計算字符個數(shù)的方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • C語言對于volatile與gcc優(yōu)化的探究

    C語言對于volatile與gcc優(yōu)化的探究

    這篇文章主要介紹了C語言對于volatile與gcc優(yōu)化的探究,volatile是一個特征修飾符(type specifier) volatile的作用是作為指令關(guān)鍵字,確保本條指令不會因編譯器的優(yōu)化而省略,且要求每次直接讀值。這是百度百科的介紹,那編譯器是具體是怎么優(yōu)化的呢
    2023-02-02
  • Qt QFile文件操作的具體使用

    Qt QFile文件操作的具體使用

    很多應(yīng)用程序都需要具備操作文件的能力,Qt 框架提供了 QFile 類專門用來操作文件。本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-11-11
  • C++11中std::function與std::bind的用法實例

    C++11中std::function與std::bind的用法實例

    大家都知道C++11中增加了許多的新特性,下面這篇文章主要給大家介紹了關(guān)于C++11中std::function與std::bind的用法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • C++類型轉(zhuǎn)換的深入總結(jié)

    C++類型轉(zhuǎn)換的深入總結(jié)

    這篇文章主要給大家介紹了關(guān)于C++類型轉(zhuǎn)換的深入總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++標(biāo)準(zhǔn)之(ravalue reference) 右值引用介紹

    C++標(biāo)準(zhǔn)之(ravalue reference) 右值引用介紹

    臨時對象的產(chǎn)生和拷貝所帶來的效率折損,一直是C++所為人詬病的問題,下面簡單地介紹一下Copy Elision、RVO,對此不感興趣的可以直接跳過
    2012-11-11

最新評論