課程設(shè)計(jì)--《學(xué)生成績(jī)管理系統(tǒng)》的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩6頁(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、<p><b>  機(jī)電工程系</b></p><p><b>  課程設(shè)計(jì)報(bào)告書</b></p><p>  課程名稱: 程序設(shè)計(jì)基礎(chǔ)實(shí)踐 </p><p>  班 級(jí): </p><p>  學(xué) 號(hào):

2、 </p><p>  姓 名: </p><p>  指導(dǎo)教師: </p><p><b>  二○一二年 四 月</b></p><p><b&

3、gt;  1.題目</b></p><p>  《學(xué)生成績(jī)管理系統(tǒng)》的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  2.功能</b></p><p>  (1)每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、性別、3門成績(jī)、平均成績(jī)。</p><p>  (2)輸入功能:可以一次完成無(wú)數(shù)條記錄的輸入。</p>&

4、lt;p>  (3)顯示功能:完成全部學(xué)生記錄的顯示。</p><p>  (4)查找功能:完成按姓名查找學(xué)生記錄,并顯示。</p><p>  (5)排序功能:按學(xué)生平均成績(jī)進(jìn)行排序。</p><p>  (6)插入功能:按平均成績(jī)高低插入一條學(xué)生記錄。</p><p>  (7)保存功能:將學(xué)生記錄保存在任何自定義的文件中,如保存在

5、:c:\score。</p><p>  (8)讀取功能:將保存在文件中的學(xué)生記錄讀取出來(lái)。</p><p>  (9)有一個(gè)清晰美觀界面來(lái)調(diào)用各個(gè)功能</p><p><b>  3.要求</b></p><p>  (1)整個(gè)系統(tǒng)均用C語(yǔ)言實(shí)現(xiàn);</p><p>  (2)利用指針、結(jié)構(gòu)體來(lái)實(shí)

6、現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);</p><p>  (3)系統(tǒng)具有輸入、顯示、查詢、刪除、排序、插入,保存、讀取基本功能;</p><p>  (4)系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來(lái)實(shí)現(xiàn);</p><p>  (5)可以將學(xué)生成績(jī)信息保存在文件中。</p><p>  (6)可以將學(xué)生信息從文件中讀取出來(lái)。</p><p&g

7、t;<b>  4.設(shè)計(jì)內(nèi)容</b></p><p>  整個(gè)系統(tǒng)除了主函數(shù)外,另外還有10個(gè)函數(shù),實(shí)現(xiàn)八大功能:輸入功能、顯示功能、查找功能、排序功能、插入功能、保存功能、讀取功能。各個(gè)函數(shù)的詳細(xì)設(shè)計(jì)說(shuō)明分別如下:</p><p>  4.1主函數(shù) main()</p><p>  利用無(wú)限次循環(huán)for(;;)和swithch()實(shí)現(xiàn)各函數(shù)的

8、調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來(lái)調(diào)用相應(yīng)的函數(shù)。</p><p>  4.2初始化函數(shù) STUDENT *init()</p><p>  這是一個(gè)無(wú)參函數(shù),里面只有一個(gè)語(yǔ)句,它的作用是使函數(shù)調(diào)用初始化,使head的值為NULL。比如:沒(méi)有這個(gè)函數(shù)的話,在你沒(méi)有輸入任何數(shù)據(jù)的情況下,去執(zhí)行顯示功能的時(shí)候會(huì)顯示一些亂碼!</p><p>  4.3菜單選擇函數(shù) int

9、 menu_select();</p><p>  這是一個(gè)無(wú)參函數(shù),主要實(shí)現(xiàn)“功能選擇”的界面,在這個(gè)界面里有顯示系統(tǒng)的九大功能,根據(jù)每個(gè)功能前面的序號(hào)進(jìn)行選擇,中間還顯示系統(tǒng)當(dāng)前的時(shí)間。等執(zhí)行完每一個(gè)函數(shù)功能后,按任一鍵回到主界面也要通過(guò)這個(gè)函數(shù)來(lái)實(shí)現(xiàn)!</p><p>  4.4輸入記錄函數(shù) STUDENT *create()</p><p>  這是一個(gè)無(wú)參

10、函數(shù),用來(lái)執(zhí)行第學(xué)生成績(jī)記錄的輸入,當(dāng)學(xué)生為0時(shí)停止輸入,函數(shù)結(jié)束后,帶回一個(gè)指向指針head。</p><p>  算法:先聲明一個(gè)首節(jié)點(diǎn)head,并將head->next設(shè)為NULL。每輸入一個(gè)數(shù)據(jù)就聲明一個(gè)新節(jié)點(diǎn)p,把p->next設(shè)為NULL,并且鏈接到之前列表的尾端。</p><p><b>  N-S流程圖如下:</b></p>

