面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)參考題目和要求_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)參考題目和要求_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)參考題目和要求_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)參考題目和要求_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)參考題目和要求_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)參考題目1、學(xué)生信息管理(1)問題描述學(xué)生信息包括:學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-mail等。試設(shè)計(jì)一學(xué)生信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作學(xué)生信息錄入功能(學(xué)生信息用文件保存)-輸入學(xué)生信息瀏覽功能輸出查詢、排序功能算法1、按學(xué)號查詢2、按姓名查詢學(xué)生信息的刪除與修改(可選項(xiàng))(2)功能要求界面簡單明了;有一定的容錯能力,比如輸入的成績不在0100之間,就提示不合法,要求重新輸入;最好用鏈表的方式實(shí)現(xiàn)。(3)算法分析首先,一個學(xué)生包括這么多的屬性,應(yīng)該考慮定義一個結(jié)構(gòu),其次,我們應(yīng)該考慮數(shù)據(jù)的存儲形式:是定義一個數(shù)組來存儲,還是定義

2、一個鏈表呢?在這里假如我們以數(shù)組的方式來存儲,當(dāng)然可以,但是我們知道,假如我們定義一個數(shù)組的話,我們首先必須知道學(xué)生人數(shù)大概是多少,以便我們確定數(shù)組的大小,但是題目中沒有給出,而且題目要求中有大量的刪除、插入操作,所以用鏈表的方式比較方便。對于菜單的實(shí)現(xiàn),其實(shí)也比較簡單,首先我們用printf語句把程序的功能列出來,然后等待用戶輸入而執(zhí)行不同的函數(shù),執(zhí)行完了一個功能后又回到菜單。文件的讀寫操作大家參照書中的有關(guān)文件的章節(jié)。2、學(xué)生綜合測評系統(tǒng)每個學(xué)生的信息為:學(xué)號、姓名、性別、家庭住址、聯(lián)系電話、語文、數(shù)學(xué)、外語三門單科成績、考試平均成績、考試名次、同學(xué)互評分、品德成績、任課教師評分、綜合測評

3、總分、綜合測評名次。考試平均成績、同學(xué)互評分、品德成績、任課教師評分分別占綜合測評總分的60%,10%,10%,20%。A、學(xué)生信息處理(1) 輸入學(xué)生信息、學(xué)號、姓名、性別、家庭住址、聯(lián)系電話,按學(xué)號以小到大的順序存入文件中。提示:學(xué)生信息可先輸入到數(shù)組中,排序后可寫到文件中。(2) 插入(修改)同學(xué)信息:提示:先輸入將插入的同學(xué)信息,然后再打開源文件并建立新文件,把源文件和輸入的信息合并到新文件中(保持按學(xué)號有序)若存在該同學(xué)則將新記錄內(nèi)容替換源內(nèi)容,(3) 刪除同學(xué)信息:提示:輸入將刪除同學(xué)號,讀出該同學(xué)信息,要求對此進(jìn)行確認(rèn),以決定是否刪除將刪除后的信息寫到文件中。(4) 瀏覽學(xué)生信息

4、:提示:打開文件,顯示該文件的學(xué)生信息。B、學(xué)生數(shù)據(jù)處理:(1) 按考試科目錄入學(xué)生成績并且按公式:考試成績(語文+數(shù)學(xué)+外語)/3 計(jì)算考試成績,并計(jì)算考試名次,提示:先把學(xué)生信息讀入數(shù)組,然后按提示輸入每科成績,計(jì)算考試成績,求出名次,最后把學(xué)生記錄寫入一個文件中。(2) 學(xué)生測評數(shù)據(jù)輸入并計(jì)算綜合測評總分及名次。提示:綜合測評總分(考試成績)*0.6+(同學(xué)互評分)*0.1+品德成績*0.1+任課老師評分*0.2。(3) 學(xué)生數(shù)據(jù)管理提示:輸入學(xué)號,讀出并顯示該同學(xué)信息,輸入新數(shù)據(jù),將改后信息寫入文件(4) 學(xué)生數(shù)據(jù)查詢:提示:輸入學(xué)號或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。C、學(xué)生

