數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)(C)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)(C)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)(C)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)(C)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)(C)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)(論文)任務(wù)書軟件學(xué)院 學(xué)院專業(yè)班_、課程設(shè)計(jì)(論文)學(xué)生成績管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)二、課程設(shè)計(jì)(論文)工作自2014年12月22日起至2012年12月 理日止三、課程設(shè)計(jì)(論文)地點(diǎn):創(chuàng)新大樓機(jī)房四、課程設(shè)計(jì)(論文)內(nèi)容要求:1本課程設(shè)計(jì)的目的訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨(dú)立完成問題分析,結(jié)合數(shù)據(jù) 結(jié)構(gòu)理論知識,編寫程序求解指定問題;初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測試等基 本方法和技能;提高綜合運(yùn)用所學(xué)的理論知識和方法獨(dú)立分析和解決問題的能力,鞏 固、深化學(xué)生的理論知識,提升編程水平。2.課程設(shè)計(jì)的任務(wù)及要求1)基本要求:要求從分析題目的需求入手,按設(shè)計(jì)抽象

2、數(shù)據(jù)類型、構(gòu)思算法、通過 設(shè)計(jì)實(shí)現(xiàn)抽象數(shù)據(jù)類型、編寫上機(jī)程序和上機(jī)調(diào)試等若干步驟完成題目, 最終寫出完整的報(bào)告;在程序設(shè)計(jì)階段應(yīng)盡量利用已有的標(biāo)準(zhǔn)函數(shù),加大代碼的重用率;程序設(shè)計(jì)語言推薦使用c/c+,程序書寫規(guī)范,源程序需必要的注釋;每位同學(xué)需提交可獨(dú)立運(yùn)行的程序和規(guī)范的課程設(shè)計(jì)報(bào)告。2)課程設(shè)計(jì)論文編寫要求理論設(shè)計(jì)部分以課程設(shè)計(jì)論文的形式提交,格式必須按照課程設(shè)計(jì)論 文標(biāo)準(zhǔn)格式進(jìn)行書寫和裝訂;課程設(shè)計(jì)報(bào)告(論文)包括屮文目錄、設(shè)計(jì)任務(wù)、需求分析、概要設(shè) 計(jì)、詳細(xì)設(shè)計(jì)、編碼實(shí)現(xiàn)、調(diào)試分析、總結(jié)、謝辭、參考文獻(xiàn)、附錄等;設(shè)計(jì)部分應(yīng)包含系統(tǒng)功能模塊圖,調(diào)試分析應(yīng)包括運(yùn)行截圖等。3)課程設(shè)計(jì)評分標(biāo)準(zhǔn)

3、:學(xué)習(xí)態(tài)度:10分;系統(tǒng)設(shè)計(jì):20分;編程調(diào)試:20分;論文撰寫:30分。4)參考文獻(xiàn):嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(c語言版)m.清華大學(xué)出版社.2010.3嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)題集(c語言版)m.清華大學(xué)出版社.1999.2何欽銘,馮燕等.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)m.浙江大學(xué)出版社.2007.85)課程設(shè)計(jì)進(jìn)度安排準(zhǔn)備階段(4學(xué)時(shí)):選擇設(shè)計(jì)題目、了解目的要求、查閱相關(guān)資料;程序模塊設(shè)計(jì)分析階段(4學(xué)時(shí)):程序概要設(shè)計(jì)、詳細(xì)設(shè)計(jì);代碼編寫調(diào)試階段(8學(xué)時(shí)):程序模塊代碼編寫、調(diào)試、測試;撰寫論文階段(4學(xué)時(shí)):總結(jié)設(shè)計(jì)任務(wù)和設(shè)計(jì)內(nèi)容,撰寫設(shè)計(jì)論文。學(xué)生簽名:年 月 日6)課程設(shè)計(jì)題目具體要求:能夠

4、實(shí)現(xiàn)對學(xué)生成績的常用管理功能。釆用一定的存儲(chǔ)結(jié)構(gòu)對學(xué)生成績進(jìn)行管理;可以進(jìn)行成績的錄入、查詢、修改、刪除等操作;可以查詢某門課程的平均分,學(xué)生的排名,不同分?jǐn)?shù)段的學(xué)生人數(shù)及學(xué)生信息等;可以查詢某學(xué)生的各課程分?jǐn)?shù),總分及學(xué)生的班級排名等;可以按學(xué)號排序輸出全部學(xué)生的成績信息、總分及班級排名等。課程設(shè)計(jì)(論文)評審意見(1)學(xué)習(xí)態(tài)度(10分):優(yōu)()、良()、中()、一般()、差();(2)系統(tǒng)設(shè)計(jì)(20分):優(yōu)()、良()、屮()、一般()、差();(3)編程調(diào)試(20分):優(yōu)()、良()、中()、一般()、差();(4)回答問題(20分):優(yōu)()、良()、屮()、一般()、差();(5)論文撰

