學(xué)生信息管理系統(tǒng)03119_第1頁
學(xué)生信息管理系統(tǒng)03119_第2頁
學(xué)生信息管理系統(tǒng)03119_第3頁
學(xué)生信息管理系統(tǒng)03119_第4頁
學(xué)生信息管理系統(tǒng)03119_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、高級(jí)語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告高級(jí)語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告學(xué)生信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 號(hào): 141608010141 姓 名: 彭方林 專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)1401日 期: 2015年11月11日 信息科學(xué)與工程系1目 錄1、課程設(shè)計(jì)目的.22、課程設(shè)計(jì)內(nèi)容.23、學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn).84、系統(tǒng)測(cè)試及系統(tǒng)運(yùn)行效果.95、系統(tǒng)設(shè)計(jì)遇到的問題及解決方案136、總結(jié)與收獲13附錄 源程序代碼15 7、課程設(shè)計(jì)成績(jī)3511高級(jí)語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告351課程設(shè)計(jì)的目的 1.1 課程設(shè)計(jì)題目學(xué)生信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 2.1 課程設(shè)計(jì)目的本課程設(shè)計(jì)是在學(xué)習(xí)C+基本理論之后的實(shí)踐教學(xué)環(huán)節(jié)

2、。該實(shí)踐教學(xué)是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問題分析、總體結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、程序設(shè)計(jì)基本技能和技巧。要求學(xué)生在設(shè)計(jì)中逐步提高程序設(shè)計(jì)能力,培養(yǎng)科學(xué)的軟件工作方法。學(xué)生通過課程設(shè)計(jì)在下述各方面得到鍛煉:.能根據(jù)實(shí)際問題的具體情況,結(jié)合C+的基本理論和基本技巧,正確分析問題,并能設(shè)計(jì)出解決問題的有效算法與程序。.提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法和程序的正確性,學(xué)會(huì)有效利用基本調(diào)試方法,迅速找出程序代碼中的錯(cuò)誤并且修改,進(jìn)一步提高程序設(shè)計(jì)水平。2課程設(shè)計(jì)的內(nèi)容2.1 題目分析設(shè)計(jì)一個(gè)學(xué)生信息管理系統(tǒng),其中包括:學(xué)生基本信息:學(xué)號(hào)、姓名、性別、成績(jī)(語文、離散數(shù)學(xué)、英語、毛

3、概、電路基礎(chǔ)、概率論、體育)。因?yàn)檎n程設(shè)計(jì)時(shí)間為大二上學(xué)期,所以成績(jī)采用的是這學(xué)期本專業(yè)的課表。學(xué)生信息管理系統(tǒng)功能如表1-1所示,具體功能如下:1. 系統(tǒng)菜單顯示2. 學(xué)生信息錄入功能3. 學(xué)生信息瀏覽功能4. 查詢:.學(xué)號(hào)查詢.姓名查詢5. 學(xué)生信息的刪除與修改6. 系統(tǒng)中學(xué)生信息數(shù)量統(tǒng)計(jì)7. 學(xué)生信息排序(冒泡排序)表1-1 程序功能學(xué)號(hào)查詢姓名查詢添加學(xué)生信息刪除學(xué)生信息修改學(xué)生信息查看已添加學(xué)生信息統(tǒng)計(jì)學(xué)生信息數(shù)量學(xué)生信息排序2.2 系統(tǒng)程序模塊設(shè)計(jì)2.2.1 菜單模塊 繪制菜單(包含學(xué)號(hào)查詢、姓名查詢、添加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查看已存檔學(xué)生信息、統(tǒng)計(jì)學(xué)生信息數(shù)量、

4、學(xué)生信息排序)。根據(jù)用戶輸入的值調(diào)用對(duì)應(yīng)的模塊函數(shù)實(shí)現(xiàn)該項(xiàng)功能2.2.2 信息錄入模塊查找系統(tǒng)中是否已存在該學(xué)號(hào)對(duì)應(yīng)的信息if(存在)提示信息已存在else向文件中寫入各項(xiàng)信息2.2.3 信息讀出模塊判斷系統(tǒng)中是否存在學(xué)生信息if(不存在)提示信息不存在else在屏幕上顯示該學(xué)號(hào)對(duì)應(yīng)的信息2.2.4 信息查詢模塊 if(學(xué)號(hào)查詢) 判斷文件是否為空 查找系統(tǒng)中是否有該學(xué)號(hào)信息 if(存在) 輸出學(xué)生信息 else 提示學(xué)生信息不存在 if(姓名查詢) 判斷文件是否為空 查找系統(tǒng)中是否有該姓名對(duì)應(yīng)信息 if(存在) 輸出學(xué)生信息 else 提示信息不存在 2.2.5 創(chuàng)建系統(tǒng)文件夾模塊 判斷系統(tǒng)

