2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩34頁(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>  C語(yǔ)言課程設(shè)計(jì)任務(wù)書</p><p>  題 目 學(xué)生成績(jī)管理系統(tǒng) </p><p>  起訖日期 2006年7月3日 至2006年8月6日</p><p>  學(xué)生姓名  專業(yè)班級(jí) </p><p>  所在院系         &

2、lt;/p><p>  指導(dǎo)教師 職稱  教授   </p><p>  所在單位 軟件學(xué)院 </p><p>  2006年7月 1 日</p><p><b>  任務(wù)及要求:</b></p><p>  設(shè)計(jì)(研究

3、)內(nèi)容和要求(包括設(shè)計(jì)或研究?jī)?nèi)容、主要指標(biāo)與技術(shù)參數(shù),根據(jù)課題性質(zhì)對(duì)學(xué)生提出具體要求)</p><p>  研究?jī)?nèi)容:學(xué)生成績(jī)管理 </p><p><b>  任務(wù)和要求:</b></p><p> ?。?).學(xué)習(xí)C語(yǔ)言基礎(chǔ)知識(shí),掌握C語(yǔ)言編程和程序調(diào)試的基本技能。</p><p>  (2).對(duì)指導(dǎo)教師下達(dá)的題目進(jìn)行

4、系統(tǒng)分析。</p><p>  (3).根據(jù)分析結(jié)果完成系統(tǒng)設(shè)計(jì),包括詳細(xì)設(shè)計(jì)部分內(nèi)容。</p><p> ?。?).編程:在計(jì)算機(jī)上實(shí)現(xiàn)題目的代碼實(shí)現(xiàn)。</p><p> ?。?).完成對(duì)該系統(tǒng)的測(cè)試和調(diào)試。</p><p>  (6).寫出用戶使用說(shuō)明報(bào)告。</p><p>  (7). 提交課程設(shè)計(jì)報(bào)告。<

5、/p><p><b>  (8).指標(biāo):</b></p><p>  要求完成課程設(shè)計(jì)報(bào)告4千字以上(約二、三十頁(yè))</p><p>  軟件系統(tǒng)300行語(yǔ)句以上</p><p>  用戶使用說(shuō)明書(3千漢字以上)</p><p>  2.原始依據(jù)(包括設(shè)計(jì)或論文的工作基礎(chǔ)、研究條件、應(yīng)用環(huán)境、工作目

6、的等)</p><p>  了解C語(yǔ)言的基礎(chǔ)知識(shí),有一定的語(yǔ)言編程基礎(chǔ),能夠熟練運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì)。通過(guò)用C語(yǔ)言完成的題目,提高用C語(yǔ)言解決實(shí)際問(wèn)題的能力。</p><p><b>  3.參考文獻(xiàn)</b></p><p>  [1] 黃明等.21世紀(jì)進(jìn)階輔導(dǎo) C語(yǔ)言程序設(shè)計(jì).大連理工大學(xué)出版社,2005</p><p&

7、gt;  [2] 馬靖善等.C語(yǔ)言程序設(shè)計(jì).清華大學(xué)出版社,2005</p><p>  [3] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第二版).北京:高等教育出版社,2002</p><p><b>  指導(dǎo)教師簽字:</b></p><p><b>  教研室主任簽字:</b></p><p>  2006年

8、 7月1日</p><p><b>  摘 要</b></p><p>  利用所學(xué)過(guò)的C語(yǔ)言知識(shí),采用結(jié)構(gòu)化程序設(shè)計(jì)方法,設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理檔案程序,該程序的主要功能為: 0將表格初始化,1建立學(xué)生成績(jī)表格,2從表中刪除原有紀(jì)錄,3顯示單鏈表中所有記錄,4按照姓名查找紀(jì)錄,5計(jì)算所有學(xué)生的總分和均分,6插入紀(jì)錄到表中,7復(fù)制文件,8將所有學(xué)生成績(jī)排序,9分類

9、合計(jì),10退出。該系統(tǒng)功能完善,界面友好,短小經(jīng)用,使用方便,即使是不熟悉計(jì)算機(jī)也可以自如的使用該系統(tǒng)。通過(guò)上機(jī)調(diào)試運(yùn)行與模擬操作,完成對(duì)學(xué)生成績(jī)的管理,減輕管理人員的勞動(dòng)強(qiáng)度,提高一個(gè)學(xué)校的自動(dòng)化管理水平。</p><p>  關(guān)鍵詞:學(xué)生成績(jī)管理;結(jié)構(gòu)化程序設(shè)計(jì);調(diào)試運(yùn)行;功能完善</p><p><b>  目 錄</b></p><p>

10、;<b>  第一章 概述1</b></p><p><b>  1.1項(xiàng)目背景1</b></p><p><b>  1.2工作環(huán)境1</b></p><p>  第二章 系統(tǒng)分析2</p><p>  2.1系統(tǒng)需求分析2</p><p>

11、  2.2 系統(tǒng)功能分析2</p><p>  2.2.1模塊實(shí)現(xiàn)算法2</p><p>  2.2.2進(jìn)入主菜單。3</p><p>  2.2.3 建立學(xué)生表格3</p><p>  2.2.4從表中刪除原有紀(jì)錄3</p><p>  2.2.5顯示單鏈表中所有記錄3</p><p&

12、gt;  2.2.6按照姓名查找紀(jì)錄3</p><p>  2.2.7計(jì)算所有學(xué)生的總分和均分4</p><p>  2.2.8插入紀(jì)錄到表中4</p><p>  2.2.9復(fù)制文件4</p><p>  2.2.10將所有學(xué)生成績(jī)排序5</p><p>  2.2.11分類合計(jì):5</p>