5、寫(30分):優(yōu)()、良()、中()、一般()、差();(6)格式規(guī)范性及考勤是否降等級:是()、否()評閱人:周娟 職稱:講師2014年12月28日第1章設(shè)計(jì)任務(wù)分析1第2章 功能實(shí)現(xiàn)詳細(xì)設(shè)計(jì)2第3章功能測試8第4章調(diào)試與改進(jìn)19第5章小結(jié)20第6章源代碼21第1章設(shè)計(jì)任務(wù)分析1.1. 需求與功能分析1.1.1. 需求分析學(xué)生成績管理系統(tǒng)是一個(gè)教育單位不可缺少的部分它的內(nèi)容對于學(xué) 校的決策者和管理者來說都至關(guān)重要所以學(xué)生成績管理系統(tǒng)應(yīng)該能夠?yàn)?用戶提供充足的信息和快捷的查詢手段。以前各個(gè)學(xué)校的學(xué)生成績管理基 本上都是靠手工進(jìn)行,但隨著各個(gè)學(xué)校的規(guī)模增大,有關(guān)學(xué)生成績管理工 作所涉及的數(shù)據(jù)量也

6、越來越大,有的學(xué)校不得不靠增加人力、物力來進(jìn)行 學(xué)生成績管理。這種管理方式存在著許多缺點(diǎn),女口:效率低、保密性差等, 另外英所用時(shí)i'可長,產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護(hù)都 帶來了不少的困難c如今學(xué)校的學(xué)生越來越多,成績管理的工作量越來越 大,手工管理成績的弊端也越來越明顯。作為計(jì)算機(jī)應(yīng)用的一部分,使用 計(jì)算機(jī)對學(xué)生檔案信息進(jìn)行管理具有手工管理所無法比擬的優(yōu)點(diǎn),如檢索 迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長、成本低等, 能夠極大地提高學(xué)生檔案管理的效率。所以我想借本次課程設(shè)計(jì)之際,設(shè) 計(jì)一個(gè)簡易的學(xué)生成績管理系統(tǒng)。1.1.2. 功能分析1)輸入輸出的形式和輸

7、入值的范圍首先輸入學(xué)生個(gè)數(shù)按冋車鍵,然后按照提示選擇輸入學(xué)生信息并將學(xué) 生信息保存在文本文檔中,具體對學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將 保存在文本文檔屮的學(xué)生信息提取出來保存在自己定義的數(shù)據(jù)結(jié)構(gòu)屮,然 后再對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成后或者在相應(yīng)的命令后再將學(xué) 生信息保存到文本文檔中。輸入數(shù)據(jù)類型主要是char> int、float等數(shù)據(jù)類 型,輸入內(nèi)容包括學(xué)號、姓名、基礎(chǔ)會(huì)計(jì)成績、大學(xué)英語成績、數(shù)據(jù)結(jié)構(gòu) 成績、總分、平均分等數(shù)據(jù)。輸出的形式為學(xué)號、姓名、基礎(chǔ)會(huì)計(jì)成績、 大學(xué)英語成績、數(shù)據(jù)結(jié)構(gòu)成績、總分、平均分等數(shù)據(jù)。2)程序所達(dá)到的功能i. 數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在

8、文件中;ii. 數(shù)據(jù)刪除功能,能最終從文件中刪除;iii. 多種排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法;iv. 多種查詢功能(如按學(xué)號查詢、按姓名查詢等)及輸出功能;v.學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門課程的成績等); vi.英他功能(如各種統(tǒng)計(jì),統(tǒng)計(jì)每個(gè)學(xué)生所有課程的平均分,統(tǒng)計(jì)某門 課程的所有學(xué)生的平均分等等)第2章功能實(shí)現(xiàn)詳細(xì)設(shè)計(jì)2.1. 庫函數(shù)先編入系統(tǒng)所需的庫函數(shù),使程序可運(yùn)行。#includestdio.h#includeiostream#includestdlib.h#includeiomanip/主要是對cin,cout之類的一些操縱運(yùn)算,是i/o流控制頭

9、文件#includeconio.h/文件和標(biāo)準(zhǔn)控制臺的輸入輸112.2. 菜單界面的設(shè)計(jì)2.2.1.主菜單的設(shè)計(jì)在主界面中包括“1輸入學(xué)生信息并保存到文件2讀取文件并輸 出學(xué)生信息3按學(xué)號查詢4按姓名查詢5按學(xué)號修改信息6插 入學(xué)生信息7按學(xué)號刪除信息4各科成績排序9按總分降序排序 1()各科成績統(tǒng)計(jì)11分?jǐn)?shù)段查找12按學(xué)號排序13退出”等功能。 每個(gè)函數(shù)體如下:void input(stu *r); 輸入void output(stu *r); /輸出void searchnum(stu *r); /按學(xué)號查找void searchname(stu *r); /按姓名查找void modif

10、y (stu *r);/修改學(xué)生信息stu *insert(stu *r);/插入信息void erase(stu *r);/按學(xué)號刪除信息void sortmenu();/排序菜單void sortsum(stu *r);/按總分降序排序void stat(stu *r);/統(tǒng)計(jì)各科總分和平均分信息void intmenu();/分?jǐn)?shù)段查找菜單3e:program filesdevcppconsolepauser.exe菜單欄v<1> <3><5> <7> <9><11><12><1h>讀取文件并

11、輸出學(xué)生信息<13>2.2.2.排序菜單的設(shè)計(jì)在排序菜單屮包括“1按基礎(chǔ)會(huì)計(jì)成績排序2按大學(xué)英語成績排 序3按數(shù)據(jù)結(jié)構(gòu)成績排序4返冋上級菜單”等功能。每個(gè)函數(shù)體如下: void sort_ba(stu *r);/基礎(chǔ)會(huì)計(jì)成績排序void sort_ue(stu *r);/大學(xué)英語成績排序e:program filesdev-cppconsolepauser.exe菜單欄堀信生塞:!學(xué)號學(xué)th皐翱> > > > > 113 5 7 9 1<<<<<<息序)士2逮陂任井輸岀學(xué)生信息681012 岀排序菜單各科成鎖語級2