5、文件夾是否存在 if(不存在) 創(chuàng)建“D學(xué)生信息”文件夾 判斷系統(tǒng)文件是否存在 if(不存在) 創(chuàng)建“D:學(xué)生信息學(xué)生信息.txt”文件 2.2.6 刪除學(xué)生信息模塊 查看系統(tǒng)文件是否為空 if(文件為空) 提示學(xué)生信息不存在 else 查找系統(tǒng)中是否有該學(xué)號(hào)信息 if(存在) 刪除該學(xué)生信息 else 提示該學(xué)生信息不存在 2.2.7 修改學(xué)生信息模塊 查看系統(tǒng)中是否存在該學(xué)生信息 if(存在) 刪除該學(xué)生信息 添加該學(xué)生新信息 修改成功 2.2.8 統(tǒng)計(jì)學(xué)生信息數(shù)量模塊 if(文件存在) 讀取學(xué)號(hào),每讀取到一個(gè)學(xué)號(hào),數(shù)量+1 返回信息數(shù)量的值 2.2.9 學(xué)生信息排序模塊 if(打開成功)

6、 讀取全部信息存到結(jié)構(gòu)體數(shù)組,按照冒泡排序?qū)⑿畔磳W(xué)號(hào)升序排序 之后將數(shù)組內(nèi)容依次存入文件,并覆蓋舊文件。 2.2.10 模塊圖 各模塊之間結(jié)構(gòu)圖如圖2-1所示學(xué)生信息管理系統(tǒng) 系統(tǒng)文件檢測(cè)刪除學(xué)生信息查詢學(xué)生信息學(xué)生信息排序統(tǒng)計(jì)信息數(shù)量瀏覽學(xué)生信息修改學(xué)生信息添加學(xué)生信息學(xué)號(hào)查詢姓名查詢 圖2-1 模塊圖2.3 系統(tǒng)主要函數(shù)學(xué)生信息管理采用結(jié)構(gòu)化程序設(shè)計(jì)思想,除主函數(shù)外共設(shè)計(jì)了8個(gè)函數(shù),函數(shù)原型及功能說明如圖2-2所示: 圖 2-2 系統(tǒng)主要函數(shù) 2.4 程序流程圖 開始 菜單否添加是否瀏覽信息錄入是否顯示全部信息修改修改信息是否刪除是否刪除信息查詢是否排序是學(xué)號(hào)查詢姓名查詢冒泡排序否查看是

7、顯示排序后的信息 結(jié)束 圖2-3 程序流程圖3學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn)3.1 學(xué)號(hào)查詢 程序每次從文件中讀取出一位學(xué)生的所有信息,將讀取到的學(xué)號(hào)與用戶所輸入的學(xué)號(hào)進(jìn)行比較。如果兩個(gè)學(xué)號(hào)相同,表示已找到該學(xué)號(hào)對(duì)應(yīng)的信息,顯示出該學(xué)生的全部信息,查找結(jié)束。若兩個(gè)學(xué)號(hào)不同,則重新讀取下一位學(xué)生的信息進(jìn)行比較,直到文件讀取到尾部,顯示未找到該學(xué)號(hào)對(duì)應(yīng)的信息。3.2 姓名查詢程序每次從文件中讀取出一位學(xué)生的所有信息,將讀取到的姓名與用戶所輸入的姓名進(jìn)行比較。如果兩個(gè)姓名相同,表示已找到該姓名對(duì)應(yīng)的信息,顯示出該學(xué)生的全部信息,查找結(jié)束。若兩個(gè)姓名不同,則重新讀取下一位學(xué)生的信息進(jìn)行比較,直到文件讀取到尾部

