下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告學(xué)生信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 號(hào):姓 名:彭方林專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù) 1401日 期:2015年11月11日信息科學(xué)與工程系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附錄源程序代碼 157 、課程設(shè)計(jì)成績(jī) 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é)。該實(shí)踐教學(xué)是軟件設(shè)計(jì)的綜合 訓(xùn)練,包括問題分析、總體結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、程序設(shè)計(jì)基本技能和技巧。
2、要求學(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ī)(語(yǔ)文、離散數(shù)學(xué)、英語(yǔ)、毛概、電路基礎(chǔ)、 概率論、體育)。因?yàn)檎n程設(shè)計(jì)時(shí)間為大二上學(xué)期,所以成績(jī)采用的是這學(xué)期本專
3、業(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ì)菜單模塊繪制菜單(包含學(xué)號(hào)查詢、姓名查詢、添加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、 查看已存檔學(xué)生信息、統(tǒng)計(jì)學(xué)生信息數(shù)量、學(xué)生信息排序)。根據(jù)用戶輸入的值調(diào)用對(duì)應(yīng)的模塊函數(shù)實(shí)現(xiàn)該項(xiàng)功能信息錄入模塊查找系統(tǒng)中是否已存在該學(xué)
4、號(hào)對(duì)應(yīng)的信息if (存在)提示信息已存在else向文件中寫入各項(xiàng)信息信息讀出模塊判斷系統(tǒng)中是否存在學(xué)生信息if(不存在)提示信息不存在else在屏幕上顯示該學(xué)號(hào)對(duì)應(yīng)的信息信息查詢模塊if(學(xué)號(hào)查詢)判斷文件是否為空查找系統(tǒng)中是否有該學(xué)號(hào)信息if(存在)輸出學(xué)生信息else提示學(xué)生信息不存在if(姓名查詢)判斷文件是否為空查找系統(tǒng)中是否有該姓名對(duì)應(yīng)信息if(存在)輸出學(xué)生信息else提示信息不存在225創(chuàng)建系統(tǒng)文件夾模塊判斷系統(tǒng)文件夾是否存在if(不存在)創(chuàng)建“ 學(xué)生信息”文件夾判斷系統(tǒng)文件是否存在if(不存在)創(chuàng)建“學(xué)生信息 學(xué)生信息.txt ”文件226刪除學(xué)生信息模塊查看系統(tǒng)文件是否為空i
5、f(文件為空)提示學(xué)生信息不存在else查找系統(tǒng)中是否有該學(xué)號(hào)信息if(存在)刪除該學(xué)生信息else提示該學(xué)生信息不存在修改學(xué)生信息模塊查看系統(tǒng)中是否存在該學(xué)生信息if( 存在)刪除該學(xué)生信息添加該學(xué)生新信息修改成功228統(tǒng)計(jì)學(xué)生信息數(shù)量模塊if(文件存在)讀取學(xué)號(hào),每讀取到一個(gè)學(xué)號(hào),數(shù)量 +1返回信息數(shù)量的值學(xué)生信息排序模塊if(打開成功)讀取全部信息存到結(jié)構(gòu)體數(shù)組,按照冒泡排序?qū)⑿畔磳W(xué)號(hào)升序排序 之后將數(shù)組內(nèi)容依次存入文件,并覆蓋舊文件。模塊圖各模塊之間結(jié)構(gòu)圖如圖2-1所示學(xué)姓號(hào)名查查詢?cè)優(yōu)g統(tǒng)學(xué)詢覽計(jì)生查圖2-1模塊圖2.3系統(tǒng)主要函數(shù)學(xué)生信息管理采用結(jié)構(gòu)化程序設(shè)計(jì)思想,除主函數(shù)外共設(shè)計(jì)
6、了 8個(gè)函數(shù),函數(shù)原型及功能說明如圖2-2所示:圖2-2系統(tǒng)主要函數(shù)函數(shù)原型及功能說明字號(hào)函轅原型功能說明1void input_data(int ra, int data_niutiber)學(xué)生信息錄入2void output_data (int daLtaL_imnib合r)學(xué)生倍息輸出3void student_number_find(string number.findj. int data_nuniber)學(xué)號(hào)查按4void studeiit_nanie_find(string name_finds int data_number)姓名査找5void folder 0創(chuàng)建系統(tǒng)立件6i
7、nt student_data_delete (string nw0ber_delete3 int data_nuuiber)唧除學(xué)生信息了iut student_data.number()統(tǒng)卄學(xué)生信息數(shù)量9void student_data_iaodify ()修改學(xué)生暗息9void student_data_sorT (int data_nuniber)學(xué)生倍息排字f冒泡)2.4程序流程圖否顯示排序后的信息11結(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)
8、的信息,顯示出該學(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)行比較,直到文件讀取到尾部, 顯示未找到該姓名對(duì)應(yīng)的信息。3.3添加學(xué)生信息根據(jù)用戶輸入的學(xué)生信息數(shù)量將下列過程循環(huán)對(duì)應(yīng)的次數(shù):新建一個(gè)標(biāo)識(shí)變量find的值為-1,代表文件中不存在該學(xué)生信息。用戶輸入學(xué)生信息 后打開文件讀取每個(gè)
9、學(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é)生信息 后打開文件讀取每個(gè)學(xué)生信息的信息,比較兩個(gè)信息的學(xué)號(hào)是否相同。如果相同則修改find 的值為0,代表文件中存在該學(xué)生的信息。若find的值為0則執(zhí)行刪除功能:新建一個(gè)文件“學(xué)生信息1.txt ”作
10、為臨時(shí)文件,用來(lái)存儲(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)后,系 統(tǒng)會(huì)先調(diào)用刪除學(xué)生信息功能刪除該學(xué)號(hào)對(duì)應(yīng)的信息,之后再調(diào)用添加學(xué)生信息功能添加新 的學(xué)生信息,修改完畢。3.6查看已添加學(xué)生信息該功能是顯示文件中所有的學(xué)生信息, 根據(jù)學(xué)生信
11、息數(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é)生信息排序排序功能使用的是冒泡排序,將文件中的信息讀取到數(shù)組中,通過冒泡排序?qū)⑿畔凑?升序排序后存到文件中,再次顯示的學(xué)生信息就是排序后的信息。4系統(tǒng)測(cè)試及系統(tǒng)運(yùn)行效果4.1系統(tǒng)主界面進(jìn)入系統(tǒng)后將彈出菜單界面。系統(tǒng)主界面運(yùn)行效
12、果如圖4-1所示圖4-1系統(tǒng)主界面4.2添加學(xué)生信息首先輸入添加信息的數(shù)量,然后輸入第一位學(xué)生的信息,提示“添加信息成功”后再依 次輸入其余的學(xué)生的信息。添加學(xué)生信息的運(yùn)行效果如圖4-2所示麗加學(xué)生信息請(qǐng)輸入所添加學(xué)生信息的數(shù)量3二1=1英語(yǔ),毛概,電路基H C :w i nd owssysTem 3 2c m d,exe請(qǐng)輸入學(xué)生的學(xué)號(hào).姓名.性別.成績(jī)(成績(jī)順序依次為語(yǔ)文,離散數(shù)學(xué), 礎(chǔ),概率論,體育口若該科成績(jī)無(wú)請(qǐng)輸入盯(空格鍵分隔) 11603010122 洪學(xué)辰男 S3 59 9T 48 75 8添加信息成功請(qǐng)輸入學(xué)生的學(xué)號(hào),姓名,性別,成績(jī)(成績(jī)順序依次為語(yǔ)文,離散數(shù)學(xué), 礎(chǔ),概率
13、論,體育匚若該科成績(jī)無(wú),請(qǐng)輸入盯(空格鍵分隔IHIGOSOIOHI 彭方林男 98 95 85 H3 75 9斗 89誦加信息成功請(qǐng)輸入學(xué)生的學(xué)號(hào),姓名,性別,成績(jī)(成績(jī)順序依次為語(yǔ)文,離散數(shù)學(xué), 礎(chǔ),概率論,體育。若該科成績(jī)無(wú)*諳輸入的(空格鍵分隔H1IM1608910112 李明葭女 96 98 97 94 95 33 97英語(yǔ)英語(yǔ),毛概,電路基毛概,電路基按癖重新添加信息!圖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姓名查
14、詢輸入想要查詢的姓名,如果存在該學(xué)生,則顯示學(xué)生信息,不存在就提示該學(xué)生信息不 存在。姓名查詢的運(yùn)行效果如圖4-5、4-6所示r33 C:win dostem 3Ac rnd -exe姓名查詢請(qǐng)輸入學(xué)生姓名:匚侯浩然卜未找到該姓名對(duì)應(yīng)的信息?按呆鍵返回菜單.按*1鍵重新杳找!圖4-5姓名查詢(不存在)El C :wi n dows&ystem 3 2c m d.exe,=回姓名査詢請(qǐng)輸入學(xué)生姓名:李明霞該學(xué)生信息為,學(xué)號(hào):14108G1G112姓名:李明霞 性別:女 語(yǔ)文:9G離散數(shù)學(xué):羽英語(yǔ)9毛概:汕電路基礎(chǔ):95概率論:98體育:9了按背鍵返回菜單,按#鍵重新查找丫圖4-6姓名查詢(存在)
15、4.5顯示全部學(xué)生信息顯示學(xué)生信息的運(yùn)行效果如圖4-7所示函 C wi n dowssystem 3 2c m d exe系統(tǒng)所有學(xué)生信總為-41*4160801 0122軽名啾學(xué)辰 性別:男 語(yǔ)文:卿離散數(shù)學(xué):的英語(yǔ):59毛概9電路基礎(chǔ)汕一 名概率論:閒體育:翳學(xué)號(hào)姓名;彭方林 性別:男 語(yǔ)文;9警離散數(shù)學(xué):盹英語(yǔ):85毛概:隔電路基礎(chǔ):7 5概率論:日斗體育:89學(xué)號(hào);141&08019112姓名:李明霞 性別:女 語(yǔ)文離散數(shù)學(xué):鹽英語(yǔ):穌毛概:9斗電路基礎(chǔ):95概率論:鹽體育了按吠鍵返回菜單!圖4-7顯示全部學(xué)生信息4.6統(tǒng)計(jì)學(xué)生信息數(shù)量顯示學(xué)生信息的運(yùn)行效果如圖4-8所示H C :w
16、i n d owssystem 3 2c m d,exe|學(xué)生信息數(shù)目:已添加的學(xué)生信息數(shù)目為:3 按狹鍵返回菜單?圖4-8統(tǒng)計(jì)學(xué)生信息數(shù)量4.7學(xué)生信息排序?qū)W生信息排序采用的冒泡排序,排序成功后會(huì)提示返回菜單或者查看排序后的信息。學(xué)生信息排序的運(yùn)行效果如圖4-9、4-10所示S C:windowssystem32cnnd.exe回 U2W排序成功!b按妹鍵返回菜單,按*鍵顯示排序后的信息!圖4-9學(xué)生信息排序跑 C:windowssystem32crnd.exe(=11系統(tǒng)所有學(xué)生信息為:學(xué)號(hào)= 141608010112姓名:李明霞性別:女 5概率論:98體育:站學(xué)號(hào)/p>
17、2姓名:洪學(xué)辰性別:男 呂慨率論:了5體育:68學(xué)號(hào):1斗1 6080101中姓老;彭方林 性別:男 5概率論:9坤體育:89按其鍵返回菜單*語(yǔ)文總6離散數(shù)學(xué)a英語(yǔ):9了毛概創(chuàng)電路基礎(chǔ):9 語(yǔ)文:9&離散數(shù)學(xué);朋英語(yǔ)159毛概:9了電路基礎(chǔ):4 語(yǔ)文:犯離散數(shù)學(xué):盹英語(yǔ):;85毛概:48電路基礎(chǔ):7圖4-10顯示排序后信息4.8修改學(xué)生信息輸入需要修改的學(xué)號(hào),如果不存在,會(huì)提示該學(xué)生信息不存在。否則刪除舊信息,添加 該學(xué)生新的信息。修改學(xué)生信息的運(yùn)行效果如圖4-11所示H C :w i nd owssysTem 5 2cm d exe條改學(xué)生件g . 售輸入該學(xué)星曲學(xué)號(hào),系統(tǒng)會(huì)修改該學(xué)生所有信
18、息!刪除信息成功請(qǐng)輸入新的的學(xué)號(hào)姓名性別成績(jī)(成績(jī)順序依次為語(yǔ)文,離散數(shù)學(xué),英語(yǔ),毛概,電路基礎(chǔ),概率論”體育口若該科成績(jī)無(wú)*請(qǐng)輸入叭)1空格鍵分隔!),系統(tǒng)會(huì)自動(dòng)修改該學(xué)生信 I-息,!桿子 男 98 97 96 98 S4 帕 79修改信息成功按賓鍵返回菜單按#鍵再次修改f圖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所示刪除學(xué)生信息:*請(qǐng)輸入該學(xué)生的學(xué)號(hào),系統(tǒng)會(huì)刪除該學(xué)生所有信息!-i4uoseiei22刪除信息成功按買鍵返回菜單,按悴鍵再次刪除!H C :w i nd ow
19、ssysTe m 3 2c md exe圖4-12刪除學(xué)生信息刪除后的信息如圖4-13所示3S C :w i n d owssystem 3 2c m d,exe系統(tǒng)所有學(xué)生信息為:學(xué)號(hào):mi60G1G112姓名:李明霞 性別:女 語(yǔ)文:沖離散數(shù)學(xué)上&英語(yǔ):跖毛概:94電路基礎(chǔ):9 5概率論:98體育:汨學(xué)號(hào):姓名:桿子 性別:男 語(yǔ)文:98離散數(shù)學(xué):9 了英語(yǔ):眺毛概:騎電路基礎(chǔ):汕 槪率論:盹體育:為按疏鍵返回菜單!圖4-13刪除后的信息5系統(tǒng)設(shè)計(jì)遇到的問題及解決方案問題1: C+的文件讀寫不會(huì)使用。百度查找C+文件讀寫的方法,通過不同的帖子學(xué)習(xí)有關(guān)文件操作的各種用法和小技巧。 使用fst
20、ream頭文件,定義fin文件輸入流,fout文件輸出流。通過使用文件流的方式讀 取或者寫入文件。問題2 :代碼沒有報(bào)錯(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)行無(wú)誤。問題4:不知道怎樣刪除文件中的指定數(shù)據(jù),無(wú)法達(dá)到刪除學(xué)生信息的功能。讀取全部信息將不需要?jiǎng)h除的信息存到臨時(shí)的文件中,再將舊文件刪除,修改臨時(shí)文件為舊文件名,則文件中需要?jiǎng)h除的信息已經(jīng)刪除。6
21、總結(jié)與收獲最初想做這個(gè)程序的起因是暑假打工夜班太無(wú)聊,所以萌生了自己做一個(gè)有點(diǎn)實(shí)用功能的小程序。因?yàn)樵诖笠坏臅r(shí)候看了一點(diǎn) C+啲書籍對(duì)C+面向過程的部分還算比較了解,而 且一直覺得C+的語(yǔ)法比C簡(jiǎn)單,所以本程序的代碼都是用 C+寫的。打工的時(shí)候沒帶電腦, 當(dāng)時(shí)在網(wǎng)上找到一個(gè)手機(jī)上能用的編程軟件,名字是 c4droid功能非常強(qiáng)大,和VS2013 一 樣可以顯示出代碼中的常見語(yǔ)法錯(cuò)誤。最初構(gòu)想的程序沒有那么多的功能, 在實(shí)際編寫的時(shí)候感覺缺了一些功能不夠完善再慢慢添加。 在編寫的時(shí)候遇到過很多問題,主要是C語(yǔ)言的 知識(shí)掌握的還不夠精通,像結(jié)構(gòu)體和為文件的操作都是當(dāng)時(shí)現(xiàn)學(xué)的,而且C和C+的語(yǔ)法出入
22、比較大,當(dāng)時(shí)都是需要使用某種功能的時(shí)候在網(wǎng)上查找帖子學(xué)習(xí)下是怎么用的然后根據(jù)自 己的需要寫出適合的代碼。代碼雖然能通過編譯但是錯(cuò)誤還是很多的,甚至有些時(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 ()命令和電
23、腦上windoows系統(tǒng)的system ()命令不同,還有文件操作的路徑也 要重新更改。更改完畢后又想添加一些新的功能而且最初的程序沒有使用結(jié)構(gòu)體,后來(lái)對(duì)結(jié)構(gòu)體有了新的了解,就把程序又重新改寫了一下。為了把程序做成一個(gè)能在其他電腦上也能 使用的軟件,又在網(wǎng)上學(xué)了 vs中對(duì)程序的打包,為了打包出一個(gè)理想中的安裝包,找了好 多帖子用了一天的時(shí)間才打包出了一個(gè)正常的安裝包,至此程序大功告成通過這次程序的編寫加深了我對(duì) C+的理解,在程序的編寫過程中又學(xué)習(xí)了很多新的知識(shí), 明白了自己的短處在哪里,以后需要在哪個(gè)方向努力,認(rèn)識(shí)了很多的不足。從中學(xué)習(xí)了很多, 收獲了很多。動(dòng)手是提升能力的有效方法,就像我在
24、編寫這個(gè)程序之前可能就比其他同學(xué)多 懂一點(diǎn)書上的知識(shí)。但在寫代碼的過程中遇到了很多問題,每解決一個(gè)問題,就多學(xué)了一些 知識(shí),能力也有所提高??赡芎芏鄮?kù)函數(shù)我們不知道怎么用,比如你想要實(shí)現(xiàn)某一個(gè)功能, 你可以去網(wǎng)上找一下有關(guān)的帖子,多找?guī)讉€(gè)帖子可能就會(huì)找到大神的帖子教你怎么用庫(kù)函數(shù) 去實(shí)現(xiàn)這些功能。最后總結(jié)一下,百度是萬(wàn)能的。附錄學(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é)校:河南
25、理工大學(xué)萬(wàn)方科技學(xué)院日期:2015年11月11日*/#i nclude標(biāo)準(zhǔn)輸入輸出流頭文件#i nclude/system函數(shù)頭文件#i ncludevstri ng字符串頭文件#i nclude文件輸入輸出流頭文件using namespace std;/使用命名空間 stdifstream fin;/定義文件輸入流ofstream fout;/定義文件輸出流struct stude nt/定義學(xué)生信息結(jié)構(gòu)體stri ng nu mber;/ 學(xué)號(hào)stri ng n ame;/姓名string sex;/ 性另float grade7;/*float grade。;/語(yǔ)文float grad
26、el;/離散數(shù)學(xué)float grade2;/英語(yǔ)float grade3;/毛概float grade4;/電路基礎(chǔ)float grade5;/概率論float grade6;/體育*/;void in put_data(i nt n, i nt data_number)學(xué)生完整信息存入文件函數(shù)int i, j, k, m;stude nt 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ī)順序依次為語(yǔ)文,離散數(shù)學(xué),英 語(yǔ),毛概,電
27、路基礎(chǔ),概率論,體育。若該科成績(jī)無(wú),請(qǐng)輸入 0)(空格鍵分隔!) s.nu mber s.n ame s.sex;for (j = 0; j s.gradej;學(xué)生信息學(xué)生信息.txt);/打開文件if (fin.i s_ope n()/判斷文件是否能打開,若能打開,貝U函數(shù)返回值-1,否則返回0for (k = 0; k s1. number s1. name sl.sex;/從文件中讀取學(xué)號(hào),姓名,性 for (m = 0; m s1.gradem;if (s.n umber = s1. nu mber)/比較文件中讀取的學(xué)號(hào)和要輸入的學(xué)號(hào)是否一樣find = 0;/文件中存在該學(xué)生信息,
28、find的值修改為0system(cls);清空屏幕cout 此學(xué)生信息已存在,請(qǐng)進(jìn)入菜單選擇修改信息或者刪除信息 之后再添加! endl;if (find != 0)/文件中沒有此學(xué)生信息fin .close();關(guān)閉文件學(xué)生信息學(xué)生信息.txt, ios:app);if (fout.is_ope n()檢查文件能否打開fout s.nu mber s. name s.sex ;for (j = 0; j7; j+)fout s.gradej ;/向文件中寫入各項(xiàng)信息,中間以空格分隔,便于下次讀取fout.close();/ 關(guān)閉文件cout 添加信息成功 endl;elsecout 打開或
29、寫入文件失敗! endl;elsecout 打開文件失敗! ch;/從文件中讀取一個(gè)字符if (fin. eof()檢查字符讀取是否成功,若讀取失敗,eof函數(shù)返回-1,說明文件為空cout 沒有找到學(xué)生信息,請(qǐng)?zhí)砑有畔⒅笤僭嚕?endl;fin .close();elsefin .close();學(xué)生信息學(xué)生信息.txt);if (fin .is_ope n()cout 系統(tǒng)所有學(xué)生信息為: endl;for (i = 0; i s.nu mber s.n ame s.sex;for (j = 0; j s.gradej;cout 性別: s.sex 英語(yǔ): s.grade2 學(xué)號(hào): s.
30、nu mber 語(yǔ)文: s.grade0 毛概: s.grade3 姓名: 離散數(shù)學(xué): s.grade1 電路基礎(chǔ): s.grade4 概率論: s.grade5 體育: s.grade6 endl;fin .close();elsecout ch;if (fin .eof()cout 沒有找到學(xué)生信息,請(qǐng)?zhí)砑有畔⒅笤僭?!fin .close();學(xué)生信息學(xué)生信息.txt);if (fin .is_ope n()for (i = 0; i s.nu mber s.n ame s.sex;for (j = 0; j7; j+) endl;學(xué)號(hào)查找函數(shù) s.gradej;if (n
31、u mber_fi nd = s.n umber)/文件中讀取的學(xué)號(hào),和要查找的學(xué)號(hào)相同find = 0;cout 該學(xué)生信息為: endl;cout 性別: s.sex 英語(yǔ): s.grade2 學(xué)號(hào): s.nu mber 語(yǔ)文: s.grade0 毛概: s.grade3 姓名: 離散數(shù)學(xué): s.grade1 電路基礎(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)中
32、還沒有此學(xué)號(hào)的信息! endl;姓名查找函數(shù)void stude nt_n ame_fi nd(stri ng n ame_fi nd, int data_ nu mber)/int i, j;int find = -1;stude nt s;學(xué)生信息學(xué)生信息.txt);if (fin .is_ope n()for (i = 0; i s.nu mber s.n ame s.sex;for (j = 0; j s.gradej;if (n ame_fi nd = s.n ame)find = 0;cout 該學(xué)生信息為: endl;cout 性別: s.sex 英語(yǔ): s.grade2 學(xué)號(hào):
33、 s.nu mber 語(yǔ)文: s.grade0 毛概: s.grade3 姓名: 離散數(shù)學(xué): s.grade1 電路基礎(chǔ): s.grade4 概率論: s.grade5 體育: 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();學(xué)生信息學(xué)生信息.txt);if (fin .is_ope n()for (i = 0; i s.nu
34、 mber s.n ame s.sex;for (j = 0; j s.gradej;if (nu mber_delete = s.nu mber)/ 文件中讀取的學(xué)號(hào),和要查找的學(xué)號(hào)相同find = 0;elsecout 系統(tǒng)中還沒有此學(xué)號(hào)的信息! ch;if (fin .eof()cout 沒有找到學(xué)生信息存檔! endl;elsefin .close();學(xué)生信息學(xué)生信息.txt);if (fin .is_ope n()for (i = 0; i s.nu mber s.n ame s.sex;for (j = 0; j s.gradej;if (nu mber_delete != s.
35、nu mber)/如果學(xué)號(hào)和要?jiǎng)h除的學(xué)號(hào)不同,將該學(xué)生信息存入學(xué)生信息1中學(xué)生信息學(xué)生信息1.txt, ios:app);if (fout.is_ope n()fout s.nu mber s.n ame s.sex ;for (j = 0; j 7; j+)fout s.gradej ;elsecout 刪除過程出錯(cuò)! endl;fin .close();學(xué)生信息學(xué)生信息.txt);/刪除學(xué)生信息.txt學(xué)生信學(xué)生信息 學(xué)生信息1.txt,學(xué)生信息息.txt);/將學(xué)生信息1.txt重命名為學(xué)生信息.txtcout 刪除信息成功 endl;elsecout 未找到該學(xué)號(hào)對(duì)應(yīng)的信息! endl
36、;elsecout 系統(tǒng)中沒有此學(xué)號(hào)信息 ch;if (fin. eof()/如果文件為空,關(guān)閉文件elsefin .close();學(xué)生信息學(xué)生信息.txt);if (fin.i s_ope n()判斷文件打開狀態(tài)函數(shù)while (fin s.n umber)/如果能讀取到學(xué)號(hào)fin .seekg(-12, ios:cur);將文件位置指針從當(dāng)前學(xué)號(hào)尾部移動(dòng)到學(xué)號(hào)之前,否則信息會(huì)讀取混亂fin s.nu mber s.n ame s.sex;for (j = 0; j s.gradej;d+;,讀取成功,學(xué)生信息數(shù)量加一fin .close();return d;/ 返回學(xué)生信息數(shù)量void
37、 stude nt_data_modify()學(xué)生信息修改int j;stude nt s;cout 請(qǐng)輸入新的的學(xué)號(hào),姓名,性別,成績(jī)(成績(jī)順序依次為語(yǔ)文,離散數(shù)學(xué),英語(yǔ), 毛概,電路基礎(chǔ),概率論,體育。若該科成績(jī)無(wú),請(qǐng)輸入 00 )(空格鍵分隔!),系統(tǒng)會(huì)自動(dòng) 修改該學(xué)生信息! s.nu mber s.n ame s.sex;for (j = 0; j s.gradej;學(xué)生信息學(xué)生信息.txt, ios:app);if (fout.is_ope n()判斷文件打開狀態(tài)函數(shù)fout s.nu mber s.n ame s.sex s.grade0 s.grade1 s.grade2 s.g
38、rade3 s.grade4 s.grade 5 s.grade 6 ;fout.close();cout 修改信息成功 endl;elsecout 打開或?qū)懭胛募? endl;void stude nt_data_sort(i nt data_number)學(xué)生信息排序(冒泡排序)int i, j;stude nt s200, nu mber_max;學(xué)生信息學(xué)生信息.txt);if (fin .is_ope n()for (i = 0; i si. nu mber si. name si.sex;for (j = 0; j si.gradej;fin .close();nu mber_
39、max .nu mber = s0. nu mber; for (i = 0; i data_ nu mber - 1; i+) for (j = 0; jsj + 1. nu mber)nu mber_max = sj; sj = sj + 1;sj + 1 = nu mber_max;學(xué)生信息學(xué)生信息.txt);if (fout.is_ope n()for (i = 0; i data_ nu mber; i+)fout si. nu mber si. name si.sex si.grade0 si.grade1 si.grade2 si.grade3 si.grade4 si.grad
40、e 5 si.grade6 ;fout.close();cout 排序成功! endl;elsecout 打開文件失敗,無(wú)法完成排序! endl;int main()system(color 5F);改變程序窗口顏色為湖藍(lán)色背景黑色文字char menu;stri ng nu mber_fi nd, n ame_fi nd;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é)生信息 e
41、ndl;cout 4.刪除學(xué)生信息 endl;cout 5.修改學(xué)生信息 endl;cout 6.查看已存檔的學(xué)生信息en dl;cout 7.查看已存檔的學(xué)生信息數(shù)量 endl;cout 8.學(xué)生信息排序 menu;while (me nu8)當(dāng)輸入數(shù)值不在菜單范圍內(nèi)會(huì)提示輸入錯(cuò)誤cout 輸入無(wú)效,請(qǐng)輸入正確的數(shù)字! menu;system(cls);switch (int(menu) - 48)/ 將menu從字符型強(qiáng)制轉(zhuǎn)換為整形case 1:char ch;int data_ nu mber;data_number = stude nt_data_number();求出文件中已存在的信
42、息數(shù)量確定查找學(xué)號(hào)時(shí)的循環(huán)次數(shù)nu mber:cout 學(xué)號(hào)查詢: endl;cout 請(qǐng)輸入12位學(xué)號(hào): nu mber_fi nd;stude nt_nu mber_fi nd(nu mber_fi nd, data_ nu mber);cout 按*鍵返回菜單,按#鍵重新查找! ch;while (ch != *&ch != #)cout 輸入錯(cuò)誤,請(qǐng)輸入*或#! ch;system(cls);if (ch = *)goto me nu;跳轉(zhuǎn)到菜單elsegoto nu mber;break;case 2:char ch;int data_ nu mber;data_ nu mber = stude nt_data_ nu mber();n ame:cout 姓名查詢 endl;cout 請(qǐng)輸入學(xué)生姓名: n ame_fi nd;stude nt_n ame_fi nd(n ame_fi nd, data_ nu mber);cout 按*鍵返回菜單,按#鍵重新查找! ch;while (ch != *&ch != #)cout 輸入錯(cuò)誤,請(qǐng)輸入*或#! ch;system(cls);if (ch = *)goto menu;elsegoto n ame;break;case 3:int n;int
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年全球及中國(guó)呼吸器閥門行業(yè)產(chǎn)銷狀況及需求潛力預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)低密度聚乙烯顆粒行業(yè)發(fā)展形勢(shì)及投資前景預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)PCB機(jī)械鉆孔機(jī)行業(yè)銷售規(guī)模及盈利前景預(yù)測(cè)報(bào)告
- 2024-2030年全球與中國(guó)三文魚PDRN行業(yè)發(fā)展現(xiàn)狀及未來(lái)前景趨勢(shì)報(bào)告
- 2024-2030年中國(guó)高鐵產(chǎn)業(yè)園區(qū)行業(yè)十三五規(guī)劃及投資模式分析報(bào)告
- 2024-2030年中國(guó)高純鈦粉行業(yè)市場(chǎng)發(fā)展規(guī)模及投資可行性分析報(bào)告
- 2024年地下綜合管廊施工合同履約擔(dān)保協(xié)議書3篇
- 2024年簡(jiǎn)化離婚合同:不含撫養(yǎng)費(fèi)條款版B版
- 2024年電機(jī)維修質(zhì)量保證合同3篇
- 2024年海陸空運(yùn)輸安全協(xié)議2篇
- NUDD新獨(dú)難異失效模式預(yù)防檢查表
- NUDD_Definition新項(xiàng)目風(fēng)險(xiǎn)評(píng)估 - 審查跟蹤記錄
- 關(guān)于進(jìn)一步規(guī)范保健食品原料管理規(guī)定
- 搓、滾絲螺紋前的毛坯直徑
- 多媒體技術(shù)多媒體技術(shù)
- Y3150齒輪機(jī)床電氣控制技術(shù)課程設(shè)計(jì)
- 人教版小學(xué)數(shù)學(xué)六年級(jí)上冊(cè)第一單元測(cè)驗(yàn)雙向細(xì)目表
- 部編本小學(xué)五年級(jí)上冊(cè)語(yǔ)文期末考試(選擇題)專項(xiàng)訓(xùn)練題及答案
- 讀《讓兒童在問題中學(xué)數(shù)學(xué)》有感范文三篇
- 陳述句改成雙重否定句(課堂PPT)
- 人教版六年級(jí)數(shù)學(xué)上冊(cè)總復(fù)習(xí)教案
評(píng)論
0/150
提交評(píng)論