12、4void sort_ds(stu *r);/數(shù)據(jù)結(jié)構(gòu)成績排序2.2.3.分?jǐn)?shù)段查找菜單的設(shè)計(jì)在分?jǐn)?shù)段查找菜單中包括“vl基礎(chǔ)會(huì)計(jì)分?jǐn)?shù)段查找2大學(xué)英語分 數(shù)段查找3數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)段查找4返冋上級菜單”等功能。每個(gè)函數(shù)體 如下:void int_ba(stu *r);/基礎(chǔ)會(huì)計(jì)分?jǐn)?shù)段查找void im_u玖stu *r);/大學(xué)英語分?jǐn)?shù)段查找void int_ds(stu *r);/數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)段查找e:program filesdev<ppcon$olepauser.exe菜單欄生查生劭牆>> > > > > 113 5 7 9 1 x < <

13、; xx zn zn輸件杳一生取姓入<2><4><6><8><10><12> 退岀膏選擇,分?jǐn)?shù)段査找菜單.各科及總分分?jǐn)?shù)段查找3 80鳥欝麴5返回上級青選擇,2.3.詳細(xì)設(shè)計(jì)2.3.1.系統(tǒng)流程圖2.3.2.各功能模塊的設(shè)計(jì)1)主函數(shù)模塊用函數(shù)int main()來實(shí)現(xiàn),主要功能是顯示菜單,讓用戶根據(jù)提示選擇 操作,首先定義一個(gè)指針數(shù)組(全局使用)stu *p=(stu *)new stunumj;此 處num指學(xué)生個(gè)數(shù),并不是學(xué)號,這里應(yīng)用了 dowhile和switch-case語 句來進(jìn)行循環(huán)選擇,最后若用戶選擇“1

14、3”則保存記錄并退出循環(huán)。2)學(xué)生記錄輸入模塊用函數(shù)void input(stu衍)來實(shí)現(xiàn),在主菜單選擇“ 1 ”進(jìn)入輸入模塊之 后用戶需要輸入所需學(xué)生個(gè)數(shù)的學(xué)生信息,包括學(xué)號、姓名、各科成績等, 輸入完成之后會(huì)返回主菜單。本函數(shù)根據(jù)設(shè)計(jì)的條件判斷循環(huán)來判斷是否 有重復(fù)學(xué)號輸入。本函數(shù)還將算出學(xué)生的總分與平均分并按學(xué)號的默認(rèn)順 序?qū)⑵渑c輸入的原始學(xué)生記錄保存的文件中去。3) 學(xué)生記錄輸入模塊用函數(shù)void output(stu衍)來實(shí)現(xiàn),在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提 下,調(diào)用本函數(shù)可以輸出學(xué)生資料。英中setw()控制域?qū)?,括號里整型?shù) 據(jù)的數(shù)值代表域?qū)挼淖址麛?shù)。4) 按學(xué)號查找學(xué)生記錄模塊

15、用函數(shù)void searchnum(stu *r)來實(shí)現(xiàn),首先提示用戶輸入要查找的學(xué) 生學(xué)號,再用for循環(huán)語句和訐判斷語句進(jìn)行循環(huán)判斷來進(jìn)行查找, if(rm.num=n)表示找到學(xué)生記錄,然后顯示學(xué)生記錄并跳出循環(huán), if(rlmj.num!=n)示未找到學(xué)生記錄并輸出提示“該學(xué)號不存在! ”。5) 按姓名查找學(xué)生記錄模塊用函數(shù)void searchname(stu *門來實(shí)現(xiàn),首先提示用戶輸入要查找的學(xué) 生姓名,再用for循環(huán)語句和if判斷語句進(jìn)行循環(huán)判斷來進(jìn)行查找, if(rm.ntime0=n0)表示找到學(xué)生記錄,然后顯示學(xué)生記錄并跳出循環(huán), if(rlmj.namelo!=nlo)

16、示未找到學(xué)生記錄并輸出提示“該姓名不存在! ”。6) 按學(xué)號修改學(xué)生信息模塊用函數(shù)void modify(stu打)來實(shí)現(xiàn),首先提示用戶輸入要修改信息的學(xué) 生序號,再通過訐條件語句進(jìn)行判斷輸入的學(xué)號是否存在,if(i*m.niim!=n) 表示輸入的學(xué)生學(xué)號不存在,輸出提示“該學(xué)號不存在”,再利用begin標(biāo) 記和goto語句重新開始循環(huán)并提示用戶重新輸入要修改的學(xué)生學(xué)號。 if(rm.num=n)若輸入的學(xué)生學(xué)號存在,則先輸出修改前的學(xué)生信息,此 處有一個(gè)while循環(huán)語句和switch-case選擇語句,用來選擇修改學(xué)生的某 一科成績,并讓用戶選擇是否繼續(xù)進(jìn)行修改°最后將修改過后

