學(xué)生成績(jī)管理系統(tǒng)源程序_第1頁(yè)
學(xué)生成績(jī)管理系統(tǒng)源程序_第2頁(yè)
學(xué)生成績(jī)管理系統(tǒng)源程序_第3頁(yè)
學(xué)生成績(jī)管理系統(tǒng)源程序_第4頁(yè)
學(xué)生成績(jī)管理系統(tǒng)源程序_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include #include #include #define PF printf #include time.h #define LEN sizeof(struct St1) /定義結(jié)構(gòu)體 / typedef struct St1 char IDNumber16;/* 學(xué)號(hào) */ char FamilyName16; /* 姓 */ char GivenName16; /* 名 */ int sex; /* 性別( 0代表女,1 代表 男)*/ int BirthYear; /* 出生年 */ int BirthMonth; /* 出生月 */ int BirthDay; /* 出生日

2、 */ float score0,score1,score2,score3; /* 成績(jī) */ float sum; /* 總分 */ float average; /* 平均分 */ struct St1 *next; StudentNode; int time() struct tm* ptm; long ts; int y,m,d,h,n,s; ts = time(NULL); ptm = localtime( y = ptm- tm_year+1900; /年 m = ptm- tm_mon+1; /月 d = ptm- tm_mday; /日 h = ptm- tm_hour; /時(shí)

3、 n = ptm- tm_min; /分 s = ptm- tm_sec; /秒 return(y); c 為總分 StudentNode *head=NULL; / 全局指針 int n,i=0,c=0,d=0,j=0;/ 全局變量 j 在函數(shù)中作數(shù)組下標(biāo)或循環(huán)變量 數(shù)組中元素個(gè)數(shù) d 為平均分?jǐn)?shù)組元素個(gè)數(shù) float English=0.0,Math=0.0,C=0.0,Mazhe=0.0,Sum100,Avr100;/全局變量 /自定義函數(shù) / void show_menu(); void menu(); void creat_stu(); void input_stu(); void

4、print_stu(); void search_NO(); void search_name(); void arrage_stu(); void del_stu(); void revise_stu(); void save(); void jisuan(); /顯示菜單 /執(zhí)行菜單 /建立鏈表 /輸入學(xué)生信息 /顯示鏈表中所有記錄信息 /以學(xué)號(hào)方式查詢信息 /以姓方式查詢信息 /學(xué)生成績(jī)排名 /刪除學(xué)生信息 /修改學(xué)生信息 /保存信息 /計(jì)算所有學(xué)生的以及各科總分和均分 void insert_stu(); /插入學(xué)生記錄到表中 void search_clas(); /按班級(jí)查詢顯示學(xué)