8、,顯示未找到該姓名對(duì)應(yīng)的信息。3.3 添加學(xué)生信息根據(jù)用戶輸入的學(xué)生信息數(shù)量將下列過程循環(huán)對(duì)應(yīng)的次數(shù):新建一個(gè)標(biāo)識(shí)變量find的值為-1,代表文件中不存在該學(xué)生信息。用戶輸入學(xué)生信息后打開文件讀取每個(gè)學(xué)生信息的信息,比較兩個(gè)信息的學(xué)號(hào)是否相同。如果相同則修改find的值為0,代表文件中已存在該學(xué)生的信息,同時(shí)提示“此學(xué)生信息已存在,請(qǐng)進(jìn)入菜單選擇修改信息或者刪除信息之后再添加!”。檢查完學(xué)生信息是否重復(fù)輸入后,若find的值為-1,則將該學(xué)生信息存入到文件中,若find值為0,則跳過此步驟。3.4 刪除學(xué)生信息新建一個(gè)標(biāo)識(shí)變量find的值為-1,代表文件中不存在該學(xué)生信息。用戶輸入學(xué)生信息后打

9、開文件讀取每個(gè)學(xué)生信息的信息,比較兩個(gè)信息的學(xué)號(hào)是否相同。如果相同則修改find的值為0,代表文件中存在該學(xué)生的信息。若find的值為0則執(zhí)行刪除功能:新建一個(gè)文件“學(xué)生信息1.txt”作為臨時(shí)文件,用來存儲(chǔ)刪除后的信息。讀取一位學(xué)生的全部信息,如果該信息的學(xué)號(hào)和想要?jiǎng)h除的學(xué)號(hào)不同,則將該學(xué)生信息存到“學(xué)生信息1.txt”中。若兩個(gè)學(xué)號(hào)相同,則跳過該學(xué)號(hào),不將之存入臨時(shí)文件中。文件讀取到末尾后,刪除“學(xué)生信息.txt”,將“學(xué)生信息1.txt重命名為“學(xué)生信息.txt”,則需要?jiǎng)h除的信息已從文件中刪除。3.5 修改學(xué)生信息 修改學(xué)生信息的功能為刪除和添加功能的結(jié)合,用戶輸入需要修改的學(xué)生學(xué)號(hào)后

10、,系統(tǒng)會(huì)先調(diào)用刪除學(xué)生信息功能刪除該學(xué)號(hào)對(duì)應(yīng)的信息,之后再調(diào)用添加學(xué)生信息功能添加新的學(xué)生信息,修改完畢。3.6 查看已添加學(xué)生信息 該功能是顯示文件中所有的學(xué)生信息,根據(jù)學(xué)生信息數(shù)量確定循環(huán)次數(shù),依次輸出每位學(xué)生的信息。3.7 統(tǒng)計(jì)學(xué)生信息數(shù)量先新建一個(gè)變量d的值為0,代表學(xué)生信息數(shù)量。While循環(huán)的條件為(能讀取到學(xué)號(hào)),當(dāng)條件成立時(shí)將文件位置指針從當(dāng)前學(xué)號(hào)尾部移動(dòng)到學(xué)號(hào)之前,否則信息會(huì)讀取混亂,并將d的值加1。當(dāng)循環(huán)條件不成立時(shí),返回d(學(xué)生信息數(shù)量)的值。每次需要用到學(xué)生信息數(shù)量的值時(shí)都會(huì)調(diào)用該函數(shù),求出最新的信息數(shù)量。3.8 學(xué)生信息排序排序功能使用的是冒泡排序,將文件中的信息讀取

