《C語言程序設(shè)計》綜合性實驗實驗報告(參考格式)_第1頁
《C語言程序設(shè)計》綜合性實驗實驗報告(參考格式)_第2頁
《C語言程序設(shè)計》綜合性實驗實驗報告(參考格式)_第3頁
《C語言程序設(shè)計》綜合性實驗實驗報告(參考格式)_第4頁
《C語言程序設(shè)計》綜合性實驗實驗報告(參考格式)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、- -綜合性實驗報告課程名稱:C語言程序設(shè)計實驗題目:班級成績管理系統(tǒng)的設(shè)計與實現(xiàn)姓名學號:(組長)系別:專業(yè)班級:指導教師:實驗日期:2012年06月01日06月20日- - -一、實驗目的和要求實驗目的1、利用所學的三種程序基本結(jié)構(gòu)以及數(shù)組、用戶自定義函數(shù)進行一個小型程序的設(shè)計,進一步理解和掌握C語言的語法以及三種基本程序結(jié)構(gòu)的綜合應用。2、通過程序中涉及到的排序、查找、求和等操作加深對算法、程序設(shè)計思路、常用程序設(shè)計技巧的理解與掌握,逐步培養(yǎng)學生的程序開發(fā)能力。實驗要求1、根據(jù)實驗內(nèi)容,認真編寫源程序代碼、上機調(diào)試程序,書寫實驗報告。2、分小組協(xié)作實驗時,要寫明每一位學生負責的實驗內(nèi)容。

2、二、設(shè)計要求(一)學生信息和程序功能給定的原始數(shù)據(jù)和程序應實現(xiàn)的功能是該C程序開發(fā)的依據(jù),此實驗只處理一個班級學生信息,最多學生數(shù)為120人。1、學生信息和數(shù)據(jù)類型最多學生人數(shù)和最多課程數(shù)定義為全局符號常量:#defineMmax120#defineNmax3(1)學生信息學生信息包含:學號,姓名,三門課(語文,數(shù)學,英語)成績和總分。(2)數(shù)據(jù)類型int型。其2011023102表學號、姓名、課程三個信息為char型,課程分數(shù)和總分為float型,其余為中,假設(shè)學號有10位數(shù)字字符(注意此時要求存儲空間要11個字節(jié)),例如示入學年份為2011年,023是專業(yè)編碼,102是學生在班級中的排號。

3、2、測試數(shù)據(jù)測試數(shù)據(jù)在定義數(shù)組時以初值形式提供,其中學生總成績通過程序計算。學號姓名語文數(shù)學英語2011023001Zhang73.585672011023002Li8391.5872011023003Cheng6582782011023004Wang718380.5但是,在用單鏈表處理學生信息時,要求直接從鍵盤上接收數(shù)據(jù)。3、程序功能(1)學生信息(學號、姓名、成績等)的顯示(數(shù)據(jù)結(jié)構(gòu)要求用數(shù)組)(2)按姓名查找學生(數(shù)據(jù)結(jié)構(gòu)要求用數(shù)組);(3)計算各門課程的平均分(數(shù)據(jù)結(jié)構(gòu)要求用數(shù)組);(4)計算學生總成績,并按總成績進行排序(數(shù)據(jù)結(jié)構(gòu)要求用數(shù)組)(5)按總成績降序顯示學生信息;(6)學生

4、記錄的插入;(7)用單鏈表(結(jié)構(gòu)體)處理班級學生信息(學號、姓名、成績等),包括學生信息輸入(添加)、學生信息瀏覽、學生總成績計算和將學生信息存入文件。其中第(7)為選作內(nèi)容,如果學生能夠做出來,實驗成績應給予加分獎勵。(二)程序總體設(shè)計1、數(shù)據(jù)結(jié)構(gòu)依據(jù)給定的學生信息和數(shù)據(jù)類型,定義相應的數(shù)組和結(jié)構(gòu)體類型分別如下:課程名稱定義為全局數(shù)組:charcourseNmax50=Chinese,Mathematic,English;學生結(jié)構(gòu)體類型如下:structstudentcharcode11;/*學號*/TOC o 1-5 h zcharname20;/*姓名*/floatscoreNmax;/