13、<p>  2.2.12退出5</p><p>  第三章 總體設(shè)計(jì)6</p><p><b>  3.1軟件描述6</b></p><p><b>  3.2設(shè)計(jì)方法6</b></p><p><b>  3.3軟件結(jié)構(gòu)6</b></p>

14、<p>  3.4文件及函數(shù)組成7</p><p>  第五章 使用說(shuō)明10</p><p>  第六章 工作總結(jié)16</p><p>  參考文獻(xiàn)(參考書或論文或文章)17</p><p><b>  附錄 源代碼18</b></p><p><b>  第一章 概

15、述</b></p><p>  現(xiàn)今已步入高速發(fā)展的時(shí)代,電腦技術(shù)發(fā)展日新月異,時(shí)代潮流也不斷變革,競(jìng)爭(zhēng)越發(fā)激烈,時(shí)間就是金錢,但是就是在一些瑣碎的事上面浪費(fèi)了大量的時(shí)間,例如查詢資料之類.如果我們把浪費(fèi)的時(shí)間用于其他方面,勢(shì)必會(huì)有更大的收益.應(yīng)此需求,為使廣大教師掌握更多的時(shí)間,相應(yīng)的開(kāi)發(fā)出此軟件—學(xué)生成績(jī)管理軟件系統(tǒng).而編寫詳細(xì)設(shè)計(jì)說(shuō)明書是軟件開(kāi)發(fā)過(guò)程必不可少的部分,其目的是為了使開(kāi)發(fā)人員在完成概

16、要設(shè)計(jì)說(shuō)明書的基礎(chǔ)上完成概要設(shè)計(jì)規(guī)定的各項(xiàng)模塊的具體實(shí)現(xiàn)的設(shè)計(jì)工作。本軟件屬于綠色軟件, 適合任何層次的用戶, 因此本說(shuō)明書的預(yù)期讀者范圍相當(dāng)廣。</p><p><b>  1.1項(xiàng)目背景</b></p><p><b>  軟件名稱</b></p><p><b>  學(xué)生成績(jī)管理</b><

17、/p><p><b>  相關(guān)單位</b></p><p>  主要是學(xué)校用于學(xué)校的成績(jī)管理</p><p><b>  1.2工作環(huán)境</b></p><p>  A.一臺(tái)586 以上的微機(jī)及兼容</p><p>  B.內(nèi)存16MB(最好32MB內(nèi)存) </p>

18、<p>  C.VGA 彩顯一臺(tái)</p><p><b>  第二章 系統(tǒng)分析</b></p><p><b>  2.1系統(tǒng)需求分析</b></p><p>  隨著網(wǎng)絡(luò)經(jīng)濟(jì)時(shí)代的到來(lái),社會(huì)飛速的發(fā)展,人們的生活發(fā)生著日新月異的變化,高新技術(shù)正驅(qū)趕著人們生活的腳步,人們對(duì)工作生活的要求也日益提高,特別是計(jì)算機(jī)

19、的應(yīng)用及普及到經(jīng)濟(jì)和社會(huì)生活的各個(gè)領(lǐng)域。使原本的舊的管理方法越來(lái)越不適應(yīng)現(xiàn)在社會(huì)的發(fā)展。許多人還停留在以前的手工操作,隨著各個(gè)學(xué)校的規(guī)模增大,有關(guān)學(xué)生成績(jī)管理工作所涉及的數(shù)據(jù)量越來(lái)越大,有的學(xué)校不得不靠增加人力、物力來(lái)進(jìn)行學(xué)生成績(jī)管理,但手工管理具有效率底、,這大大地阻礙了人類經(jīng)濟(jì)的發(fā)展。為了適應(yīng)現(xiàn)代社會(huì)人們高度強(qiáng)烈的時(shí)間觀念,用計(jì)算機(jī)對(duì)學(xué)校學(xué)生成績(jī)進(jìn)行管理已逐步取代了傳統(tǒng)的管理方式。</p><p>  學(xué)生成

20、績(jī)查詢系統(tǒng)對(duì)學(xué)校加強(qiáng)學(xué)生成績(jī)管理有著極其重要的作用。由于各個(gè)大學(xué)都在持續(xù)擴(kuò)招,學(xué)生的數(shù)量日益龐大,傳統(tǒng)的手工成績(jī)管理不僅工作量大,而且容易出現(xiàn)問(wèn)題。從而需要對(duì)學(xué)生成績(jī)管理等工作方面提高精確度。</p><p>  經(jīng)過(guò)我對(duì)學(xué)校情況和師生需求的的具體分析,初步設(shè)計(jì)了一套有關(guān)“學(xué)生成績(jī)管理”的程序,希望可以幫助學(xué)校改善以往需求緊張的管理系統(tǒng),為廣大師生提供方便,節(jié)省時(shí)間,提高工作效率,從而樹(shù)立良好的辦學(xué)形象。<

21、/p><p><b>  學(xué)校具體需求分析</b></p><p>  學(xué)生:對(duì)各科成績(jī)的查詢及查看本班成績(jī)排名。</p><p>  老師:輸入并維護(hù)所教科目的學(xué)生成績(jī),計(jì)算本科的成績(jī)排名、本科成績(jī)?cè)诎嗌系呐琶?lt;/p><p>  班主任:輸入并維護(hù)本班的基本信息,對(duì)本班的各科成績(jī)匯總,計(jì)算各科成績(jī)的總分,排名,本班平均