11、到數(shù)組中,通過冒泡排序?qū)⑿畔凑丈蚺判蚝蟠娴轿募?,再次顯示的學(xué)生信息就是排序后的信息。4系統(tǒng)測(cè)試及系統(tǒng)運(yùn)行效果4.1 系統(tǒng)主界面進(jìn)入系統(tǒng)后將彈出菜單界面。系統(tǒng)主界面運(yùn)行效果如圖4-1所示圖4-1 系統(tǒng)主界面4.2 添加學(xué)生信息 首先輸入添加信息的數(shù)量,然后輸入第一位學(xué)生的信息,提示“添加信息成功”后再依次輸入其余的學(xué)生的信息。 添加學(xué)生信息的運(yùn)行效果如圖4-2所示圖4-2 添加學(xué)生信息4.3 學(xué)號(hào)查詢 輸入想要查詢的學(xué)號(hào),如果存在該學(xué)生,則顯示學(xué)生信息,不存在就提示該學(xué)生信息不存在。學(xué)號(hào)查詢的運(yùn)行效果如圖4-3、4-4所示圖4-3 學(xué)號(hào)查詢(不存在)圖4-4 學(xué)號(hào)查詢(存在)4.4 姓名查

12、詢輸入想要查詢的姓名,如果存在該學(xué)生,則顯示學(xué)生信息,不存在就提示該學(xué)生信息不存在。姓名查詢的運(yùn)行效果如圖4-5、4-6所示圖4-5 姓名查詢(不存在)圖4-6 姓名查詢(存在)4.5 顯示全部學(xué)生信息 顯示學(xué)生信息的運(yùn)行效果如圖4-7所示圖4-7 顯示全部學(xué)生信息4.6 統(tǒng)計(jì)學(xué)生信息數(shù)量 顯示學(xué)生信息的運(yùn)行效果如圖4-8所示圖4-8 統(tǒng)計(jì)學(xué)生信息數(shù)量4.7 學(xué)生信息排序?qū)W生信息排序采用的冒泡排序,排序成功后會(huì)提示返回菜單或者查看排序后的信息。學(xué)生信息排序的運(yùn)行效果如圖4-9、4-10所示圖4-9 學(xué)生信息排序圖4-10顯示排序后信息4.8 修改學(xué)生信息輸入需要修改的學(xué)號(hào),如果不存在,會(huì)提示該

13、學(xué)生信息不存在。否則刪除舊信息,添加該學(xué)生新的信息。修改學(xué)生信息的運(yùn)行效果如圖4-11所示圖4-11 修改學(xué)生信息4.9 刪除學(xué)生信息輸入學(xué)號(hào),如果學(xué)號(hào)不是12位,提示學(xué)號(hào)錯(cuò)誤,否則如果存在該學(xué)號(hào)信息,刪除該學(xué)生信息。刪除學(xué)生信息的運(yùn)行效果如圖4-12所示圖4-12 刪除學(xué)生信息 刪除后的信息如圖4-13所示圖4-13 刪除后的信息5 系統(tǒng)設(shè)計(jì)遇到的問題及解決方案問題1:c+的文件讀寫不會(huì)使用。百度查找c+文件讀寫的方法,通過不同的帖子學(xué)習(xí)有關(guān)文件操作的各種用法和小技巧。使用fstream頭文件,定義fin文件輸入流,fout文件輸出流。通過使用文件流的方式讀取或者寫入文件。問題2:代碼沒有報(bào)

14、錯(cuò),但是運(yùn)行結(jié)果出錯(cuò)。將出錯(cuò)的函數(shù)實(shí)現(xiàn)代碼注釋掉,改成在屏幕上顯示一句話。根據(jù)這句話是否顯示判斷程序是執(zhí)行到什么地方出錯(cuò)的,再根據(jù)具體的情況修改代碼直到正確。問題3:程序運(yùn)行后閃退,不提示任何錯(cuò)誤。使用vs的調(diào)試功能,找到程序是執(zhí)行到那個(gè)地方停止運(yùn)行的,修改此處的代碼直到程序運(yùn)行無誤。問題4:不知道怎樣刪除文件中的指定數(shù)據(jù),無法達(dá)到刪除學(xué)生信息的功能。讀取全部信息將不需要?jiǎng)h除的信息存到臨時(shí)的文件中,再將舊文件刪除,修改臨時(shí)文件為舊文件名,則文件中需要?jiǎng)h除的信息已經(jīng)刪除。6 總結(jié)與收獲 最初想做這個(gè)程序的起因是暑假打工夜班太無聊,所以萌生了自己做一個(gè)有點(diǎn)實(shí)用功能的小程序。因?yàn)樵诖笠坏臅r(shí)候看了一點(diǎn)

