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

下載本文檔

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

文檔簡介

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

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

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

4、學(xué)生信息,創(chuàng)建完成后顯示剛才創(chuàng)建的信息,然后根據(jù)需要進行刪除學(xué)生信息,插入學(xué)生信息和對學(xué)生成績進行匯總顯示的操作。創(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、后移動p-next = r-next;r-next = p;/將p和r結(jié)點接在一起l-data.cgrade+; /鏈表長度加1aculatescore(x.cgrade,m); 該函數(shù)的傳入?yún)?shù)是指向鏈表頭結(jié)點的指針,存放學(xué)生信息的結(jié)點,和一個一維數(shù)組。在該函數(shù)中,首先申請一塊新的內(nèi)存用于存放學(xué)生信息,然后調(diào)用copyelem(p,x)函數(shù)將存放學(xué)生信息的結(jié)點的數(shù)據(jù)拷貝到新申請的內(nèi)存中,并與鏈表的頭結(jié)點連接起來。最后調(diào)用aculatescore(x.cgrade,m); 來匯總學(xué)生信息。void copyelem (elemtype *x,const char* num,const char

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

7、,int m5,int optcode)/統(tǒng)計分數(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ù)用來計算小于60分,小于70分,小于80分,小于90分和小于100分的人的個數(shù)并將結(jié)

8、果保存在一維數(shù)組中,然后在showgrid函數(shù)中將結(jié)果以圖形的方式顯示出來。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指向下一個結(jié)點for(j=0;jdata.num)11)?11:strlen(p-data.num);/判斷輸入的學(xué)號是否大于11個字符namelen = (strlen()10)?10:strlen();/判斷輸入的學(xué)號是否大于11個字符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;/將指針移到下一個結(jié)點for(j=0;jconsolelength;j+)printf(*);printf(n);簡單學(xué)生成績統(tǒng)計軟件二、 主要功能模塊流程圖創(chuàng) 建顯 示刪 除退 出插 入排 序條形圖顯示示四、系統(tǒng)測試程序運行實例如下:1選擇1,運行界面如下:2選擇2,運行界面如下: 3選擇3,運行界面如下:4選擇4,運行界面如下:5選擇5,運行界面如下:6選擇6,運行界面如下:五、結(jié)論通過這次長達兩個星期的程序設(shè)計,我受益匪淺。深刻認識到自己知識

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論