C語(yǔ)言實(shí)驗(yàn)報(bào)告.docx

上傳人:小** 文檔編號(hào):16746100 上傳時(shí)間:2020-10-23 格式:DOCX 頁(yè)數(shù):26 大?。?22.75KB
收藏 版權(quán)申訴 舉報(bào) 下載
C語(yǔ)言實(shí)驗(yàn)報(bào)告.docx_第1頁(yè)
第1頁(yè) / 共26頁(yè)
C語(yǔ)言實(shí)驗(yàn)報(bào)告.docx_第2頁(yè)
第2頁(yè) / 共26頁(yè)
C語(yǔ)言實(shí)驗(yàn)報(bào)告.docx_第3頁(yè)
第3頁(yè) / 共26頁(yè)

下載文檔到電腦,查找使用更方便

5 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《C語(yǔ)言實(shí)驗(yàn)報(bào)告.docx》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《C語(yǔ)言實(shí)驗(yàn)報(bào)告.docx(26頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 《C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)1》報(bào)告 設(shè) 計(jì) 題 目: 基于數(shù)組的學(xué)生信息管理系統(tǒng) 學(xué) 院 名 稱(chēng): 信息科學(xué)技術(shù)學(xué)院 專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí):

2、 姓 名: 學(xué) 號(hào) 指 導(dǎo) 教 師: 提 交 日 期: 2014年12月22日 一、實(shí)驗(yàn)內(nèi)容 編寫(xiě)并調(diào)試程序,實(shí)現(xiàn)學(xué)校各專(zhuān)業(yè)班級(jí)學(xué)生信息的管理。10個(gè)學(xué)生的信息存儲(chǔ)在文件studentInit.dat中。在頭文件student.h中定義學(xué)生信息的結(jié)構(gòu)體類(lèi)型,包括:學(xué)號(hào)、姓名、專(zhuān)業(yè)、班級(jí)、3門(mén)成績(jī);和符號(hào)常量N(學(xué)生數(shù))。(同一班級(jí)的學(xué)生可以屬于不同的專(zhuān)業(yè),同一專(zhuān)業(yè)的學(xué)生可以屬于不同的班級(jí)) #define N 10 struct Student{ c

3、har num[15];//學(xué)號(hào) char name[15];//姓名 char major[10];//專(zhuān)業(yè)(computer,software,network) int classNo;//班級(jí)(1-2) int score[3];//3門(mén)課的成績(jī)(0-2) }; typedef struct Student STU; 二、實(shí)驗(yàn)要求 (1) main函數(shù):以菜單形式將各項(xiàng)功能提供給用戶(hù),根據(jù)用戶(hù)的選擇,調(diào)用相應(yīng)的函數(shù)。 STU student[N]; //保存輸入的N名學(xué)生信息 (2) 定義函數(shù)voi

4、d Input(STU *p, int n):從文件sutdentInit中輸入n個(gè)學(xué)生的信息。 (3) 定義函數(shù)void Output(STU *p):將p所指的某個(gè)學(xué)生信息表格化屏幕輸出。 (4) 定義函數(shù)STU Fetch(int studentIndex):從文件中隨機(jī)讀取第studentIndex個(gè)(0<= studentIndex <=N-1)學(xué)生的信息。 (5) 定義函數(shù)void Search(STU *p, int classNo, char s, int scoreSum);:實(shí)現(xiàn)班級(jí)和成績(jī)的綜合查找(如1班,總分>240的同學(xué))。 (6) 定義函數(shù)i

5、nt Max(STU *p, int scoreIndex):求所有學(xué)生、下標(biāo)為scoreIndex的課程分?jǐn)?shù)最高的學(xué)生序號(hào)(在數(shù)組中的下標(biāo)),學(xué)生序號(hào)作為返回值。 (7) 定義函數(shù)void Sort_select(STU *p): 對(duì)所有學(xué)生,按平均成績(jī)由低到高進(jìn)行簡(jiǎn)單選擇排序。 (8) 定義函數(shù)void Sort_buble(STU *p, int n); 對(duì)某個(gè)班級(jí)的學(xué)生,按平均成績(jī)由高到低進(jìn)行起泡排序。并調(diào)用Output輸出。 定義局部變量: STU stu_class_ave[N]; //按平均成績(jī)排序后的某個(gè)班級(jí)的學(xué)生信息; int count; //實(shí)際元素個(gè)

6、數(shù) (9) 定義函數(shù)void Sort_insert(STU *p, int n, char *major):對(duì)某個(gè)專(zhuān)業(yè)的學(xué)生,按某門(mén)課程成績(jī)由低到高進(jìn)行直接插入排序。并調(diào)用Output輸出。 定義局部變量: STU stu_class_ subject [N]; //按某門(mén)課程成績(jī)排序后的某個(gè)專(zhuān)業(yè)的學(xué)生信息; int count; //實(shí)際元素個(gè)數(shù) (10) 定義函數(shù)void Save(STU *p,int n) :將學(xué)生信息存入文件。 四、程序清單(關(guān)鍵語(yǔ)句和變量加注釋?zhuān)? 1.頭文件,類(lèi)型定義,函數(shù)聲明 #include