15、C+的書籍對(duì)C+面向過程的部分還算比較了解,而且一直覺得C+的語法比C簡(jiǎn)單,所以本程序的代碼都是用C+寫的。打工的時(shí)候沒帶電腦,當(dāng)時(shí)在網(wǎng)上找到一個(gè)手機(jī)上能用的編程軟件,名字是c4droid功能非常強(qiáng)大,和vs2013一樣可以顯示出代碼中的常見語法錯(cuò)誤。最初構(gòu)想的程序沒有那么多的功能,在實(shí)際編寫的時(shí)候感覺缺了一些功能不夠完善再慢慢添加。在編寫的時(shí)候遇到過很多問題,主要是C語言的知識(shí)掌握的還不夠精通,像結(jié)構(gòu)體和為文件的操作都是當(dāng)時(shí)現(xiàn)學(xué)的,而且C和C+的語法出入比較大,當(dāng)時(shí)都是需要使用某種功能的時(shí)候在網(wǎng)上查找帖子學(xué)習(xí)下是怎么用的然后根據(jù)自己的需要寫出適合的代碼。代碼雖然能通過編譯但是錯(cuò)誤還是很多的,

16、甚至有些時(shí)候都不知道錯(cuò)在什么地方,這是最頭疼的地方。解決的方法就是把出現(xiàn)錯(cuò)誤的函數(shù)里的代碼注釋掉,讓它只顯示一句話,慢慢查找是哪個(gè)代碼段出了錯(cuò)誤,最終解決了全部的問題。當(dāng)時(shí)程序的大致框架用了五晚上的時(shí)間編寫完成,后面又陸陸續(xù)續(xù)的對(duì)程序中不理想的地方做了一些更改最終做出了一個(gè)理想的程序。開學(xué)后課程設(shè)計(jì)就直接用的這個(gè)程序作為作業(yè),但是又出現(xiàn)了新的問題,因?yàn)槟菚r(shí)候是在手機(jī)上編寫的代碼,安卓系統(tǒng)使用的linux核心,代碼中調(diào)用的system()命令和電腦上windoows系統(tǒng)的system()命令不同,還有文件操作的路徑也要重新更改。更改完畢后又想添加一些新的功能而且最初的程序沒有使用結(jié)構(gòu)體,后來對(duì)結(jié)

17、構(gòu)體有了新的了解,就把程序又重新改寫了一下。為了把程序做成一個(gè)能在其他電腦上也能使用的軟件,又在網(wǎng)上學(xué)了vs中對(duì)程序的打包,為了打包出一個(gè)理想中的安裝包,找了好多帖子用了一天的時(shí)間才打包出了一個(gè)正常的安裝包,至此程序大功告成通過這次程序的編寫加深了我對(duì)C+的理解,在程序的編寫過程中又學(xué)習(xí)了很多新的知識(shí),明白了自己的短處在哪里,以后需要在哪個(gè)方向努力,認(rèn)識(shí)了很多的不足。從中學(xué)習(xí)了很多,收獲了很多。動(dòng)手是提升能力的有效方法,就像我在編寫這個(gè)程序之前可能就比其他同學(xué)多懂一點(diǎn)書上的知識(shí)。但在寫代碼的過程中遇到了很多問題,每解決一個(gè)問題,就多學(xué)了一些知識(shí),能力也有所提高??赡芎芏鄮旌瘮?shù)我們不知道怎么用,

