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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、插入或刪除學(xué)生記錄情況加以適時(shí)修改: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ù)實(shí)現(xiàn),函數(shù)原型清單如下(注意:以下各函數(shù)原型中很多地方用到了指向一維數(shù)組的指針變量或指向二維數(shù)組的指針變量,也可以將之對(duì)應(yīng)的定義為形參數(shù)組的形式進(jìn)行處理):1-1計(jì)算所有課程的平均分voidaveragemark(float(*pscore)Nmax,float*pavecourse,intm,intn)1-

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

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

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

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

12、in函數(shù)是首先要實(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ù)是用單鏈表進(jìn)行班級(jí)成績(jī)管理時(shí),需要用到函數(shù)。實(shí)際編程時(shí),先實(shí)現(xiàn)以上的7個(gè)函數(shù)及main函數(shù),而對(duì)下面4個(gè)函數(shù)在具體編程時(shí),可只給出相應(yīng)空函數(shù)形式,等真正要實(shí)現(xiàn)時(shí),再具體

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論