17、的記錄寫入 文件中,并輸11!提示“文件已修改并寫入”。7) 插入學(xué)生信息模塊用函數(shù)stu *insert(stu 實(shí)現(xiàn),主要功能是添加學(xué)生資料。在此模 塊中定義了另一個(gè)指針數(shù)組:stu *y=(stu *)new stu(num+1);用來存放新添 加的學(xué)生記錄。再利用for循環(huán)語句進(jìn)行輸入新學(xué)生記錄,最后輸出一個(gè) 提示語句讓用戶判斷是否繼續(xù)輸入,若用戶輸入“y”或“y”則繼續(xù)輸入, 否則將返回主菜單。8) 刪除學(xué)生記錄模塊用函數(shù)void erase(stu *r)來實(shí)現(xiàn),首先對文件進(jìn)行讀取,z后的if判 斷語句根據(jù)用戶輸入的學(xué)號來顯示刪除前的信息記錄,然后用for循環(huán)語 句循環(huán)把后一位的信

18、息提前一位,整體數(shù)量建議,來進(jìn)行全局變量的修改, 之后再把修改過后的信息記錄保存到文件中去。9) 各科成績降序與學(xué)號(冒泡)排序模塊用函數(shù) void sort_ba(stu *r), void sort_ue(stu *r), void sort_ds(stu *r) 三個(gè)函數(shù)來實(shí)現(xiàn),主要功能是利用用戶保存在文件的學(xué)生記錄按單科成績 進(jìn)行降序排序。首先對文件進(jìn)行讀取,然后進(jìn)行冒泡排序。冒泡排序有兩 個(gè)優(yōu)點(diǎn),一是代碼比較容易,二是具有穩(wěn)定性。這里的穩(wěn)定性是指原序列 中相同兩元素的相對順序仍然保持到排序后的序列。冒泡排序吋進(jìn)過n-1 趟子排序完成的,第i趟子排序從笫1個(gè)數(shù)至第n+1個(gè)數(shù),若第i個(gè)數(shù)

19、比 后一個(gè)數(shù)大則交換兩數(shù)。排序之后,將排序之后的結(jié)果寫入文件,再讀取 文件的時(shí)候,輸出的就是按單科成績排序后的結(jié)果。10) 總分降序排序模塊用函數(shù)void sortsum(stu *r)來實(shí)現(xiàn),主要功能是利用保存在文件的學(xué) 生總分進(jìn)行排序。首先對文件進(jìn)行讀取,然后進(jìn)行選擇排序。其基本思想 是:n個(gè)記錄的文件的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序 結(jié)果:初始狀態(tài):無序區(qū)為rl.n,有序區(qū)為空。第1趟排序:在無 序區(qū)rfl.n中選出關(guān)鍵字最小的記錄rk,將它與無序區(qū)的第1個(gè)記錄 rl交換,使rl.l和r2.n分別變?yōu)橛涗泜€(gè)數(shù)增加1個(gè)的新有序區(qū)和記 錄個(gè)數(shù)減少1個(gè)的新無序區(qū)。第i趟排序第i

20、趟排序開始時(shí),當(dāng)前 有序區(qū)和無序區(qū)分別為ri1.m和r(i.n)0該趟排序從當(dāng)前無序區(qū)中選出 關(guān)鍵字最小的記錄rk,將它與無序區(qū)的第1個(gè)記錄r交換,使 和r分別變?yōu)橛涗泜€(gè)數(shù)增加1個(gè)的新有序區(qū)和記錄個(gè)數(shù)減少1個(gè)的新無序 區(qū)。11) 各科成績統(tǒng)計(jì)模塊用函數(shù)void stat(stu竹)來實(shí)現(xiàn),主耍功能是計(jì)算各科總分和各科平均 分。12) 各科分?jǐn)?shù)段查找模塊用函數(shù) void int_ba(stu *r), void int_ue(stu *r), void int_ds(stu *r), void intsum(stu衍);四個(gè)函數(shù)實(shí)現(xiàn),首先提示用戶輸入要查找的單科成績或 總分的上限與下限,然后通過

21、for循壞語句遍歷學(xué)生記錄找到符合條件的 學(xué)生并輸入相應(yīng)學(xué)生記錄。e:studydata structure'課設(shè)1.exe>m單欄<讀取文出學(xué)生唁息 歓負(fù)諫.<2><12><1h>歳入學(xué)生的人數(shù)* 5<11>菜單選擇 生信息輸入完成后的界而:e:studydata stokture課設(shè) 1.exe7 8 9 38 8 8成成驛入學(xué)生信 的界面4 5 6 58 8 8f.t.鑒-srs計(jì)語構(gòu)k&tt計(jì)語構(gòu)kbdb晉* ks央結(jié)付:含央結(jié)付;£1 字據(jù)2z名舉據(jù)輕名畢據(jù)4名畢據(jù)“名畢據(jù)頁 天嘗姓類詈姓類詈姓*4

22、<顰姓苴夬數(shù)經(jīng)鍵 7v入入入入入入入入入入入入入入入入入入入入入己意 膏青音盒冃立冃復(fù)目*h4h 主冃立h膏+mnxnr-n 4htmbrzx成成成主 匚aj計(jì)語構(gòu)i回student.txt:供號姓名基礎(chǔ)會(huì)計(jì)平均分t返回主菜單后選擇2讀入文件信息并輸出。e:studydata structurei?is1 .exe279jbj91.092.093.0276.092.0rs87.088.089.0264.088.0tt93.094.095.0282.094.0db84.085.086.0255.085.0ajs92.093.094.0279.093.012345輸出文件 生信息復(fù)狗拼音輸入

