c語言實訓(xùn)學(xué)生信息管理系統(tǒng)_第1頁
c語言實訓(xùn)學(xué)生信息管理系統(tǒng)_第2頁
c語言實訓(xùn)學(xué)生信息管理系統(tǒng)_第3頁
c語言實訓(xùn)學(xué)生信息管理系統(tǒng)_第4頁
c語言實訓(xùn)學(xué)生信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、#include#include#include#define N 8struct Studentchar num10;/學(xué)號 char name8;/姓名 char major10;/專業(yè)(computer,software,network) int classNo;/班級(1-2) int score3;/3門課的成績(高數(shù),離散,c語言);typedef struct Student STU;/-函數(shù)聲明-void input(STU *p);void save(STU *p,int n);void output(STU *p);void load(STU *p,int n);void

2、fetch();void Max();void sort_select();void sort_buble();void search();/-主函數(shù)開始-void main()int j,id; STU studentN,temN;/用于保存輸入的N名學(xué)生信息 while(1)printf(ttt學(xué)生信息管理系統(tǒng)tttnn); printf(1-輸入信息n); printf(2-文件存盤n); printf(3-打開文件輸出n); printf(4-隨機讀取n); printf(5-單科成績最高分的學(xué)生n); printf(6-選擇法對所有學(xué)生平均成績由低到高排序n); printf(7-起

3、泡法對班級學(xué)生平均成績由高到低排序n); printf(8-綜合查找班級分?jǐn)?shù)總分n); printf(其他-退出n); scanf(%d,&id); getchar(); switch(id)case 1:for(j=0;jN;j+)printf(%dn,j+1); input(student+j); /輸入信息 break; case 2: save(student,N); /文件存盤 break; case 3:load(tem,N); printf(學(xué)號 姓名 專業(yè) 班級 高數(shù) 離散 c語言 平均分 總分n); for(j=0;jN;j+)output(tem+j); break; /讀

4、取文件 case 4:fetch(); /隨機讀取 break; case 5:Max(); /單科成績最高分的學(xué)生 break; case 6:sort_select(); /選擇法對所有學(xué)生平均成績由低到高排序 break; case 7:sort_buble(); /起泡法對班級學(xué)生平均成績由高到低排序 break;case 8:search(); /綜合查找班級分?jǐn)?shù)總分 break;default:break; /其他鍵退出if(id8) break;/-輸入函數(shù)-void input(STU *p)int i;printf(n請輸入學(xué)號,回車結(jié)束:);scanf(%s,&p-num)

5、;getchar();printf(n請輸入姓名,回車結(jié)束:);gets(p-name);printf(n請輸入專業(yè),回車結(jié)束:);gets(p-major);printf(n請輸入班級,回車結(jié)束:);scanf(%d,&p-classNo);printf(n請輸入三科成績,每門成績以回車結(jié)束:n);for(i=0;iscorei);getchar();/-寫文件函數(shù)-void save(STU *p,int n)FILE *fp;int i;char filename20;printf(n請輸入保存的文件名:n);gets(filename);if(fp=fopen(filename,wb)

6、=NULL) /創(chuàng)建二進制文件printf(cannot open filen);return;for(i=0;inum,p-name,p-major,p-classNo,p-score0,p-score1,p-score2,(*p).score0+(*p).score1+(*p).score2)/3.0, (*p).score0+(*p).score1+(*p).score2);/-讀文件函數(shù)-void load(STU *p,int n)FILE *fp;char filename20;printf(n請輸入打開文件名:n);gets(filename);fp=fopen(filename

7、,rb); /打開二進制文件fread(p,sizeof(STU),n,fp); /從文件中一次讀n個結(jié)構(gòu)體量值fclose(fp);/-隨機讀取-void fetch()FILE *fp;STU tem;char filename20;int i; printf(n請輸入打開文件名:n);gets(filename);fp=fopen(filename,rb); /打開二進制文件 printf(請輸入要查找的學(xué)生的編號: );scanf(%d,&i);fseek(fp,i*sizeof(STU),0);fread(&tem,sizeof(STU),1,fp); /從文件中一次讀1個結(jié)構(gòu)體量值

8、printf(學(xué)號 姓名 專業(yè) 班級 高數(shù) 離散 c語言 平均分 總分n);output(&tem);fclose(fp);/-單科成績最高分的學(xué)生-void Max()int i,j;FILE *fp;STU temN,*max;char filename20;printf(n請輸入打開文件名:n);gets(filename);if(fp=fopen(filename,rb)=NULL)printf(cannot open file!n);for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp);printf(請輸入要查找的課程編號: );scanf(%d,&

9、j); switch(j)case 0: /輸出課程printf(n高數(shù)n);break;case 1:printf(n離散n);break;case 2:printf(nc語言n); break;default:break; max=&tem0;for(i=0;iscorejscorej,max-name);fclose(fp);/-選擇法對所有學(xué)生平均成績由低到高排序-void sort_select()int i,j;FILE *fp;STU temN,m;char filename20;printf(n請輸入打開文件名:n);gets(filename); fp=fopen(filen

10、ame,rb);for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp);for(i=0;iN-1;i+) /選擇法開始 for(j=i+1;j(temj.score0+temj.score1+temj.score2)m=temi; temi=temj; temj=m; /較小數(shù)放在前面 /選擇法結(jié)束printf(n所有學(xué)生按平均成績由低到高進行排序,其順序為:nn);printf(學(xué)號 姓名 專業(yè) 班級 高數(shù) 離散 c語言 平均分 總分n);for(i=0;iN;i+)output(&temi);fclose(fp);/-起泡法對班級學(xué)生平均成績由高到低排序-v

11、oid sort_buble()FILE *fp;STU stu_class_aveN,m,temN;int count=0;int i,j,n;char filename20;printf(n請輸入打開文件名:n);gets(filename);if(fp=fopen(filename,rb)=NULL)printf(cannot open file!n);printf(請輸入要查詢的班級(1or2): n);scanf(%d,&n); for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp);for(i=0;iN;i+)if(temi.classNo=n)st

12、u_class_avecount=temi;count+; /實際元素數(shù)for(i=0;icount-1;i+) /起泡法開始for(j=0;jcount-1-i;j+)if(stu_class_avej.score0+stu_class_avej.score1+stu_class_avej.score2)(stu_class_avej+1.score0+stu_class_avej+1.score1+stu_class_avej+1.score2)m=stu_class_avej+1;stu_class_avej+1=stu_class_avej;stu_class_avej=m; /較大數(shù)

13、放在前面 /起泡法結(jié)束 printf(n班級學(xué)生按平均成績由高到低進行排序,其順序為:nn);printf(學(xué)號 姓名 專業(yè) 班級 高數(shù) 離散 c語言 平均分 總分n); for(i=0;icount;i+)output(&stu_class_avei);fclose(fp);/-綜合查找班級分?jǐn)?shù)總分-void search()FILE *fp;int i,j;int count=0;int sumN;intk; /定義要查詢的總分STU temN; char filename20;printf(n請輸入打開文件名:n);gets(filename); fp=fopen(filename,rb);for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp); for(i=0;iN;i+)sumi=temi.score0+temi.score1+temi.score2;printf(n請輸入要查找的班級,總分下限:nn);scanf(%d %d,&j,&k); for(i=0;i=k)

溫馨提示

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

最新文檔

評論

0/150

提交評論