




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、高級語言程序設(shè)計課程設(shè)計報告高級語言程序設(shè)計課程設(shè)計報告學(xué)生信息管理系統(tǒng)的設(shè)計與實現(xiàn)學(xué) 號: 141608010141 姓 名: 彭方林 專業(yè)班級: 計算機(jī)科學(xué)與技術(shù)1401日 期: 2015年11月11日 信息科學(xué)與工程系1目 錄1、課程設(shè)計目的.22、課程設(shè)計內(nèi)容.23、學(xué)生信息管理系統(tǒng)的實現(xiàn).84、系統(tǒng)測試及系統(tǒng)運(yùn)行效果.95、系統(tǒng)設(shè)計遇到的問題及解決方案136、總結(jié)與收獲13附錄 源程序代碼15 7、課程設(shè)計成績3511高級語言程序設(shè)計課程設(shè)計報告351課程設(shè)計的目的 1.1 課程設(shè)計題目學(xué)生信息管理系統(tǒng)的設(shè)計與實現(xiàn) 2.1 課程設(shè)計目的本課程設(shè)計是在學(xué)習(xí)C+基本理論之后的實踐教學(xué)環(huán)節(jié)
2、。該實踐教學(xué)是軟件設(shè)計的綜合訓(xùn)練,包括問題分析、總體結(jié)構(gòu)設(shè)計、用戶界面設(shè)計、程序設(shè)計基本技能和技巧。要求學(xué)生在設(shè)計中逐步提高程序設(shè)計能力,培養(yǎng)科學(xué)的軟件工作方法。學(xué)生通過課程設(shè)計在下述各方面得到鍛煉: .能根據(jù)實際問題的具體情況,結(jié)合C+的基本理論和基本技巧,正確分析問題,并能設(shè)計出解決問題的有效算法與程序。.提高程序設(shè)計和調(diào)試能力。學(xué)生通過上機(jī)實習(xí),驗證自己設(shè)計的算法和程序的正確性,學(xué)會有效利用基本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改,進(jìn)一步提高程序設(shè)計水平。2課程設(shè)計的內(nèi)容2.1 題目分析設(shè)計一個學(xué)生信息管理系統(tǒng),其中包括:學(xué)生基本信息:學(xué)號、姓名、性別、成績(語文、離散數(shù)
3、學(xué)、英語、毛概、電路基礎(chǔ)、概率論、體育)。因為課程設(shè)計時間為大二上學(xué)期,所以成績采用的是這學(xué)期本專業(yè)的課表。學(xué)生信息管理系統(tǒng)功能如表1-1所示,具體功能如下:1. 系統(tǒng)菜單顯示2. 學(xué)生信息錄入功能3. 學(xué)生信息瀏覽功能4. 查詢:.學(xué)號查詢.姓名查詢5. 學(xué)生信息的刪除與修改6. 系統(tǒng)中學(xué)生信息數(shù)量統(tǒng)計7. 學(xué)生信息排序(冒泡排序)表1-1 程序功能學(xué)號查詢姓名查詢添加學(xué)生信息刪除學(xué)生信息修改學(xué)生信息查看已添加學(xué)生信息統(tǒng)計學(xué)生信息數(shù)量學(xué)生信息排序2.2 系統(tǒng)程序模塊設(shè)計2.2.1 菜單模塊 繪制菜單(包含學(xué)號查詢、姓名查詢、添加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查看已存檔學(xué)生信息、統(tǒng)計學(xué)
4、生信息數(shù)量、學(xué)生信息排序)。根據(jù)用戶輸入的值調(diào)用對應(yīng)的模塊函數(shù)實現(xiàn)該項功能2.2.2 信息錄入模塊查找系統(tǒng)中是否已存在該學(xué)號對應(yīng)的信息if(存在)提示信息已存在else向文件中寫入各項信息2.2.3 信息讀出模塊判斷系統(tǒng)中是否存在學(xué)生信息if(不存在)提示信息不存在else在屏幕上顯示該學(xué)號對應(yīng)的信息2.2.4 信息查詢模塊 if(學(xué)號查詢) 判斷文件是否為空 查找系統(tǒng)中是否有該學(xué)號信息 if(存在) 輸出學(xué)生信息 else 提示學(xué)生信息不存在 if(姓名查詢) 判斷文件是否為空 查找系統(tǒng)中是否有該姓名對應(yīng)信息 if(存在) 輸出學(xué)生信息 else 提示信息不存在 2.2.5 創(chuàng)建系統(tǒng)文件夾模
5、塊 判斷系統(tǒng)文件夾是否存在 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é)號信息 if(存在) 刪除該學(xué)生信息 else 提示該學(xué)生信息不存在 2.2.7 修改學(xué)生信息模塊 查看系統(tǒng)中是否存在該學(xué)生信息 if(存在) 刪除該學(xué)生信息 添加該學(xué)生新信息 修改成功 2.2.8 統(tǒng)計學(xué)生信息數(shù)量模塊 if(文件存在) 讀取學(xué)號,每讀取到一個學(xué)號,數(shù)量+1 返回信息數(shù)量的值 2.2.9 學(xué)生信息排序模塊 if
6、(打開成功) 讀取全部信息存到結(jié)構(gòu)體數(shù)組,按照冒泡排序?qū)⑿畔磳W(xué)號升序排序 之后將數(shù)組內(nèi)容依次存入文件,并覆蓋舊文件。 2.2.10 模塊圖 各模塊之間結(jié)構(gòu)圖如圖2-1所示學(xué)生信息管理系統(tǒng) 系統(tǒng)文件檢測刪除學(xué)生信息查詢學(xué)生信息學(xué)生信息排序統(tǒng)計信息數(shù)量瀏覽學(xué)生信息修改學(xué)生信息添加學(xué)生信息學(xué)號查詢姓名查詢 圖2-1 模塊圖2.3 系統(tǒng)主要函數(shù)學(xué)生信息管理采用結(jié)構(gòu)化程序設(shè)計思想,除主函數(shù)外共設(shè)計了8個函數(shù),函數(shù)原型及功能說明如圖2-2所示: 圖 2-2 系統(tǒng)主要函數(shù) 2.4 程序流程圖 開始 菜單否添加是否瀏覽信息錄入是否顯示全部信息修改修改信息是否刪除是否刪除信息查詢是否排序是學(xué)號查詢姓名查詢冒泡
7、排序否查看是顯示排序后的信息 結(jié)束 圖2-3 程序流程圖3學(xué)生信息管理系統(tǒng)的實現(xiàn)3.1 學(xué)號查詢 程序每次從文件中讀取出一位學(xué)生的所有信息,將讀取到的學(xué)號與用戶所輸入的學(xué)號進(jìn)行比較。如果兩個學(xué)號相同,表示已找到該學(xué)號對應(yīng)的信息,顯示出該學(xué)生的全部信息,查找結(jié)束。若兩個學(xué)號不同,則重新讀取下一位學(xué)生的信息進(jìn)行比較,直到文件讀取到尾部,顯示未找到該學(xué)號對應(yīng)的信息。3.2 姓名查詢程序每次從文件中讀取出一位學(xué)生的所有信息,將讀取到的姓名與用戶所輸入的姓名進(jìn)行比較。如果兩個姓名相同,表示已找到該姓名對應(yīng)的信息,顯示出該學(xué)生的全部信息,查找結(jié)束。若兩個姓名不同,則重新讀取下一位學(xué)生的信息進(jìn)行比較,直到文
8、件讀取到尾部,顯示未找到該姓名對應(yīng)的信息。3.3 添加學(xué)生信息根據(jù)用戶輸入的學(xué)生信息數(shù)量將下列過程循環(huán)對應(yīng)的次數(shù):新建一個標(biāo)識變量find的值為-1,代表文件中不存在該學(xué)生信息。用戶輸入學(xué)生信息后打開文件讀取每個學(xué)生信息的信息,比較兩個信息的學(xué)號是否相同。如果相同則修改find的值為0,代表文件中已存在該學(xué)生的信息,同時提示“此學(xué)生信息已存在,請進(jìn)入菜單選擇修改信息或者刪除信息之后再添加!”。檢查完學(xué)生信息是否重復(fù)輸入后,若find的值為-1,則將該學(xué)生信息存入到文件中,若find值為0,則跳過此步驟。3.4 刪除學(xué)生信息新建一個標(biāo)識變量find的值為-1,代表文件中不存在該學(xué)生信息。用戶輸入
9、學(xué)生信息后打開文件讀取每個學(xué)生信息的信息,比較兩個信息的學(xué)號是否相同。如果相同則修改find的值為0,代表文件中存在該學(xué)生的信息。若find的值為0則執(zhí)行刪除功能:新建一個文件“學(xué)生信息1.txt”作為臨時文件,用來存儲刪除后的信息。讀取一位學(xué)生的全部信息,如果該信息的學(xué)號和想要刪除的學(xué)號不同,則將該學(xué)生信息存到“學(xué)生信息1.txt”中。若兩個學(xué)號相同,則跳過該學(xué)號,不將之存入臨時文件中。文件讀取到末尾后,刪除“學(xué)生信息.txt”,將“學(xué)生信息1.txt重命名為“學(xué)生信息.txt”,則需要刪除的信息已從文件中刪除。3.5 修改學(xué)生信息 修改學(xué)生信息的功能為刪除和添加功能的結(jié)合,用戶輸入需要修改
10、的學(xué)生學(xué)號后,系統(tǒng)會先調(diào)用刪除學(xué)生信息功能刪除該學(xué)號對應(yīng)的信息,之后再調(diào)用添加學(xué)生信息功能添加新的學(xué)生信息,修改完畢。3.6 查看已添加學(xué)生信息 該功能是顯示文件中所有的學(xué)生信息,根據(jù)學(xué)生信息數(shù)量確定循環(huán)次數(shù),依次輸出每位學(xué)生的信息。3.7 統(tǒng)計學(xué)生信息數(shù)量先新建一個變量d的值為0,代表學(xué)生信息數(shù)量。While循環(huán)的條件為(能讀取到學(xué)號),當(dāng)條件成立時將文件位置指針從當(dāng)前學(xué)號尾部移動到學(xué)號之前,否則信息會讀取混亂,并將d的值加1。當(dāng)循環(huán)條件不成立時,返回d(學(xué)生信息數(shù)量)的值。每次需要用到學(xué)生信息數(shù)量的值時都會調(diào)用該函數(shù),求出最新的信息數(shù)量。3.8 學(xué)生信息排序排序功能使用的是冒泡排序,將文件
11、中的信息讀取到數(shù)組中,通過冒泡排序?qū)⑿畔凑丈蚺判蚝蟠娴轿募校俅物@示的學(xué)生信息就是排序后的信息。4系統(tǒng)測試及系統(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é)號查詢 輸入想要查詢的學(xué)號,如果存在該學(xué)生,則顯示學(xué)生信息,不存在就提示該學(xué)生信息不存在。學(xué)號查詢的運(yùn)行效果如圖4-3、4-4所示圖4-3 學(xué)號查詢(不存在)圖4-4 學(xué)號查詢(存在)4
12、.4 姓名查詢輸入想要查詢的姓名,如果存在該學(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)計學(xué)生信息數(shù)量 顯示學(xué)生信息的運(yùn)行效果如圖4-8所示圖4-8 統(tǒng)計學(xué)生信息數(shù)量4.7 學(xué)生信息排序?qū)W生信息排序采用的冒泡排序,排序成功后會提示返回菜單或者查看排序后的信息。學(xué)生信息排序的運(yùn)行效果如圖4-9、4-10所示圖4-9 學(xué)生信息排序圖4-10顯示排序后信息4.8 修改學(xué)生信息輸入需要修改的學(xué)號,如果不存
13、在,會提示該學(xué)生信息不存在。否則刪除舊信息,添加該學(xué)生新的信息。修改學(xué)生信息的運(yùn)行效果如圖4-11所示圖4-11 修改學(xué)生信息4.9 刪除學(xué)生信息輸入學(xué)號,如果學(xué)號不是12位,提示學(xué)號錯誤,否則如果存在該學(xué)號信息,刪除該學(xué)生信息。刪除學(xué)生信息的運(yùn)行效果如圖4-12所示圖4-12 刪除學(xué)生信息 刪除后的信息如圖4-13所示圖4-13 刪除后的信息5 系統(tǒng)設(shè)計遇到的問題及解決方案問題1:c+的文件讀寫不會使用。百度查找c+文件讀寫的方法,通過不同的帖子學(xué)習(xí)有關(guān)文件操作的各種用法和小技巧。使用fstream頭文件,定義fin文件輸入流,fout文件輸出流。通過使用文件流的方式讀取或者寫入文件。問題2
14、:代碼沒有報錯,但是運(yùn)行結(jié)果出錯。將出錯的函數(shù)實現(xiàn)代碼注釋掉,改成在屏幕上顯示一句話。根據(jù)這句話是否顯示判斷程序是執(zhí)行到什么地方出錯的,再根據(jù)具體的情況修改代碼直到正確。問題3:程序運(yùn)行后閃退,不提示任何錯誤。使用vs的調(diào)試功能,找到程序是執(zhí)行到那個地方停止運(yùn)行的,修改此處的代碼直到程序運(yùn)行無誤。問題4:不知道怎樣刪除文件中的指定數(shù)據(jù),無法達(dá)到刪除學(xué)生信息的功能。讀取全部信息將不需要刪除的信息存到臨時的文件中,再將舊文件刪除,修改臨時文件為舊文件名,則文件中需要刪除的信息已經(jīng)刪除。6 總結(jié)與收獲 最初想做這個程序的起因是暑假打工夜班太無聊,所以萌生了自己做一個有點(diǎn)實用功能的小程序。因為在大一的
15、時候看了一點(diǎn)C+的書籍對C+面向過程的部分還算比較了解,而且一直覺得C+的語法比C簡單,所以本程序的代碼都是用C+寫的。打工的時候沒帶電腦,當(dāng)時在網(wǎng)上找到一個手機(jī)上能用的編程軟件,名字是c4droid功能非常強(qiáng)大,和vs2013一樣可以顯示出代碼中的常見語法錯誤。最初構(gòu)想的程序沒有那么多的功能,在實際編寫的時候感覺缺了一些功能不夠完善再慢慢添加。在編寫的時候遇到過很多問題,主要是C語言的知識掌握的還不夠精通,像結(jié)構(gòu)體和為文件的操作都是當(dāng)時現(xiàn)學(xué)的,而且C和C+的語法出入比較大,當(dāng)時都是需要使用某種功能的時候在網(wǎng)上查找帖子學(xué)習(xí)下是怎么用的然后根據(jù)自己的需要寫出適合的代碼。代碼雖然能通過編譯但是錯誤
16、還是很多的,甚至有些時候都不知道錯在什么地方,這是最頭疼的地方。解決的方法就是把出現(xiàn)錯誤的函數(shù)里的代碼注釋掉,讓它只顯示一句話,慢慢查找是哪個代碼段出了錯誤,最終解決了全部的問題。當(dāng)時程序的大致框架用了五晚上的時間編寫完成,后面又陸陸續(xù)續(xù)的對程序中不理想的地方做了一些更改最終做出了一個理想的程序。開學(xué)后課程設(shè)計就直接用的這個程序作為作業(yè),但是又出現(xiàn)了新的問題,因為那時候是在手機(jī)上編寫的代碼,安卓系統(tǒng)使用的linux核心,代碼中調(diào)用的system()命令和電腦上windoows系統(tǒng)的system()命令不同,還有文件操作的路徑也要重新更改。更改完畢后又想添加一些新的功能而且最初的程序沒有使用結(jié)構(gòu)
17、體,后來對結(jié)構(gòu)體有了新的了解,就把程序又重新改寫了一下。為了把程序做成一個能在其他電腦上也能使用的軟件,又在網(wǎng)上學(xué)了vs中對程序的打包,為了打包出一個理想中的安裝包,找了好多帖子用了一天的時間才打包出了一個正常的安裝包,至此程序大功告成通過這次程序的編寫加深了我對C+的理解,在程序的編寫過程中又學(xué)習(xí)了很多新的知識,明白了自己的短處在哪里,以后需要在哪個方向努力,認(rèn)識了很多的不足。從中學(xué)習(xí)了很多,收獲了很多。動手是提升能力的有效方法,就像我在編寫這個程序之前可能就比其他同學(xué)多懂一點(diǎn)書上的知識。但在寫代碼的過程中遇到了很多問題,每解決一個問題,就多學(xué)了一些知識,能力也有所提高。可能很多庫函數(shù)我們不
18、知道怎么用,比如你想要實現(xiàn)某一個功能,你可以去網(wǎng)上找一下有關(guān)的帖子,多找?guī)讉€帖子可能就會找到大神的帖子教你怎么用庫函數(shù)去實現(xiàn)這些功能。最后總結(jié)一下,百度是萬能的。33附錄 學(xué)生信息管理系統(tǒng)源代碼 /*程序功能: 1.系統(tǒng)菜單顯示 2.學(xué)生信息錄入功能 3.學(xué)生信息瀏覽功能 4.查詢: .學(xué)號查詢 .姓名查詢 5.學(xué)生信息的刪除與修改 6.系統(tǒng)中學(xué)生信息數(shù)量統(tǒng)計 7.學(xué)生信息排序(冒泡排序)作者:彭方林班級:計算機(jī)科學(xué)與技術(shù)1401學(xué)校:河南理工大學(xué)萬方科技學(xué)院日期:2015年11月11日*/#include<iostream>/標(biāo)準(zhǔn)輸入輸出流頭文件#include<stdli
19、b.h>/system函數(shù)頭文件#include<string>/字符串頭文件#include<fstream>/文件輸入輸出流頭文件using namespace std;/使用命名空間stdifstream fin;/定義文件輸入流ofstream fout;/定義文件輸出流struct student/定義學(xué)生信息結(jié)構(gòu)體string number;/學(xué)號string name;/姓名string sex;/性別float grade7;/*float grade0;/語文float grade1;/離散數(shù)學(xué)float grade2;/英語float grad
20、e3;/毛概float grade4;/電路基礎(chǔ)float grade5;/概率論float grade6;/體育*/;void input_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; i<n; i+)cout << "請輸入學(xué)生的學(xué)號,姓名,性別,成績(成績順序依次為語文,離散數(shù)學(xué),英語,毛概,電路基礎(chǔ),概率論,體育。若該科成績無,請
21、輸入0)(空格鍵分隔!)" << endl;cin >> s.number >> >> s.sex;for (j = 0; j<7; j+)/循環(huán)輸入7門科目的成績cin >> s.gradej;fin.open("D:學(xué)生信息學(xué)生信息.txt");/打開文件if (fin.is_open()/判斷文件是否能打開,若能打開,則函數(shù)返回值-1,否則返回0for (k = 0; k<data_number; k+)/檢查系統(tǒng)中是否已存在該學(xué)號fin >> s1.numbe
22、r >> >> s1.sex;/從文件中讀取學(xué)號,姓名,性別for (m = 0; m<7; m+)fin >> s1.gradem;if (s.number = s1.number)/比較文件中讀取的學(xué)號和要輸入的學(xué)號是否一樣find = 0;/文件中存在該學(xué)生信息,find的值修改為0system("cls");/清空屏幕cout << "此學(xué)生信息已存在,請進(jìn)入菜單選擇修改信息或者刪除信息之后再添加!" << endl;if (find != 0)/文件中沒有此學(xué)生信
23、息fin.close();/關(guān)閉文件fout.open("D:學(xué)生信息學(xué)生信息.txt", ios:app);if (fout.is_open()/檢查文件能否打開fout << s.number << " " << << " " << s.sex << " "for (j = 0; j<7; j+)fout << s.gradej << " "/向文件中寫入各項信息,中間以空格分
24、隔,便于下次讀取fout.close();/關(guān)閉文件cout << "添加信息成功" << endl;elsecout << "打開或?qū)懭胛募?" << endl;elsecout << "打開文件失??!" << endl;void output_data(int data_number)/學(xué)生完整信息讀出文件函數(shù)int i, j;student s;char ch;fin.open("D:學(xué)生信息學(xué)生信息.txt");fflush(std
25、in);/清空輸入緩沖區(qū)fin >> ch;/從文件中讀取一個字符if (fin.eof()/檢查字符讀取是否成功,若讀取失敗,eof函數(shù)返回-1,說明文件為空cout << "沒有找到學(xué)生信息,請?zhí)砑有畔⒅笤僭嚕?quot; << endl;fin.close();elsefin.close();fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()cout << "系統(tǒng)所有學(xué)生信息為:" << endl;for (i = 0; i<data
26、_number; i+)/輸出所有學(xué)生信息fin >> s.number >> >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;cout << "學(xué)號:" << s.number << " " << "姓名:" << << " " << "性別:" << s.sex <&l
27、t; " " << "語文:" << s.grade0 << "離散數(shù)學(xué):" << s.grade1 << "英語:" << s.grade2 << "毛概:" << s.grade3 << "電路基礎(chǔ):" << s.grade4 << "概率論:" << s.grade5 << "體育:&q
28、uot; << s.grade6 << endl;fin.close();elsecout << "沒有找到學(xué)生信息,請?zhí)砑有畔⒅笾卦嚕?quot; << endl;void student_number_find(string number_find, int data_number)/學(xué)號查找函數(shù)int i, j;int find = -1;char ch;student s;fin.open("D:學(xué)生信息學(xué)生信息.txt");fin >> ch;if (fin.eof()cout <<
29、; "沒有找到學(xué)生信息,請?zhí)砑有畔⒅笤僭嚕?quot; << endl;fin.close();fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()for (i = 0; i<data_number; i+)fin >> s.number >> >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;if (number_find = s.number)/文件中讀取的學(xué)號,和要查找的學(xué)號相同find = 0;
30、cout << "該學(xué)生信息為:" << endl;cout << "學(xué)號:" << s.number << " " << "姓名:" << << " " << "性別:" << s.sex << " " << "語文:" << s.grade0 << &q
31、uot;離散數(shù)學(xué):" << s.grade1 << "英語:" << s.grade2 << "毛概:" << s.grade3 << "電路基礎(chǔ):" << s.grade4 << "概率論:" << s.grade5 << "體育:" << s.grade6 << endl;break;/輸出該學(xué)生所有信息并跳出循環(huán),查找結(jié)束if (find
32、 != 0)cout << "未找到該學(xué)號對應(yīng)的信息!" << endl;fin.close();elsecout << "系統(tǒng)中還沒有此學(xué)號的信息!" << endl;void student_name_find(string name_find, int data_number)/姓名查找函數(shù)int i, j;int find = -1;student s;fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()for (i = 0; i<dat
33、a_number; i+)fin >> s.number >> >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;if (name_find = )find = 0;cout << "該學(xué)生信息為:" << endl;cout << "學(xué)號:" << s.number << " " << "姓名:" << s.na
34、me << " " << "性別:" << s.sex << " " << "語文:" << s.grade0 << "離散數(shù)學(xué):" << s.grade1 << "英語:" << s.grade2 << "毛概:" << s.grade3 << "電路基礎(chǔ):" << s
35、.grade4 << "概率論:" << s.grade5 << "體育:" << s.grade6 << endl;break;if (find != 0)cout << "未找到該姓名對應(yīng)的信息!" << endl;fin.close();elsecout << "系統(tǒng)中還沒有此姓名的信息!" << endl;void folder()/創(chuàng)建系統(tǒng)文件夾,每次運(yùn)行程序都會查找文件夾和文件是否存在,若不存在則
36、創(chuàng)建,防止程序中打開文件時打開失敗fin.open("D:學(xué)生信息, ios:in");if (!fin)/判斷文件夾是否存在system("md D:學(xué)生信息");/創(chuàng)建文件夾fin.close();fin.open("D:學(xué)生信息學(xué)生信息.txt", ios:in);if (!fin)/判斷文件是否存在fout.open("D:學(xué)生信息學(xué)生信息.txt");/創(chuàng)建系統(tǒng)文件fout.close();fin.close();int student_data_delete(string number_delete,
37、int data_number)/刪除學(xué)生信息函數(shù)int i, j;int find = -1;char ch;student s;fin.open("D:學(xué)生信息學(xué)生信息.txt");fin >> ch;if (fin.eof()cout << "沒有找到學(xué)生信息,請?zhí)砑有畔⒅笤僭嚕?quot; << endl;fin.close();fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()for (i = 0; i<data_number; i+)fin >&
38、gt; s.number >> >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;if (number_delete = s.number)/文件中讀取的學(xué)號,和要查找的學(xué)號相同find = 0;fin.close();elsecout << "系統(tǒng)中還沒有此學(xué)號的信息!" << endl;if (find = 0)fin.open("D:學(xué)生信息學(xué)生信息.txt");fin >> ch;if (fin.eof()cout
39、<< "沒有找到學(xué)生信息存檔!" << endl;elsefin.close();fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()for (i = 0; i < data_number; i+)fin >> s.number >> >> s.sex;for (j = 0; j < 7; j+)fin >> s.gradej;if (number_delete != s.number)/如果學(xué)號和要刪除的學(xué)號不同,將該學(xué)
40、生信息存入學(xué)生信息1中fout.open("D:學(xué)生信息學(xué)生信息1.txt", ios:app);if (fout.is_open()fout << s.number << " " << << " " << s.sex << " "for (j = 0; j < 7; j+)fout << s.gradej << " "fout.close();elsecout <<
41、"刪除過程出錯!" << 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é)號對應(yīng)的信息!" << endl;elsecout <
42、< "系統(tǒng)中沒有此學(xué)號信息" << endl;return find;int student_data_number()/統(tǒng)計學(xué)生信息數(shù)量函數(shù)int j;student s;int d = 0;/學(xué)生信息數(shù)量char ch;fin.open("D:學(xué)生信息學(xué)生信息.txt");fin >> ch;if (fin.eof()/如果文件為空,關(guān)閉文件fin.close();elsefin.close();fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()/判斷文件打開狀態(tài)
43、函數(shù)while (fin >> s.number)/如果能讀取到學(xué)號fin.seekg(-12, ios:cur);/將文件位置指針從當(dāng)前學(xué)號尾部移動到學(xué)號之前,否則信息會讀取混亂fin >> s.number >> >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;d+;/,讀取成功,學(xué)生信息數(shù)量加一fin.close();return d;/返回學(xué)生信息數(shù)量void student_data_modify()/學(xué)生信息修改int j;student s;cout <
44、< "請輸入新的的學(xué)號,姓名,性別,成績(成績順序依次為語文,離散數(shù)學(xué),英語,毛概,電路基礎(chǔ),概率論,體育。若該科成績無,請輸入0。)(空格鍵分隔!),系統(tǒng)會自動修改該學(xué)生信息!" << endl;cin >> s.number >> >> s.sex;for (j = 0; j<7; j+)cin >> s.gradej;fout.open("D:學(xué)生信息學(xué)生信息.txt", ios:app);if (fout.is_open()/判斷文件打開狀態(tài)函數(shù)fout <
45、;< s.number << " " << << " " << s.sex << " " << s.grade0 << " " << s.grade1 << " " << s.grade2 << " " << s.grade3 << " " << s.grade4 <
46、;< " " << 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_ma
47、x;fin.open("D:學(xué)生信息學(xué)生信息.txt");if (fin.is_open()for (i = 0; i < data_number; i+)fin >> si.number >> >> si.sex;for (j = 0; j < 7; j+)fin >> si.gradej;fin.close();number_max.number = s0.number;for (i = 0; i < data_number - 1; i+)for (j = 0; j<data_nu
48、mber - 1; j+)if (sj.number>sj + 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 << "
49、; " << si.grade0 << " " << si.grade1 << " " << si.grade2 << " " << si.grade3 << " " << si.grade4 << " " << si.grade5 << " " << si.grade6 << " &quo
50、t;fout.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 << &
51、quot;歡迎使用信息查詢系統(tǒng),按數(shù)字鍵進(jìn)入菜單選項。" << endl;cout << "1.學(xué)號查詢" << endl;cout << "2.姓名查詢" << endl;cout << "3.添加學(xué)生信息" << endl;cout << "4.刪除學(xué)生信息" << endl;cout << "5.修改學(xué)生信息" << endl;cout <&l
52、t; "6.查看已存檔的學(xué)生信息" << endl;cout << "7.查看已存檔的學(xué)生信息數(shù)量" << endl;cout << "8.學(xué)生信息排序" << endl;menu_again:fflush(stdin);/清空輸入緩沖區(qū)cin >> menu;while (menu<'1' | menu>'8')/當(dāng)輸入數(shù)值不在菜單范圍內(nèi)會提示輸入錯誤cout << "輸入無效,請輸入正確的數(shù)字!
53、" << endl;fflush(stdin);cin >> 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é)號時的循環(huán)次數(shù) number: cout << "學(xué)號查詢:" << endl; cout << "請輸入12位學(xué)號:&q
54、uot; << endl; fflush(stdin); cin >> number_find; student_number_find(number_find, data_number); cout << "按*鍵返回菜單,按#鍵重新查找!" << endl; fflush(stdin); cin >> ch; while (ch != '*'&&ch != '#') cout << "輸入錯誤,請輸入*或#!" << e
55、ndl; fflush(stdin); cin >> 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 << "請輸入學(xué)生姓名:" << endl; ci
56、n >> name_find; student_name_find(name_find, data_number); cout << "按*鍵返回菜單,按#鍵重新查找!" << endl; fflush(stdin); cin >> ch; while (ch != '*'&&ch != '#') cout << "輸入錯誤,請輸入*或#!" << endl; fflush(stdin); cin >> ch; system("cls"); if (ch = '*') goto menu; else goto name; break;case 3: int n; int data_number; char ch; data_number
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范本首
- 借用賬戶走賬合同范本
- 廠房分開幾樓出租合同范本
- 大學(xué)籃球教學(xué)中人文素質(zhì)教育的滲透分析
- 公司出資買房合同范本
- 在古詩文教學(xué)中舒展學(xué)生生命靈性
- 印刷加工銷售合同范本
- 2025年黑龍江省安全員B證(項目經(jīng)理)考試題庫
- 出口窗簾訂單合同范本
- 樂隊授課服務(wù)合同范本
- H3C-CAS虛擬化平臺詳細(xì)介紹
- 小學(xué)生韻母in、ing常見漢字與區(qū)分練習(xí)
- 藥房品種類別及數(shù)量清單
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 初中物理人教版八年級下冊 第1節(jié)牛頓第一定律 課件
- 網(wǎng)站培訓(xùn)內(nèi)容trswcm65表單選件用戶手冊
- 連續(xù)平壓熱壓機(jī) 三篇 俞敏等
- 空調(diào)系統(tǒng)維保記錄表格模板
- 打印版-圓與二次函數(shù)綜合題精練(帶答案)
- 各種閥門CAD圖
- 工程結(jié)算書標(biāo)準(zhǔn)
評論
0/150
提交評論