5、綜合信息輸出提示:輸出學(xué)生信息到屏幕。3、圖書管理系統(tǒng)主要包括管理圖書的庫存信息、每一本書的借閱信息以及每一個人的借書信息。每一種圖書的庫存信息包括編號、書名、作者、出版社、出版日期、金額、類別、總?cè)霂鞌?shù)量、當(dāng)前庫存量、已借出本數(shù)等。每一本被借閱的書都包括如下信息:編號、書名、金額、借書證號、借書日期、到期日期、罰款金額等。每一個人的借書信息包括借書證號、姓名、班級、學(xué)號等。系統(tǒng)功能包括以下方面:A、借閱資料管理要求把書籍、期刊、報刊分類管理,這樣的話操作會更加靈活和方便,可以隨時對其相關(guān)資料進(jìn)行添加、刪除、修改、查詢等操作。B、借閱管理 (1) 借出操作 (2) 還書操作 (3) 續(xù)借處理提

6、示:以上處理需要互相配合以及賠、罰款金額的編輯等操作完成圖書借還業(yè)務(wù)的各種登記。例如:讀者還書時不僅更新圖書的庫存信息,還應(yīng)該自動計(jì)算該書應(yīng)罰款金額。并顯示該讀者所有至當(dāng)日內(nèi)到期未還書信息。C、讀者管理讀者等級:對借閱讀者進(jìn)行分類處理,例如可分為教師和學(xué)生兩類。并定義每類讀者的可借書數(shù)量和相關(guān)的借閱時間等信息。 讀者管理:對讀者信息可以錄入,并且可對讀者進(jìn)行掛失或注銷、查詢等服務(wù)的作業(yè)。D、統(tǒng)計(jì)分析隨時可以進(jìn)行統(tǒng)計(jì)分析,以便及時了解當(dāng)前的借閱情況和相關(guān)的資料狀態(tài),統(tǒng)計(jì)分析包括借閱排行榜、資料狀態(tài)統(tǒng)計(jì)和借閱統(tǒng)計(jì)、顯示所有至當(dāng)日內(nèi)到期未還書信息等功能分析。E 系統(tǒng)參數(shù)設(shè)置:可以設(shè)置相關(guān)的罰款金額,

7、最多借閱天數(shù)等系統(tǒng)服務(wù)器參數(shù)。4、學(xué)校運(yùn)動會管理系統(tǒng)問題描述: (1) 初始化輸入:N-參賽院系總數(shù),M-男子競賽項(xiàng)目數(shù),W-女子競賽項(xiàng)目數(shù);(2) 各項(xiàng)目名次取法有如下幾種:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;(3) 由程序提醒用戶填寫比賽結(jié)果,輸入各項(xiàng)目獲獎運(yùn)動員的信息。(4) 所有信息記錄完畢后,用戶可以查詢各個院系或個人的比賽成績,生成團(tuán)體總分報表,查看參賽院系信息、獲獎運(yùn)動員、比賽項(xiàng)目信息等。5、個人通訊錄管理系統(tǒng)建立一通訊錄,輸入姓名、電話號碼、住址等信息,然后對通信簿進(jìn)行顯示、查找、添加、修改及刪除。功能要求(1) 通訊錄的每一條

8、信息包括姓名、單位、固定電話、移動手機(jī)、分類(如同事、朋友、同學(xué)、家人等)、EMAIL、QQ等。(2) 輸入功能:可以一次完成若干條信息的輸入。(3) 顯示功能:完成全部通訊錄信息的顯示(一屏最多顯示10條,超過十條應(yīng)能夠自動分屏顯示)(4) 查找功能:可以按姓名等多種方式查找通訊信息(5) 增加、刪除、修改功能:完成通訊錄信息的多種更新6、教師工資管理系統(tǒng)每個教師的信息為:教師號、姓名、性別、單位名稱、家庭住址、聯(lián)系電話、基本工資、津貼、生活補(bǔ)貼、應(yīng)發(fā)工資、電話費(fèi)、水電費(fèi)、房租、所得稅、衛(wèi)生費(fèi)、公積金、合計(jì)扣款、實(shí)發(fā)工資。注:應(yīng)發(fā)工資=基本工資+津貼+生活補(bǔ)貼;合計(jì)扣款=電話費(fèi)+水電費(fèi)+房租