22、分等需求。輸出學(xué)生的基本信息,各科的成績(jī)及各科成績(jī)的部分,各科成績(jī)的排名,總分的排名情況。</p><p>  教務(wù)處: 學(xué)校全體成員的信息管理,對(duì)考試科目,時(shí)間及對(duì)所考科目的編號(hào)等進(jìn)行具體的管理,并對(duì)任課老師,班主任等輸入的信息進(jìn)行存庫(kù),對(duì)學(xué)生的信息進(jìn)行必要的維護(hù),可打印學(xué)生的所有信息。</p><p>  2.2 系統(tǒng)功能分析</p><p>  在本章中,我使

23、用模塊等分析法進(jìn)行系統(tǒng)功能分析。</p><p>  2.2.1模塊實(shí)現(xiàn)算法,在進(jìn)入主菜單前,如圖2-1所示:</p><p>  2-1進(jìn)入主菜單模塊</p><p>  2.2.2進(jìn)入主菜單,此時(shí)流程在3.4軟件結(jié)構(gòu)會(huì)描述清楚。</p><p>  2.2.3 建立學(xué)生表格,算法實(shí)現(xiàn)模式,如圖2-2所示:</p><p

24、><b>  N返回主模塊</b></p><p>  Y </p><p><b>  N 返回主模塊</b></p><p><b>  Y</b></p><p><b>  Y任意鍵返回主模塊</b></p>

25、<p>  2-2建立學(xué)生表格模塊</p><p>  2.2.4從表中刪除原有紀(jì)錄模塊,算法,如圖2-3所示:</p><p><b>  N返回主模塊</b></p><p>  Y </p><p><b>  N 返回主模塊</b></p>

26、<p><b>  Y</b></p><p><b>  Y任意鍵返回主模塊</b></p><p>  2-3刪除原有紀(jì)錄模塊</p><p>  2.2.5顯示單鏈表中所有記錄模塊,算法,如圖3-4所示:</p><p><b>  N返回主模塊</b><

27、/p><p>  Y </p><p><b>  N 返回主模塊</b></p><p><b>  Y</b></p><p><b>  Y任意鍵返回主模塊</b></p><p><b>  2-4顯示紀(jì)錄模塊<

28、/b></p><p>  2.2.6按照姓名查找紀(jì)錄模塊,算法,如圖2-5所示:</p><p><b>  N返回主模塊</b></p><p>  Y </p><p><b>  N 返回主模塊</b></p><p><b> 

29、 Y</b></p><p><b>  Y任意鍵返回主模塊</b></p><p><b>  2-5查找模塊</b></p><p>  2.2.7計(jì)算所有學(xué)生的總分和均分模塊,算法,如圖2-6所示:</p><p><b>  N返回主模塊</b></p

30、><p>  Y </p><p><b>  Y任意鍵返回主模塊</b></p><p><b>  2-6計(jì)算模塊</b></p><p>  2.2.8插入紀(jì)錄到表中模塊,算法,如圖2-7所示:</p><p><b>  N返回主模塊<

31、;/b></p><p>  Y </p><p><b>  N 返回主模塊</b></p><p><b>  Y</b></p><p><b>  Y任意鍵返回主模塊</b></p><p><b>  2-

32、7插入紀(jì)錄模塊</b></p><p>  2.2.9復(fù)制文件模塊,算法,如圖2-8所示:</p><p><b>  N返回主模塊</b></p><p>  Y </p><p><b>  N 返回主模塊</b></p><p><

33、;b>  Y</b></p><p><b>  Y任意鍵返回主模塊</b></p><p><b>  2-8復(fù)制模塊</b></p><p>  2.2.10將所有學(xué)生成績(jī)排序模塊,算法,如圖2-9所示:</p><p><b>  N返回主模塊</b>&

34、lt;/p><p>  Y </p><p><b>  Y任意鍵返回主模塊</b></p><p><b>  2-9排序模塊</b></p><p>  2.2.11分類合計(jì)模塊,算法,如圖2-10所示:</p><p><b>  N返回主模

35、塊</b></p><p>  Y </p><p><b>  Y任意鍵返回主模塊</b></p><p>  2-10分類合計(jì)模塊</p><p>  2.2.12退出模塊,算法。</p><p><b>  第三章 總體設(shè)計(jì)</b>&l

36、t;/p><p><b>  3.1軟件描述</b></p><p>  該程序的主要功能為: 0將表格初始化,1建立學(xué)生成績(jī)表格,2從表中刪除原有紀(jì)錄,3顯示單鏈表中所有記錄,4按照姓名查找紀(jì)錄, 5計(jì)算所有學(xué)生的總分和均分,6插入紀(jì)錄到表中,7復(fù)制文件,8將所有學(xué)生成績(jī)排序, 9分類合計(jì),10退出。另外,該程序主要調(diào)用了:I/O函數(shù)(stdio.h),其他說(shuō)明(std

37、ib.h),字符串函數(shù)(string.h),屏幕操作函數(shù)(conio.h),內(nèi)存操作函數(shù)(mem.h),字符操作函數(shù)(ctype.h),動(dòng)態(tài)地址分配函數(shù)(alloc.h),定義常數(shù)。</p><p><b>  3.2設(shè)計(jì)方法</b></p><p>  本軟件采用傳統(tǒng)的軟件開(kāi)發(fā)生命周期的方法,采用自定向下,逐步求精的結(jié)構(gòu)化的軟件設(shè)計(jì)方法。</p>&l

