程序設(shè)計(jì)課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
程序設(shè)計(jì)課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
程序設(shè)計(jì)課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
程序設(shè)計(jì)課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
程序設(shè)計(jì)課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、淮北師范大學(xué)程序設(shè)計(jì)課程設(shè)計(jì)簡(jiǎn)單學(xué)生成績(jī)統(tǒng)計(jì)軟件學(xué) 院 計(jì)算機(jī)科學(xué)與技術(shù) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)(師范) 學(xué) 號(hào) 學(xué) 生 姓 名 指導(dǎo)教師姓名 2011年03月 31 日一、 程序設(shè)計(jì)的內(nèi)容與目的內(nèi)容:1. 學(xué)生記錄應(yīng)該包括學(xué)號(hào)、姓名、c 語(yǔ)言課設(shè)成績(jī)等信息,是本程序的核心數(shù)據(jù)結(jié)構(gòu),定義如下:typedef structchar num11; /*學(xué)號(hào)*/char name10; /*姓名*/int cgrade; /*c 語(yǔ)言課設(shè)成績(jī)*/elemtype ;使用鏈表實(shí)現(xiàn)學(xué)生記錄的存儲(chǔ),鏈表中的結(jié)點(diǎn)結(jié)構(gòu)如下:typedef struct node elemtype data;struct n

2、ode * next; node,*nodeptr;int n=0;2程序應(yīng)具有以下基本功能:(1)以菜單形式顯示主界面,提示用戶進(jìn)行選擇,完成相應(yīng)任務(wù),如圖1-1 所示。(2)創(chuàng)建學(xué)生記錄鏈表:從鍵盤輸入一定數(shù)量的學(xué)生記錄。(3)插入學(xué)生記錄:從鍵盤輸入待插入的學(xué)生記錄,插入到指定位置。(4)對(duì)學(xué)生記錄中的c 語(yǔ)言課設(shè)成績(jī)按指定順序(升序、降序)進(jìn)行排序;(5)刪除學(xué)生記錄:在指定位置上刪除學(xué)生記錄。(6)能統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù),并以分布圖顯示,如圖1-2 所示。(7)輸出學(xué)生記錄到屏幕目的: (1)每個(gè)學(xué)生記錄中包含學(xué)號(hào)、姓名和c 語(yǔ)言課設(shè)成績(jī)等信息;(2)創(chuàng)建學(xué)生記錄鏈表;(3)更新學(xué)生記

3、錄(插入、排序、刪除);(4)能統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù),并以分布圖顯示;(5)輸出學(xué)生記錄到屏幕。二、算法的基本思想這是一個(gè)簡(jiǎn)單的學(xué)生信息管理程序,包括學(xué)生信息的創(chuàng)建,顯示,刪除,插入,排序和匯總等功能。本程序使用了結(jié)構(gòu)體來(lái)存放學(xué)生信息。將學(xué)生的信息以鏈表的形式存儲(chǔ)在內(nèi)存中。typedef structchar num11; /*學(xué)號(hào)*/char name10; /*姓名*/int cgrade; /*c 語(yǔ)言課設(shè)成績(jī)*/ elemtype ; typedef struct node elemtype data;struct node * next; node,*nodeptr; 程序運(yùn)行前先創(chuàng)建

4、學(xué)生信息,創(chuàng)建完成后顯示剛才創(chuàng)建的信息,然后根據(jù)需要進(jìn)行刪除學(xué)生信息,插入學(xué)生信息和對(duì)學(xué)生成績(jī)進(jìn)行匯總顯示的操作。創(chuàng)建學(xué)生信息的函數(shù)如下:int createlink( nodeptr l,int m5)for(int i=0;inext; while (p)l-next = p-next; delete(p); p = l-next;ncount+;l-data.cgrade = 0;for(int i=0;inext)&( (r-next-data.cgrade p-data.cgrade)|(r-next-data.cgrade data.cgrade) ) r = r-next;/r向

5、后移動(dòng)p-next = r-next;r-next = p;/將p和r結(jié)點(diǎn)接在一起l-data.cgrade+; /鏈表長(zhǎng)度加1aculatescore(x.cgrade,m); 該函數(shù)的傳入?yún)?shù)是指向鏈表頭結(jié)點(diǎn)的指針,存放學(xué)生信息的結(jié)點(diǎn),和一個(gè)一維數(shù)組。在該函數(shù)中,首先申請(qǐng)一塊新的內(nèi)存用于存放學(xué)生信息,然后調(diào)用copyelem(p,x)函數(shù)將存放學(xué)生信息的結(jié)點(diǎn)的數(shù)據(jù)拷貝到新申請(qǐng)的內(nèi)存中,并與鏈表的頭結(jié)點(diǎn)連接起來(lái)。最后調(diào)用aculatescore(x.cgrade,m); 來(lái)匯總學(xué)生信息。void copyelem (elemtype *x,const char* num,const char

6、* name,const int cgrade)strcpy(*x).name,name);/將姓名拷貝到結(jié)點(diǎn)中strcpy(*x).num,num);/將學(xué)號(hào)拷貝到結(jié)點(diǎn)中(*x).cgrade=cgrade;/將成績(jī)拷貝到結(jié)點(diǎn)中傳入?yún)?shù)為存放學(xué)生信息的結(jié)構(gòu)體指針,兩個(gè)字符型指針?lè)謩e用顯示放學(xué)號(hào)和姓名,一個(gè)整形用來(lái)顯示成績(jī)。int aculatescore (const int cgrade,int m5,int optcode)函數(shù)的傳入?yún)?shù)是一個(gè)整形的參數(shù)用來(lái)表示成績(jī),一個(gè)一維數(shù)組用來(lái)保存匯總信息,和一個(gè)具有默認(rèn)值的形參。int aculatescore (const int cgrade

7、,int m5,int optcode)/統(tǒng)計(jì)分?jǐn)?shù)段 if (optcode) if (60cgrade) m0+;return 1; if (90cgrade) m4+;return 5; if (cgrade80) if (cgradecgrade) m0-; return 1; if (90cgrade) m4-; return 5; if (cgrade80) if (cgrade70) m1-; return 2; else m2-; return 3; else m3-; return 4; 該函數(shù)用來(lái)計(jì)算小于60分,小于70分,小于80分,小于90分和小于100分的人的個(gè)數(shù)并將結(jié)