9、+所得稅+衛(wèi)生費(fèi)+公積金;實(shí)發(fā)工資=應(yīng)發(fā)工資 合計(jì)扣款。A、教師信息處理(1) 輸入教師信息(2) 插入(修改)教師信息:(3) 刪除教師信息:(4) 瀏覽教師信息:提示:具體功能及操作參考題1。B、教師數(shù)據(jù)處理:(1) 按教師號錄入教師基本工資、津貼、生活補(bǔ)貼、電話費(fèi)、水電費(fèi)、房租、所得稅、衛(wèi)生費(fèi)、公積金等基本數(shù)據(jù)。(2) 教師實(shí)發(fā)工資、應(yīng)發(fā)工資、合計(jì)扣款計(jì)算。提示:計(jì)算規(guī)則如題目。(3) 教師數(shù)據(jù)管理提示:輸入教師號,讀出并顯示該教師信息,輸入新數(shù)據(jù),將改后信息寫入文件(4) 教師數(shù)據(jù)查詢:提示:輸入教師號或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。(5) 教師綜合信息輸出提示:輸出教師信

10、息到屏幕。7、教師工作量管理系統(tǒng)計(jì)算每個老師在一個學(xué)期中所教課程的總工作量。(教師單個教學(xué)任務(wù)的信息為:教師號、姓名、性別、職稱、認(rèn)教課程、班級、班級數(shù)目、理論課時、實(shí)驗(yàn)課時、單個教學(xué)任務(wù)總課時)A、教師信息處理(1) 輸入教師授課教學(xué)信息,包括教師號、姓名、性別、職稱、認(rèn)教課程、班級、班級數(shù)目、理論課時、實(shí)驗(yàn)課時。(2) 插入(修改)教師授課教學(xué)信息:(3) 刪除教師授課教學(xué)信息:(4) 瀏覽教師授課教學(xué)信息:B、教師工作量數(shù)據(jù)處理:(1) 計(jì)算單個教學(xué)任務(wù)總課時。計(jì)算原則如下表:班級數(shù)目單個教學(xué)任務(wù)總課時21.5*(理論課時+實(shí)驗(yàn)課時)32*(理論課時+實(shí)驗(yàn)課時)=42.5*(理論課時+實(shí)

11、驗(yàn)課時)(2) 計(jì)算一個教師一個學(xué)期總的教學(xué)工作量。總的教學(xué)工作量=所有單個教學(xué)任務(wù)總課時之和。(3)教師數(shù)據(jù)查詢:提示:輸入教師號或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。C、教師綜合信息輸出提示:輸出教師信息到屏幕。基本要求1、大作業(yè)可采取每人一題,可任選一題進(jìn)行設(shè)計(jì), 至少包含五個功能模塊。或者每組完成一個課題,每組成員(不得超過5人)分工合作完成一個大作業(yè),每個人的任務(wù)不同。分組情況請于5月17號上報給老師。2、可以選擇老師提供的參考選題,也可以自選,如果自選,需要將自選題目的詳細(xì)內(nèi)容以及實(shí)現(xiàn)要求提供給老師,老師批準(zhǔn)后方可采用。3、要求利用面向?qū)ο笤O(shè)計(jì)方法以及C+的編程思想來完成系統(tǒng)