7、 #include #include #define N 10 struct Student{ char num[15]; char name[15]; char major[10]; int classNo; int score[3]; }; typedef struct Student STU; void Input(STU * p,int n);//從文件sutdentInit中輸入n個(gè)學(xué)生的信息 void Output(STU * p);//將p所指的某個(gè)學(xué)生信息表格化屏幕輸出 STU Fetch(int

8、studentIndex);//從文件中隨機(jī)讀取第studentIndex個(gè)(0<= studentIndex <=N-1)學(xué)生的信息 void Search(STU * p,int classNo,char s,int scoresum);//實(shí)現(xiàn)班級(jí)和成績(jī)的綜合查找(如1班,總分>240的同學(xué)) int Max(STU * p,int scoreIndex);//求所有學(xué)生、下標(biāo)為scoreIndex的課程分?jǐn)?shù)最高的學(xué)生序號(hào)(在數(shù)組中的下標(biāo)),學(xué)生序號(hào)作為返回值 void Sort_select(STU * p);//對(duì)所有學(xué)生,按平均成績(jī)由低到高進(jìn)行簡(jiǎn)單選擇排序 void Sor

9、t_buble(STU * p,int n);//對(duì)某個(gè)班級(jí)的學(xué)生,按平均成績(jī)由高到低進(jìn)行起泡排序 void Sort_insert(STU * p,int n,char * major);//對(duì)某個(gè)專(zhuān)業(yè)的學(xué)生,按某門(mén)課程成績(jī)由低到高進(jìn)行直接插入排序 void Save(STU * p,int n);//將學(xué)生信息存入文件 2.主函數(shù) #include "student.h" void main() { int i,n,id,num,m,sub,corse;//n,第幾個(gè)結(jié)構(gòu)體;id,菜單序號(hào);num,班級(jí)號(hào);sub,學(xué)生下標(biāo);corse,課程下標(biāo) char maj

10、orname;//專(zhuān)業(yè)名稱(chēng) STU students[N]; STU tem; while(1){ printf("\n請(qǐng)輸入功能編號(hào),運(yùn)行相應(yīng)功能\n"); printf("\n1.您將從文件中讀取10個(gè)人的信\n"); printf("\n2.您將從文件中隨機(jī)讀取第n(0<=n<=9)個(gè)學(xué)生的信 息\n") printf("\n3.您將根據(jù)某一班級(jí)某一專(zhuān)業(yè)總分超過(guò)多少進(jìn)行查 找\n"); printf("\n4.您將求某一課程分?jǐn)?shù)最高的學(xué)生序號(hào)的下標(biāo)\n"); printf("\n5.您將對(duì)平均成績(jī)由低到高進(jìn)行簡(jiǎn)單選擇排序法\n ");

11、 printf("\n6.您將對(duì)某一個(gè)班的平均成績(jī)由低到高進(jìn)行起泡排 序法\n"); printf("\n7.您將對(duì)某門(mén)專(zhuān)業(yè)的學(xué)生的某門(mén)課程成績(jī)由低到高 進(jìn)行直接插入排序法\n"); printf("\n8.您將把學(xué)生信息存入文件\n"); scanf("%d",&id); getchar(); switch(id){ case 1: { printf("\n從文件中讀取信息\n"); Input(students,sizeof(students)/sizeof(STU));//調(diào)用Input函數(shù),sizeof(studen

12、ts)/sizeof(STU)表示要讀取幾個(gè)學(xué)生的信息 printf("\n學(xué)號(hào) 姓名 專(zhuān)業(yè) 班級(jí) 課程1 課程2 課程3\n"); for(i=0;i

13、個(gè)結(jié)構(gòu)體的信息\n",n); printf("\n學(xué)號(hào) 姓名 專(zhuān)業(yè) 班級(jí) 課程1 課程2 課程3\n"); Output(&tem);//調(diào)用Output函數(shù) break; } case 3: { printf("\n請(qǐng)輸入班級(jí)號(hào)num(1或2)\n"); printf("\n請(qǐng)輸入專(zhuān)業(yè)名稱(chēng)majorname(computer=c, software=s,network=n)\n"); printf("\n請(qǐng)輸入一個(gè)分?jǐn)?shù)m(0

14、,&num); getchar(); scanf("%c",&majorname); getchar(); scanf("%d",&m); Search(students,num,majorname,m);//調(diào)用Search函數(shù) break; } case 4: { printf("\n請(qǐng)輸入某一課程下標(biāo)corse(0,1,2)\n"); scanf("%d",&corse); sub=Max(students,corse);//調(diào)用Max函數(shù),返回值給sub pri

15、ntf("\n下面是課程%d最高分學(xué)生的信息\n",corse); printf("\n學(xué)號(hào) 姓名 專(zhuān)業(yè) 班級(jí) 課程0 課程1 課程2\n"); Output(students+sub);//調(diào)用Output函數(shù) break; } case 5: { printf("\n下面是對(duì)所有學(xué)生的平均成績(jī)簡(jiǎn)單選擇排序后的順序:\n"); Sort_select(students);//調(diào)用Sort_select函數(shù) break; } case 6: { pr

