版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上C語言程序設(shè)計實訓(xùn)1報告設(shè) 計 題 目: 基于數(shù)組的學(xué)生信息管理系統(tǒng) 學(xué) 院 名 稱: 信息科學(xué)技術(shù)學(xué)院 專 業(yè): 計算機科學(xué)與技術(shù) 班 級: 姓 名: 學(xué) 號 指 導(dǎo) 教 師: 提 交 日 期: 2014年12月22日 一、實驗內(nèi)容編寫并調(diào)試程序,實現(xiàn)學(xué)校各專業(yè)班級學(xué)生信息的管理。10個學(xué)生的信息存儲在文件studentInit.dat中。在頭文件student.h中定義學(xué)生信息的結(jié)構(gòu)體類型,包括:學(xué)號、姓名、專業(yè)、班級、3門成績;和符號常量N(學(xué)生數(shù))。(同一班級的學(xué)生可以屬于不同的專業(yè),同一專業(yè)的學(xué)生可以屬于不同的班級)#define N 10struct St
2、udentchar num15;/學(xué)號char name15;/姓名char major10;/專業(yè)(computer,software,network)int classNo;/班級(1-2)int score3;/3門課的成績(0-2);typedef struct Student STU;二、實驗要求 (1) main函數(shù):以菜單形式將各項功能提供給用戶,根據(jù)用戶的選擇,調(diào)用相應(yīng)的函數(shù)。STU studentN; /保存輸入的N名學(xué)生信息(2) 定義函數(shù)void Input(STU *p, int n):從文件sutdentInit中輸入n個學(xué)生的信息。(3) 定義函數(shù)void Outp
3、ut(STU *p):將p所指的某個學(xué)生信息表格化屏幕輸出。(4) 定義函數(shù)STU Fetch(int studentIndex):從文件中隨機讀取第studentIndex個(0= studentIndex 240的同學(xué))。(6) 定義函數(shù)int Max(STU *p, int scoreIndex):求所有學(xué)生、下標(biāo)為scoreIndex的課程分?jǐn)?shù)最高的學(xué)生序號(在數(shù)組中的下標(biāo)),學(xué)生序號作為返回值。(7) 定義函數(shù)void Sort_select(STU *p): 對所有學(xué)生,按平均成績由低到高進(jìn)行簡單選擇排序。(8) 定義函數(shù)void Sort_buble(STU *p, int n)
4、; 對某個班級的學(xué)生,按平均成績由高到低進(jìn)行起泡排序。并調(diào)用Output輸出。定義局部變量:STU stu_class_aveN; /按平均成績排序后的某個班級的學(xué)生信息;int count; /實際元素個數(shù)(9) 定義函數(shù)void Sort_insert(STU *p, int n, char *major):對某個專業(yè)的學(xué)生,按某門課程成績由低到高進(jìn)行直接插入排序。并調(diào)用Output輸出。定義局部變量:STU stu_class_ subject N; /按某門課程成績排序后的某個專業(yè)的學(xué)生信息;int count; /實際元素個數(shù)(10) 定義函數(shù)void Save(STU *p,int
5、 n) :將學(xué)生信息存入文件。四、程序清單(關(guān)鍵語句和變量加注釋)1頭文件,類型定義,函數(shù)聲明#include #include #include #define N 10struct Studentchar num15;char name15;char major10;int classNo;int score3;typedef struct Student STU;void Input(STU * p,int n);/從文件sutdentInit中輸入n個學(xué)生的信息void Output(STU * p);/將p所指的某個學(xué)生信息表格化屏幕輸出STU Fetch(int studentIn
6、dex);/從文件中隨機讀取第studentIndex個(0= studentIndex 240的同學(xué))int Max(STU * p,int scoreIndex);/求所有學(xué)生、下標(biāo)為scoreIndex的課程分?jǐn)?shù)最高的學(xué)生序號(在數(shù)組中的下標(biāo)),學(xué)生序號作為返回值void Sort_select(STU * p);/對所有學(xué)生,按平均成績由低到高進(jìn)行簡單選擇排序void Sort_buble(STU * p,int n);/對某個班級的學(xué)生,按平均成績由高到低進(jìn)行起泡排序void Sort_insert(STU * p,int n,char * major);/對某個專業(yè)的學(xué)生,按某門課
7、程成績由低到高進(jìn)行直接插入排序void Save(STU * p,int n);/將學(xué)生信息存入文件2.主函數(shù)#include student.hvoid main()int i,n,id,num,m,sub,corse;/n,第幾個結(jié)構(gòu)體;id,菜單序號;num,班級號;sub,學(xué)生下標(biāo);corse,課程下標(biāo)char majorname;/專業(yè)名稱STU studentsN;STU tem;while(1)printf(n請輸入功能編號,運行相應(yīng)功能n);printf(n1.您將從文件中讀取10個人的信n);printf(n2.您將從文件中隨機讀取第n(0=n=9)個學(xué)生的信息n)print
8、f(n3.您將根據(jù)某一班級某一專業(yè)總分超過多少進(jìn)行查找n);printf(n4.您將求某一課程分?jǐn)?shù)最高的學(xué)生序號的下標(biāo)n);printf(n5.您將對平均成績由低到高進(jìn)行簡單選擇排序法n);printf(n6.您將對某一個班的平均成績由低到高進(jìn)行起泡排序法n);printf(n7.您將對某門專業(yè)的學(xué)生的某門課程成績由低到高進(jìn)行直接插入排序法n);printf(n8.您將把學(xué)生信息存入文件n);scanf(%d,&id);getchar();switch(id)case 1:printf(n從文件中讀取信息n);Input(students,sizeof(students)/sizeof(STU
9、);/調(diào)用Input函數(shù),sizeof(students)/sizeof(STU)表示要讀取幾個學(xué)生的信息printf(n學(xué)號 姓名 專業(yè) 班級 課程1 課程2 課程3n);for(i=0;iN;i+)Output(students+i);/調(diào)用Output函數(shù)break;case 2:printf(n請輸入您想從文件中讀取第幾個結(jié)構(gòu)體信息(%d)n,N);scanf(%d,&n);tem=Fetch(n);/Fetchprintf(n下面是第%d個結(jié)構(gòu)體的信息n,n);printf(n學(xué)號 姓名 專業(yè) 班級 課程1 課程2 課程3n);Output(&tem);/調(diào)用Output函數(shù)brea
10、k;case 3:printf(n請輸入班級號num(1或2)n);printf(n請輸入專業(yè)名稱majorname(computer=c,software=s,network=n)n);printf(n請輸入一個分?jǐn)?shù)m(0m300)n);scanf(%d,&num);getchar();scanf(%c,&majorname);getchar();scanf(%d,&m);Search(students,num,majorname,m);/調(diào)用Search函數(shù)break;case 4:printf(n請輸入某一課程下標(biāo)corse(0,1,2)n);scanf(%d,&corse);sub=M
11、ax(students,corse);/調(diào)用Max函數(shù),返回值給subprintf(n下面是課程%d最高分學(xué)生的信息n,corse);printf(n學(xué)號 姓名 專業(yè) 班級 課程0 課程1 課程2n);Output(students+sub);/調(diào)用Output函數(shù)break;case 5:printf(n下面是對所有學(xué)生的平均成績簡單選擇排序后的順序:n);Sort_select(students);/調(diào)用Sort_select函數(shù)break;case 6:printf(n請輸入一個班級號num(1或2)n);scanf(%d,&num);printf(n下面是對某個班級起泡排序后順序:n)
12、;Sort_buble(students,num);/調(diào)用Sort_buble函數(shù)break;case 7:printf(n請輸入某一課程下標(biāo)corse(0,1,2)n);printf(n請輸入專業(yè)名稱majorname(computer=c,software=s,network=n)n);scanf(%d,&corse);getchar();scanf(%c,&majorname);printf(n下面是對某一專業(yè)學(xué)生的某一課程直接插入排序后的順序:n);Sort_insert(students,corse,&majorname);/調(diào)用Sort_insert函數(shù)break;case 8:S
13、ave(students,sizeof(students)/sizeof(STU);/調(diào)用Save函數(shù),sizeof(students)/sizeof(STU)表示要保存幾個學(xué)生的信息break;default:break;if(id8)break;3.Input函數(shù)#include student.hvoid Input(STU * p,int n)FILE * fp;char filename15;printf(n請輸入打開文件名:n);gets(filename);fp=fopen(filename,r);fread(p,sizeof(STU),n,fp);fclose(fp);4.Ou
14、tput函數(shù)#include student.hvoid Output(STU * p)printf(n%-5s%-10s%-8s%6d%6d%7d%7dn,p-num,p-name,p-major,p-classNo,p-score0,p-score1,p-score2);5.Fetch函數(shù)#include student.hSTU Fetch(int studentIndex)STU tem;FILE * fp;char filename15;if(studentIndexN-1)printf(studentIndex errorn);exit(0);getchar();printf(n請
15、輸入打開文件名:n);gets(filename);fp=fopen(filename,r);fseek(fp,(long)(studentIndex*sizeof(STU),SEEK_SET);fread(&tem,sizeof(STU),1,fp);fclose(fp);return tem;6.Search函數(shù)#include student.hvoid Search(STU * p,int classNo,char s,int scoreSum)int i;for(i=0;iclassNo=classNo)if(p+i)-major0=s) if(p+i)-score0+(p+i)-s
16、core1+(p+i)-score2)scoreSum)printf(n下面是班級%d專業(yè)%c超過%d分的學(xué)生信息n,classNo,s,scoreSum);printf(n學(xué)號 姓名 專業(yè) 班級 課程1 課程2 課程3n);Output(p+i);7Max函數(shù)#include student.hint Max(STU * p,int scoreIndex)int i=0,max,result;max=(p+i)-scorescoreIndex;result=i;for(i=1;iscorescoreIndexmax)max=(p+i)-scorescoreIndex;result=i;ret
17、urn result;8. Sort_select函數(shù)#include student.hvoid Sort_select(STU * p)int i,j,k;float sum,aveN,t;STU tem;for(i=0;iscore0+(p+i)-score1+(p+i)-score2;avei=sum/3;for(i=0;iN-1;i+)k=i;for(j=k+1;jN;j+)if(avejavek)k=j;t=avek;avek=avei;avei=t;tem=*(p+k);*(p+k)=*(p+i);*(p+i)=tem;printf(n學(xué)號 姓名 專業(yè) 班級 課程1 課程2 課程
18、3n);for(i=0;iN;i+)Output(p+i);9. Sort_buble函數(shù)#include student.hvoid Sort_buble(STU * p,int n)STU stu_class_aveN,tem;int i,j=0,count=0;float sum,aveN,t;for(i=0;iclassNo=n)count+;stu_class_avej=*(p+i);j+;sum=0.0; sum=sum+(p+i)-score0+(p+i)-score1+(p+i)-score2; avei=sum/3;for(i=0;icount-1;i+)for(j=0;ja
19、vej+1)t=avej; avej=avej+1;avej+1=t;tem=stu_class_avej;stu_class_avej=stu_class_avej+1;stu_class_avej+1=tem;printf(n學(xué)號 姓名 專業(yè) 班級 課程1 課程2 課程3n);for(j=0;jcount;j+)Output(stu_class_ave+j);10. Sort_insert函數(shù)#include student.hvoid Sort_insert(STU * p,int n,char * major)STU stu_class_subjectN;int i=0,j=1,count=0;for(i=0;imajor0)count+;stu_class_subjectj=* (p+i);j+;for(i=2;i=count;i+)st
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購合同管理的藝術(shù)與實踐經(jīng)驗3篇
- 采購合同取消協(xié)議模板3篇
- 采購合同中的采購計劃編制技巧詳解3篇
- 采購合同翻譯對比3篇
- 2024年地基基礎(chǔ)施工環(huán)保驗收合同范本3篇
- 采購合同制定確保雙方利益3篇
- 采購合同要素全面解析3篇
- 采購合同管理的規(guī)范化操作指南3篇
- 采購法務(wù)與合同的合同審查3篇
- 采購合同實現(xiàn)合同管理的智能化3篇
- 學(xué)校安全教育“一月一主題”內(nèi)容
- 葉徐版語言學(xué)綱要復(fù)習(xí)重點
- 人教版培智一年級上生活適應(yīng)教案
- 《季羨林自傳 我的前半生》讀書筆記思維導(dǎo)圖PPT模板下載
- 南理工2023運籌學(xué)試卷A及答案
- 【讀寫策略】如何編寫班史
- “紅領(lǐng)巾獎?wù)隆闭聵訄D案及說明
- 人教部編版七年級語文上冊課程綱要
- 中職中專Powerpoint 2010 習(xí)題匯總(含答案)試卷
- 回流焊Reflow曲線講解
- 威布爾分布課件
評論
0/150
提交評論