12、的設(shè)計(jì)。4、要求有菜單、文件操作,數(shù)據(jù)使用數(shù)組、結(jié)構(gòu)體、鏈表等均可,鍵盤操作或鼠標(biāo)操作均可。5、模塊化程序設(shè)計(jì):要求在設(shè)計(jì)的過程中,按功能定義函數(shù)或書寫多個文件,進(jìn)行模塊化設(shè)計(jì),各個功能模塊用函數(shù)的形式來實(shí)現(xiàn)。6、所選課題必須上機(jī)通過,并獲得滿意的結(jié)果。7、程序書寫風(fēng)格:鋸齒型書寫格式。8、完成大作業(yè)報告書(格式見附錄一)。評價標(biāo)準(zhǔn)大作業(yè)成績評定的依據(jù)有設(shè)計(jì)文檔資料、具體實(shí)現(xiàn)設(shè)計(jì)方案的程序及大作業(yè)考勤登記表。優(yōu)(90分以上):必須要有一定的創(chuàng)意,有自己獨(dú)特的算法。按要求完成課題的全部功能,有完整的符合標(biāo)準(zhǔn)的文檔,文檔有條理、文筆通順,格式正確,其中有總體設(shè)計(jì)思想的論述,有正確的流程圖,程序完全

13、實(shí)現(xiàn)設(shè)計(jì)方案,設(shè)計(jì)方案先進(jìn),軟件可靠性好;良(80-89分):完成課題規(guī)定的功能,有完整的符合標(biāo)準(zhǔn)的文檔,文檔有條理、文筆通順,格式正確;有完全實(shí)現(xiàn)設(shè)計(jì)方案的軟件,設(shè)計(jì)方案較先進(jìn),無明顯錯誤;中(70-79分):完成課題規(guī)定的功能,有完整的符合標(biāo)準(zhǔn)的文檔,有基本實(shí)現(xiàn)設(shè)計(jì)方案的軟件,設(shè)計(jì)方案正確,但有少數(shù)失誤;及格:完成課題規(guī)定的大部分功能,有完整的符合標(biāo)準(zhǔn)的文檔,有基本實(shí)現(xiàn)設(shè)計(jì)方案的軟件,設(shè)計(jì)方案基本正確,個別功能沒有實(shí)現(xiàn),但錯誤不多;不及格:沒有完成課題規(guī)定的功能,沒有完整的符合標(biāo)準(zhǔn)的文檔,軟件沒有基本實(shí)現(xiàn)設(shè)計(jì)方案,設(shè)計(jì)方案不正確。 附錄一:(封面樣式)附件1:學(xué) 號: 面向?qū)ο蟪绦蛟O(shè)計(jì)大作

14、業(yè)題 目學(xué)生成績管理系統(tǒng)學(xué) 院文法學(xué)院專 業(yè)教育學(xué)班 級教育學(xué)1201姓 名指導(dǎo)教師鄢紅國2013年12月20日(正文部分)一、需求分析(標(biāo)題均為小三號,宋體)(正文均為小四號,宋體,行距1.5倍)(對所選擇題目進(jìn)行分析,描述問題。簡述課題要解決的問題是什么,有什么要求和限制條件。列出參與人員進(jìn)行本設(shè)計(jì)時要達(dá)到的具體的目標(biāo)。)二、總體設(shè)計(jì)(對設(shè)計(jì)目標(biāo)進(jìn)行總體分析,說明要采用的基本思路,說明遇到的問題和解決方法。說明完成本次大作業(yè)的完整過程。要描述程序的設(shè)計(jì)思想,畫出本次大作業(yè)完整的程序框圖或流程圖。)三、詳細(xì)設(shè)計(jì)(要求列出所有編寫的函數(shù)清單,說明每個函數(shù)的功能,各形式參數(shù)的意義,畫出各函數(shù)的調(diào)

15、用關(guān)系圖。即模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等)。)四、程序運(yùn)行結(jié)果測試與分析(要針對程序處理的不同情況列出有代表性的輸入和輸出,用足夠多的實(shí)例說明程序完成了設(shè)計(jì)任務(wù)和目標(biāo)。)五、結(jié)論與心得(主要說明程序調(diào)試中發(fā)現(xiàn)的問題和解決辦法,包括你在該設(shè)計(jì)中主要承擔(dān)什么任務(wù),在設(shè)計(jì)中學(xué)到了什么,哪里遇到了困難,解決的辦法,可能但因時間關(guān)系沒有來得及完成的想法,今后的目標(biāo)等。)六、致謝#include #include #include #include using namespace std;class Student public: string name; string