5、*各課程成績*/floattotal;/*總分*/structstudent*next;以下的數(shù)組或變量均為局部類型的(可放在main函數(shù)中加以定義):sno數(shù)組存儲學生學號,可事先加入初始數(shù)據(jù)若干條:charsnoMmax11=2011023001,2011023002,2011023003,2011023004;name數(shù)組存儲學生姓名,可事先加入初始數(shù)據(jù)若干條;namesearch數(shù)組用于存儲要查找的學生姓名:charnameMmax20=Zhang,Li,Cheng,Wang,namesearch20;score數(shù)組存儲學生成績;假設(shè)至多有M名學生,N門課程,可事先加入初始數(shù)據(jù)若干條;

6、avecourse數(shù)組存儲每門課程的平均分,實際計算時可事先初始化:floatscoreMmaxNmax=73.5,85,67,83,91.5,87,65,82,78,71,83,80.5;floatavecourseNmax=0;tscore數(shù)組存儲每位學生成績的總分:floattscoreMmax=0;index數(shù)組為排名索引(約定為降序),存儲每位學生總成績在tscore數(shù)組中的名次(即index0存放了總分第一的學生在tscore數(shù)組中的下標,index存放了總分第二的學生在tscore數(shù)組中的下標,依次類推):intindexMmax;M為實際學生數(shù);N為實際課程數(shù);M、N的值要根據(jù)

7、插入或刪除學生記錄情況加以適時修改:intM=4,N=3;2、模塊劃分依據(jù)程序的數(shù)據(jù)結(jié)構(gòu)和功能,遵照“自頂向下”原則,采用基于函數(shù)的逐步求精法,描述該程序的層次結(jié)構(gòu)。該程序可按給定的程序功能直接描述模塊層次結(jié)構(gòu)。該程序要求保留一種排序狀態(tài):按總分排序。圖1模塊層次結(jié)構(gòu)在C語言中,模塊用函數(shù)實現(xiàn),函數(shù)原型清單如下(注意:以下各函數(shù)原型中很多地方用到了指向一維數(shù)組的指針變量或指向二維數(shù)組的指針變量,也可以將之對應的定義為形參數(shù)組的形式進行處理):1-1計算所有課程的平均分voidaveragemark(float(*pscore)Nmax,float*pavecourse,intm,intn)1-

8、2計算每位學生所修課程總分voidtotalmark(float(*pscore)Nmax,float*ptscore,intm,intn)1-3按姓名查找學生記錄intretrievebyn(char(*pname)20,char*pnamesearch,intm)1-4瀏覽全部學生信息voiddisplaystu(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,intm,intn)1-5按總分降序瀏覽全部學生信息voiddisplaystusort(char(*psno)11,char(*pname)20,floa

9、t(*pscore)Nmax,float*ptscore,int*pindex,intm,intn)1-6添加新的學生記錄voidinsert(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,int*pm,intn)1-7用單鏈表進行班級成績管理voidlinkprocess()2-1按總分遞減排序voidsortscore(float*ptscore,int*pindex,intm)2-2輸入和添加學生信息structstudent*appendstuinfo(structstudent*head)2-3瀏覽學生信息

10、voiddisplaylist(structstudent*head)2-4保存學生信息voidsavestuinfo(structstudent*head)模塊層次結(jié)構(gòu)只是確定模塊之間的關(guān)系和函數(shù)原型,不是程序的執(zhí)行步驟。程序總體框架是該程序的總體流程圖。該程序不是順序執(zhí)行全部功能,而是在某一時刻有選擇地執(zhí)行一種或多種功能。因此,選用菜單方式是較佳的方案。三、小組各成員分工協(xié)作情況說明成員:負責編寫的函數(shù)是:成員:負責編寫的函數(shù)是:成員:負責編寫的函數(shù)是:四、編程體會(或是對實驗系統(tǒng)做進一步改進的思考)五、程序代碼以下給出了程序的基本框架,請完成函數(shù)的功能及函數(shù)調(diào)用等程序代碼的編寫工作。#i

11、nclude#include#include#include#defineMmax120/*記錄最大學生數(shù)*/#defineNmax3/*記錄學生選課最大課程數(shù)目*/charcourseNmax50=Chinese,Mathematic,English;/以全局變量的形式給出各門課程的名稱/*當使用單鏈表進行班級成績管理時,使用如下的結(jié)構(gòu)體類型*/structstudentcharcode11;charname20;/*姓名*/floatscoreNmax;/*各課程成績*/floattotal;/*總分*/structstudent*next;/*以下是各函數(shù)的聲明,其中下面的7個函數(shù)和ma