23、法半丄返冋主菜單后選擇3按學(xué)號查找學(xué)生信息。的信息如下總分 平均分26488h> 要查找犀忘匸玉礎(chǔ)會(huì)計(jì)大學(xué)英語數(shù)據(jù)結(jié)構(gòu)j2rs878889丹任意鍵嘆返回主菜單含找仔叟狗拼音輸入法全:ck返回主菜單后選擇5按學(xué)號修改學(xué)生信息。e:program filesdev-cppconsolepauser.exe輸入要修改成績的學(xué)生學(xué)號,3> 修改前的信息如下 < 忘£一g礎(chǔ)會(huì)計(jì)大學(xué)英語數(shù)據(jù)結(jié)構(gòu)總分平均分3tt93949528294>可以修改的頂目如下<1-修改學(xué)生的基礎(chǔ)會(huì)計(jì)成績記錄2 修改學(xué)生的大學(xué)英語成壤記錄3 修改學(xué)生的數(shù)據(jù)結(jié)構(gòu)成績記錄向.$e:program

24、 filesdevcppconsolepauser.exe冉入要修改成績的學(xué)生學(xué)號,3.> 修改前的信息如下 餐gi匝石一玉礎(chǔ)會(huì)計(jì)大學(xué)英語數(shù)據(jù)結(jié)構(gòu)總分 平均分3tt93949528294>可以修改的項(xiàng)目如下<,修改學(xué)生的基礎(chǔ)會(huì)計(jì)成績記錄2 .修改學(xué)生的大學(xué)英語成績記錄3 -修改學(xué)生的數(shù)據(jù)結(jié)構(gòu)成績記錄1單 e于!菜 霊入主 n 3藝改嘆 esm其他成績記錄?'v/h) n修改完 卞面student.txt:1jbj91.092.093.0276.092.02rs87.088.089.0264.088.03tt93.094.095.0282.094.04db84.085.

25、086.0255.085.05ajs92.093.094.0279.093.0返回主菜單后選擇6插入學(xué)生信息。e:program filesdev-cppconsolepauser.exe翹文件牙輸出學(xué)生信息»<2><in><12> 出><13>3is b "詁|1 a詰n 文安6hh計(jì)語構(gòu)? :會(huì)央結(jié)入 號鑑 入入入入入繼; 4? 句 v111<1> <3> <5> <7> <9><11>并 息序息息學(xué)號學(xué)ok矗<2> <4>

26、;<6><8> <10> <12>遠(yuǎn)取文件笄輸岀學(xué)生信息聶車號妳序student.txt:1jbj91.092.093.0276.092.02rs87.088.089.0264.088.03tt93.094.095.0282.094.04db84.085.086.0255.085.05ajs92.093.094.0279.093.06hm99.098.097.0294.098.0返冋主菜單后選擇7,按學(xué)號刪除學(xué)生記錄。e:program filesdev-cppconsolepauser.exe請選毎和輸入要?jiǎng)h除學(xué)生的學(xué)號:6>要?jiǎng)h除學(xué)生的

27、信息如下<學(xué)號姓名基礎(chǔ)會(huì)計(jì)大學(xué)英語數(shù)據(jù)結(jié)構(gòu)總分平均分> hm 99989729498確定刪除? (v/n>返回主菜單學(xué)牛記錄搜狗抄音輸入法全:student.txt:1 jbj91.092.093.0276.092.02 rs87.088.089.0264.088.0tt 93.094.095.0282.094.04 db84.085.086.0255.085.0ajs92.093.094.0279.093.0當(dāng)鏟井保存到文件鼬岀<2> «取文件井輸岀學(xué)生信息<4>徹<6> 插乂<8> o<10> 各 1&

28、lt;12>茲學(xué)號排序蠱十退e:program filesdev-cppconsolepauser.exe人學(xué)改學(xué)總龍 更書安安勺 > > > > > 1 1 3 s 7 9 1 <<<<<<請選拓bwwww<1>蓬礎(chǔ)舍辻<3>菽據(jù)結(jié)祐-www>排序菜單<各科成績排序請選擇1_一w叔狗拼音輸入法全:i<13>以選擇1基礎(chǔ)會(huì)計(jì)成績排序?yàn)槔?a笛,懺二宀羈一 x>排序菜單<各科成墻排序<1>秦礎(chǔ)合就<2>衣學(xué)采聲<3>數(shù)據(jù)緒轉(zhuǎn)<

29、;4>應(yīng)回上級f fl 示畢經(jīng)鍵 擇宀3-匕意 選、王=1目>4< -ic文件己經(jīng)讀/一tt"v學(xué)號姓名基礎(chǔ)會(huì)計(jì)-ha 一戌】 匸- nava 一 r 夕遂一 克一 多一 戸一-一平均分3tt939495282945fijs929394279931jbj919293276922rs878889264884db8485862s585按任意健以返回計(jì)學(xué) 記錄 課排序結(jié)杲:student.txt:3tt93.094.095.0282.094.05ajs92.093.094.0279.093.01jbj91.092.093.0276.092.02rs87.088.089.0