16、 ID; int grade; Student(string pName,string pID, int pgrade) name=pName; ID=pID; grade=pgrade; / 顯示學(xué)生的信息 void print() cout name t ID t grade endl; ; list lst;/學(xué)生鏈表,用于存放學(xué)生數(shù)據(jù) void print(list lst)/顯示鏈表中所有的學(xué)生 list:iterator it; cout tnametIDtgradeprint(); cout endl; void insertStudent()/插入一個學(xué)生 system(cls

17、); cout-請輸入學(xué)號IDtID; cout-請輸入姓名:tname; cout-請輸入分?jǐn)?shù):tgrade; Student stu(tname,tID,tgrade); lst.push_back(stu); list:iterator it; for(it = lst.begin(); it != lst.end(); +it) it-print(); void deleteStudent()/按要求刪除一個學(xué)生 system(cls); cout-請輸入要刪除學(xué)生的學(xué)號ID:tID; bool flag=false; list:iterator it; for(it = lst.be

18、gin(); it != lst.end(); +it) if (it-ID=tID) cout-查找到,該學(xué)生信息如下:-print(); lst.erase(it); cout刪除完畢!endl; flag=true; break; if (flag=false) cout未找到!endl; void screenA()/顯示屏幕操作A cout*endl; cout 1-查詢endl; cout 2-插入endl; cout 3-刪除endl; cout 4-顯示endl; cout 5-退出endl; cout*endl; void searchByName()/按名字查找 cout-

19、請輸入姓名:tname; bool flag=false; list:iterator it; for(it = lst.begin(); it != lst.end(); +it) if (it-name=tname) cout-查找到,該學(xué)生信息如下:-print(); flag=true; break; if (flag=false) cout未找到!ch) system(cls); switch(ch) case 1: searchByName(); break; case 2:/插入學(xué)生 insertStudent(); break; case 3:/刪除學(xué)生 deleteStude