38、t;p><b>  3.3軟件結(jié)構(gòu)</b></p><p>  根據(jù)以上模塊可得到總體結(jié)構(gòu)系統(tǒng)才層次圖,如圖3-1所示:</p><p>  3-1總體結(jié)構(gòu)系統(tǒng)層次圖</p><p>  3.4文件及函數(shù)組成</p><p><b>  如表1-1所示:</b></p><

39、p><b>  表3-1 主要函數(shù)</b></p><p>  1.顯示內(nèi)存動(dòng)態(tài)記錄數(shù)據(jù)函數(shù)</p><p>  函數(shù)原型:void create()</p><p>  功能:顯示內(nèi)存里的記錄</p><p>  參數(shù):記錄數(shù)組和記錄條數(shù)</p><p>  要求:報(bào)告是否有記錄及記錄成績(jī)

40、內(nèi)容</p><p><b>  2.輸入信息函數(shù)</b></p><p>  函數(shù)原型:int inputs(char *prompt, char *s, int count)</p><p><b>  功能:添加記錄</b></p><p><b>  參數(shù):結(jié)構(gòu)體數(shù)組.</b

41、></p><p>  要求: 如果內(nèi)存已經(jīng)存在記錄.則將新記錄追加在記錄尾部,如果還沒(méi)有建立記錄鏈表,則建立鏈表并從尾部開(kāi)始追加記錄.</p><p><b>  3.刪除記錄函數(shù)</b></p><p>  函數(shù)原型:int delete(STUDENT *h)</p><p>  功能:刪除內(nèi)存鏈表中的指定結(jié)

42、點(diǎn)</p><p>  參數(shù):記錄數(shù)組和記錄條數(shù),成績(jī)</p><p><b>  要求:給出相關(guān)信息</b></p><p>  4.按序號(hào)顯示記錄函數(shù)</p><p>  函數(shù)原型:void print(STUDENT *h)</p><p>  功能:根據(jù)用戶需求輸出記錄</p>

43、<p>  要求:判斷內(nèi)存中記錄的序號(hào)與輸入的是否相等,如果相等則輸出,否則關(guān)閉文件</p><p><b>  5.查找函數(shù)</b></p><p>  函數(shù)原型:int search()</p><p>  功能:根據(jù)用戶需要輸出記錄</p><p>  參數(shù):記錄數(shù)組和記錄成績(jī)以及姓名s</p&

44、gt;<p>  要求:判斷內(nèi)存中記錄的名字與輸入的是否相等,如果相等則輸出,否則提前結(jié)束</p><p><b>  6.計(jì)算函數(shù)</b></p><p>  函數(shù)原型:int Computer(STUDENT *h)</p><p>  功能:根據(jù)用戶需要計(jì)算總分和學(xué)生平均成績(jī)</p><p><

45、b>  參數(shù):記錄數(shù)和計(jì)算</b></p><p>  要求:內(nèi)存中記錄數(shù)進(jìn)行相加和平均數(shù)運(yùn)算</p><p><b>  7.插入記錄函數(shù)</b></p><p>  函數(shù)原型:int insert(STUDENT *h)</p><p>  功能:根據(jù)用戶指定將信息插入特定位置</p>

46、<p>  參數(shù):結(jié)構(gòu)體數(shù)組和記錄數(shù)</p><p><b>  要求:輸入信息</b></p><p><b>  8.復(fù)制文件函數(shù)</b></p><p>  函數(shù)原型:void copy()</p><p><b>  功能:復(fù)制記錄</b></p>

47、;<p>  要求:判斷所要文件是否能打開(kāi),打不開(kāi)則退出,能打開(kāi)則讀出文件中記錄并復(fù)制</p><p><b>  9.排序函數(shù)</b></p><p>  函數(shù)原型:void sort(STUDENT *h)</p><p>  功能:將記錄進(jìn)行排序</p><p>  參數(shù):結(jié)構(gòu)體數(shù)組和記錄數(shù)</

48、p><p>  要求:比較內(nèi)存中記錄,判斷大小并進(jìn)行交換,交換后顯示排序成功</p><p><b>  10.分類合計(jì)函數(shù)</b></p><p>  函數(shù)原型:void Total(STUDENT *h)</p><p><b>  功能:分類存放 </b></p><p>

49、  參數(shù):結(jié)構(gòu)體數(shù)組和記錄數(shù)</p><p>  要求:在內(nèi)存中分類存放各班不同的記錄數(shù)和計(jì)算后得到的記錄數(shù)</p><p><b>  11.菜單函數(shù)</b></p><p>  函數(shù)原型:menu_select()</p><p><b>  功能:控制程序</b></p><

50、;p>  要求:管理菜單命令并完成初始化</p><p><b>  第四章 程序調(diào)試</b></p><p>  在設(shè)計(jì)該程序的時(shí)候我采用了結(jié)構(gòu)化程序方法編輯,并在源代碼的基礎(chǔ)上添加了中文注釋。但是在該系統(tǒng)的編寫過(guò)程中仍然有許多錯(cuò)誤,主要的有:注釋文字的排版,定義錯(cuò)誤,句式的語(yǔ)法錯(cuò)誤。</p><p>  在完善程序時(shí),我將源代碼先打印