16、intf("\n請(qǐng)輸入一個(gè)班級(jí)號(hào)num(1或2)\n"); scanf("%d",&num); printf("\n下面是對(duì)某個(gè)班級(jí)起泡排序后順序:\n"); Sort_buble(students,num);//調(diào)用Sort_buble函數(shù) break; } case 7: { printf("\n請(qǐng)輸入某一課程下標(biāo)corse(0,1,2)\n"); printf("\n請(qǐng)輸入專(zhuān)業(yè)名稱(chēng)majorname(computer=c, software=s,network=n)\n"); scanf("%d

17、",&corse); getchar(); scanf("%c",&majorname); printf("\n下面是對(duì)某一專(zhuān)業(yè)學(xué)生的某一課程直接插 入排序后的順序:\n"); Sort_insert(students,corse,&majorname);//調(diào)用Sort_insert函數(shù) break; } case 8: { Save(students,sizeof(students)/sizeof(STU));//調(diào)用Save函數(shù),sizeof(students)/sizeof(STU)表示要保存幾個(gè)學(xué)生的

18、信息 break; } default: { break; } if((id<1)||(id>8)) break; } } } 3.Input函數(shù) #include "student.h" void Input(STU * p,int n) { FILE * fp; char filename[15]; printf("\n請(qǐng)輸入打開(kāi)文件名:\n"); gets(filename); fp=fopen(filename,"r"); fread(p,sizeof(STU),

19、n,fp); fclose(fp); } 4.Output函數(shù) #include "student.h" void Output(STU * p) { printf("\n%-5s%-10s%-8s%6d%6d%7d%7d\n",p->num,p->name,p->major,p->classNo,p->score[0],p->score[1],p->score[2]); } 5.Fetch函數(shù) #include "student.h" STU Fetch(int studentIndex) { STU tem; FILE * fp;

20、 char filename[15]; if((studentIndex<0)||(studentIndex>N-1)){ printf("studentIndex error\n"); exit(0); } getchar(); printf("\n請(qǐng)輸入打開(kāi)文件名:\n"); gets(filename); fp=fopen(filename,"r"); fseek(fp,(long)(studentIndex*sizeof(STU)),SEEK_SET); fread(&tem,sizeof(STU),1,fp); fclose(fp);

21、 return tem; } 6.Search函數(shù) #include "student.h" void Search(STU * p,int classNo,char s,int scoreSum) { int i; for(i=0;iclassNo==classNo) if((p+i)->major[0]==s) if(((p+i)->score[0]+(p+i)->score[1]+(p+i)-> score[2])>scoreSum){ printf("\n下面是班

22、級(jí)%d專(zhuān)業(yè)%c超過(guò)%d分的學(xué)生 信息\n",classNo,s,scoreSum); printf("\n學(xué)號(hào) 姓名 專(zhuān)業(yè) 班級(jí) 課程1 課程2 課程3\n"); Output(p+i); } } } 7.Max函數(shù) #include "student.h" int Max(STU * p,int scoreIndex) { int i=0,max,result; max=(p+i)->score[scoreIndex]; result=i; for(i=1;i

23、 if((p+i)->score[scoreIndex]>max){ max=(p+i)->score[scoreIndex]; result=i; } } return result; } 8. Sort_select函數(shù) #include "student.h" void Sort_select(STU * p) { int i,j,k; float sum,ave[N],t; STU tem; for(i=0;iscore[0]+(p+i)->s

24、core[1]+(p+i)->score[2]; ave[i]=sum/3; } for(i=0;i

25、iclassNo==n){ count++; stu_class_ave[j]=*(p+i); j++; sum=0.0; su

26、m=sum+(p+i)->score[0]+(p+i)->score[1]+ (p+i)->score[2]; ave[i]=sum/3; } for(i=0;iave[j+1]){ t=ave[j]; ave[j]=ave[j+1]; ave[j+1]=t; tem=stu_class_ave[j]; stu_class_ave[j]=stu_class_ave[j+1]; stu_cla

27、ss_ave[j+1]=tem; } printf("\n學(xué)號(hào) 姓名 專(zhuān)業(yè) 班級(jí) 課程1 課程2 課程3\n"); for(j=0;j

28、 if(* major==(p+i)->major[0]){ count++; stu_class_subject[j]=* (p+i); j++; } for(i=2;i<=count;i++){ stu_class_subject[0]=stu_class_subject[i]; for(j=i-1;stu_class_subject[0].score[n]

29、class_subject[j+1]=stu_class_subject[0]; } printf("\n學(xué)號(hào) 姓名 專(zhuān)業(yè) 班級(jí) 課程1 課程2 課程3\n"); for(j=1;j<=count;j++) Output(stu_class_subject+j); } 11. Save函數(shù) #include "student.h" void Save(STU * p,int n) { FILE * fp; char filename[15]; int i; printf("\n請(qǐng)輸入保存的文件名:\n");

30、 gets(filename); if((fp=fopen(filename,"wb"))==NULL){ printf("cannot open file\n"); return; } for(i=0;i

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