20、nt(); break; case 4:/顯示當(dāng)前信息 cout-當(dāng)前數(shù)據(jù)列表如下endl; print(lst); break; case 5:/退出 return 0; system(pause);system(cls); screenA(); cout系統(tǒng)退出endl; return 0;附件1:學(xué) 號: 面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)題 目學(xué)生成績管理系統(tǒng)學(xué) 院文法學(xué)院專 業(yè)教育學(xué)班 級教育學(xué)1201姓 名指導(dǎo)教師鄢紅國2013年12月20日 TOC o 1-3 h z u 目 錄一 設(shè)計(jì)目的.1二 大作業(yè)的內(nèi)容.2三 大作業(yè)的要求與數(shù)據(jù).3四 大作業(yè)應(yīng)完成的工作.4五 總體設(shè)計(jì)(包含幾大功能

21、模塊).5六 詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法流程圖).6七 調(diào)試分析(包含各模塊的測試用例,及測試結(jié)果).7八 總結(jié).8十 參考資料.9一 大作業(yè)的目的面向?qū)ο蟪绦蛟O(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,通過大作業(yè)不僅可以全方位檢驗(yàn)學(xué)生知識掌握程度和綜合能力,而且還可以進(jìn)一步加深、鞏固所學(xué)課程的基本理論知識,理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問題和解決問題的能力。更好地掌握運(yùn)用C+語言獨(dú)立地編寫、調(diào)試應(yīng)用程序和進(jìn)行其它相關(guān)設(shè)計(jì)的技能。二 大作業(yè)的內(nèi)容對學(xué)生信息(包括學(xué)號、語文、數(shù)學(xué)、英語、平均分)進(jìn)行管理,包括學(xué)生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計(jì)、退出.將學(xué)生的成績信息進(jìn)行記錄,信息內(nèi)容

22、包含:(1)學(xué)生的學(xué)號(2)學(xué)生的姓名(3)學(xué)生的成績。假設(shè),現(xiàn)收集到了一個班學(xué)生的所有成績信息,要求用C語言編寫一個簡單的成績管理系統(tǒng),可進(jìn)行錄入、查詢、修改和瀏覽等功能。學(xué)習(xí)相關(guān)開發(fā)工具和應(yīng)用軟件,熟悉系統(tǒng)建設(shè)過程。三 大作業(yè)的要求與數(shù)據(jù)1、用C語言實(shí)現(xiàn)系統(tǒng);2、對學(xué)生信息(包括學(xué)號、姓名、語文、數(shù)學(xué)、英語、平均分)進(jìn)行管理,包括學(xué)生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計(jì)、退出.3、學(xué)生信息包括:其內(nèi)容較多,為了簡化討論,要求設(shè)計(jì)的管理系統(tǒng)能夠完成以下功能:(1) 每一條記錄包括一個學(xué)生的學(xué)號、姓名、3門課成績(2)、成績信息錄入功能:(成績信息用文件保存,可以一次完成若干條記錄的輸

23、入。)(3)、成績信息顯示瀏覽功能:完成全部學(xué)生記錄的顯示。(4)、查詢功能:完成按姓名查找學(xué)生記錄,并顯示。(5)成績信息的刪除:按學(xué)號進(jìn)行刪除某學(xué)生的成績.(6)、排序功能:按學(xué)生平均成績進(jìn)行排序。(7)、應(yīng)提供一個界面來調(diào)用各個功能,調(diào)用界面和各個功能的操作界面應(yīng)盡可能清晰美觀!四 大作業(yè)應(yīng)完成的工作(1)編寫算法;(2)算法測試,并有具體的測試結(jié)果和結(jié)果分析;(3)撰寫大作業(yè)報告。內(nèi)容包括:封面扉頁設(shè)計(jì)任務(wù)書目錄總體設(shè)計(jì)方案(包括流程圖)使用說明及運(yùn)行實(shí)例(包括界面)成員設(shè)計(jì)內(nèi)容簡介項(xiàng)目源程序代碼(注意注釋的使用)指導(dǎo)教師評語五 總體設(shè)計(jì)(包含幾大功能模塊) 1、成績錄入功能2、成績輸

24、出功能3、成績查詢功能4、刪除模塊 5、排序功能 6、統(tǒng)計(jì)功能 7、退出系統(tǒng)六 詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法流程圖)6.1各函數(shù)的功能和實(shí)現(xiàn)1、輸入初始的學(xué)生信息:輸入信息包括學(xué)生的姓名、學(xué)號以及學(xué)生的成績等相關(guān)信息;可用函數(shù)void input(STUDENT *data, int *len)來實(shí)現(xiàn)此操作。 2、成績輸出模塊:輸出學(xué)生的信息以及成績void output(STUDENT *data, int len):通過學(xué)生的姓名來查看學(xué)生的相關(guān)成績,同時也可以分別通過caverage()、maverage()、eaverage()和comaverage()來輸出成績的平均分?jǐn)?shù)、最高

25、和最低分?jǐn)?shù)。3、成績查詢模塊:可用void find(STUDENT *data, int len)來實(shí)現(xiàn)。找到就輸出此學(xué)生全部信息。4、刪除模塊:用函數(shù)void delete_item(STUDENT *data, int *len)來實(shí)現(xiàn)5、排序模塊:用函數(shù)void sort(STUDENT *data, int len)來實(shí)現(xiàn)6、統(tǒng)計(jì)功能能:用函數(shù)void stat(STUDENT *data, int len) 來實(shí)現(xiàn)7、退出系統(tǒng):可用一個函數(shù)exit()來實(shí)現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。 如圖6.1結(jié)束開始輸出菜單根據(jù)菜單輸入n的值選擇程序輸入退出

26、輸出保存查找排序統(tǒng)計(jì)插入刪除 圖 6.1七 調(diào)試分析(包含各模塊的測試用例,及測試結(jié)果) 7.1源程序#include #include #include #define MAXN 35#define MAX_NAME 256typedef struct student /學(xué)生信息int no;char nameMAX_NAME;double Chinese;double math;double English;double mark_ave;double mark_tot; STUDENT;/*-輸入信息子程序-*/void input(STUDENT *data, int *len)int

