版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(論文)</b></p><p> 2017年 1 月 12 日</p><p> 課程名稱程序設(shè)計實踐</p><p> 題 目學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)實現(xiàn)</p><p> 院 (系)理學(xué)院</p><p> 專業(yè)班級</p>&
2、lt;p> 姓 名</p><p> 學(xué) 號</p><p> 指導(dǎo)教師</p><p> 學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)</p><p><b> 摘要</b></p><p> 學(xué)生成績管理系統(tǒng)是典型的信息管理系統(tǒng),是學(xué)校教務(wù)管理的重要組成部分,其處理信息量很大。<
3、/p><p> 本課程設(shè)計是用C++實現(xiàn)對學(xué)生的成績管理作一個簡單的模擬,實質(zhì)是建立學(xué)生成績單鏈表,每條記錄由學(xué)號、姓名與成績組成,即鏈表中每個結(jié)點由4個域組成,分別為:學(xué)號、姓名、成績存放下一個結(jié)點地址的next域。用菜單選擇操作方式完成6項功能分別寫成六個函數(shù),創(chuàng)建學(xué)生成績對應(yīng)建立學(xué)生單鏈表的功能,對全部學(xué)生成績的排序,最后保存在文件中,另外四個功能分別對應(yīng)單鏈表的顯示、查詢、修改與刪除四大基本操作。該系統(tǒng)中的
4、數(shù)據(jù)采用線性表中的鏈?zhǔn)酱鎯Y(jié)構(gòu)即單鏈表來存儲,用類類型定義每個學(xué)生記錄并采用外部文件方式記錄數(shù)據(jù)簡便數(shù)據(jù)的讀取與保存。</p><p> 通過對學(xué)生成績管理系統(tǒng)的制作,能夠讓使用者迅速地對學(xué)生的成績做各項處理和顯示,最終的到想要的信息,方便且易于操作。</p><p> 關(guān)鍵詞 學(xué)生成績管理系統(tǒng) , C++, 鏈表 ,文件 </p><p><b&
5、gt; 目錄</b></p><p> 1 總體介紹課程設(shè)計內(nèi)容1</p><p> 1.1 課設(shè)內(nèi)容總體介紹1</p><p> 1.1.1設(shè)計內(nèi)容1</p><p> 1.1.2課程設(shè)計的要求1</p><p> 1.2 個人完成部分2</p><p>
6、2 主要算法與原理3</p><p><b> 2.1 鏈表3</b></p><p> 2.1.1 鏈表的介紹3</p><p> 2.1.2 鏈表的創(chuàng)建與輸出 3</p><p> 2.1.3鏈表結(jié)點的訪問 4</p><p> 2.1.4鏈表結(jié)點的插入
7、 4</p><p> 2.1.5鏈表結(jié)點的刪除 4</p><p> 2.2 文件的使用 4</p><p> 2.2.1.打開文件4</p><p> 2.2.2關(guān)閉文件5</p><p> 2.2.3文本文件的讀寫5</p><p>
8、3 學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)6</p><p> 3.1 學(xué)生類成員及函數(shù)6</p><p> 3.2 學(xué)生信息類成員及函數(shù)6</p><p> 3.3 主要函數(shù)說明7</p><p> 3.4 學(xué)生成績管理系統(tǒng)的總結(jié)構(gòu)圖7</p><p> 3.5 模塊的流程圖7</p>&l
9、t;p> 3.6 難點及難點的解決8</p><p> 4 結(jié)果分析及改進(jìn)9</p><p> 5 小結(jié)和心得13</p><p><b> 6 參考文獻(xiàn)14</b></p><p><b> 附錄15</b></p><p> 1 總體介紹課程設(shè)
10、計內(nèi)容</p><p> 1.1 課設(shè)內(nèi)容總體介紹</p><p><b> 1.1.1設(shè)計內(nèi)容</b></p><p> 制作學(xué)生成績管理系統(tǒng),實現(xiàn)數(shù)據(jù)錄入、數(shù)據(jù)刪除、數(shù)據(jù)瀏覽以及數(shù)據(jù)查詢等功能。</p><p> 1.1.2課程設(shè)計的要求</p><p> 包括系統(tǒng)設(shè)計要求,開發(fā)環(huán)境
11、要求,技術(shù)文檔要求三部分。</p><p> (1)系統(tǒng)設(shè)計要求:</p><p> ?。╝)學(xué)生成績管理系統(tǒng)中不同使用單位(用戶)的學(xué)生人數(shù)事先無法確定。</p><p> ?。╞) 該學(xué)生成績管理系統(tǒng)要求有學(xué)生成績錄入,查詢,修改,刪除,排序。</p><p> ?。╟) 系統(tǒng)使用文字菜單,用戶通過選擇菜單項的編號,實現(xiàn)系統(tǒng)對子模塊的調(diào)
12、用。</p><p> ?。╠) 每個班級每門課程的成績可以從學(xué)生的成績總表提取出子表并存儲成一個文本文件。該文本文件名由班級號和課程名拼音字符串構(gòu)成。輸入班級號和課程名字符串后自動生成文件名。 </p><p> (e) 每個學(xué)生學(xué)習(xí)的課程有數(shù)學(xué),英語,C++。</p><p> (f) 學(xué)生的成績總表結(jié)構(gòu)約定為(學(xué)號,姓名,課程名,總評成績).總評成績等于各
13、科成績之和。</p><p> (g)學(xué)號是一個9位整數(shù)構(gòu)成的字符串, 學(xué)號的編碼規(guī)則:入學(xué)年份+在讀年級+在讀班級+班內(nèi)編號;入學(xué)年份用4位整數(shù)構(gòu)成字符串,如2014年入學(xué)則表示為:”2014”;在讀年級用1位整數(shù)構(gòu)成字符串,如正在1年級讀書則表示為:”1”;在讀班級用2位整數(shù)構(gòu)成字符串,如正在1班讀書則表示為:”01”;班內(nèi)編號用2位整數(shù)構(gòu)成字符串,如在班內(nèi)編號為23號則表示為:”23”。</p>
14、;<p><b> ?。?)開發(fā)環(huán)境要求</b></p><p> 軟件環(huán)境:windows XP/windows 7,Visual C++</p><p> 硬件環(huán)境:計算機(jī)(Pen4 CPU, 512MRAM,60G以上硬盤,輸入輸出設(shè)備)</p><p> (3)技術(shù)文檔要求:</p><p>
15、 按軟件工程技術(shù)文檔要求。要求流程圖繪制規(guī)范,模塊功能描述清晰</p><p> 1.2 個人完成部分</p><p> 第一階段:學(xué)習(xí)鏈表相關(guān)知識來動態(tài)分配存儲空間,并作出鏈表的程序及學(xué)習(xí)文件在C++中的應(yīng)用;</p><p> 第二階段:錄入學(xué)生成績、顯示學(xué)生成績、查詢學(xué)生成績并畫出相關(guān)流程圖,并與隊友共同把所有的程序進(jìn)行整理并調(diào)試成功;</p&g
16、t;<p> 第三階段:獨立完成論文的書寫。</p><p><b> 2 主要算法與原理</b></p><p><b> 2.1 鏈表</b></p><p> 2.1.1 鏈表的介紹</p><p> 數(shù)組式計算機(jī)根據(jù)事先定義好的數(shù)組類型與長度自動為其分配一連續(xù)的存儲單
17、元,相同數(shù)組的位置和距離都是固定的,也就是說,任何一個數(shù)組元素的地址都可一個簡單的公式計算出來,因此這種結(jié)構(gòu)可以有效的對數(shù)組元素進(jìn)行隨機(jī)訪問。但若對數(shù)組元素進(jìn)行插入和刪除操作,則會引起大量數(shù)據(jù)的移動,從而使簡單的數(shù)據(jù)處理變得非常復(fù)雜,低效。鏈表是一種動態(tài)數(shù)據(jù)結(jié)構(gòu),用一組任意的存儲單元(可以是連續(xù)的,也可以是不連續(xù)的)存放數(shù)據(jù)元素。 鏈表中每一個元素成為“結(jié)點”,每一個結(jié)點都是由數(shù)據(jù)域和指針域組成的,每個結(jié)點中的指針域指向下一個結(jié)點。He
18、ad是“頭指針”,表示鏈表的開始,用來指向第一個結(jié)點,而最后一個指針的指針域為NULL(空地址),表示鏈表的結(jié)束??梢钥闯鲦湵斫Y(jié)構(gòu)必須利用指針才能實現(xiàn),即一個結(jié)點中必須包含一個指針變量,用來存放下一個結(jié)點的地址。實際上,鏈表中的每個結(jié)點可以用若干個數(shù)據(jù)和若干個指針。結(jié)點中只有一個指針的鏈表稱為單鏈表,這是最簡單的鏈表結(jié)構(gòu)。</p><p> 2.1.2 鏈表的創(chuàng)建與輸出 </p><
19、;p> 圖1 動態(tài)鏈表創(chuàng)建 圖 2 鏈表輸出</p><p> 2.1.3鏈表結(jié)點的訪問 </p><p> 由于鏈表中的各個結(jié)點是由指針鏈接在一起的,其存儲單元文筆是連續(xù)的,因此,對其中任意結(jié)點的地址無法向數(shù)組一樣,用一個簡單的公式計算出來,進(jìn)行隨機(jī)訪問。只能從鏈表的頭指針(即head)開始,用一個指針p先指向第
20、一個結(jié)點,然后根據(jù)結(jié)點p找到下一個結(jié)點。以此類推,直至找到所要訪問的結(jié)點或到最后一個結(jié)點(指針為空)為止。</p><p> 2.1.4鏈表結(jié)點的插入 </p><p> 如果要在鏈表中的結(jié)點a之前插入結(jié)點b,則需要考慮下面幾點情況。(1)插入前鏈表是一個空表,這時插入新結(jié)點b后。(2)若a是鏈表的第一個結(jié)點,則插入后,結(jié)點b為第一個結(jié)點。(3)若鏈表中存在a,且不是第一個
21、結(jié)點,則首先要找出a的上一個結(jié)點a_k,然后使a_k的指針域指向b,在令b的指針域指向a,即可完成插入。(4)如鏈表中不存在a,則插在最后。先找到鏈表的最后一個結(jié)點a_n,然后使a_n的指針域指向結(jié)點b,而b指針的指針為空。</p><p> 2.1.5鏈表結(jié)點的刪除 </p><p> 如果要在鏈表中刪除結(jié)點a并釋放被刪除的結(jié)點所占的存儲空間,則需要考慮下列幾種情況。(1
22、)若要刪除的結(jié)點a是第一個結(jié)點,則把head指向a的下一個結(jié)點。(2)若要刪除的結(jié)點a存在于鏈表中,但不是第一個結(jié)點,則應(yīng)使a得上一個結(jié)點a_k-1的指針域指向的下一個結(jié)點a_k+1。(3)空表或要刪除的結(jié)點a不存在,則不做任何改變。</p><p> 2.2 文件的使用 </p><p> 2.2.1.打開文件</p><p> 在ofstream
23、類中,成員函數(shù)open()實現(xiàn)打開文件的操作,從而將數(shù)據(jù)流和文件進(jìn)行關(guān)聯(lián),通過ofstream,ifstream,fstream對象進(jìn)行對文件的讀寫操作</p><p><b> 函數(shù):open()</b></p><p> 參數(shù): filename 操作文件名</p><p> mode &
24、#160; 打開文件的方式</p><p> prot 打開文件的屬性</p><p><b> 2.2.2關(guān)閉文件</b></p><p> 當(dāng)文件讀寫操作完成之后,我們必須將文件關(guān)閉以使文件重新變?yōu)榭稍L問
25、的。成員函數(shù)close(),它負(fù)責(zé)將緩存中的數(shù)據(jù)排放出來并關(guān)閉文件。這個函數(shù)一旦被調(diào)用,原先的流對象就可以被用來打開其它的文件了,這個文件也就可以重新被其它的進(jìn)程所訪問了。為防止流對象被銷毀時還聯(lián)系著打開的文件,析構(gòu)函數(shù)將會自動調(diào)用關(guān)閉函數(shù)close()。</p><p> 2.2.3文本文件的讀寫</p><p> Read成員函數(shù)從一個文件讀字節(jié)到一個指定的存儲器區(qū)域,由長度參數(shù)確
26、定要讀的字節(jié)數(shù)。如果給出長度參數(shù),當(dāng)遇到文件結(jié)束或者在文本模式文件中遇到文件結(jié)束標(biāo)記字符時結(jié)束。</p><p> 3 學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)</p><p> 3.1 學(xué)生類成員及函數(shù)</p><p><b> 表一 學(xué)生類</b></p><p> 3.2 學(xué)生信息類成員及函數(shù)</p>&
27、lt;p><b> 表二 學(xué)生信息類</b></p><p> 3.3 主要函數(shù)說明</p><p> 首先在創(chuàng)建菜單時,應(yīng)包括創(chuàng)建學(xué)生成績錄入,顯示,查詢,修改,刪除,排序這六個功能,然后通過調(diào)用創(chuàng)建信息函數(shù)完成學(xué)生成績的錄入,顯示函數(shù)實現(xiàn)學(xué)生信息的全部顯示,通過修改可以改變輸入錯的信息,針對有的學(xué)生如果轉(zhuǎn)學(xué)什么的可以對其信息進(jìn)行刪除,利用姓名來調(diào)用查詢
28、函數(shù)能夠得到所想要的學(xué)生信息;最后,通過調(diào)用排序函數(shù)后在,可以在所見的文件夾里打開所有錄入的學(xué)生信息及最終排序結(jié)果。</p><p> 3.4 學(xué)生成績管理系統(tǒng)的總結(jié)構(gòu)圖</p><p> 通過總結(jié)構(gòu)圖能夠直觀地看出所制作的成績管理系統(tǒng)的各項功能,總結(jié)構(gòu)圖如下圖3.</p><p> 圖3 學(xué)生成績管理系統(tǒng)的總結(jié)構(gòu)</p><p>
29、3.5 模塊的流程圖</p><p> 根據(jù)系統(tǒng)提示,選擇1創(chuàng)建學(xué)生信息,根據(jù)系統(tǒng)提示可以一次輸入姓名,學(xué)號,成績,如果要對成績顯示則繼續(xù)選擇2,可以對成績顯示,當(dāng)創(chuàng)建的信息大于等于2時可以繼續(xù)選擇3,進(jìn)行排序,最終的結(jié)果可以在當(dāng)前所建的記事本里顯示各項成績及排序,要對信息查詢選擇4來查詢你想要的信息,也可以對信息修改等,最終可以選擇0安全退出系統(tǒng)。 </p><p> 進(jìn)入系統(tǒng)根據(jù)系
30、統(tǒng)提示來選擇想要進(jìn)行的操作,從而完成各項的功能,利用信息查詢也可以來判斷所操作的刪除是否刪除成功的測試,查詢流程如下,圖4.</p><p> 圖4 信息查詢流程圖</p><p> 3.6 難點及難點的解決</p><p> 難點:通過構(gòu)造兩個類來實現(xiàn)各種功能,使用鏈表來對各項功能的實現(xiàn)及使用文件來保存所得到的成績排序結(jié)果的連接中相對較難。</p>
31、;<p> 解決:通過自己認(rèn)真學(xué)習(xí)課本所學(xué)過的鏈表及文件相關(guān)的知識,并通過上網(wǎng)查找類似的鏈表和文件在C++中的應(yīng)用來完成。</p><p><b> 4 結(jié)果分析及改進(jìn)</b></p><p> 首先進(jìn)入系統(tǒng)界面后,會有時間,日期的顯示,并提示密碼的輸入,如下圖5.</p><p><b> 圖5 首界面<
32、/b></p><p> 根據(jù)界面提示進(jìn)入菜單界面,可以對想要的操作進(jìn)行選擇,如圖6.</p><p><b> 圖6 菜單界面</b></p><p> 選擇1,創(chuàng)建學(xué)生信息,創(chuàng)建學(xué)生的姓名、學(xué)號,各科成績,最后會顯示添加成功,結(jié)果如下圖7.</p><p><b> 圖7 創(chuàng)建學(xué)生信息<
33、/b></p><p> 根據(jù)剛才創(chuàng)建更多的學(xué)生信息后,選擇3,可以顯示創(chuàng)建的所有學(xué)生的信息,如圖8.</p><p><b> 圖8 顯示學(xué)生信息</b></p><p> 根據(jù)剛才創(chuàng)建的所有信息可以進(jìn)行查詢自己所想要的學(xué)生信息,如下圖9.</p><p><b> 圖9 查詢學(xué)生信息</
34、b></p><p> 如果有的同學(xué)轉(zhuǎn)學(xué)或其他什么的,該信息已經(jīng)無意義,可以對該信息進(jìn)行刪除,如圖9.</p><p> 圖10 刪除學(xué)生信息</p><p> 如果第一次創(chuàng)建信息過程中出現(xiàn)錯誤或輸入的姓名與學(xué)號不對應(yīng),則可以通過修改學(xué)生的信息,如圖10.</p><p><b> 圖11 修改信息</b>
35、</p><p> 最后完成所有輸入的成績排序,得到最終的結(jié)果顯示,如圖11.</p><p><b> 圖12 排序結(jié)果</b></p><p> 所有的操作完成后,選擇0,可以安全退出系統(tǒng)。如下圖12.</p><p> 圖13 系統(tǒng)安全退出系統(tǒng)</p><p><b>
36、5 小結(jié)和心得</b></p><p> 對于我們所選的學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn),我是根據(jù)我們所做的ssrt 的項目有啟發(fā)而做的,經(jīng)過查閱資料發(fā)現(xiàn)利用文件和鏈表來實現(xiàn),所以自己又把我們學(xué)過的鏈表和文件進(jìn)行學(xué)習(xí),查閱相關(guān)的實例練習(xí)鏈表的應(yīng)用,但剛開始我們想的比較簡單是依據(jù)C語言而實現(xiàn)的,到后來經(jīng)老師的點撥,發(fā)現(xiàn)我們做的應(yīng)該是基于C++ 的程序,雖然僅剩一天半左右的時間,我和隊友能夠更根據(jù)自己前期準(zhǔn)
37、備的基礎(chǔ)上,進(jìn)一步查閱資料并對自己原有的程序進(jìn)行修改,最終的以完成。</p><p> 通過這次C++的課程設(shè)計的學(xué)習(xí),讓我體會到我們所學(xué)的C++課程的實用性,以前我認(rèn)為計算機(jī)方面的課程僅僅是我所要必修的,沒有什么的實際價值,但是經(jīng)過這次課程設(shè)計,看到同學(xué)們所做的小游戲后,我發(fā)現(xiàn)其實我們所學(xué)的都是非常有用的,只是在以前我們?nèi)狈λ伎己湾憻?,僅僅把游戲當(dāng)作一種娛樂,并沒有發(fā)現(xiàn)用我們所學(xué)的知識也是可以制作的,所以啟發(fā)
38、我們以后需要多思考,多進(jìn)行實際操作。</p><p> 利用這次訓(xùn)練,我發(fā)現(xiàn)自己能夠掌握更多的知識,通過兩個人的合作,能夠相互取長補(bǔ)短,對我后期的學(xué)習(xí)也有很大的幫助,讓我不再對計算機(jī)課程感到頭疼,同時也增加了我對編程的興趣與愛好,希望以后的學(xué)習(xí)、生活中,我能夠和做這次課程設(shè)計一樣,勤于動手,動腦,努力來彌補(bǔ)不足之處。</p><p><b> 6 參考文獻(xiàn)</b>
39、</p><p> [1] 譚浩強(qiáng).C++程序設(shè)計[M].北京.清華大學(xué)出版社,2004.6.</p><p> [2] 譚浩強(qiáng).C++程序設(shè)計解題與上機(jī)指導(dǎo)[M].北京.清華大學(xué)出版社.2005.3.[3] 錢新賢,楊猛,程兆煒,張少東.Visual C++編程疑難詳解[M].北京.人民郵電出版社,2000.5</p><p> [4]http:
40、//wenku.baidu.com/link?url=H3Fwag-V9gQ5Xp2l7eH-pfvTUjUciMMvcY14V </p><p> [5] http://blog.csdn.net/kevin_zhai/article/details/50494020</p><p><b> 附錄</b></p><p> #incl
41、ude <fstream> </p><p> #include <string> </p><p> #include<iostream></p><p> #include <conio.h></p><p> #include<ctime>//用getch();
42、</p><p> using namespace std; </p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student類﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> class Student </p><p><b> { </b></p><p><b> publ
43、ic: </b></p><p> char name[20]; </p><p> char Id[20]; </p><p> int Cnum; //C++課程得分 </p><p> int Mnum; //數(shù)學(xué)課程得分 </p><p> int Enum;
44、 //英語課程得分 </p><p> int sum; //總分 </p><p> Student * Next; </p><p> void Input() </p><p><b> { </b></p><p> cout<
45、<"\t\t請輸入學(xué)生的姓名:"; </p><p> cin>>name; </p><p> cout<<"\t\t請輸入學(xué)生的學(xué)號(九位):"; </p><p><b> cin>>Id;</b></p><p> co
46、ut<<"\t\t請輸入C++課程的期末成績:"; </p><p> cin>>Cnum; </p><p> cout<<"\t\t請輸入數(shù)學(xué)課程的期末成績:"; </p><p> cin>>Mnum; </p><p> cout<
47、;<"\t\t請輸入英語課程的成績:"; </p><p> cin>>Enum; </p><p> sum=Cnum+Mnum+Enum; </p><p><b> } </b></p><p> void ReadFile(istream & in) &
48、lt;/p><p><b> { </b></p><p> in>>name>>Id>>Cnum>>Mnum>>Enum>>sum; </p><p><b> } </b></p><p> void Show()
49、 </p><p><b> { </b></p><p> cout<<" 姓名 " <<"學(xué)號 "<<" C++ " <<" 數(shù)學(xué) " <<" 英語 "<<"
50、 總成績 "<<endl; </p><p> cout<< name<<" "<<Id<<" "<<Cnum<<" "<<Mnum<<" "<<Enum<<"
51、 "<<sum<<endl;</p><p><b> } </b></p><p><b> }; </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage類﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> class St
52、udentmassage </p><p><b> { </b></p><p><b> public: </b></p><p> Studentmassage(); </p><p> ~Studentmassage(); </p><p> vo
53、id ShowMenu(); </p><p> void Find(); </p><p> void Save(); </p><p> void ModifyItem(); </p><p> void RemoveItem(); </p><p> void Swap(Student *,S
54、tudent *); </p><p> void Sort(); //void Unpass(); </p><p> int ListCount(); //void Average(); </p><p> void Display() </p><p><b> { </b></p
55、><p> for(Student * p=Head->Next;p!=End;p=p->Next) </p><p> p->Show(); </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p&g
56、t;<b> } </b></p><p> void AddItem() </p><p><b> { </b></p><p> End->Input(); </p><p> End->Next=new Student; </p><p&g
57、t; End=End->Next; </p><p> cout<<"添加成功!"<<endl; </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } &
58、lt;/b></p><p> private: </p><p> Student * Head,* End; </p><p> ifstream in; </p><p> ofstream out; </p><p> Student *FindItem(char * name) &l
59、t;/p><p><b> { </b></p><p> for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上一個指針,不成功就返回空 </p><p> if(!strcmp(p->Next->name,name))return p; </p>
60、;<p> return NULL; </p><p><b> } </b></p><p> Student *FindID(char * Id) </p><p><b> { </b></p><p> for(Student * p=Head;p->N
61、ext!=End;p=p->Next)//匹配成功則返回上一個指針,不成功就返回空 </p><p> if(!strcmp(p->Next->Id,Id))return p; </p><p> return NULL; </p><p><b> } </b></p><p><
62、b> }; </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌構(gòu)造函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> Studentmassage::Studentmassage() </p><p><b> { </b></p><p> Head=new Student;
63、</p><p> Head->Next=new Student; </p><p> End=Head->Next; </p><p> in.open("sort.txt"); </p><p><b> if(!in) </b></p><p>
64、; cout<<"這是一個新系統(tǒng),無學(xué)生信息。請先輸入。"<<endl; </p><p><b> else </b></p><p><b> { </b></p><p> while(!in.eof()) </p><p><
65、b> { </b></p><p> End->ReadFile(in); </p><p> if(End->name[0]=='\0')break; </p><p> End->Next=new Student; </p><p> End=End->Next;
66、 </p><p><b> } </b></p><p> in.close(); </p><p> cout<<"\t\t讀取學(xué)生信息成功!"<<endl; </p><p><b> } </b></p><p
67、><b> } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析構(gòu)函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> Studentmassage::~Studentmassage() </p><p><b> { </b></p><p><b> Sa
68、ve(); </b></p><p> for(Student * temp;Head->Next!=End;) </p><p><b> { </b></p><p> temp=Head->Next; </p><p> Head->Next=Head->Next
69、->Next; </p><p> delete temp; </p><p><b> } </b></p><p> delete Head,End; </p><p><b> } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜單﹌
70、﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::ShowMenu() </p><p><b> { </b></p><p> cout<<"***********************************************
71、***************"<<endl; </p><p> cout<<"********制作人:西安建筑科技大學(xué) 張丹莉 周春燕***********"<<endl; </p><p> cout<<"********* 歡迎來到學(xué)生成績管理系統(tǒng) *********
72、**"<<endl; </p><p> cout<<"********* 1 創(chuàng)建學(xué)生信息 ***********"<<endl; </p><p> cout<<"********* 2 顯示學(xué)生信息 *********
73、**"<<endl; </p><p> cout<<"********* 3 排序?qū)W生信息 ***********"<<endl; </p><p> cout<<"********* 4 查詢學(xué)生信息 *********
74、**"<<endl; </p><p> cout<<"********* 5 刪除學(xué)生信息 ***********"<<endl; </p><p> cout<<"********* 6 修改學(xué)生信息 *********
75、**"<<endl; </p><p> cout<<"********* 0 成功退出系統(tǒng) ***********"<<endl; </p><p> cout<<"***********************************************
76、***************"<<endl; </p><p> cout<<"**************************************************************"<<endl; </p><p> cout<<"請輸入您想完成的操作:"; &l
77、t;/p><p><b> }</b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::Find() </p><p><b> { </b></p><p> char
78、 name[20] ,Id[10]; </p><p><b> int x; </b></p><p> Student * p=NULL; </p><p> cout<<"\n\t\t*********************************\n"; </p><p
79、> cout<<"\t\t※ 1.按學(xué)生的姓名查找\n\t\t※ 2.按學(xué)生學(xué)號查找"; </p><p> cout<<"\n\t\t*********************************\n請選擇:"; </p><p><b> cin>>x; </b>&l
80、t;/p><p> switch(x) </p><p><b> { </b></p><p> case 1:{cout<<"\t\t請輸入要查找的學(xué)生的姓名:";cin>>name; </p><p> if(p=FindItem(name)) </p&
81、gt;<p><b> { </b></p><p> p->Next->Show(); </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } </b
82、></p><p><b> else </b></p><p><b> { </b></p><p> cout<<"\t\t沒有找到該姓名的學(xué)生!"<<'\n'<<endl; </p><p> cou
83、t<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } </b></p><p><b> }break; </b></p><p><b> case 2: </b></
84、p><p><b> { </b></p><p> cout<<"\t\t請輸入要查找的學(xué)生的學(xué)號:";cin>>Id; </p><p> if(p=FindID(Id)) </p><p><b> { </b></p>&
85、lt;p> p->Next->Show(); </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } </b></p><p><b> else </b>
86、;</p><p><b> { </b></p><p> cout<<"\t\t沒有找到該學(xué)好的學(xué)生!"<<'\n'<<endl; </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><
87、p> getch(); </p><p><b> } </b></p><p><b> }break; </b></p><p><b> } </b></p><p><b> } </b></p><p
88、> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::ModifyItem() //修改信息 </p><p><b> { </b></p><p> char name[20]; </p><p> Studen
89、t * p=NULL; </p><p> cout<<"\t\t請輸入要修改的人的姓名:";cin>>name; </p><p> if(p=FindItem(name)) </p><p><b> { </b></p><p> cout<<
90、"\t\t已找到學(xué)生的信息,請輸入新的信息!"<<endl; </p><p> p->Next->Input(); </p><p> cout<<"修改成功!"<<endl; </p><p> cout<<"輸入任意字符!繼續(xù)……"
91、;; </p><p> getch(); </p><p><b> } </b></p><p><b> else </b></p><p><b> { </b></p><p> cout<<"\t\t
92、沒有找到!"<<endl; </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } </b></p><p><b> } </b></p>
93、<p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌刪除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::RemoveItem() // 刪除信息 </p><p><b> { </b></p><p> char name[20]; </p><p
94、> Student * p=NULL,*temp=NULL; </p><p> cout<<"\t\t請輸入要刪除的學(xué)生的姓名:"<<endl;cin>>name; </p><p> if(p=FindItem(name)) </p><p><b> { </b>
95、;</p><p> temp=p->Next; </p><p> p->Next=p->Next->Next; </p><p> delete temp; </p><p> cout<<"\t\t刪除成功!"<<endl; </p>&
96、lt;p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } </b></p><p><b> else </b></p><p><b> { </b>&
97、lt;/p><p> cout<<"\t\t沒有找到!"<<endl; </p><p> cout<<"輸入任意字符!繼續(xù)……"; </p><p> getch(); </p><p><b> } </b></p>
98、<p><b> } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::Swap(Student *p1, Student *p2)//交換兩個combox變量的數(shù)據(jù)域 </p><p><b> { </b
99、></p><p> Student *temp=new Student; </p><p> strcpy(temp->name,p1->name); </p><p> strcpy(temp->Id,p1->Id); </p><p> temp->Cnum=p1->Cnum;
100、 </p><p> temp->Mnum=p1->Mnum; </p><p> temp->Enum=p1->Enum; </p><p> temp->sum=p1->sum; </p><p> strcpy(p1->name,p2->name); </p>
101、<p> strcpy(p1->Id,p2->Id); </p><p> p1->Cnum=p2->Cnum; </p><p> p1->Mnum=p2->Mnum; </p><p> p1->Enum=p2->Enum; </p><p> p1->s
102、um=p2->sum; </p><p> strcpy(p2->name,temp->name); </p><p> strcpy(p2->Id,temp->Id); </p><p> p2->Cnum=temp->Cnum; </p><p> p2->Mnum=temp
103、->Mnum; </p><p> p2->Enum=temp->Enum; </p><p> p2->sum=temp->sum; </p><p><b> } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p>
104、<p> int Studentmassage::ListCount()//統(tǒng)計當(dāng)前鏈表的記錄總數(shù),返回一個整數(shù) </p><p><b> { </b></p><p> if(! Head) </p><p> return 0; </p><p> int n=0; </p>
105、;<p> for(Student * p=Head->Next;p!=End;p=p->Next) </p><p><b> { </b></p><p><b> n++; </b></p><p><b> } </b></p><
106、p> return n; </p><p><b> } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::Sort()//對當(dāng)前鏈表進(jìn)行排序 </p><p><b> { </b&
107、gt;</p><p> cout <<"Sorting..."<<endl; </p><p> Student *p=NULL,*p1=NULL,*k=NULL; </p><p> int n=Studentmassage::ListCount(); </p><p> if(n
108、<2) </p><p><b> return; </b></p><p> for(p=Head->Next;p!=End;p=p->Next) </p><p> for(k=p->Next;k!=End;k=k->Next) </p><p><b> {
109、 </b></p><p> if(p->sum>k->sum) </p><p><b> { </b></p><p> Studentmassage::Swap(p,k); </p><p><b> } </b></p><
110、p><b> }</b></p><p> cout <<"排序完成!"<<endl; </p><p><b> getch(); </b></p><p><b> return; </b></p><p>&l
111、t;b> } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> void Studentmassage::Save() </p><p><b> { </b></p><p> out.open("sort.txt
112、"); </p><p> for(Student *p=Head->Next;p!=End;p=p->Next) </p><p> out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"
113、\t" </p><p> <<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n'; </p><p> out.close(); </p><p><b>
114、 } </b></p><p> //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ </p><p> int main() </p><p><b> { </b></p><p><b> int x; </b></p><p>
115、 bool quit=false; </p><p> system("cls"); </p><p> time_t t; </p><p> time(&t); </p><p> cout <<"***********歡迎進(jìn)入西安建筑科技大學(xué)學(xué)生管理系統(tǒng)*********
116、*******\n"<<endl </p><p> << " ^ 當(dāng)前系統(tǒng)時間是: " << ctime(&t)<<endl; //密碼設(shè)置 </p><p> cout<<" ^ 進(jìn)入該系統(tǒng)設(shè)有密碼,只有2次
117、機(jī)會! \n"<<endl; </p><p> cout<<" ^ 溫馨向您提示,登錄密碼為 123456 \n"<<endl; </p><p> cout<<" ^ 請您輸入密碼: ";</p><p> string s
118、tr; </p><p> cin>>str; </p><p> if(str=="123456") </p><p> { cin.get();</p><p> Studentmassage Grade; </p><p> cout<<"按任意鍵
119、開始……";</p><p><b> getch();</b></p><p> while(!quit) </p><p><b> { </b></p><p> system("cls"); </p><p> Grade
120、.ShowMenu(); </p><p><b> cin>>x; </b></p><p> switch(x) </p><p><b> { </b></p><p> case 0:quit=true;</p><p> cout<
121、;<"----------------------------------------------------------------------------------"<<endl;</p><p> cout<<"======>> 西安建筑科技大學(xué)學(xué)生成績管理系統(tǒng) <<====="<<endl; /*
122、結(jié)束程序*/ </p><p> cout<<" ★************ 西安建筑科技大學(xué)**************★"<<endl;</p><p> cout<<" ★************ 理 學(xué) 院 **************★"<<endl;</p>
123、<p> cout<<" ★************ 應(yīng) 數(shù) 1401 班 **************★"<<endl;</p><p> cout<<" ★************ 141003133 ****************★"<<endl;</p>
124、<p> cout<<"==========>> 歡迎使用西安建筑科技大學(xué)生成績管理系統(tǒng) <<==========="<<endl; </p><p> cout<<"-------------------------------------------------------
125、-----------------------------"<<endl;</p><p><b> break; </b></p><p> case 1:Grade.AddItem();break; </p><p> case 2:Grade.Display();break; </p>&l
126、t;p> case 3:Grade.Sort();break; </p><p> case 4:Grade.Find();break; </p><p> case 5:Grade.RemoveItem();break; </p><p> case 6:Grade.ModifyItem();break; </p><p&
127、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else </b></p><p><b> { </b></p><
128、p> cout<<"第一次密碼錯誤,請重新輸入密碼!"<<endl; </p><p> cin>>str; </p><p> if(str=="123456") </p><p><b> {</b></p><p> { c
129、in.get();} </p><p> Studentmassage Grade; </p><p> cout<<"按任意鍵開始……";</p><p><b> getch();</b></p><p> while(!quit) </p><p>
130、;<b> { </b></p><p> system("cls"); </p><p> Grade.ShowMenu(); </p><p><b> cin>>x; </b></p><p> switch(x) </p>&
131、lt;p><b> { </b></p><p> case 0:quit=true;</p><p> cout<<"----------------------------------------------------------------------------------"<<endl;</p
132、><p> cout<<"======>> 西安建筑科技大學(xué)學(xué)生成績管理系統(tǒng) <<====="<<endl; /*結(jié)束程序*/ </p><p> cout<<" ★************ 西安建筑科技大學(xué)**************★"<<endl;</p>
133、<p> cout<<" ★************ 理 學(xué) 院 **************★"<<endl;</p><p> cout<<" ★************ 應(yīng) 數(shù) 1401 班 **************★"<<endl;</p><p&g
134、t; cout<<" ★************ 141003133 ****************★"<<endl;</p><p> cout<<"==========>> 歡迎使用西安建筑科技大學(xué)生成績管理系統(tǒng) <<==========="<<endl;
135、 </p><p> cout<<"------------------------------------------------------------------------------------"<<endl;</p><p><b> break; </b></p><p>
136、; case 1:Grade.AddItem();break; </p><p> case 2:Grade.Display();break; </p><p> case 3:Grade.Sort();break; </p><p> case 4:Grade.Find();break; </p><p> case 5:
137、Grade.RemoveItem();break; </p><p> case 6:Grade.ModifyItem();break; </p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></
138、p><p><b> else </b></p><p> cout<<"您無權(quán)使用本系統(tǒng)!"<<endl; </p><p><b> }</b></p><p> return 0; </p><p><b>
溫馨提示
- 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)
- 學(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)設(shè)計與管理
- c++課程設(shè)計--學(xué)生成績管理系統(tǒng)
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計
- c++課程設(shè)計--學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計--- 學(xué)生成績管理系統(tǒng)設(shè)計
- c++課程設(shè)計--學(xué)生成績管理
- c++課程設(shè)計--學(xué)生成績管理
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- c++課程設(shè)計報告--學(xué)生成績管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c&c++課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論