18、比如你想要實(shí)現(xiàn)某一個(gè)功能,你可以去網(wǎng)上找一下有關(guān)的帖子,多找?guī)讉€(gè)帖子可能就會(huì)找到大神的帖子教你怎么用庫函數(shù)去實(shí)現(xiàn)這些功能。最后總結(jié)一下,百度是萬能的。33附錄 學(xué)生信息管理系統(tǒng)源代碼 /*程序功能: 1.系統(tǒng)菜單顯示 2.學(xué)生信息錄入功能 3.學(xué)生信息瀏覽功能 4.查詢: .學(xué)號(hào)查詢 .姓名查詢 5.學(xué)生信息的刪除與修改 6.系統(tǒng)中學(xué)生信息數(shù)量統(tǒng)計(jì) 7.學(xué)生信息排序(冒泡排序)作者:彭方林班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)1401學(xué)校:河南理工大學(xué)萬方科技學(xué)院日期:2015年11月11日*/#include/標(biāo)準(zhǔn)輸入輸出流頭文件#include/system函數(shù)頭文件#include/字符串頭文件#inc

19、lude/文件輸入輸出流頭文件using namespace std;/使用命名空間stdifstream fin;/定義文件輸入流ofstream fout;/定義文件輸出流struct student/定義學(xué)生信息結(jié)構(gòu)體string number;/學(xué)號(hào)string name;/姓名string sex;/性別float grade7;/*float grade0;/語文float grade1;/離散數(shù)學(xué)float grade2;/英語float grade3;/毛概float grade4;/電路基礎(chǔ)float grade5;/概率論float grade6;/體育*/;void in