11、<p>  4.5顯示記錄函數(shù) void print(STUDENT *head)</p><p>  這是一個(gè)不返回值的有參函數(shù),形參為“調(diào)用函數(shù)的指針”,負(fù)責(zé)對(duì)全部學(xué)生成績(jī)記錄的輸出,不足之處就是不能對(duì)學(xué)生成績(jī)進(jìn)行分頁(yè)顯示。</p><p>  算法:先將p結(jié)點(diǎn)的指針指向第一個(gè)結(jié)點(diǎn),將p結(jié)點(diǎn)(即第一個(gè)結(jié)點(diǎn))的數(shù)據(jù)輸出。然后再將p結(jié)點(diǎn)的指針指向p指針的的指針(即下一結(jié)點(diǎn)),將p

12、結(jié)點(diǎn)(即第一結(jié)點(diǎn))的數(shù)據(jù)輸出。重復(fù)執(zhí)行此步聚直到p指針指向NULL為止。</p><p><b>  N-S流程圖如下:</b></p><p>  4.6查找記錄函數(shù) void search(STUDENT *head)</p><p>  這是一個(gè)不返回值的有參函數(shù),形參為“調(diào)用函數(shù)的指針”,實(shí)現(xiàn)按學(xué)號(hào)對(duì)某個(gè)學(xué)生進(jìn)行查找,并顯示所查找到的記

13、錄。</p><p>  算法:采用線性查找法往下一個(gè)節(jié)點(diǎn)查找。輸入所要查找的學(xué)生的學(xué)號(hào)s,設(shè)一個(gè)指針變量p,先指向第一個(gè)結(jié)點(diǎn),當(dāng)strcmp(p->name,s) && p != NULL時(shí),使p后移一個(gè)結(jié)點(diǎn),如果p!=NULL,輸出p所指的結(jié)點(diǎn)。</p><p><b>  N-S流程圖如下:</b></p><p>

14、  4.7刪除記錄函數(shù) STUDENT *delete(STUDENT *head)</p><p>  這是一個(gè)有參函數(shù),形參為“調(diào)用函數(shù)的指針”,先輸入要?jiǎng)h除的學(xué)生記錄的學(xué)號(hào),找到后顯示該學(xué)生信息,等確認(rèn)后便可按“Y”進(jìn)行刪除。</p><p>  算法:從p指向的第一個(gè)結(jié)點(diǎn)開始,檢查該結(jié)點(diǎn)中的num值是否等于輸入的要求刪除的那個(gè)學(xué)號(hào)。如果相等就將該結(jié)點(diǎn)刪除,如不相等,就將p后移一個(gè)結(jié)

15、點(diǎn),再如此進(jìn)行下去,直到遇到表尾為止。</p><p><b>  N-S流程圖如下:</b></p><p>  4.8排序函數(shù) STUDENT *sort(STUDENT *head)</p><p>  這是一個(gè)有參函數(shù),形參為“調(diào)用函數(shù)的指針”,按學(xué)生成績(jī)的平均分高低進(jìn)行排序,還可以顯示名次。</p><p>&

16、lt;b>  N-S流程圖:</b></p><p>  4.9插入函數(shù) STUDENT *insert(STUDENT *head,STUDENT *new)</p><p>  這是一個(gè)有參函數(shù),形參有兩個(gè),一個(gè)是“已插入指針”,一個(gè)是“待插入指針”,按照原來(lái)成績(jī)平均分的高低進(jìn)行插入,插入后會(huì)重新進(jìn)行排序,并返回。</p><p>  算法:先

17、將學(xué)生的成績(jī)按平均分由高分到低分進(jìn)行排序,再插入一個(gè)新生的結(jié)點(diǎn),要求按平均分的高低順序插入。先用指針變量p0指向待插入的結(jié)點(diǎn),p1指向第一個(gè)結(jié)點(diǎn)。如果p0->average<p1->average,則待插入的結(jié)點(diǎn)不應(yīng)插在p1所指的結(jié)點(diǎn)之前。此時(shí)將p1后移,并使p2指向剛才p1所指的結(jié)點(diǎn)。重復(fù)以上的步驟,直到p0->average>=p1->average為止。這時(shí)將p0指向的結(jié)點(diǎn)插到p1所指結(jié)點(diǎn)之前。