12、in函數(shù)是首先要實現(xiàn)的*/voidaveragemark(float(*pscore)Nmax,float*pavecourse,intm,intn);voidtotalmark(float(*pscore)Nmax,float*ptscore,intm,intn);intretrievebyn(char(*pname)20,char*pnamesearch,intm);voiddisplaystu(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,intm,intn);voiddisplaystusort(char(*

13、psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,int*pindex,intm,intn);voidinsert(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,int*pm,intn);voidsortscore(float*ptscore,int*pindex,intm);/*以下各函數(shù)是用單鏈表進行班級成績管理時,需要用到函數(shù)。實際編程時,先實現(xiàn)以上的7個函數(shù)及main函數(shù),而對下面4個函數(shù)在具體編程時,可只給出相應空函數(shù)形式,等真正要實現(xiàn)時,再具體

14、編寫它們*/voidlinkprocess();/*這是函數(shù)的聲明*/structstudent*appendstuinfo(structstudent*head);voiddisplaylist(structstudent*head);voidsavestuinfo(structstudent*head);/*下面是main函數(shù),但需要你完善函數(shù)的調(diào)用;如果變量不夠用,請自行添加*/voidmain()/*sno數(shù)組存儲學生學號,可事先加入初始數(shù)據(jù)若干條*/charsnoMmax11=2011023001,2011023002,2011023003,2011023004;/*name數(shù)組存儲

15、學生姓名;namesearch數(shù)組用于存儲要查找的學生姓名*/charnameMmax20=Zhang,Li,Cheng,Wang,namesearch20;/*score數(shù)組存儲學生成績;avecourse數(shù)組存儲每門課程的平均分,實際計算時要初始化*/floatscoreMmaxNmax=73.5,85,67,83,91.5,87,65,82,78,71,83,80.5,avecourseNmax=0;/*tscore數(shù)組存儲每位學生成績的總分*/floattscoreMmax=0;/*index數(shù)組為排名索引(約定為降序)*/intindexMmax;intM=4,N=3;/*M為實際學

16、生數(shù);N為實際課程數(shù);M、N的值可根據(jù)情況修改;由賦初值情況知M=4,N=3*/inti,j;charc;while(1)system(cls);/*清屏操作*/printf(nt這是班級成績管理系統(tǒng),請選擇你要的操作:nn);printf(tt1:計算所有課程的平均分n);printf(tt2:計算每位學生所修各門課程的總分n);printf(tt3:按姓名查找學生記錄n);printf(tt4:瀏覽全部學生信息n);printf(tt5:按總分降序瀏覽全部學生信息n);printf(tt6:添加(插入)新的學生記錄n);printf(tt7:用單鏈表進行班級成績管理n);printf(tt

17、8:退出系統(tǒng)!n);printf(nn請輸入命令:);scanf(%c,&c);/*輸入選擇命令*/if(c=8)puts(n謝謝使用!);break;/*結(jié)束程序運行*/switch(c)case1:/*計算課程平均分*/;/*調(diào)用averagemark函數(shù),計算課程的平均分*/printf(n);for(j=0;jN;j+)/*顯示每門課程的平均分*/printf(%s課程的平均分是:%.2f.n,coursej,avecoursej);getchar();getchar();break;case2:/*計算每位學生總分*/;/*調(diào)用totalmark函數(shù),計算每位學生總分*/printf

18、(n);for(i=0;iM;i+)/*顯示每位學生的總分*/printf(第d名學生的總分是:%.2f.n,i+1,tscorei);getchar();getchar();break;case3:/*按學生的姓名尋找記錄*/printf(請輸入你想查找的學生姓名:);scanf(%s,namesearch);/*調(diào)用retrievebyn函數(shù)*/if(i=-1)printf(學生s不存在.n,namesearch);elseprintf(n你查找的學生記錄是:n);printf(學號:%sn姓名:%sn,snoi,namesearch);for(j=0;jN;j+)/*顯示每門課程成績*/printf(%s課程成績是:%.2f.n,coursej,scoreij);printf(所修課程總分是:%.2f.n,tscor

溫馨提示

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

評論

0/150

提交評論