5、生信息 void sort(float x,int n);/ 對(duì)學(xué)生按總分進(jìn)行從高到底排序 void search_allscore(); /按學(xué)生總成績(jī)查詢,用來輸出排名信息 void jieduan();/用來輸出按平均分階段輸出信息,其中用了按平均分輸出信息的程序。 void Loadf();/ 從文件中讀出所有學(xué)生記錄 void main() printf( *); 歡迎來到學(xué)生管理系統(tǒng) !); printf(n); printf( printf(n); printf(n); printf( 制作人:陳志 52101610); creat_stu(); menu(); 建鏈表 /* *

6、 void creat_stu() FILE *fp; long size; StudentNode *p1,*p2; head=(StudentNode *)malloc(sizeof(StudentNode); head-next=NULL; if(fp=fopen(fname.txt,r)=NULL) printf( 這是新表 n); return; fseek(fp,0L,2); size=ftell(fp); if(!size) printf( 這是空表 n); return; / 開始創(chuàng)建鏈表 rewind(fp);/移動(dòng)到文件首 p2=head-next; / 找到當(dāng)前位置 wh

7、ile(!feof(fp) p1=(StudentNode *)malloc(sizeof(StudentNode); fscanf(fp,%s %s %s %d %d %d %d %f %f %f %f %f %fn,p1-IDNumber,p1-FamilyName,p1 -GivenName, p1-next=NULL; /創(chuàng)建節(jié)點(diǎn)完 if(head-next=NULL) head-next=p1; else p2-next=p1; p2=p1; n+; p2-next=NULL; fclose(fp); /* * 執(zhí)行菜 * void menu() int c; show_menu()

8、; while(1) scanf(%d, switch(c) getchar(); case 1:input_stu();break; case 2:del_stu(); break; case 3:print_stu();break; case 4:search_name(); break; case 5:save();break; case 6:Loadf();break; case 7:jisuan(); break; case 8:search_clas(); break; case 9:insert_stu() ; break; case 10:search_NO(); break;

9、 case 11:arrage_stu();break; case 12:revise_stu(); break; case 13:jieduan();break; case 0:exit(0); / 執(zhí)行菜單選項(xiàng) show_menu(); /* 顯 示 +k- 菜 單 * void show_menu() PF(n); PF(n* 菜 單 *、| PF(tt* 1. 輸入學(xué)生信息 *n); PF(tt* 2. 刪除學(xué)生信息 *n); PF(tt* 3. 顯示鏈表中所有記錄信息 *n); PF(tt* 4. 按照學(xué)生的姓查找記錄 *n); PF(tt* 5. 將鏈表中記錄保存到文件中 *n);

10、 PF(tt* 6. 從文件中讀入記錄 *n); PF(tt* 7. 計(jì)算所有學(xué)生以及各科總分和均分 *n); PF(tt* 8. 按班級(jí)查詢顯示學(xué)生信息 *n); PF(tt* 9. 插入記錄到表中 *n); PF(tt* 10 按學(xué)號(hào)查詢學(xué)生信息 *n); PF(tt* 11 學(xué)生成績(jī)排名 *n); PF(tt* 12 修改學(xué)生信息 *n); PF(tt* 13 按平均分階段輸出學(xué)生信息 *n); PF(tt* 0. 退出 *n); PF( * *n); PF(n 請(qǐng)選擇 n); /* * 輸入學(xué) 生信息 * void input_stu()/ 輸入學(xué)生信息 float a,b; /a,b

11、 分別用來存放該生的各科總成績(jī)和平均成績(jī) int y,j; y=time(); n=0; StudentNode *p1=NULL,*p2=NULL; p1=( StudentNode *)malloc(sizeof(StudentNode); PF(n * * *n); 輸入 /輸入學(xué)生信息 生信息 /學(xué)號(hào) /姓 /名 PF(tt 輸入學(xué)生學(xué)號(hào) :t); scanf(%s,p1-IDNumber); PF(tt 輸入學(xué)生的姓 :t); scanf(%s,p1-FamilyName); PF(tt 輸入學(xué)生的名 :t); scanf(%s,p1-GivenName); PF(tt 輸入學(xué)生性別

12、 (0 代表女, 1 代表男 ):t); scanf(%d,/ 性別 for(j=0;j+) 正常 PF(tt 輸入學(xué)生出生年 :t); scanf(%d, / 判斷輸入年份是否合理, 假設(shè)人年齡在 0-100 歲之間為 /出生年 if(y-p1-BirthYear)100|(p1-BirthYeary) PF(tt 年份輸入錯(cuò)誤不符合要求 ,請(qǐng)重新輸入出生年份: t); else break; for(j=0;j+)/ 判斷輸入月份是否合理 PF(tt 輸入學(xué)生出生月 :t); scanf(%d,/ 出生月 if(p1-BirthMonthBirthMonth12) PF(tt 月份輸入錯(cuò)誤

13、不符合要求 ,請(qǐng)重新輸入出生月份: t); else break; for(j=0;j+) / 判斷輸入出生日是否合理 PF(tt 輸入學(xué)生出生日 :t); scanf(%d,/ 出生日 if(p1-BirthDayBirthDay31) PF(tt 出生日輸入錯(cuò)誤不符合要求 ,請(qǐng)重新輸入出生日: t); else break; PF(tt 輸入學(xué)生的外語(yǔ)成績(jī) :t); scanf(%f,/ 各科成績(jī) PF(tt 輸入學(xué)生的數(shù)學(xué)成績(jī) :t); scanf(%f, PF(tt 輸入學(xué)生的 C 語(yǔ)言成績(jī) :t); scanf(%f, PF(tt 輸入學(xué)生的馬哲成績(jī) :t); scanf(%f, a

14、=p1-score0+p1-score1+p1-score2+p1-score3; / 求該生的各科總成績(jī) b=(a/4); p1-sum=a; p1-average=b; /求該生的平均成績(jī) English=English+p1-score0; Math=Math+p1-score1; C=C+p1-score2; Mazhe=Mazhe+p1-score3; Sumc+=a; 便按成績(jī)排序 Avrd+=b; 放 /求學(xué)生英語(yǔ)總分 /求學(xué)生數(shù)學(xué)總分 /求學(xué)生 C 語(yǔ)言總分 /求學(xué)生馬哲總分 / 將各學(xué)生的總成績(jī)輸入到一個(gè)全局?jǐn)?shù)組當(dāng)中,方 /將個(gè)學(xué)生的平均分輸入到一個(gè)全局?jǐn)?shù)組中存 n+; if

15、(head-next=NULL) head=(StudentNode *)malloc(LEN); head-next=p1; else for(p2=head;p2-next!=NULL;p2=p2-next); p2-next=p1; p1-next=NULL; save();保存到文件 /* * /學(xué)生信息瀏覽 void print_stu() StudentNode *p=NULL; if(head=NULL)/判斷鏈表是否為空 PF( 文檔中無記錄! n); return; for(p=head-next;p!=NULL;p=p-next) PF( * *n); PF(t 學(xué)生學(xué)號(hào)

16、:t%sn,p-IDNumber); PF(t 學(xué)生姓 :t%sn,p-FamilyName); PF(t 學(xué)生名 :t%sn,p-GivenName); PF(t 學(xué)生性別 :t%dn,p-sex); PF(t 學(xué)生出生年 :t%dn,p-BirthYear); PF(t 學(xué)生出生月 :t%dn,p-BirthMonth); PF(t 學(xué)生出生日 :t%dn,p-BirthDay); PF(t 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(t 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(t 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(t 學(xué)生馬哲成績(jī) :t%

17、fn,p-score3); PF(t 學(xué)生總成績(jī) :t%fn,p-sum); PF(t 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); /輸出信息 PF(t 各個(gè)學(xué)生總分分別為: ); for(n=0;nc;n+) PF(%ft,Sumn); /*找到最后的結(jié)點(diǎn),然后 將增加的結(jié)點(diǎn)掛在它上面 */ 顯示鏈表中所有記錄學(xué)生信息 /讀出信息 查看鏈表中所有記錄學(xué)生信息 *按照學(xué)生學(xué)號(hào)信息查找 PF(n); PF(t 各個(gè)學(xué)生平均分分別為: ); for(n=0;nnext;p!=NULL;p=p-next)/ 讀出信息 if(!strcmp(p-FamilyName, Family

18、Name) PF(tt 您查找的學(xué)生有: n); PF(n); PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(tt 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 :t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生月 :t%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score

19、1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(tt 學(xué)生馬哲成績(jī) :t%fn,p-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-sum); PF(tt 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); i=1; / 輸出信息 if(i!=1) PF( 無該姓氏學(xué)生信息!請(qǐng)查證: ); /沒找到信息時(shí)的處理 * void search_NO()/ 學(xué)生學(xué)號(hào)信息查找 int i=0; StudentNode *p=NULL; char IDNumber20; if(head=NULL)/ 判斷鏈表是否為空 PF( 文檔中無記錄! n);

20、return; PF( 請(qǐng)輸入學(xué)生學(xué)號(hào) :); scanf(%s,IDNumber); for(p=head-next;p!=NULL;p=p-next)/ 讀出信息 if(!strcmp(p-IDNumber,IDNumber) PF(tt 您查找的學(xué)生是 :n); PF(n); PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(tt 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 :t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生

21、月 :t%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(tt 學(xué)生馬哲成績(jī) :t%fn,p-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-sum); PF(tt 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); i=1; / 輸出信息 /沒找到信息時(shí)的處理 if(!i) PF( 無該生信息!請(qǐng)查證: ); *按照學(xué)生班級(jí)統(tǒng)計(jì)并輸

22、出總成績(jī) * void search_clas()/ 學(xué)生學(xué)號(hào)信息查找 int i=0,j=0; StudentNode *p=NULL; char a6,b6; if(head=NULL)/ 判斷鏈表是否為空 PF( 文檔中無記錄! n); return; PF( 請(qǐng)輸入學(xué)生班級(jí) :); scanf(%s,a); for(p=head-next;p!=NULL;p=p-next)/ 讀出信息 for(j=0;jIDNumberj; if(a0=b0 PF(n); PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(t

23、t 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 :t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生月 :t%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(tt 學(xué)生馬哲成績(jī) :t%fn,p-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-sum); PF(t

24、t 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); i=1; / 輸出信息 /沒找到信息時(shí)的處理 if(!i) PF( 無該班級(jí)信息!請(qǐng)查證: ); 改學(xué)生信息 /驗(yàn)證信息是否正確 /* 修 * void revise_stu() int y,j,k=0,m=0; int i=0; float a,b; y=time(); StudentNode *p=NULL; if(head=NULL)/ 判斷鏈表是否為空 PF( 文檔中無記錄! n); return; char IDNumber20; PF( 請(qǐng)輸入學(xué)生的學(xué)號(hào) :t); scanf(%s,IDNumber); for(p

25、=head-next;p!=NULL;p=p-next) if(!strcmp(p-IDNumber,IDNumber) PF(tt 你要修改的學(xué)生是 :n); PF(n); PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(tt 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 (0代表女, 1代表男 ):t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生月 :t%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,

26、p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(tt 學(xué)生馬哲成績(jī) :t%fn,p-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-sum); PF(tt 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); /輸出要修改信息 i=1; for(k=0;ksum=Sumk) break; for(m=0;maverage=Avrm) break; English=English-p-score0; Math

27、=Math-p-score1; C=C-p-score2; Mazhe=Mazhe-p-score3; /記錄被修改學(xué)生總分在數(shù)組中的位子 /記錄被修改學(xué)生平均分在數(shù)組中的位子 /修改學(xué)生英語(yǔ)總分 /修改學(xué)生數(shù)學(xué)總分 /修改學(xué)生 C 語(yǔ)言總分 /修改學(xué)生馬哲總分 PF(tt 您修改學(xué)號(hào)為 %s 的學(xué)生: n,IDNumber); PF(n); strcpy(p-IDNumber,IDNumber); PF(tt 輸入修改學(xué)生姓 :t); scanf(%s,p-FamilyName); PF(tt 輸入修改學(xué)生名 :t); scanf(%s,p-GivenName); PF(tt 輸入修改學(xué)生性

28、別 (0 代表女, 1 代表男 ):t); scanf(%d, 0-100 for(j=0;j+) /判斷輸入年份是否合理, 假設(shè)人年齡在 歲之間為正常 PF(tt 輸入學(xué)生出生年 :t); scanf(%d,/出生年 if(y-p-BirthYear)100|(p-BirthYeary) ,請(qǐng)重新輸入出生年份: t); PF(tt 年份輸入錯(cuò)誤不符合要求 else break; for(j=0;j+)/ 判斷輸入月份是否合理 PF(tt 輸入學(xué)生出生月 :t); scanf(%d,/ 出生月 if(p-BirthMonthBirthMonth12) PF(tt 月份輸入錯(cuò)誤不符合要求 ,請(qǐng)重

29、新輸入出生月份: t); else break; for(j=0;j+) / 判斷輸入出生日是否合理 PF(tt 輸入學(xué)生出生日 :t); scanf(%d,/出生日 if(p-BirthDayBirthDay31) PF(tt 出生日輸入錯(cuò)誤不符合要求 ,請(qǐng)重新輸入出生日: t); else break; PF(tt 輸入學(xué)生的外語(yǔ)成績(jī) :t); scanf(%f,/修改的各科成績(jī) PF(tt 輸入學(xué)生的數(shù)學(xué)成績(jī) :t); scanf(%f, PF(tt 輸入學(xué)生的 C 語(yǔ)言成績(jī) :t); scanf(%f, /求該生的平均成績(jī) /將新的總分修改原總分 /將新的平均分修改原平均分 /修改學(xué)生

30、英語(yǔ)總分 /修改學(xué)生數(shù)學(xué)總分 /修改學(xué)生 C 語(yǔ)言總分 /修改學(xué)生馬哲總分 PF(tt 輸入學(xué)生的馬哲成績(jī) :t); scanf(%f, a=p-score0+p-score1+p-score2+p-score3; / 求該生的各科總成績(jī) b=(a/4); p-sum=a; p-average=b; Sumk=p-sum; Avrm=p-average; English=English+p-score0; Math=Math+p-score1; C=C+p-score2; Mazhe=Mazhe+p-score3; PF(n); save(); if(!i) PF( 無該生信息!請(qǐng)查證: );

31、 /輸入修改信息 /* 沒找到信息時(shí)的處理 */ /* * void del_stu() int i=0; StudentNode *p=NULL; if(head=NULL) PF( 文檔中無記錄! n); return; else char IDNumber20; PF( 請(qǐng)輸入學(xué)生的學(xué)號(hào) :t); scanf(%s,IDNumber); for(p=head;p!=NULL;p=p-next) 刪除學(xué)生信息 /判斷鏈表是否為空 if(!strcmp(p-next-IDNumber,IDNumber) / 驗(yàn)證信息是否正確 PF(%sn,IDNumber); PF(tt 您要?jiǎng)h除的學(xué)生是:

32、 n); PF(n); PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-next-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-next-FamilyName); PF(tt 學(xué)生名 :t%sn,p-next-GivenName); PF(tt 學(xué)生性別 :t%dn,p-next-sex); PF(tt 學(xué)生出生年 :t%dn,p-next-BirthYear); PF(tt 學(xué)生出生月 :t%dn,p-next-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-next-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-next-score0); PF(tt

33、學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-next-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-next-score2); PF(tt 學(xué)生馬哲成績(jī) :t%fn,p-next-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-next-sum); PF(tt 學(xué)生平均成績(jī) :t%fn,p-next-average); /修改學(xué)生英語(yǔ)總分 /修改學(xué)生數(shù)學(xué)總分 / 修改學(xué)生 C 語(yǔ)言總 /修改學(xué)生馬哲總分 PF(n);/輸出要?jiǎng)h除的信息 English=English-(p-next-score0); Math=Math-(p-score1); C=C-(p-next-score

34、2); Mazhe=Mazhe-(p-next-score3); for(n=0;nnext-sum=Sumn) for(j=n;jc;j+) Sumj=Sumj+1; break; c-;/數(shù)據(jù)總數(shù)減一 for(n=0;nnext-average=Avrn) for(j=n;jnext-next) printf( 第一個(gè) n);p-next=p-next-next; else p-next=NULL; n-; save(); return; /if 的括號(hào) / 大 for 循環(huán)的 /沒找到信息時(shí)的處理 if(!i) PF( 無該生信息!請(qǐng)查證: ); return; /else 的括號(hào) sa

35、ve(); /* * 將鏈表中記錄保存到 文件中 * void save() printf( H* 結(jié)束 * StudentNode *p=NULL; FILE *fp; char *filename=fname.txt; if(fp=fopen(fname.txt,w)=NULL) printf(n 打不開文件 !n); /出錯(cuò)檢測(cè) return; if(head-next=NULL) printf(n 信息為空 !n); return; else p=head-next; while(p!=NULL) fprintf(fp,%s %s %s %d %d %d %d %f %f %f %f

36、%f %f n,p-IDNumber,p-FamilyName,p-GivenName, p-sex,p-BirthYear,p-BirthMonth,p-BirthDay,p-score0,p-score1,p-score2,p-score3,p-su m,p-average); /存入文件 p=p-next; printf( 保存完畢 !n); fclose(fp); ,可評(píng)估學(xué)校教學(xué)質(zhì)量 /計(jì)算所有學(xué)生以及各科總分和均分 void jisuan() float sum=0,avr; int j; for(j=0;jnext;p!=NULL;p=p-next) CL /* /讀出信息 讀出

37、鏈表中所有記錄學(xué)生信息 *n); PF(t 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(t 學(xué)生姓 :t%sn,p-FamilyName); PF(t 學(xué)生名 :t%sn,p-GivenName); PF(t 學(xué)生性別 :t%dn,p-sex); PF(t 學(xué)生出生年 :t%dn,p-BirthYear); PF(t 學(xué)生出生月 :t%dn,p-BirthMonth); PF(t 學(xué)生出生日 :t%dn,p-BirthDay); PF(t 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(t 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(t 學(xué)生 C 語(yǔ)言成績(jī) :t%fn

38、,p-score2); PF(t 學(xué)生馬哲成績(jī) :t%fn,p-score3); PF(t 學(xué)生總成績(jī) :t%fn,p-sum); PF(t 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); / 輸出信息 PF(t 各個(gè)學(xué)生總分分別為: ); for(n=0;nc;n+) PF(%ft,Sumn); PF(n); PF(t 各個(gè)學(xué)生平均分分別為: ); for(n=0;nIDNumber); PF(tt 輸入插入學(xué)生的姓 :t); scanf(%s,p1-FamilyName); PF(tt 輸入插入學(xué)生的名 :t); scanf(%s,p1-GivenName); 插入 /輸入

39、學(xué)生信息 生信息 /學(xué)號(hào) /姓 /名 /性別 PF(tt 輸入插入學(xué)生性別 (0 代表女 ,1 代表男 ):t); scanf(%d, 0-100 歲之間為 for(j=0;j+)/ 判斷輸入年份是否合理, 假設(shè)人年齡在 正常 PF(tt 輸入插入學(xué)生出生年 :t); scanf(%d, /出生年 if(y-p1-BirthYear)100|(p1-BirthYeary) PF(tt 年份輸入錯(cuò)誤不符合要求 ,請(qǐng)重新輸入出生年份: t); else break; for(j=0;j+)/ 判斷輸入月份是否合理 PF(tt 輸入插入學(xué)生出生月 :t); scanf(%d,/ 出生月 if(p1-

40、BirthMonthBirthMonth12) PF(tt 月份輸入錯(cuò)誤不符合要求 ,請(qǐng)重新輸入出生月份: t); else break; for(j=0;j+) / 判斷輸入出生日是否合理 PF(tt 輸入插入學(xué)生出生日 :t); scanf(%d,/ 出生日 if(p1-BirthDayBirthDay31) PF(tt 出生日輸入錯(cuò)誤不符合要求 ,請(qǐng)重新輸入出生日: t); else break; PF(tt 輸入插入學(xué)生的外語(yǔ)成績(jī) :t); scanf(%f,/ 各科成績(jī) PF(tt 輸入插入學(xué)生的數(shù)學(xué)成績(jī) :t); scanf(%f, PF(tt 輸入插入學(xué)生的 C 語(yǔ)言成績(jī) :t)

41、; scanf(%f, PF(tt 輸入插入學(xué)生的馬哲成績(jī) :t); scanf(%f, a=p1-score0+p1-score1+p1-score2+p1-score3; / 求該生的各科總成績(jī) b=(a/4); /求該生的平均成績(jī) p1-sum=a; p1-average=b; English=English+p1-score0; /求學(xué)生英語(yǔ)總分 Math=Math+p1-score1; /求學(xué)生數(shù)學(xué)總分 C=C+p1-score2; /求學(xué)生 C 語(yǔ)言總分 Mazhe=Mazhe+p1-score3; /求學(xué)生馬哲總分 Sumc+=a; /將各學(xué)生的總成績(jī)輸入到一個(gè)全局?jǐn)?shù)組當(dāng)中 ,方

42、便 按成績(jī)排序 Avrd+=b; /將各學(xué)生的平均分輸入到一個(gè)全局?jǐn)?shù)組當(dāng)中 ,方便 按平均成績(jī)階段輸出 n+; if(head-next=NULL) head=(StudentNode *)malloc(LEN); head-next=p1; else for(p2=head;p2-next!=NULL;p2=p2-next);/* 找到最后的結(jié)點(diǎn),然后 將增加的結(jié)點(diǎn)掛在它上面 */ p2-next=p1; p1-next=NULL; save();保存到文件 /* * 學(xué) 生 成績(jī) 排名 及基本 數(shù)據(jù)的 統(tǒng)計(jì) 計(jì)算 * void sort(float x,int n)/數(shù)組排序函數(shù) int

43、i,j,k; float t; for(i=0;in-1;i+) k=i; for(j=i+1;jxk) k=j; if(k!=i) t=xi;xi=xk;xk=t; void search_allscore()/按學(xué)生總分查找,用來輸出排名。 int i=0,j=0; StudentNode *p=NULL; if(head=NULL)/判斷鏈表是否為空 PF( 文檔中無記錄! n); return; for(j=0;jnext;p!=NULL;p=p-next)/讀出信息 if(p-sum=Sumj) PF(tt 第 %d 名: n,j+1); PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDN

44、umber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(tt 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 :t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生月 :t%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(tt 學(xué)生馬哲成績(jī) :t%f

45、n,p-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-sum); PF(tt 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); /學(xué)生成績(jī)排名函數(shù) / void arrage_stu() sort(Avr,d); sort(Sum,c); search_allscore(); void jieduan()/按平均分階段輸出學(xué)生信息 ,其中使用了按平均分查找的程序 int A=0,B=0,C=0,D=0,E=0; int i=0,j=0; for(i=0;i=90) A+; if(Avri=80) if(Avri60) E+; StudentNode *p=NULL;

46、if(head=NULL)/ 判斷鏈表是否為空 PF( 文檔中無記錄! n); return; PF(tt平均分90分以上的學(xué)生有:%d個(gè)”,A); PF(n); for(j=0;jnext;p!=NULL;p=p-next)/讀出信息 if(p-average=Avrj) PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(tt 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 :t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生月 :t

47、%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); PF(tt 學(xué)生馬哲成績(jī) :t%fn,p-score3); PF(tt 學(xué)生總成績(jī) :t%fn,p-sum); PF(tt 學(xué)生平均成績(jī) :t%fn,p-average); PF(n); PF(n); PF(tt 平均分 80-90 分的學(xué)生有: %d 個(gè) ,B); PF(n); for(j=A;jnext;p!

48、=NULL;p=p-next)/讀出信息 if(p-average=Avrj) PF(tt 學(xué)生學(xué)號(hào) :t%sn,p-IDNumber); PF(tt 學(xué)生姓 :t%sn,p-FamilyName); PF(tt 學(xué)生名 :t%sn,p-GivenName); PF(tt 學(xué)生性別 :t%dn,p-sex); PF(tt 學(xué)生出生年 :t%dn,p-BirthYear); PF(tt 學(xué)生出生月 :t%dn,p-BirthMonth); PF(tt 學(xué)生出生日 :t%dn,p-BirthDay); PF(tt 學(xué)生英語(yǔ)成績(jī) :t%fn,p-score0); PF(tt 學(xué)生數(shù)學(xué)成績(jī) :t%fn,p-score1); PF(tt 學(xué)生 C 語(yǔ)言成績(jī) :t%fn,p-score2); P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論