27、 no;putchar(n);printf(%sn, 請輸入新的記錄,如果需要退出當(dāng)前菜單請輸入-1.);printf(%sn, 格式:n學(xué)號n);printf(%sn, 姓名 語文 數(shù)學(xué) 英語);putchar(n);printf(如:n);printf(1n);printf(楊江彬 93 95 89n);scanf(%d, &no);while(no != -1) data*len.no = no;scanf(%s %lf %lf %lf, data*, &data*len.Chinese, &data*len.math,&data*len.English);data*le

28、n.mark_ave=(data*len.Chinese+data*len.math+data*len.English)/3.0;data*len.mark_tot=data*len.Chinese+data*len.math+data*len.English;(*len)+;scanf(%d, &no); /*-輸出信息子程序-*/void output(STUDENT *data, int len) int i;system(cls); printf(%8s, 學(xué)號); printf(%8s, 姓名); printf(%8s, 語文); printf(%8s, 數(shù)學(xué)); printf(%1

29、0s, 英語); printf(%12s, 平均分); printf(%10s, 總分); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); for (i = 0; i len; i+) printf(%8d, datai.no); printf(%8s, ); printf(%8.1lf, datai.Chinese); printf(%8.1lf, datai.math); printf(%10.1lf, datai.English); printf(%12.1lf, datai.mark_ave); pr

30、intf(%10.1lf, datai.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回車鍵繼續(xù).); getchar(); getchar();/*-排序子程序-*/void sort(STUDENT *data, int len) int i,j,k; STUDENT temp; for (i=0; ilen-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j;if (k != i) temp = datai;datai = datak;data

31、k = temp; /*-搜索子程序-*/void find(STUDENT *data, int len) int find_no, result ; int i;lab: result=0; printf(%sn, 請輸入需要查找的學(xué)生的學(xué)號,退出當(dāng)前菜單請輸入 -1.); scanf(%d, &find_no); if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no & result = len ) printf(%sn, 未查詢到相關(guān)信息); goto lab; e

32、lse system(cls); printf(%sn, 查詢信息如下:); for (i =0; i 80; i+) putchar(=); putchar(n); printf(%8s, 學(xué)號); printf(%8s, 姓名); printf(%8s, 語文); printf(%8s, 數(shù)學(xué)); printf(%10s, 英語); printf(%12s, 平均分); printf(%10s, 總分); putchar(n); printf(%8d, dataresult.no); printf(%8s, ); printf(%8.1lf, dataresu

33、lt.Chinese); printf(%8.1lf, dataresult.math); printf(%10.1lf, dataresult.English); printf(%12.1lf, dataresult.mark_ave); printf(%10.1lf, dataresult.mark_tot); putchar(n);for (i =0; i 80; i+) putchar(=); putchar(n); goto lab; /*-插入子程序-*/void insert(STUDENT *data, int *len) int no, pos;double Chinese,

34、 math, English, mark_ave, mark_tot;int i; char nameMAX_NAME;lab: printf(%sn, 輸入新的記錄,退出當(dāng)前菜單請輸入-1.); printf(%sn, 格式:學(xué)號); printf(%sn, 姓名 語文 數(shù)學(xué) 英語); scanf(%d, &no); if (no = -1) return; data*len.no = no; scanf(%s %lf %lf %lf, name, &Chinese, &math, &English); mark_ave=(Chinese+math+English)/3.0; mark_to