20、put_data(int n, int data_number)/學(xué)生完整信息存入文件函數(shù)int i, j, k, m;student s, s1;int find = -1;/find初始值為-1,代表未找到相同信息,若文件中已經(jīng)存在此學(xué)生信息,則find為0for (i = 0; in; i+)cout 請(qǐng)輸入學(xué)生的學(xué)號(hào),姓名,性別,成績(jī)(成績(jī)順序依次為語文,離散數(shù)學(xué),英語,毛概,電路基礎(chǔ),概率論,體育。若該科成績(jī)無,請(qǐng)輸入0)(空格鍵分隔!) s.number s.sex;for (j = 0; j s.gradej;fin.open(D:學(xué)生信息學(xué)生信息.txt);/打開

21、文件if (fin.is_open()/判斷文件是否能打開,若能打開,則函數(shù)返回值-1,否則返回0for (k = 0; k s1.number s1.sex;/從文件中讀取學(xué)號(hào),姓名,性別for (m = 0; m s1.gradem;if (s.number = s1.number)/比較文件中讀取的學(xué)號(hào)和要輸入的學(xué)號(hào)是否一樣find = 0;/文件中存在該學(xué)生信息,find的值修改為0system(cls);/清空屏幕cout 此學(xué)生信息已存在,請(qǐng)進(jìn)入菜單選擇修改信息或者刪除信息之后再添加! endl;if (find != 0)/文件中沒有此學(xué)生信息fin.close(

22、);/關(guān)閉文件fout.open(D:學(xué)生信息學(xué)生信息.txt, ios:app);if (fout.is_open()/檢查文件能否打開fout s.number s.sex ;for (j = 0; j7; j+)fout s.gradej ;/向文件中寫入各項(xiàng)信息,中間以空格分隔,便于下次讀取fout.close();/關(guān)閉文件cout 添加信息成功 endl;elsecout 打開或?qū)懭胛募? endl;elsecout 打開文件失敗! ch;/從文件中讀取一個(gè)字符if (fin.eof()/檢查字符讀取是否成功,若讀取失敗,eof函數(shù)返回-1,說明文件為空cout

23、沒有找到學(xué)生信息,請(qǐng)?zhí)砑有畔⒅笤僭嚕?endl;fin.close();elsefin.close();fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()cout 系統(tǒng)所有學(xué)生信息為: endl;for (i = 0; i s.number s.sex;for (j = 0; j s.gradej;cout 學(xué)號(hào): s.number 姓名: 性別: s.sex 語文: s.grade0 離散數(shù)學(xué): s.grade1 英語: s.grade2 毛概: s.grade3 電路基礎(chǔ): s.grade4 概率論: s.grade5 體育:

24、 s.grade6 endl;fin.close();elsecout 沒有找到學(xué)生信息,請(qǐng)?zhí)砑有畔⒅笾卦嚕?ch;if (fin.eof()cout 沒有找到學(xué)生信息,請(qǐng)?zhí)砑有畔⒅笤僭嚕?endl;fin.close();fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()for (i = 0; i s.number s.sex;for (j = 0; j s.gradej;if (number_find = s.number)/文件中讀取的學(xué)號(hào),和要查找的學(xué)號(hào)相同find = 0;cout 該學(xué)生信息為: endl;cout 學(xué)號(hào): s.n

25、umber 姓名: 性別: s.sex 語文: s.grade0 離散數(shù)學(xué): s.grade1 英語: s.grade2 毛概: s.grade3 電路基礎(chǔ): s.grade4 概率論: s.grade5 體育: s.grade6 endl;break;/輸出該學(xué)生所有信息并跳出循環(huán),查找結(jié)束if (find != 0)cout 未找到該學(xué)號(hào)對(duì)應(yīng)的信息! endl;fin.close();elsecout 系統(tǒng)中還沒有此學(xué)號(hào)的信息! endl;void student_name_find(string name_find, int data_number)/姓名查找函數(shù)int i

26、, j;int find = -1;student s;fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()for (i = 0; i s.number s.sex;for (j = 0; j s.gradej;if (name_find = )find = 0;cout 該學(xué)生信息為: endl;cout 學(xué)號(hào): s.number 姓名: 性別: s.sex 語文: s.grade0 離散數(shù)學(xué): s.grade1 英語: s.grade2 毛概: s.grade3 電路基礎(chǔ): s.grade4 概率論: s.grade5

27、 體育: s.grade6 endl;break;if (find != 0)cout 未找到該姓名對(duì)應(yīng)的信息! endl;fin.close();elsecout 系統(tǒng)中還沒有此姓名的信息! ch;if (fin.eof()cout 沒有找到學(xué)生信息,請(qǐng)?zhí)砑有畔⒅笤僭嚕?endl;fin.close();fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()for (i = 0; i s.number s.sex;for (j = 0; j s.gradej;if (number_delete = s.number)/文件中讀取的學(xué)號(hào),和要查找的

28、學(xué)號(hào)相同find = 0;fin.close();elsecout 系統(tǒng)中還沒有此學(xué)號(hào)的信息! ch;if (fin.eof()cout 沒有找到學(xué)生信息存檔! endl;elsefin.close();fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()for (i = 0; i s.number s.sex;for (j = 0; j s.gradej;if (number_delete != s.number)/如果學(xué)號(hào)和要?jiǎng)h除的學(xué)號(hào)不同,將該學(xué)生信息存入學(xué)生信息1中fout.open(D:學(xué)生信息學(xué)生信息1.txt, ios:app);if

29、 (fout.is_open()fout s.number s.sex ;for (j = 0; j 7; j+)fout s.gradej ;fout.close();elsecout 刪除過程出錯(cuò)! endl;fin.close();system(del D:學(xué)生信息學(xué)生信息.txt);/刪除學(xué)生信息.txtrename(D:學(xué)生信息學(xué)生信息1.txt, D:學(xué)生信息學(xué)生信息.txt);/將學(xué)生信息1.txt重命名為學(xué)生信息.txtcout 刪除信息成功 endl;elsecout 未找到該學(xué)號(hào)對(duì)應(yīng)的信息! endl;elsecout 系統(tǒng)中沒有此學(xué)號(hào)信息 ch;if (fi

30、n.eof()/如果文件為空,關(guān)閉文件fin.close();elsefin.close();fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()/判斷文件打開狀態(tài)函數(shù)while (fin s.number)/如果能讀取到學(xué)號(hào)fin.seekg(-12, ios:cur);/將文件位置指針從當(dāng)前學(xué)號(hào)尾部移動(dòng)到學(xué)號(hào)之前,否則信息會(huì)讀取混亂fin s.number s.sex;for (j = 0; j s.gradej;d+;/,讀取成功,學(xué)生信息數(shù)量加一fin.close();return d;/返回學(xué)生信息數(shù)量void student_data_

31、modify()/學(xué)生信息修改int j;student s;cout 請(qǐng)輸入新的的學(xué)號(hào),姓名,性別,成績(jī)(成績(jī)順序依次為語文,離散數(shù)學(xué),英語,毛概,電路基礎(chǔ),概率論,體育。若該科成績(jī)無,請(qǐng)輸入0。)(空格鍵分隔!),系統(tǒng)會(huì)自動(dòng)修改該學(xué)生信息! s.number s.sex;for (j = 0; j s.gradej;fout.open(D:學(xué)生信息學(xué)生信息.txt, ios:app);if (fout.is_open()/判斷文件打開狀態(tài)函數(shù)fout s.number s.sex s.grade0 s.grade1 s.grade2 s.grade3 s.gra

32、de4 s.grade5 s.grade6 ;fout.close();cout 修改信息成功 endl;elsecout 打開或?qū)懭胛募? endl;void student_data_sort(int data_number)/學(xué)生信息排序(冒泡排序)int i, j;student s200, number_max;fin.open(D:學(xué)生信息學(xué)生信息.txt);if (fin.is_open()for (i = 0; i si.number si.sex;for (j = 0; j si.gradej;fin.close();number_max.number =

33、 s0.number;for (i = 0; i data_number - 1; i+)for (j = 0; jsj + 1.number)number_max = sj;sj = sj + 1;sj + 1 = number_max;fout.open(D:學(xué)生信息學(xué)生信息.txt);if (fout.is_open()for (i = 0; i data_number; i+)fout si.number si.sex si.grade0 si.grade1 si.grade2 si.grade3 si.grade4 si.grade5 si.grade6 ;fout.

34、close();cout 排序成功! endl;elsecout 打開文件失敗,無法完成排序! endl;int main()system(color 5F);/改變程序窗口顏色為湖藍(lán)色背景黑色文字char menu;string number_find, name_find;folder();/程序運(yùn)行前,先創(chuàng)建系統(tǒng)文件夾和文件menu:system(cls);/在屏幕上顯示菜單信息cout 歡迎使用信息查詢系統(tǒng),按數(shù)字鍵進(jìn)入菜單選項(xiàng)。 endl;cout 1.學(xué)號(hào)查詢 endl;cout 2.姓名查詢 endl;cout 3.添加學(xué)生信息 endl;cout 4.刪除學(xué)生信息 endl;c

35、out 5.修改學(xué)生信息 endl;cout 6.查看已存檔的學(xué)生信息 endl;cout 7.查看已存檔的學(xué)生信息數(shù)量 endl;cout 8.學(xué)生信息排序 menu;while (menu8)/當(dāng)輸入數(shù)值不在菜單范圍內(nèi)會(huì)提示輸入錯(cuò)誤cout 輸入無效,請(qǐng)輸入正確的數(shù)字! menu;system(cls);switch (int(menu) - 48)/將menu從字符型強(qiáng)制轉(zhuǎn)換為整形case 1: char ch; int data_number; data_number = student_data_number();/求出文件中已存在的信息數(shù)量確定查找學(xué)號(hào)時(shí)的循環(huán)次數(shù) number:

36、cout 學(xué)號(hào)查詢: endl; cout 請(qǐng)輸入12位學(xué)號(hào): number_find; student_number_find(number_find, data_number); cout 按*鍵返回菜單,按#鍵重新查找! ch; while (ch != *&ch != #) cout 輸入錯(cuò)誤,請(qǐng)輸入*或#! ch; system(cls); if (ch = *) goto menu;/跳轉(zhuǎn)到菜單 else goto number; break;case 2: char ch; int data_number; data_number = student_data_number(); name: cout 姓名查詢 endl; cout 請(qǐng)輸入學(xué)生姓名: name_find; student_name_find(name_find, data_number); cout 按*鍵返回菜單,按#鍵重新查找! c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論