版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)--c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)———學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)_學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理
- c語(yǔ)言課程設(shè)計(jì)--- 學(xué)生成績(jī)管理
評(píng)論
0/150
提交評(píng)論