51、下來(lái)反復(fù)的捉摸和研究,力圖在上機(jī)運(yùn)行時(shí)先改正一些低級(jí)錯(cuò)誤.如缺少”;”之類.在仔細(xì)檢查之后,將源代碼上機(jī)調(diào)試—進(jìn)行編譯,在編譯和連接過(guò)程中發(fā)現(xiàn)錯(cuò)誤,屏幕上顯示了出錯(cuò)信息,根據(jù)提示找到出錯(cuò)的位置,加以改正……直到順利顯示我預(yù)期的。</p><p>  1、首先,在本次調(diào)試過(guò)程中我碰到了在上機(jī)前根本沒(méi)有想到的錯(cuò)誤:在注釋的時(shí)候,注釋文字應(yīng)寫在一起中間不能有中斷,不能再其中包含c語(yǔ)言的語(yǔ)句。否則會(huì)引起錯(cuò)誤,例如格式不正

52、確或是多了字符等。</p><p>  2、缺少變量定義或是定義位置不正確;</p><p>  由于該程序相對(duì)來(lái)講稍有些長(zhǎng),前后有些變量很難聯(lián)系起來(lái),但是在錯(cuò)誤信息的提示下一般還是很是可以找到。不過(guò)需要注意的是在定義的時(shí)候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。為減少這樣的錯(cuò)誤我后來(lái)還是用不同的變量名來(lái)表示,結(jié)果引起的那些錯(cuò)誤解決了。<

53、;/p><p>  3、句式的語(yǔ)法錯(cuò)誤;</p><p>  大多的語(yǔ)法錯(cuò)誤在通過(guò)書本參考下能夠修改。主要是平時(shí)看書不仔細(xì)、不太注意而產(chǎn)生的。如沒(méi)有注意具體數(shù)據(jù)使用是有一定的范圍限定;過(guò)分重視分號(hào)的重要性而在for、if、while語(yǔ)句中畫蛇添足加分號(hào);在使用文件的時(shí)候忘記將文件先打開(kāi),對(duì)打開(kāi)的方式與使用的情況不太注意而造成不匹配;還有漏掉形參的定義是值不能傳遞等等。這些語(yǔ)法錯(cuò)誤有信息框的提示

54、一般是能夠排除的。</p><p>  編譯、連接的成功并不意味著程序的最終成功。</p><p>  邏輯上的錯(cuò)誤機(jī)器不易檢查出來(lái),這時(shí)需要對(duì)數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯(cuò)誤的查找是最難的,需要編程序的人有相當(dāng)?shù)哪托暮图?xì)心去把問(wèn)題找出來(lái)。這也是本次程序編輯過(guò)程中碰到的最大的難題。往往運(yùn)行之后得不到另人滿意的結(jié)果,此時(shí)解決的方法一則可以用“分段檢查”的方法,在程序的不同位置設(shè)幾個(gè)printf函數(shù)

55、語(yǔ)句,輸出有關(guān)變量的值,逐段往下檢查,或用debug進(jìn)行調(diào)試,對(duì)檢查出的錯(cuò)誤進(jìn)行修改,當(dāng)調(diào)試完畢將設(shè)置的printf都刪去。若在程序中找不到問(wèn)題,則再來(lái)考慮算法是否邏輯嚴(yán)謹(jǐn),再進(jìn)行修改。如此循環(huán)往復(fù),直到最后程序運(yùn)行成功。在本次程序編輯過(guò)程中,我就是常遇到編譯能通過(guò),能夠運(yùn)行程序,但是總在輸入、刪除等操作完之后再想去看數(shù)據(jù)文件中存在的數(shù)據(jù)記錄的時(shí)候,卻一條記錄也顯示不出來(lái),我懷疑是哪個(gè)對(duì)方對(duì)n變量的定義或使用出錯(cuò)了,于是在每個(gè)主要函數(shù)的

56、操作過(guò)程中添加了printf語(yǔ)句用來(lái)顯示n的變化,例如在執(zhí)行某個(gè)函數(shù)前添加插入語(yǔ)句顯示n的起始值,在執(zhí)行完該個(gè)函數(shù)后再添加插入語(yǔ)句顯示此時(shí)n的結(jié)果值,觀察n的變化是否正確,如果錯(cuò)誤了,也就說(shuō)明該函數(shù)編寫過(guò)程有錯(cuò)。諸如這樣的調(diào)試方法,不斷縮小檢查范圍,最后將錯(cuò)誤找到,進(jìn)行修</p><p><b>  第五章 使用說(shuō)明</b></p><p>  首先進(jìn)入界面時(shí),根據(jù)屏

57、幕上的提示press any key enter menu……即是按任意鍵均可進(jìn)入主菜單,考慮到學(xué)生成績(jī)大多由老師輸入和調(diào)用,所以這里對(duì)使用者沒(méi)有要求也就沒(méi)有添加密碼的必要。</p><p>  在進(jìn)入主菜單時(shí)可以看到這樣的畫面,如圖4-1所示:</p><p><b>  4-1主菜單</b></p><p>  從0到10共有11個(gè)功能鍵。

58、此時(shí)應(yīng)該根據(jù)提示”Enter your choice (0-10):”選擇自己需要用的功能,例如:在提示后按1再回車(Enter鍵)的話就會(huì)進(jìn)入編輯。</p><p>  在主菜單上的11個(gè)功能分別是:</p><p>  0 init list將表格初始化:使用0后,系統(tǒng)會(huì)將原有的一切記錄全部刪去,所有的恢復(fù)到位使用時(shí)。一切在主菜單上完成。</p><p>  1

