版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> C語言課程設(shè)計任務(wù)書</p><p> 題 目 學(xué)生成績管理系統(tǒng) </p><p> 起訖日期 2006年7月3日 至2006年8月6日</p><p> 學(xué)生姓名 專業(yè)班級 </p><p> 所在院系 &
2、lt;/p><p> 指導(dǎo)教師 職稱 教授 </p><p> 所在單位 軟件學(xué)院 </p><p> 2006年7月 1 日</p><p><b> 任務(wù)及要求:</b></p><p> 設(shè)計(研究
3、)內(nèi)容和要求(包括設(shè)計或研究內(nèi)容、主要指標(biāo)與技術(shù)參數(shù),根據(jù)課題性質(zhì)對學(xué)生提出具體要求)</p><p> 研究內(nèi)容:學(xué)生成績管理 </p><p><b> 任務(wù)和要求:</b></p><p> ?。?).學(xué)習(xí)C語言基礎(chǔ)知識,掌握C語言編程和程序調(diào)試的基本技能。</p><p> ?。?).對指導(dǎo)教師下達(dá)的題目進(jìn)行
4、系統(tǒng)分析。</p><p> (3).根據(jù)分析結(jié)果完成系統(tǒng)設(shè)計,包括詳細(xì)設(shè)計部分內(nèi)容。</p><p> (4).編程:在計算機(jī)上實(shí)現(xiàn)題目的代碼實(shí)現(xiàn)。</p><p> ?。?).完成對該系統(tǒng)的測試和調(diào)試。</p><p> ?。?).寫出用戶使用說明報告。</p><p> (7). 提交課程設(shè)計報告。<
5、/p><p><b> (8).指標(biāo):</b></p><p> 要求完成課程設(shè)計報告4千字以上(約二、三十頁)</p><p> 軟件系統(tǒng)300行語句以上</p><p> 用戶使用說明書(3千漢字以上)</p><p> 2.原始依據(jù)(包括設(shè)計或論文的工作基礎(chǔ)、研究條件、應(yīng)用環(huán)境、工作目
6、的等)</p><p> 了解C語言的基礎(chǔ)知識,有一定的語言編程基礎(chǔ),能夠熟練運(yùn)用C語言進(jìn)行程序設(shè)計。通過用C語言完成的題目,提高用C語言解決實(shí)際問題的能力。</p><p><b> 3.參考文獻(xiàn)</b></p><p> [1] 黃明等.21世紀(jì)進(jìn)階輔導(dǎo) C語言程序設(shè)計.大連理工大學(xué)出版社,2005</p><p&
7、gt; [2] 馬靖善等.C語言程序設(shè)計.清華大學(xué)出版社,2005</p><p> [3] 譚浩強(qiáng).C語言程序設(shè)計(第二版).北京:高等教育出版社,2002</p><p><b> 指導(dǎo)教師簽字:</b></p><p><b> 教研室主任簽字:</b></p><p> 2006年
8、 7月1日</p><p><b> 摘 要</b></p><p> 利用所學(xué)過的C語言知識,采用結(jié)構(gòu)化程序設(shè)計方法,設(shè)計一個學(xué)生成績管理檔案程序,該程序的主要功能為: 0將表格初始化,1建立學(xué)生成績表格,2從表中刪除原有紀(jì)錄,3顯示單鏈表中所有記錄,4按照姓名查找紀(jì)錄,5計算所有學(xué)生的總分和均分,6插入紀(jì)錄到表中,7復(fù)制文件,8將所有學(xué)生成績排序,9分類
9、合計,10退出。該系統(tǒng)功能完善,界面友好,短小經(jīng)用,使用方便,即使是不熟悉計算機(jī)也可以自如的使用該系統(tǒng)。通過上機(jī)調(diào)試運(yùn)行與模擬操作,完成對學(xué)生成績的管理,減輕管理人員的勞動強(qiáng)度,提高一個學(xué)校的自動化管理水平。</p><p> 關(guān)鍵詞:學(xué)生成績管理;結(jié)構(gòu)化程序設(shè)計;調(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計算所有學(xué)生的總分和均分4</p><p> 2.2.8插入紀(jì)錄到表中4</p><p> 2.2.9復(fù)制文件4</p><p> 2.2.10將所有學(xué)生成績排序5</p><p> 2.2.11分類合計:5</p>
13、<p> 2.2.12退出5</p><p> 第三章 總體設(shè)計6</p><p><b> 3.1軟件描述6</b></p><p><b> 3.2設(shè)計方法6</b></p><p><b> 3.3軟件結(jié)構(gòu)6</b></p>
14、<p> 3.4文件及函數(shù)組成7</p><p> 第五章 使用說明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ù)發(fā)展日新月異,時代潮流也不斷變革,競爭越發(fā)激烈,時間就是金錢,但是就是在一些瑣碎的事上面浪費(fèi)了大量的時間,例如查詢資料之類.如果我們把浪費(fèi)的時間用于其他方面,勢必會有更大的收益.應(yīng)此需求,為使廣大教師掌握更多的時間,相應(yīng)的開發(fā)出此軟件—學(xué)生成績管理軟件系統(tǒng).而編寫詳細(xì)設(shè)計說明書是軟件開發(fā)過程必不可少的部分,其目的是為了使開發(fā)人員在完成概
16、要設(shè)計說明書的基礎(chǔ)上完成概要設(shè)計規(guī)定的各項(xiàng)模塊的具體實(shí)現(xiàn)的設(shè)計工作。本軟件屬于綠色軟件, 適合任何層次的用戶, 因此本說明書的預(yù)期讀者范圍相當(dāng)廣。</p><p><b> 1.1項(xiàng)目背景</b></p><p><b> 軟件名稱</b></p><p><b> 學(xué)生成績管理</b><
17、/p><p><b> 相關(guān)單位</b></p><p> 主要是學(xué)校用于學(xué)校的成績管理</p><p><b> 1.2工作環(huán)境</b></p><p> A.一臺586 以上的微機(jī)及兼容</p><p> B.內(nèi)存16MB(最好32MB內(nèi)存) </p>
18、<p> C.VGA 彩顯一臺</p><p><b> 第二章 系統(tǒng)分析</b></p><p><b> 2.1系統(tǒng)需求分析</b></p><p> 隨著網(wǎng)絡(luò)經(jīng)濟(jì)時代的到來,社會飛速的發(fā)展,人們的生活發(fā)生著日新月異的變化,高新技術(shù)正驅(qū)趕著人們生活的腳步,人們對工作生活的要求也日益提高,特別是計算機(jī)
19、的應(yīng)用及普及到經(jīng)濟(jì)和社會生活的各個領(lǐng)域。使原本的舊的管理方法越來越不適應(yīng)現(xiàn)在社會的發(fā)展。許多人還停留在以前的手工操作,隨著各個學(xué)校的規(guī)模增大,有關(guān)學(xué)生成績管理工作所涉及的數(shù)據(jù)量越來越大,有的學(xué)校不得不靠增加人力、物力來進(jìn)行學(xué)生成績管理,但手工管理具有效率底、,這大大地阻礙了人類經(jīng)濟(jì)的發(fā)展。為了適應(yīng)現(xiàn)代社會人們高度強(qiáng)烈的時間觀念,用計算機(jī)對學(xué)校學(xué)生成績進(jìn)行管理已逐步取代了傳統(tǒng)的管理方式。</p><p> 學(xué)生成
20、績查詢系統(tǒng)對學(xué)校加強(qiáng)學(xué)生成績管理有著極其重要的作用。由于各個大學(xué)都在持續(xù)擴(kuò)招,學(xué)生的數(shù)量日益龐大,傳統(tǒng)的手工成績管理不僅工作量大,而且容易出現(xiàn)問題。從而需要對學(xué)生成績管理等工作方面提高精確度。</p><p> 經(jīng)過我對學(xué)校情況和師生需求的的具體分析,初步設(shè)計了一套有關(guān)“學(xué)生成績管理”的程序,希望可以幫助學(xué)校改善以往需求緊張的管理系統(tǒng),為廣大師生提供方便,節(jié)省時間,提高工作效率,從而樹立良好的辦學(xué)形象。<
21、/p><p><b> 學(xué)校具體需求分析</b></p><p> 學(xué)生:對各科成績的查詢及查看本班成績排名。</p><p> 老師:輸入并維護(hù)所教科目的學(xué)生成績,計算本科的成績排名、本科成績在班上的排名。</p><p> 班主任:輸入并維護(hù)本班的基本信息,對本班的各科成績匯總,計算各科成績的總分,排名,本班平均
22、分等需求。輸出學(xué)生的基本信息,各科的成績及各科成績的部分,各科成績的排名,總分的排名情況。</p><p> 教務(wù)處: 學(xué)校全體成員的信息管理,對考試科目,時間及對所考科目的編號等進(jìn)行具體的管理,并對任課老師,班主任等輸入的信息進(jìn)行存庫,對學(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)入主菜單,此時流程在3.4軟件結(jié)構(gòu)會描述清楚。</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計算所有學(xué)生的總分和均分模塊,算法,如圖2-6所示:</p><p><b> N返回主模塊</b></p
30、><p> Y </p><p><b> Y任意鍵返回主模塊</b></p><p><b> 2-6計算模塊</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é)生成績排序模塊,算法,如圖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分類合計模塊,算法,如圖2-10所示:</p><p><b> N返回主模
35、塊</b></p><p> Y </p><p><b> Y任意鍵返回主模塊</b></p><p> 2-10分類合計模塊</p><p> 2.2.12退出模塊,算法。</p><p><b> 第三章 總體設(shè)計</b>&l
36、t;/p><p><b> 3.1軟件描述</b></p><p> 該程序的主要功能為: 0將表格初始化,1建立學(xué)生成績表格,2從表中刪除原有紀(jì)錄,3顯示單鏈表中所有記錄,4按照姓名查找紀(jì)錄, 5計算所有學(xué)生的總分和均分,6插入紀(jì)錄到表中,7復(fù)制文件,8將所有學(xué)生成績排序, 9分類合計,10退出。另外,該程序主要調(diào)用了:I/O函數(shù)(stdio.h),其他說明(std
37、ib.h),字符串函數(shù)(string.h),屏幕操作函數(shù)(conio.h),內(nèi)存操作函數(shù)(mem.h),字符操作函數(shù)(ctype.h),動態(tài)地址分配函數(shù)(alloc.h),定義常數(shù)。</p><p><b> 3.2設(shè)計方法</b></p><p> 本軟件采用傳統(tǒng)的軟件開發(fā)生命周期的方法,采用自定向下,逐步求精的結(jié)構(gòu)化的軟件設(shè)計方法。</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)存動態(tài)記錄數(shù)據(jù)函數(shù)</p><p> 函數(shù)原型:void create()</p><p> 功能:顯示內(nèi)存里的記錄</p><p> 參數(shù):記錄數(shù)組和記錄條數(shù)</p><p> 要求:報告是否有記錄及記錄成績
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)存在記錄.則將新記錄追加在記錄尾部,如果還沒有建立記錄鏈表,則建立鏈表并從尾部開始追加記錄.</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ù),成績</p><p><b> 要求:給出相關(guān)信息</b></p><p> 4.按序號顯示記錄函數(shù)</p><p> 函數(shù)原型:void print(STUDENT *h)</p><p> 功能:根據(jù)用戶需求輸出記錄</p>
43、<p> 要求:判斷內(nèi)存中記錄的序號與輸入的是否相等,如果相等則輸出,否則關(guān)閉文件</p><p><b> 5.查找函數(shù)</b></p><p> 函數(shù)原型:int search()</p><p> 功能:根據(jù)用戶需要輸出記錄</p><p> 參數(shù):記錄數(shù)組和記錄成績以及姓名s</p&
44、gt;<p> 要求:判斷內(nèi)存中記錄的名字與輸入的是否相等,如果相等則輸出,否則提前結(jié)束</p><p><b> 6.計算函數(shù)</b></p><p> 函數(shù)原型:int Computer(STUDENT *h)</p><p> 功能:根據(jù)用戶需要計算總分和學(xué)生平均成績</p><p><
45、b> 參數(shù):記錄數(shù)和計算</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> 要求:判斷所要文件是否能打開,打不開則退出,能打開則讀出文件中記錄并復(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.分類合計函數(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ù)和計算后得到的記錄數(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è)計該程序的時候我采用了結(jié)構(gòu)化程序方法編輯,并在源代碼的基礎(chǔ)上添加了中文注釋。但是在該系統(tǒng)的編寫過程中仍然有許多錯誤,主要的有:注釋文字的排版,定義錯誤,句式的語法錯誤。</p><p> 在完善程序時,我將源代碼先打印
51、下來反復(fù)的捉摸和研究,力圖在上機(jī)運(yùn)行時先改正一些低級錯誤.如缺少”;”之類.在仔細(xì)檢查之后,將源代碼上機(jī)調(diào)試—進(jìn)行編譯,在編譯和連接過程中發(fā)現(xiàn)錯誤,屏幕上顯示了出錯信息,根據(jù)提示找到出錯的位置,加以改正……直到順利顯示我預(yù)期的。</p><p> 1、首先,在本次調(diào)試過程中我碰到了在上機(jī)前根本沒有想到的錯誤:在注釋的時候,注釋文字應(yīng)寫在一起中間不能有中斷,不能再其中包含c語言的語句。否則會引起錯誤,例如格式不正
52、確或是多了字符等。</p><p> 2、缺少變量定義或是定義位置不正確;</p><p> 由于該程序相對來講稍有些長,前后有些變量很難聯(lián)系起來,但是在錯誤信息的提示下一般還是很是可以找到。不過需要注意的是在定義的時候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。為減少這樣的錯誤我后來還是用不同的變量名來表示,結(jié)果引起的那些錯誤解決了。<
53、;/p><p> 3、句式的語法錯誤;</p><p> 大多的語法錯誤在通過書本參考下能夠修改。主要是平時看書不仔細(xì)、不太注意而產(chǎn)生的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定;過分重視分號的重要性而在for、if、while語句中畫蛇添足加分號;在使用文件的時候忘記將文件先打開,對打開的方式與使用的情況不太注意而造成不匹配;還有漏掉形參的定義是值不能傳遞等等。這些語法錯誤有信息框的提示
54、一般是能夠排除的。</p><p> 編譯、連接的成功并不意味著程序的最終成功。</p><p> 邏輯上的錯誤機(jī)器不易檢查出來,這時需要對數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯誤的查找是最難的,需要編程序的人有相當(dāng)?shù)哪托暮图?xì)心去把問題找出來。這也是本次程序編輯過程中碰到的最大的難題。往往運(yùn)行之后得不到另人滿意的結(jié)果,此時解決的方法一則可以用“分段檢查”的方法,在程序的不同位置設(shè)幾個printf函數(shù)
55、語句,輸出有關(guān)變量的值,逐段往下檢查,或用debug進(jìn)行調(diào)試,對檢查出的錯誤進(jìn)行修改,當(dāng)調(diào)試完畢將設(shè)置的printf都刪去。若在程序中找不到問題,則再來考慮算法是否邏輯嚴(yán)謹(jǐn),再進(jìn)行修改。如此循環(huán)往復(fù),直到最后程序運(yùn)行成功。在本次程序編輯過程中,我就是常遇到編譯能通過,能夠運(yùn)行程序,但是總在輸入、刪除等操作完之后再想去看數(shù)據(jù)文件中存在的數(shù)據(jù)記錄的時候,卻一條記錄也顯示不出來,我懷疑是哪個對方對n變量的定義或使用出錯了,于是在每個主要函數(shù)的
56、操作過程中添加了printf語句用來顯示n的變化,例如在執(zhí)行某個函數(shù)前添加插入語句顯示n的起始值,在執(zhí)行完該個函數(shù)后再添加插入語句顯示此時n的結(jié)果值,觀察n的變化是否正確,如果錯誤了,也就說明該函數(shù)編寫過程有錯。諸如這樣的調(diào)試方法,不斷縮小檢查范圍,最后將錯誤找到,進(jìn)行修</p><p><b> 第五章 使用說明</b></p><p> 首先進(jìn)入界面時,根據(jù)屏
57、幕上的提示press any key enter menu……即是按任意鍵均可進(jìn)入主菜單,考慮到學(xué)生成績大多由老師輸入和調(diào)用,所以這里對使用者沒有要求也就沒有添加密碼的必要。</p><p> 在進(jìn)入主菜單時可以看到這樣的畫面,如圖4-1所示:</p><p><b> 4-1主菜單</b></p><p> 從0到10共有11個功能鍵。
58、此時應(yīng)該根據(jù)提示”Enter your choice (0-10):”選擇自己需要用的功能,例如:在提示后按1再回車(Enter鍵)的話就會進(jìn)入編輯。</p><p> 在主菜單上的11個功能分別是:</p><p> 0 init list將表格初始化:使用0后,系統(tǒng)會將原有的一切記錄全部刪去,所有的恢復(fù)到位使用時。一切在主菜單上完成。</p><p> 1
59、 Enter list建立學(xué)生成績表格:使用1后,在界面上會要求你輸入學(xué)號no,姓名name 和成績score1、2、3。如果已經(jīng)輸入完畢只要在下一個no后輸入!再按回車鍵即可,此時就會回到主菜單,如圖4-2所示:</p><p><b> 4-2輸入界面</b></p><p> 2 Delete a record from list從表中刪除原有紀(jì)錄:使用2
60、后,會進(jìn)入子界面,提示語會告訴你輸入你要刪除的信息的學(xué)生的學(xué)號,然后會出現(xiàn)“ list no ** student”這就表示刪除成功,如果沒有這個學(xué)生的信息則會跳過步執(zhí)行但是還是會輸出上述的句子,如圖4-3所示:</p><p><b> 4-3顯示刪除界面</b></p><p> 3 print list顯示單鏈表中所有記錄:如果是在執(zhí)行完5以后,那么總分和均
61、分一欄就不會空白,而是會輸出計算后的數(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計算所有學(xué)生的總分和均分:按5后,系統(tǒng)會自動計算然后輸出結(jié)果,如圖4-6所示:</p><p><b> 4-6計算界面</b></p><p> 6 insert record to list插入紀(jì)錄到表中:使用6 時,
63、要輸入你想插到哪一個學(xué)生前,只需輸入他的學(xué)號。然后,在提示語的提醒下輸入要插入學(xué)生的學(xué)號,姓名和成績。然后再進(jìn)入打印界面,此時可以看到已經(jīng)將09插入到02 前。如圖4-7所示:</p><p><b> 4-7插入后界面</b></p><p> 7 copy the file to new file復(fù)制文件:執(zhí)行完7后,會根據(jù)使用者輸入的地址和命名生成文本文檔存
64、儲。</p><p> 8 sort to make new file將所有學(xué)生成績排序:在完成后,會出現(xiàn)”sort success!”</p><p> 如果想看結(jié)果的話,可以在執(zhí)行完這一步后在執(zhí)行3,這樣就可以看到排序后的結(jié)果。</p><p> 9 total on nomber分類合計,如圖4-9所示:</p><p><
65、b> 4-9分類合計界面</b></p><p> 10 Quit退出模塊,在主菜單上實(shí)行。如圖4-10所示:</p><p><b> 4-10退出界面</b></p><p><b> 第六章 工作總結(jié)</b></p><p> 在這次的編程過程中,我不僅在C語言的學(xué)
66、習(xí)上有了很大的提高而且也培養(yǎng)了我的毅力、耐心、決心和學(xué)習(xí)能力。短短的兩周,我自己都不敢相信可以弄好一個對我而言一個大而功能相對而言還可以的程序。</p><p> 但是不得不說在這個程序中仍然有許多的缺陷,諸如:計算均分時只能計算三門的總均分;無法將文件以文檔或是表格形式存儲;排序、刪除等必須以一種形式先查找學(xué)生信息然后再實(shí)行操作并不多樣化??傊?,在這個過程中我還面對了程序無法執(zhí)行,改錯時怎么也找不到錯誤在哪里
67、的困境;但我還是在老師和同學(xué)們的幫助下完成了這個程序。</p><p> 可以說我的心情是相當(dāng)?shù)募?,相信有了這樣的經(jīng)歷后我能夠更加嫻熟的面對各種情況。</p><p> 注:課程設(shè)計以來的感想、心得、經(jīng)驗(yàn)、收獲、有待改進(jìn)的方面。不超過一頁。</p><p> 參考文獻(xiàn)(參考書或論文或文章)</p><p> [1] 黃明等.21世紀(jì)
68、進(jìn)階輔導(dǎo) C語言程序設(shè)計.大連理工大學(xué)出版社,2005:45—208</p><p> [2] 馬靖善等.C語言程序設(shè)計.清華大學(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;, /*分類合計*/</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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計----學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)--c語言課程設(shè)計
- c語言課程設(shè)計--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計_學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)設(shè)計
- c語言課程設(shè)計--學(xué)生成績管理
- c語言課程設(shè)計--- 學(xué)生成績管理
評論
0/150
提交評論