35、t=Chinese+math+English; pos = 0; while (datapos.mark_ave mark_ave) & (pos = pos; i-) datai+1 = datai; datapos.no = no; strcpy(, name); datapos.Chinese = Chinese; datapos.math = math; datapos.English = English; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/*

36、-刪除子程序-*/void delete_item(STUDENT *data, int *len) int no, i, pos;lab: pos=0; printf(%sn, 輸入需要刪除的學(xué)生的學(xué)號,退出當(dāng)前菜單請輸入-1.)scanf(%d, &no); if (no = -1) return; while( (datapos.no != no) & (pos = *len) printf(%sn, 未找到需要刪除的學(xué)生); goto lab; else for (i = pos+1;i *len; i+) datai-1 = datai; *len = *len -1; if (*l

37、en = 0) printf(%sn, 沒有任何記錄,請按回車鍵返回.); getchar(); getchar(); return; goto lab; /*-統(tǒng)計(jì)子程序-*/void stat(STUDENT *data, int len) int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i; for (i = 0;i len; i+) if (datai.mark_ave =59) no_59+; else if (datai.mark_ave =69) no_69+;else if (datai.mark_ave =79) n

38、o_79+;else if (datai.mark_ave = 89) no_89+;else no_100+; system(cls); for (i =0; i 80; i+) putchar(=);putchar(n); printf(%10s, 分?jǐn)?shù)); printf(%10s, 0-59); printf(%10s, 60-69); printf(%10s, 70-79); printf(%10s, 80-89); printf(%10s, 90-100);putchar(n); putchar(n); printf(%10s, 學(xué)生); printf(%10d, no_59); p

39、rintf(%10d, no_69); printf(%10d, no_79); printf(%10d, no_89); printf(%10d, no_100); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回車鍵返回); getchar(); getchar();/*-顯示信息子程序-*/void paint() int i;system(cls); printf(%55sn, 海都學(xué)院學(xué)生成績管理系統(tǒng)n); printf( 制作者: n); for (i = 0; i 80; i+) putchar(

40、=); putchar(n); printf( 1 輸入信息 2 輸出信息n); printf( 3 按平均分排序 4 按學(xué)號查找n); printf( 5 插入 6 按學(xué)號刪除n); printf( 7 按平均分輸出統(tǒng)計(jì)信息 8 保存到文件n); printf( 0 退出n);for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 請輸入各操作對應(yīng)的序號:);void save(STUDENT *data, int len)/將數(shù)據(jù)保存到文件int i;FILE *fp;fp=fopen(成績統(tǒng)計(jì)表.txt,w);fprintf(

41、fp,%8s, 學(xué)號); fprintf(fp,%8s, 姓名); fprintf(fp,%8s, 語文); fprintf(fp,%8s, 數(shù)學(xué)); fprintf(fp,%10s, 英語); fprintf(fp,%12s, 平均分); fprintf(fp,%10sn, 總分); fprintf(fp,=n); putchar(n); for (i = 0; i len; i+) fprintf(fp,%8d, datai.no); fprintf(fp,%8s, ); fprintf(fp,%8.1lf, datai.Chinese); fprintf(fp,%8.

42、1lf, datai.math); fprintf(fp,%10.1lf, datai.English); fprintf(fp,%12.1lf, datai.mark_ave); fprintf(fp,%10.1lfn, datai.mark_tot); fprintf(fp,=n);fclose(fp);printf(文件已保存到成績統(tǒng)計(jì)表.txt);getchar();getchar();/*-主程序-*/void main() STUDENT dataMAXN; int len = 0; char ctrl_ch; paint(); scanf(%c, &ctrl_ch); while

43、 (ctrl_ch != 0) ; case 1:input(data, &len);break;case 2:output(data, len);break;case 3:sort(data, len);break;case 4:find(data, len);break;case 5:insert(data, &len);break;case 6:delete_item(data, &len);break;case 7:stat(data, len);break;case 8:save(data, len);break;default:if (ctrl_ch != n) printf(%s

44、n, 輸入錯誤!);break; if (ctrl_ch != n) paint(); scanf(%c, &ctrl_ch); 7.2調(diào)試與測試 算法調(diào)試過程中出現(xiàn)的問題及解決方法(以下為其中一例)-Configuration: Cpp1 - Win32 Debug-Compiling.Cpp1.cppC:Documents and SettingsAdministrator桌面Cpp1.cpp(9) : error C2065: MAX_MAME : undeclared identifierC:Documents and SettingsAdministrator桌面Cpp1.cpp(9) : error C2057: expected constant expressionC:Documents and SettingsAdministrator桌面Cpp1.cpp(10)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論