59、 Enter list建立學(xué)生成績(jī)表格:使用1后,在界面上會(huì)要求你輸入學(xué)號(hào)no,姓名name 和成績(jī)score1、2、3。如果已經(jīng)輸入完畢只要在下一個(gè)no后輸入!再按回車鍵即可,此時(shí)就會(huì)回到主菜單,如圖4-2所示:</p><p><b>  4-2輸入界面</b></p><p>  2 Delete a record from list從表中刪除原有紀(jì)錄:使用2

60、后,會(huì)進(jìn)入子界面,提示語(yǔ)會(huì)告訴你輸入你要?jiǎng)h除的信息的學(xué)生的學(xué)號(hào),然后會(huì)出現(xiàn)“ list no ** student”這就表示刪除成功,如果沒(méi)有這個(gè)學(xué)生的信息則會(huì)跳過(guò)步執(zhí)行但是還是會(huì)輸出上述的句子,如圖4-3所示:</p><p><b>  4-3顯示刪除界面</b></p><p>  3 print list顯示單鏈表中所有記錄:如果是在執(zhí)行完5以后,那么總分和均

61、分一欄就不會(huì)空白,而是會(huì)輸出計(jì)算后的數(shù)據(jù),如圖4-4所示:</p><p><b>  4-4打印數(shù)出界面</b></p><p>  4 Search record from list按照姓名查找紀(jì)錄:根據(jù)提示”please enter students’name for search”輸入學(xué)生的拼音拼寫的姓名,如圖4-5所示:</p><p&g

62、t;<b>  4-5查找界面</b></p><p>  5 compute the score計(jì)算所有學(xué)生的總分和均分:按5后,系統(tǒng)會(huì)自動(dòng)計(jì)算然后輸出結(jié)果,如圖4-6所示:</p><p><b>  4-6計(jì)算界面</b></p><p>  6 insert record to list插入紀(jì)錄到表中:使用6 時(shí),

63、要輸入你想插到哪一個(gè)學(xué)生前,只需輸入他的學(xué)號(hào)。然后,在提示語(yǔ)的提醒下輸入要插入學(xué)生的學(xué)號(hào),姓名和成績(jī)。然后再進(jìn)入打印界面,此時(shí)可以看到已經(jīng)將09插入到02 前。如圖4-7所示:</p><p><b>  4-7插入后界面</b></p><p>  7 copy the file to new file復(fù)制文件:執(zhí)行完7后,會(huì)根據(jù)使用者輸入的地址和命名生成文本文檔存

64、儲(chǔ)。</p><p>  8 sort to make new file將所有學(xué)生成績(jī)排序:在完成后,會(huì)出現(xiàn)”sort success!”</p><p>  如果想看結(jié)果的話,可以在執(zhí)行完這一步后在執(zhí)行3,這樣就可以看到排序后的結(jié)果。</p><p>  9 total on nomber分類合計(jì),如圖4-9所示:</p><p><

65、b>  4-9分類合計(jì)界面</b></p><p>  10 Quit退出模塊,在主菜單上實(shí)行。如圖4-10所示:</p><p><b>  4-10退出界面</b></p><p><b>  第六章 工作總結(jié)</b></p><p>  在這次的編程過(guò)程中,我不僅在C語(yǔ)言的學(xué)

66、習(xí)上有了很大的提高而且也培養(yǎng)了我的毅力、耐心、決心和學(xué)習(xí)能力。短短的兩周,我自己都不敢相信可以弄好一個(gè)對(duì)我而言一個(gè)大而功能相對(duì)而言還可以的程序。</p><p>  但是不得不說(shuō)在這個(gè)程序中仍然有許多的缺陷,諸如:計(jì)算均分時(shí)只能計(jì)算三門的總均分;無(wú)法將文件以文檔或是表格形式存儲(chǔ);排序、刪除等必須以一種形式先查找學(xué)生信息然后再實(shí)行操作并不多樣化??傊谶@個(gè)過(guò)程中我還面對(duì)了程序無(wú)法執(zhí)行,改錯(cuò)時(shí)怎么也找不到錯(cuò)誤在哪里

67、的困境;但我還是在老師和同學(xué)們的幫助下完成了這個(gè)程序。</p><p>  可以說(shuō)我的心情是相當(dāng)?shù)募?dòng),相信有了這樣的經(jīng)歷后我能夠更加?jì)故斓拿鎸?duì)各種情況。</p><p>  注:課程設(shè)計(jì)以來(lái)的感想、心得、經(jīng)驗(yàn)、收獲、有待改進(jìn)的方面。不超過(guò)一頁(yè)。</p><p>  參考文獻(xiàn)(參考書或論文或文章)</p><p>  [1] 黃明等.21世紀(jì)

68、進(jìn)階輔導(dǎo) C語(yǔ)言程序設(shè)計(jì).大連理工大學(xué)出版社,2005:45—208</p><p>  [2] 馬靖善等.C語(yǔ)言程序設(shè)計(jì).清華大學(xué)出版社,2005:23—145</p><p><b>  附錄 源代碼</b></p><p>  #include "stdio.h" </p><p>  #

69、include "stdlib.h" </p><p>  #include "string.h" </p><p>  #include "conio.h" </p><p>  #include "mem.h" </p><p>  #inclu

70、de "ctype.h" </p><p>  #include "alloc.h" </p><p>  #define N 3 </p><p>  typedef struct z1 </p><p><b>  {</b></p><

71、p>  char no[11];</p><p>  char name[20];</p><p>  int score[N];</p><p>  float sum;</p><p>  float average;</p><p>  int order;</p><p>  st