30、264.08&04db84.085.086.0255.085.0e:program filesdev-cppconsolepauser.exe菜單欄> >z 7 > cd 24 6 8 11< < < < <岀退>31信詢 eyebg: 生査生聖贈(zèng) 學(xué)號按按/刀> > > > > > 丨 13 5 7 9 1 x zx xx z> zx xx甲選擇,矗序漿! 冑筆蠶尬示排序結(jié)果耳叟狗拼音輸入法全:返回菜單后選擇9按總分降序?qū)W(xué)生記錄進(jìn)行排序。e:programfilesdev-cppcons

31、olepauser.exex區(qū)件m經(jīng)湫嚴(yán)悴號姓名基礎(chǔ)會(huì)計(jì)大學(xué)英語構(gòu)平均分檢任意鍵以返回排序結(jié)果:student.txt3 tt 93.094.095.0282.094.0ajs 92.093.094.0279.093.01jbj91.092.093.0276.092.02rs87.088.089.0264.088.04db84.085.086.0255.085.0e:program filesdev-cppconsolepauser.exee:program filesdev-cppconsolepauser.exe輸息序討f 并詢勢瞬 文辜成龔<2><10><1

32、2>返回主菜單后選擇10對各科總分以及平均分進(jìn)行統(tǒng)計(jì)。<13>分?jǐn)?shù)段查找菜單<1><3>各科及總分分?jǐn)?shù)邈蘇麴5返回上級請選擇: 複狗拼音輸入法全:返回主菜單后選擇ii進(jìn)入分?jǐn)?shù)段查找菜單對學(xué)生記錄的單科成績或總成 績進(jìn)行分?jǐn)?shù)段查找。以數(shù)據(jù)結(jié)構(gòu)為例:e:program filesdev-cppconsolepauser.exe排序結(jié)果:student.txt:1jbj91.092.093.0276.092.02rs87.08&089.0264.088.03tt93.094.095.0282.094.04db84.085.086.0255.085.0

33、5ajs92.093.094.0279.093.0第4章調(diào)試與改進(jìn)程序編譯連接通過后在調(diào)試過程中以及木報(bào)告的編寫過程 中遇到了不少的問題,經(jīng)過兒天的調(diào)試與修改大部分問題已經(jīng)成 功解決。遇到并以解決的部分問題如下:1) 在多處需要用戶輸入數(shù)字時(shí)沒有設(shè)置數(shù)字范圍或者沒有 限定用戶只能輸入數(shù)字,導(dǎo)致用戶在輸入錯(cuò)誤時(shí)出現(xiàn)越界問題或 者程序崩潰。以用戶在主菜單輸入數(shù)字選擇操作時(shí)為例,解決方 法為利用while循環(huán)語句進(jìn)行循環(huán)判斷,在用戶輸入越界的數(shù)字 或者輸入非數(shù)字時(shí)輸出錯(cuò)課語句并利用cin.clear();與cin.sync();語 句清除錯(cuò)誤狀態(tài)與輸入流再提示用戶重新輸入。2) 插入學(xué)生記錄時(shí)沒有進(jìn)

34、行新插入的學(xué)生學(xué)號是否重復(fù)的 檢查,利用for循環(huán)語句與if判斷語句進(jìn)行循環(huán)判斷,在用戶輸 入重復(fù)的學(xué)生學(xué)號時(shí)輸出提示該學(xué)號己存在并利用cin.clearo;與 cin.sync();語句清除錯(cuò)課狀態(tài)與輸入流再提示用戶重新輸入。3) 修改學(xué)生記錄函數(shù)void modify(stu打)沒有判斷用戶輸入 的學(xué)號是否存在,初次采用修改方式是增加一個(gè)訐判斷語句 if(rm.serial!=n)并將此這個(gè)判斷過程放在了 for(m=0;m<num;m+4-) 的大循環(huán)內(nèi),思考后發(fā)現(xiàn)在m遍歷了一次num之后再進(jìn)行此判 斷必定輸出錯(cuò)誤提示,并跳到定義的begin標(biāo)記處,陷入了死循 環(huán)。思考過后定義一個(gè)

35、新變量1,在每次滿足if(rm.serial!=n)時(shí) 自增1,在循環(huán)結(jié)束以后若1的值等于num則輸出錯(cuò)誤提示并提 示用戶重新輸入。修改過后發(fā)現(xiàn)在執(zhí)行完了修改成績之后仍會(huì)輸 出錯(cuò)誤提示。最后定義了 end標(biāo)記,在用戶輸入了一個(gè)存在的學(xué) 號之后執(zhí)行修改成績完畢后直接利用goto語句跳到end標(biāo)記處。第5章小結(jié)通過木次課程設(shè)計(jì),我鞏固了部分木學(xué)期以及上學(xué)期所學(xué)的 理論知識,有了一些新的理解與體會(huì)。對于一些平時(shí)似懂非懂的 知識,在這次課程設(shè)計(jì)中也解決了一些困惑,雖然還是不能夠全 面的理解,但是已經(jīng)有了進(jìn)步。在課程設(shè)計(jì)屮遇到不少困難,包 括上一章提及的幾個(gè)問題與已經(jīng)解決的一些小問題,通過查閱資 料、與