8、果保存在一維數(shù)組中,然后在showgrid函數(shù)中將結(jié)果以圖形的方式顯示出來(lái)。void showgrad(int m5)int i,ncount=0;int tmp5,max=0;int k;/放大系數(shù) for (i=0;i5;i+) ncount += mi;if (ncount15)k=ncount;else k=10;for (i=0;imax)max=tmpi;for (i=max+2;i0;i-) printf( %c%*c%c%*c%c%*c%c%*c%cn,(tmp0i)? :i,4, ,(tmp1i)? :i,4, ,(tmp2i)? :i,4, ,(tmp3i)? :i,4,

9、,(tmp4i)? :i);printf(%s %s %s %s %sn,60,70,80,90,100);for (i=0;inext;/p指向下一個(gè)結(jié)點(diǎn)for(j=0;jdata.num)11)?11:strlen(p-data.num);/判斷輸入的學(xué)號(hào)是否大于11個(gè)字符namelen = (strlen()10)?10:strlen();/判斷輸入的學(xué)號(hào)是否大于11個(gè)字符printf(%d%*c%s%*c%s%*c%dn,i+,consolelength/4-i/10-1, ,p-data.num,consolelength/4-numlen

10、, ,,consolelength/4-namelen, ,p-data.cgrade);/打印學(xué)生信息p = p-next;/將指針移到下一個(gè)結(jié)點(diǎn)for(j=0;jconsolelength;j+)printf(*);printf(n);簡(jiǎn)單學(xué)生成績(jī)統(tǒng)計(jì)軟件二、 主要功能模塊流程圖創(chuàng) 建顯 示刪 除退 出插 入排 序條形圖顯示示四、系統(tǒng)測(cè)試程序運(yùn)行實(shí)例如下:1選擇1,運(yùn)行界面如下:2選擇2,運(yùn)行界面如下: 3選擇3,運(yùn)行界面如下:4選擇4,運(yùn)行界面如下:5選擇5,運(yùn)行界面如下:6選擇6,運(yùn)行界面如下:五、結(jié)論通過(guò)這次長(zhǎng)達(dá)兩個(gè)星期的程序設(shè)計(jì),我受益匪淺。深刻認(rèn)識(shí)到自己知識(shí)

11、的不牢固以及編程實(shí)踐能力的低下。自學(xué)能力和自我認(rèn)識(shí)都有一定的增強(qiáng),也對(duì)編程有更深刻的認(rèn)識(shí)。在做這個(gè)程序的時(shí)候,我遇到了不少問(wèn)題。編譯的過(guò)程:開(kāi)始的時(shí)候找了這個(gè)題目,因?yàn)椴粫?huì)數(shù)據(jù)庫(kù)那方面的東西,所以最簡(jiǎn)單的思路只能在程序本身弄。然后最容易想到的數(shù)據(jù)結(jié)構(gòu)就是結(jié)構(gòu)體,再用動(dòng)態(tài)鏈表來(lái)處理,這樣效率比較高,插入刪除什么的比較方便。問(wèn)題主要是在排序那邊,結(jié)構(gòu)體要排序比較復(fù)雜,所以我記得我好像是開(kāi)了個(gè)數(shù)組來(lái)存放結(jié)構(gòu)體的指針,然后,實(shí)際上結(jié)構(gòu)體鏈表來(lái)操作。然后排完了按照那個(gè)數(shù)組的順序輸出,這里比較難弄。其次比較棘手的是鏈表的使用,由于自己在學(xué)習(xí)過(guò)程中這部分知識(shí)掌握的很差,導(dǎo)致了程序?qū)懙碾y死了。通過(guò)老師的指導(dǎo)、網(wǎng)上的搜索學(xué)習(xí)、圖書館相關(guān)資料的查閱及同學(xué)們之間的討論,我終于理解并能簡(jiǎn)單運(yùn)用這部分知識(shí)。同時(shí)由于是第一次合作編寫這么大的設(shè)計(jì)程序,很多知識(shí)都需要自己主動(dòng)

溫馨提示

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