72、ruct z1 *next;</p><p><b>  }STUDENT;</b></p><p>  STUDENT *init(); </p><p>  STUDENT *create(); </p><p>  STUDENT *delete(STUDENT *h); </p>

73、<p>  void print(STUDENT *h); </p><p>  void search(STUDENT *h); </p><p>  void save(STUDENT *h); </p><p>  STUDENT *load(); </p><p>  void compute

74、r(STUDENT *h); </p><p>  STUDENT *insert(STUDENT *h); </p><p>  void append(); </p><p>  void copy(); </p><p>  STUDENT *sort(STUDENT *h); &

75、lt;/p><p>  void total(STUDENT *h); </p><p>  int menu_select(); </p><p><b>  main()</b></p><p><b>  {</b></p><p><

76、;b>  int i;</b></p><p>  STUDENT *head; </p><p>  head=init(); </p><p>  clrscr(); </p><p>  for(;;) </p><p><b

77、>  {</b></p><p>  switch(menu_select()) </p><p>  case 0:head=init();break; </p><p>  case 1:head=create();break; </p><p>  case 2:head=delete(head);break;

78、 </p><p>  case 3:print(head);break; </p><p>  case 4:search(head);break;</p><p>  case 5:computer(head);break; </p><p>  case 6:head=insert(head); break; </p>

79、;<p>  case 7:copy();break; </p><p>  case 8:head=sort(head);break; </p><p>  case 9:total(head);break; </p><p>  case 10:exit(0); </p><p><b> 

80、 }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  menu_select()</p><p><b>  {</b></p><p>  char *menu[]={"

81、***************MENU***************", </p><p>  " 0. init list", </p><p>  " 1. Enter list", </p><p>  " 2. Delete a record from list", </

82、p><p>  " 3. print list ", </p><p>  " 4. Search record on name", </p><p>  " 5. compute the score", </p><p>  " 6. insert rec

83、ord to list ", </p><p>  " 7. copy the file to new file", /*復(fù)制文件*/</p><p>  " 8. sort to make new file", /*排序*/</p><p>  " 9. total on nomber&quo

84、t;, /*分類合計(jì)*/</p><p>  " 10. Quit"}; /*退出*/</p><p>  char s[3]; </p><p>  int c,i; </p><p>  gotoxy(1,25); </p><

85、p>  printf("press any key enter menu......\n"); </p><p>  getch(); </p><p>  clrscr(); </p><p>  gotoxy(1,1); <

86、/p><p>  textcolor(BLUE); </p><p>  textbackground(WHITE); </p><p>  gotoxy(10,2); </p><p>  putch(0xc9); </p><p>  for(i=1;i<44;i++)<

87、;/p><p>  putch(0xcd); </p><p>  putch(0xbb); </p><p>  for(i=3;i<20;i++)</p><p><b>  {</b></p><p>  gotoxy(10,i);putch(0xba); &l

88、t;/p><p>  gotoxy(54,i);putch(0xba);</p><p>  } /*輸出右垂直線*/</p><p>  gotoxy(10,20);putch(0xc8); </p><p>  for(i=1;i<44;i++)</p><p>  putch(0xcd); &l

89、t;/p><p>  putch(0xbc); </p><p>  window(11,3,53,19); </p><p>  clrscr(); </p><p>  for(i=0;i<16;i++) </p><p><b>

90、;  {</b></p><p>  gotoxy(10,i+1);</p><p>  cprintf("%s",menu[i]);</p><p><b>  }</b></p><p>  textbackground(GREEN); </p><p>  

91、window(1,1,80,25); </p><p>  gotoxy(10,21); </p><p><b>  do{</b></p><p>  printf("\n Enter you choice(0~10):"); </p><p>  scanf(&q

92、uot;%s",s); </p><p>  c=atoi(s); </p><p>  }while(c<0||c>10); </p><p>  return c; </p><p><b>  }</b></p>

93、<p>  STUDENT *init()</p><p><b>  {</b></p><p>  return NULL;</p><p><b>  }</b></p><p>  STUDENT *create()</p><p><b> 

94、 {</b></p><p>  int i; int s;</p><p>  STUDENT *h=NULL,*info; </p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  info=(STUD

95、ENT *)malloc(sizeof(STUDENT)); </p><p>  if(!info) </p><p><b>  {</b></p><p>  printf("\nout of memory"); </p><p>  return NULL; <

96、/p><p><b>  }</b></p><p>  inputs("enter no:",info->no,11); </p><p>  if(info->no[0]=='!') break; </p><p>  inputs("enter stu

97、dents' name:",info->name,20);</p><p>  printf("please input %d score \n",N); </p><p>  s=0; </p><p>  for(i=0;i<N;i++) {</p><p&

98、gt;<b>  do{</b></p><p>  printf("score%d:",i+1); </p><p>  scanf("%d",&info->score[i]); </p><p>  if(info->score[i]>100||info->

99、score[i]<0) </p><p>  printf("Data is bad ,repeat input\n"); </p><p>  }while(info->score[i]>100||info->score[i]<0);</p><p>  s=s+info->score[i]; <

100、/p><p><b>  }</b></p><p>  info->sum=s; </p><p>  info->average=(float)s/N; </p><p>  info->order=0; </p><p>  info->next=h;

101、</p><p>  h=info; </p><p><b>  }</b></p><p>  return(h); </p><p><b>  }</b></p><p>  inputs(char *prompt, char *s, int count)&l

102、t;/p><p><b>  {</b></p><p>  char p[255];</p><p><b>  do{</b></p><p>  printf(prompt); </p><p>  scanf("%s",p); </p>

103、<p>  if(strlen(p)>count)printf("\n too long! \n"); </p><p>  }while(strlen(p)>count);</p><p>  strcpy(s,p); </p><p><b>  }</b></p><p&g

104、t;  void print(STUDENT *h)</p><p><b>  {</b></p><p>  int i=0; </p><p>  STUDENT *p; </p><p>  clrscr(); </p><p><b>  p=h; &l

105、t;/b></p><p>  printf("\n\n\n****************************STUDENT********************************\n");</p><p>  printf("|Rec|No | Name | Sc1| Sc2| Sc3| Sum |

106、 Ave |Order|\n");</p><p>  printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");</p><p>  while(p!=NULL)</p><p><b>  {</b>&

107、lt;/p><p><b>  i++;</b></p><p>  printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],</p><p>  p

108、->score[2],p->sum,p->average,p->order);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("**********************************end*****************

109、****************\n");</p><p><b>  }</b></p><p>  STUDENT *delete(STUDENT *h)</p><p><b>  {</b></p><p>  STUDENT *p,*q; </p><p&g

110、t;  char s[11]; </p><p>  clrscr(); </p><p>  printf("please deleted no\n"); </p><p>  scanf("%s",s); </p><p>  q=p=h; </p>

111、<p>  while(strcmp(p->no,s)&&p!=NULL) </p><p><b>  {</b></p><p>  q=p; </p><p>  p=p->next; </p><p><b>  }</b><

112、;/p><p>  if(p==NULL) </p><p>  printf("\nlist no %s student\n",s);</p><p>  else </p><p><b>  {</b></p><p>  printf("*****

113、************************have found***************************\n");</p><p>  printf("|No | Name | Sc1| Sc2| Sc3| Sum | Ave |Order|\n");</p><p>  printf("|

114、----------|---------------|----|----|----|--------|-------|-----|\n");</p><p>  printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,</p><p>  p->name,p->sco

115、re[0],p->score[1],p->score[2],p->sum,</p><p>  p->average,p->order);</p><p>  printf("********************************end*******************************\n");</p>

116、<p>  getch(); </p><p>  if(p==h) </p><p>  h=p->next; </p><p><b>  else</b></p><p>  q->next=p->next; </p><p>  free(

117、p); </p><p>  printf("\n have deleted No %s student\n",s);</p><p>  printf("Don't forget save\n"); </p><p><b>  }</b></p><p&g

118、t;  return(h); </p><p><b>  }</b></p><p>  void search(STUDENT *h)</p><p><b>  {</b></p><p>  STUDENT *p; </p><p>  char s[1

119、5]; </p><p>  clrscr(); </p><p>  printf("Please enter students' name for search\n");</p><p>  scanf("%s",s); </p><p><b>  p=h; &

120、lt;/b></p><p>  while(strcmp(p->name,s)&&p!=NULL) </p><p>  p=p->next; </p><p>  if(p==NULL) </p><p>  printf("\nlist no %s student\n&q

121、uot;,s); </p><p>  else </p><p><b>  {</b></p><p>  printf("\n\n*****************************havefound***************************\n");</p>&l

122、t;p>  printf("|No | Name | Sc1| Sc2| Sc3| Sum | Ave |Order|\n");</p><p>  printf("|----------|---------------|----|----|----|--------|-------|-----|\n");</p>

123、<p>  printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,</p><p>  p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);</p>

124、<p>  printf("********************************end*******************************\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  STUDENT *i

125、nsert(STUDENT *h)</p><p><b>  {</b></p><p>  STUDENT *p,*q,*info; </p><p>  char s[11]; </p><p><b>  int s1,i;</b></p><p>  printf(

126、"please enter location before the no\n");</p><p>  scanf("%s",s); </p><p>  printf("\nplease new record\n"); </p><p>  info=(STUDENT *)malloc(siz

127、eof(STUDENT)); </p><p><b>  if(!info)</b></p><p><b>  {</b></p><p>  printf("\nout of memory"); </p><p>  return NULL; &

128、lt;/p><p><b>  }</b></p><p>  inputs("enter no:",info->no,11); </p><p>  inputs("enter name:",info->name,15); </p><p>  printf("

129、please input %d score \n",N); </p><p><b>  s1=0; </b></p><p>  for(i=0;i<N;i++) </p><p><b>  {</b></p><p>  do{ </p>&

130、lt;p>  printf("score%d:",i+1);</p><p>  scanf("%d",&info->score[i]);</p><p>  if(info->score[i]>100||info->score[i]<0)</p><p>  printf(&quo

131、t;bad data,repeat input\n");</p><p>  }while(info->score[i]>100||info->score[i]<0);</p><p>  s1=s1+info->score[i]; </p><p><b>  }</b></p>&l

132、t;p>  info->sum=s1; </p><p>  info->average=(float)s1/N; </p><p>  info->order=0; </p><p>  info->next=NULL; </p><p>  p=h;

133、 </p><p>  q=h; </p><p>  while(strcmp(p->no,s)&&p!=NULL) </p><p><b>  {</b></p><p>  q=p; </p><p>  p

134、=p->next; </p><p><b>  }</b></p><p>  if(p==NULL) </p><p>  if(p==h) </p><p><b>  h=info; </b></p><p><b&

135、gt;  else</b></p><p>  q->next=info; </p><p><b>  else</b></p><p>  if(p==h) </p><p><b>  {</b></p><p>  info->next=

溫馨提示

  • 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)論