36、同學(xué)討論,在應(yīng)用課木的前提下。拓展課外知識,基木完 成了本次課程設(shè)計(jì),雖然其中述有許多不足之處,但是從中我學(xué) 到了許多東西,懂得了不能拘泥于課本上的知識形式,應(yīng)該對其 靈活運(yùn)用。本次課程設(shè)計(jì)使我認(rèn)識到自己對知識的掌握不夠全面,而且 感覺到我們在學(xué)習(xí)專業(yè)知識的同時(shí)還需要加強(qiáng)對自己邏輯性思 維的培養(yǎng)以及對其他方面知識的學(xué)習(xí),邏輯性思維對于能不能寫 出一個(gè)好的算法以及排除代碼錯(cuò)課方面至關(guān)重要。在編程的過程 中我又重新復(fù)習(xí)了本學(xué)期的數(shù)據(jù)結(jié)構(gòu)以及上學(xué)期的c+程序設(shè)計(jì) 的課本,對一些以前學(xué)過的知識有了更深的理解,對一些以前沒 學(xué)過的知識有了初步的認(rèn)識,當(dāng)自己把程序一點(diǎn)點(diǎn)完善時(shí)讓我對 學(xué)好數(shù)據(jù)結(jié)構(gòu)這門課程更

37、有信心了,以前一直感覺枯燥難學(xué)的數(shù) 據(jù)結(jié)構(gòu),在編程的過程中好像顯得不那么高深了。在以后的學(xué)習(xí)過程屮,我一定會(huì)認(rèn)真負(fù)責(zé)地對待課本屮的知 識點(diǎn),進(jìn)一步充實(shí)、提高自己。爭取在不斷的練習(xí)中提高自己的 層次。源代碼#include<stdio.h> #include<iostream> # include<iomanip> #include<stdlib.h> #include<conio.h> using namespace std;struct stuint serial;char namef501;float ba_score; /基礎(chǔ)會(huì)

38、計(jì)成績 float ue_score; 大學(xué)英語成績 float ds_score; 數(shù)據(jù)結(jié)構(gòu)成績 float sum; 總分 float average; ;平均分int num=0;int ch,choice;void input(stu *r); 輸入void output(stu *r); 輸出void menu();菜單界面void sortmenu();排序菜單void intmenu();分?jǐn)?shù)段查找菜單void searchnum(stu *r); 按學(xué)號查找void searchname(stu *r); 按姓名查找void modify(stu *r); void erase

39、(stu *r); void sort_ba(stu *r); void sort_ue(stu *r); void sort_ds(stu *r); void sortnum(stu *r); void sortsum(stu *r); void stat(stu *r); stu *insert(stu *r); void int_ba(stu *r); void int_ue(stu *r);修改學(xué)生信息按學(xué)號刪除信息基礎(chǔ)會(huì)計(jì)成績排序大學(xué)英語成績排序數(shù)據(jù)結(jié)構(gòu)成績排序按學(xué)號排序按總分降序排序統(tǒng)計(jì)各科總分和平均分信息插入信息基礎(chǔ)會(huì)計(jì)分?jǐn)?shù)段查找大學(xué)英語分?jǐn)?shù)段查找void int_ds(stu

40、*r);數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)段查找void intsum(stu *r);總分分?jǐn)?shù)段查找int main()cout«"輸入學(xué)生的人數(shù):”;cin»num;while(lcin) cout«h輸入錯(cuò)誤! ”;cin.clear();cin.s ync();coutvv”請重新輸入學(xué)生的人數(shù):”; cin»num;stu *p=(stu *)new stufnum;int m;menu();docin»m;while(!cin|m<l| 向>13)cout«h輸入錯(cuò)誤! ”;cin.clear();cin.sync();c

41、out«"請重新輸入:”;cin»m;)begin:switch(m)case 1:input(p);menu();break;case 2:output(p);menu();break;case 3:search nu m(p);menu();break;case 4:searchname(p);menu(); break;case 5:modify(p); menu();break;case 6:p=insert(p);menu(); break;case 7:erase(p);menu(); break;case 8:sortmenu(); do cin&#

42、187;ch;while(!cin|ch< 1 |ch>4)cout«h輸入錯(cuò)誤! ”;cin.clear(); cin.sync();coutvv”請重新輸入:”; cin»ch;switch(ch)case 1: system(nclsn); sortmenu(); sort_ba(p); output(p); sortmenu(); break;case 2: system(mclsn); soilmenu(); sort_ue(p); output(p);sortmenu(); break;case 3: system(mclsn); sortmenu(

43、); sort_ds(p); output(p); sortmenu();break; while(ch!=4);system(mclsh);menu();break;case 9:sortsum(p);output(p);menu();break;case 10:stat(p);menu();break;case 11:intmenu();do cin»choice;while( !cin|choice< 1 |choice>6) cout«n輸入錯(cuò)誤! ”;cin.clear(); cin.sync();cout«h請重新輸入:”; cin

44、7;choice; switch(choice)case 1: system(mclsh); intme nu(); int_ba(p); intmenu(); break;case 2:system(nclsn);intmenu();int_ue(p);intmenu(); break;case 3:system(mclsh);intme nu();int_ds(p); intmenu(); break;case 4:system(nclsm);intmenu();intsum(p);intmenu();break;) while(choice!=5);system(mcls");

45、menu();break;case 12:system(mclsh);sort nu m(p);output(p);menu();break;case 13:exit(o);default:while(m<0|m> 12|!cin) couivv”輸入有誤!請重新輸ah«endl; cin.clear();cin.sync();cin»m;goto begin;while(l);void menu()cout«endl;cout«endl; cout«hcout«m 件并輸出學(xué)生信息*cout«m查詢cout&#

46、171;生信息cout«績排序cout«h 成績統(tǒng)計(jì)cout«n 號排序-*nm«endl;<1>輸入學(xué)生信息并保存到文件*"«endl;<3>按學(xué)號查詢*"«endl;<5>修改學(xué)生信息*h«endl;<7>按學(xué)號刪除信息*"«endl;<9>按總分降序排序 *"«endl;<11>分?jǐn)?shù)段查找* h«endl;<2><4><6><8>讀