18、但是如果p1所指的已是表尾結(jié)點(diǎn),則p1就不應(yīng)后移了。如果p0->average比所有結(jié)點(diǎn)的average都小,則應(yīng)將p0所指的結(jié)點(diǎn)插到鏈表末尾。如果插入的位置既不在第一個(gè)結(jié)點(diǎn)之前,又不在表尾結(jié)點(diǎn)之后,則將p0的值賦給p2->,使p2->next指向待插入的結(jié)點(diǎn),然后將p1的值賦給p0->next,使得p0->next指向p1指向的變量。如果插入位置為第一個(gè)結(jié)點(diǎn)之前,則將p0賦給head,將p1賦給p0-&g

19、t;next。如果要插到表尾之后,應(yīng)將p0賦給p1->next,NULL賦給p0->next。最后再調(diào)用排序的函數(shù),將學(xué)生成績(jī)重新排序.</p><p><b>  N-S流程圖如下:</b></p><p>  4.10保存數(shù)據(jù)到文件函數(shù) void save(STUDENT *head)</p><p>  這是一個(gè)不返回值的有參

20、函數(shù),形參為“調(diào)用函數(shù)的指針”,可以把學(xué)生記錄保存在電腦上由自己任意命名的二進(jìn)制文件。</p><p><b>  N-S流程圖如下:</b></p><p>  4.11從文件讀數(shù)據(jù)函數(shù) STUDENT *load()</p><p>  這是一個(gè)不返回值的有參函數(shù),形參為“調(diào)用函數(shù)的指針”,根據(jù)輸入的文件地址進(jìn)行讀取。</p>

21、<p><b>  N-S流程圖如下:</b></p><p><b>  5.調(diào)試分析</b></p><p> ?。?)剛開始沒(méi)有那個(gè)初始化函數(shù),程序運(yùn)行后,沒(méi)有輸入任何數(shù)據(jù)就試得去執(zhí)行顯示功能,結(jié)果顯示的是一些亂碼!加入初始化函數(shù)后,這種現(xiàn)象也隨之消失。</p><p> ?。?)剛開始執(zhí)行輸入函數(shù),按學(xué)

22、號(hào)順序輸入十個(gè)學(xué)生的成績(jī),輸完后執(zhí)行顯示功能,學(xué)生成績(jī)記錄是按學(xué)號(hào)的反順序顯示的,試著在其中增加一些語(yǔ)句,希望能把學(xué)號(hào)按正常順序顯示,但暫時(shí)沒(méi)有成功,所以在輸入成績(jī)時(shí)只能按學(xué)號(hào)反順序輸入,最后就按學(xué)號(hào)正常順序輸出了。</p><p> ?。?)剛開始時(shí),先把成績(jī)按平均分排序,再插入一個(gè)學(xué)生的成績(jī),執(zhí)行顯示功能,雖然插入的學(xué)生的成績(jī)能正常插入,但該學(xué)生的名次為0。后來(lái),在插入成績(jī)之后,調(diào)用排序函數(shù),把所有成績(jī)重新排

23、序一次。</p><p>  (4)在輸入函數(shù)中設(shè)了一個(gè)無(wú)限循環(huán),可以輸入無(wú)數(shù)個(gè)學(xué)生的成績(jī)信息,當(dāng)學(xué)號(hào)為0的時(shí)候則停止輸入。</p><p> ?。?)輸入太多個(gè)學(xué)生的成績(jī)時(shí),屏幕顯示不能控制為一頁(yè)一頁(yè)顯示,所以為了方便起見,不要輸入太多記錄,十七左右為最佳。</p><p>  (6)在沒(méi)有輸入任何信息的情況下,去執(zhí)行排序功能,最后顯示有一個(gè)記錄,學(xué)號(hào)、姓名為空白

24、,成績(jī)都為0,名次為1。</p><p>  (7)在輸入選項(xiàng)時(shí)不能輸入字母,否則會(huì)死循環(huán),建議不要亂輸字母。</p><p><b>  6.總結(jié)</b></p><p>  C語(yǔ)言上學(xué)期學(xué)的不是很透徹,所以在這次實(shí)踐周的過(guò)程中補(bǔ)習(xí)了好多知識(shí),我真切的了解到C語(yǔ)言的特點(diǎn),簡(jiǎn)潔、緊湊、靈活。</p><p>  這次的編

溫馨提示

  • 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ù)僅提供信息存儲(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)論