47、取文按姓名插入學(xué)各科成<10>各科<12>按學(xué)cout«n*f,«endl;<13> 退cout«cout«f,請選擇:n«endl; void sortmenu() cout«endl;cout«e ndl; cout«h*nn«endl;cout«h*各科成績排序*"«endl;cout«"*<1>基礎(chǔ)會(huì)計(jì)<2>大學(xué)英語*u«endl;cout«n*<3>數(shù)據(jù)結(jié)

48、構(gòu)<4>返回上級*"«endl;cout«m單> 排序菜<*nh«endl;cout«endl;cout«h*> 分?jǐn)?shù)段查找菜單<*nu«endl;cout«h各科及總分分?jǐn)?shù)段查找*"«endl;cout«n*<1>基礎(chǔ)會(huì)計(jì)<2>大學(xué)英語*"«endl;cout«h*<3>數(shù)據(jù)結(jié)構(gòu)<4>總分查找*"«endl;cout«n*<5>返

49、回上級*,«endl;cou(«h*nh«endl;cout«h請選擇:,f«endl;void input(stu *r) file *fp;int n=0;int i;int t=0;cout«endl«n> 請輸入學(xué)生信息 vh«endl;for(i=0;i<num;i+)cout«h請輸入第,«i+l«n個(gè)人的學(xué)號:”;cin»ri.serial;while(!cin|ri.serial<0)cout«"輸入錯(cuò)誤或序號不合理! ”

50、;cin.clear();cin.s yn c();coutvv"請重新輸入第” vvi+lvv “個(gè)人的學(xué)號:”; cin»rli.serial;if(i>=l)for(n=0;n<i;n+) if(rn.serial=ri.serial)cout«"該學(xué)號已存在! "vvendl;t=uif(t=l)continue;cout«h請輸入姓名:”;cin»;cout«h請輸入基礎(chǔ)會(huì)計(jì)成績:”;cin»ri.ba_score;while(!cin|ril.ba_score>

51、100|ri.ba_score<0)cout«"輸入錯(cuò)誤或成績不合理! ”;cin.clear();cin.s ync();cout«"請重新輸入基礎(chǔ)會(huì)計(jì)成績:”;cin»rfi .ba_score; couivv”請輸入大學(xué)英語成績:”;cin»ri .ue_score;while(!cin|rij.ue_score>100|ri.ue_score<0)cout«*t輸入錯(cuò)誤或成績不合理! ”;cin.clear();cin.sync();coutvv”請重新輸入大學(xué)英語成績:”;cin»ri.

52、ue_score; com*”請輸入數(shù)據(jù)結(jié)構(gòu)成績:”; cin»rfi.ds_score;while(!cin|ri.ds_score>100|ri.ds_score<0)cout«"輸入錯(cuò)誤或成績不合理! ”;cin.clear();cin.sync();comvv”請重新輸入數(shù)據(jù)結(jié)構(gòu)成績:”;cin»ri.ds_score; ri.sum=ri.ba_score+ri.ue_score+ri.ds_score; ri.average=(ri.ba_score+ri.ue_score+ri.ds_score)/3; fp=fopen(mst

53、udent.txt",nw+m);if(!fp)cout«n文件不能打開h«endl;exit(o);)for(n=0;n<i;n+)fprintf(fp,u%d %s %.lf %.lf %.lf %.lf %.ir,rfn.serial,,rn.ba_score,rn.ue_score,rn.ds_score,rn.sum,rn.ave rage);fprintf(fp,mnh); fclose(fp);cout«"文件已經(jīng)寫入! "vvendl;coutvv”按任意鍵以返冋主菜單"«end

54、l;getch();system(mcls");)void output(stu *r) int m;system("clsn);if(num>0) file *fp;if(fp=fopenc,student.txtu;,r,)=null)cout«"文件不能打開”endl;exit(o); for(int n=();n<num;n+)fscanf(fp,"%d%s%f%f%f1%f%f,&rn.serial,&,&n.ba_scoi*e,&rn .ue_score,&rn.ds

55、_score,&rn.su.average);fclose(fp);cout«"文件已經(jīng)讀入n«endl;cout«->學(xué) 生 信 息 如 下<"«endl;cout«"學(xué)號 m«setw(6)«m 姓名,«setw(10)«n 基礎(chǔ)會(huì)計(jì) ,«setw(10)«n 大學(xué)英語 n«setw(10)«,'數(shù)據(jù)結(jié)構(gòu) h«setw(6)«u 總分 ,'«setw(10)«n 平均分 n«endl;cout«"-h«endl;for(m=0;m<num;m+) cout«rm.serial«setw(8)««setw(10)«rm.ba_score«s etw( 1 ()«r m .ue_score«setw( 10)«rf m .ds_score«setw(7)&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論