




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、天津城市建設學院課程設計任務書20112012 學年第 1 學期電子與信息工程系專業(yè)班級課程設計名稱:數(shù)據(jù)結(jié)構(gòu)課程設計設計題目:學生作業(yè)完成情況管理程序完成期限:自2012 年 1 月 2 日至2012 年 1 月6 日共1 周設計依據(jù)、要求及主要內(nèi)容(可另加附頁):一、設計目的熟悉各種數(shù)據(jù)結(jié)構(gòu)和運算,會使用數(shù)據(jù)結(jié)構(gòu)的基本操作解決一些實際問題。二、設計要求(1)重視課程設計環(huán)節(jié),用嚴謹、 科學和踏實的工作態(tài)度對待課程設計的每一項任務;(2)按照課程設計的題目要求,獨立地完成各項任務,嚴禁抄襲;凡發(fā)現(xiàn)抄襲,抄襲者與被抄襲者皆以零分計入本課程設計成績。凡發(fā)現(xiàn)實驗報告或源程序雷同,涉及的全部人員皆以
2、零分計入本課程設計成績;(3)學生在接受設計任務后,首先要按設計任務書的要求編寫設計進程表;(4)認真編寫課程設計報告。三、設計內(nèi)容1)請設計一個學生作業(yè)完成情況管理程序。假設某門課程一學期要留10 次作業(yè), 每次老師要進行批改,給出分數(shù)后還要進行登記。學期期末要根據(jù)每次作業(yè)的成績計算出最終的平時成績(滿分100) 。作業(yè)登記信息應該包含:學號、姓名、10 次作業(yè)的完成情況。2)基本要求該程序應該具有下列功能:(1) 通過鍵盤輸入某位學生某次作業(yè)的分數(shù);(2) 給定學號,顯示某位學生作業(yè)完成情況;(3) 給定某個班級的班號,顯示該班所有學生的作業(yè)完成情況;(4) 給定某位學生的學號,修改該學生
3、的作業(yè)完成信息;(5) 給定某位學生的學號,刪除該學生的信息;(6) 按學生的最終平時成績進行排序;(7) 輸平均分數(shù)1 目錄一、需求分析 . 21、1. 程序的功能 . 22、2. 輸入輸出的要求 . 23、3. 測試數(shù)據(jù) . 2二、概要設計 . 34、1. 程序設計組成框圖. 35、2. 程序流程圖 . 4 . 4三、詳細設計 . 46、1. 函數(shù)的入口和出口. 47、2. 主函數(shù) . 48、3. 成員函數(shù) . 5四、調(diào)試分析 . 5五、核心源程序清單和執(zhí)行結(jié)果 . 69、1. 程序清單 . 610、. 2. 執(zhí)行結(jié)果 . 10 六、參考文獻 . 12 2 一、需求分析1. 程序的功能設計
4、一個學生作業(yè)完成情況程序,實現(xiàn)對學生作業(yè)完成情況的修改,對學生信息的刪除,對總成績的排序,輸出平均分數(shù)。2. 輸入輸出的要求必須符合輸入輸出函數(shù)的定義。3. 測試數(shù)據(jù)系統(tǒng)保存的學生信息:stu1(1,david,1); stu2(2,mike,1); stu3(3,tom,2); 學號第幾次作業(yè)成績 1 1 22 1 2 33 1 3 44 2 1 55 2 2 66 2 3 77 3 1 88 3 2 99 3 3 100 3 二、概要設計1. 程序設計組成框圖在主函數(shù)main()中調(diào)用各函數(shù)定義學生作業(yè)情況的一維數(shù)組以 菜 單 形式 提 示 輸入用 switch語句對輸入作出反應實現(xiàn)輸出聲
5、明student類各學生學號學生班級各學生姓名在類中調(diào)用setpoint 等函數(shù)學號、姓名、 10 次作業(yè)的完成情況4 2. 程序流程圖三、詳細設計1. 函數(shù)的入口和出口cout -輸入操作1-7 8退出 -nn; cout (1)通過鍵盤輸入某位學生某次作業(yè)的分數(shù),請按1n; cout (2)給定學號,顯示某位學生作業(yè)完成情況,請按2n; cout (3)給定某個班級的班號,顯示該班所有學生的作業(yè)完成情況,請按3n; cout (4)給定某位學生的學號,修改該學生的作業(yè)完成信息,請按4n; cout (5)給定某位學生的學號,刪除該學生的信息,請按5n; cout (6)按學生的最終平時成績
6、進行排序,請按6n; cout (7)輸出平均分數(shù),請按7n; cout (8)退出,請按8nn; 2. 主函數(shù)void main() string name,id; double point; int index,i,cls; 5 int select; vector students; student stu1(0001,clark,1); student stu2(0002,mac,1); student stu3(0003,tim,2); students.push_back(stu1); students.push_back(stu2); students.push_back(stu
7、3); 3. 成員函數(shù)gettotal():用來實現(xiàn)十次作業(yè)的情況輸入和。showhomework ():用來實現(xiàn)某個學生十次完成作業(yè)的情況。getname():讓后面的類調(diào)用此函數(shù),名字函數(shù)。getid ():讓后面的類調(diào)用此函數(shù),學號函數(shù),實現(xiàn)根據(jù)學號顯示此學生的作業(yè)完成情況。getsclass () :讓后面的類調(diào)用此函數(shù),班級函數(shù),實現(xiàn)根據(jù)班級顯示學生作業(yè)完成情況的功能。setpoint () :記錄成績函數(shù),使后面的類調(diào)用此函數(shù)用來顯示修改后的成績。gethomework() :獲得作業(yè)完成情況函數(shù),使后面的類調(diào)用此函數(shù)實現(xiàn)修改后的學生作業(yè)完成情況。void sort() : 排序函
8、數(shù),使用快速排序?qū)崿F(xiàn)對學生總成績的排序。四、調(diào)試分析(1)在類中調(diào)用函數(shù)時,出現(xiàn)了一些錯誤,問題出現(xiàn)在調(diào)用時的函數(shù)變量和初始化函數(shù)時的變量不一致,然后又檢查程序,將變量匹配。(2)運用了快速排序的方法,到調(diào)用排序函數(shù)時出現(xiàn)變量不匹配,檢查程序,并修改。(3)在輸出平均成績的時候,循環(huán)出現(xiàn)錯誤,沒有語法錯誤,但是輸出結(jié)果與正確結(jié)果不一致,后來發(fā)現(xiàn)是最后輸出在循環(huán)內(nèi),所以又進行了修改。(4)運用了容器vector ,在用之前并不熟悉這個功能,也出現(xiàn)了不少錯誤,比如它的定義,裝載,輸出,最后通過上網(wǎng)了解了容器的功能對程序加以修改直至沒有錯誤。(5)運用了map功能,這個功能適用于對這次設計的查詢并修
9、改的程序,使程序更優(yōu)化。(6)對數(shù)據(jù)結(jié)構(gòu)有了進一步的理解,使用算法后可以使設計思路更加清晰,對所學過東西的結(jié)合,也學了新的東西vector ,map 。6 五、核心源程序清單和執(zhí)行結(jié)果1. 程序清單#include #include #include /屬于 stl庫,為了把c 和 c+分開#include /map是一種關(guān)聯(lián)容器,它定義了一種數(shù)據(jù)結(jié)構(gòu),類似查表功能,每一個數(shù)據(jù)都有自己的鍵值,通過鍵值可以查找和排序相應的數(shù)據(jù)using namespace std; class student string id; /學生學號string name; /學生姓名int sclass; /學生所正
10、在班級double sum; /所有作業(yè)成績之和double homework10; /十次作業(yè)完成情況及成績enumunfinished=-1; /枚舉類型,枚舉初始化,將學生完成情況一一枚舉出來,等待成績賦值public: student(string id,string na,int cls):name(na),id(id),sclass(cls) /構(gòu)造函數(shù)賦值for(int i=0;i10;i+) homeworki=unfinished; /初始化學生的10 次作業(yè)都是未完成的 void setpoint(int index,double point) /錄入成績函數(shù),index
11、是每次作業(yè)計數(shù),point是作業(yè)分數(shù)homeworkindex-1=point; /把每次作業(yè)成績賦給作業(yè)完成情況 double gethomework(int index) /得到作業(yè)完成情況函數(shù)return homeworkindex-1; double gettotal() /作業(yè)總成績函數(shù)sum=0; for(int i=0;i10;i+) if(homeworki!=unfinished) sum+=homeworki; return sum; void showhomework() /顯示最后學生作業(yè)完成情況函數(shù)for(int i=0;i10;i+) if(homeworki=un
12、finished) coutunfinishedt; 7 else couthomeworkit; couti)&(aj=x) j-; if (ji) ai=aj; bi=bj; i+; while (ji)&(aii) aj=ai; bj=bi; j-; ai=x; bi=y; i+; j-; if (js) sort(s,j,a,b); if (it) sort(i,t,a,b); void main() string name,id; double point; int index,i,cls; int select; 8 vector students; /定義容器st
13、udents student stu1(1,david,1); /把三個學生信息存到容器中student stu2(2,mike,1); student stu3(3,tom,2); students.push_back(stu1); students.push_back(stu2); students.push_back(stu3); double a1000; string b1000; cout -輸入操 作1-7 8退出-nn; cout (1)通過鍵盤輸入某位學生某次作業(yè)的分數(shù),請按1n; cout (2)給定學號,顯示某位學生作業(yè)完成情況,請按2n; cout (3)給定某個班級的
14、班號,顯示該班所有學生的作業(yè)完成情況,請按3n; cout (4)給定某位學生的學號,修改該學生的作業(yè)完成信息,請按4n; cout (5)給定某位學生的學號,刪除該學生的信息,請按5n; cout (6)按學生的最終平時成績進行排序,請按6n; cout (7)輸出平均分數(shù),請按7n; cout (8)退出,請按8nn; while(true) coutselect; switch(select) case 1: coutidindexpoint; for(i=0;istudents.size();i+) if (id=studentsi.getid() studentsi.setpoint
15、(index,point); break; case 2: coutid; for( i=0;istudents.size();i+) if (id=studentsi.getid() studentsi.showhomework(); break; case 3: coutcls; for( i=0;istudents.size();i+) 9 if (cls=studentsi.getsclass() coutstudentsi.getname()n; studentsi.showhomework(); break; case 4: coutidindex; for( i=0;istude
16、nts.size();i+) for(i=0;istudents.size();i+) if (id=studentsi.getid() studentsi.setpoint(index,-1); break; case 5: coutid; for( i=0;istudents.size();i+) if (id=studentsi.getid() students.erase(&studentsi); break; case 6: cout 按學生的最終平時成績進行排序n;/6號功能for(i=0;i=1;i-) coutbitai; coutendl; break; case 7
17、: cout輸出平均分數(shù)n;/7號功能for( i=0;istudents.size();i+) tol+=studentsi.gettotal(); couttol/students.size(); coutendl; break; default: return; /switch 10 /while 2. 執(zhí)行結(jié)果 -輸入操作1-7 8 退出 - (1)通過鍵盤輸入某位學生某次作業(yè)的分數(shù),請按1 (2)給定學號,顯示某位學生作業(yè)完成情況,請按2 (3)給定某個班級的班號,顯示該班所有學生的作業(yè)完成情況,請按3 (4)給定某位學生的學號,修改該學生的作業(yè)完成信息,請按4 (5)給定某位學生的
18、學號,刪除該學生的信息,請按5 (6)按學生的最終平時成績進行排序,請按6 (7)輸出平均分數(shù),請按7 (8)退出,請按8 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)1 1 22 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)1 2 33 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)1 3 44 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)2 1 55 輸入操作1-7 8 退出11 1 輸入某位學生學號某次作業(yè)的分數(shù)2 2 66 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)2 3 77 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)3 1 88 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)3 2 99 輸入操作1-7 8 退出1 輸入某位學生學號某次作業(yè)的分數(shù)3 3 100 輸入操作1-7 8 退出6 按學生的最終平時成績進行排序tom 287 mike 198 david 99 輸入操作1-7 8 退出7 輸出平均分數(shù)194.667 輸入操作1-7 8 退出2 給定學號,顯示某位學生作業(yè)完成情況2 55 66 77 unfinished unfinished unfinished 12 unfinish ed unfinished u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CBMMAS 007-2022 T/BFTA 02-2022適老家具通用技術(shù)要求
- T/CBMCA 020-2021地鋪石瓷磚
- T/CAQI 243-2021建筑智慧照明系統(tǒng)技術(shù)要求
- T/CAQI 201-2021小型新風系統(tǒng)用風量分配器
- T/CAQI 127-2020空氣凈化器家居環(huán)境下甲醛凈化性能評價規(guī)范
- ccat考試題及答案
- 共性判斷考試題及答案
- 單招三類考試題及答案
- 道德標準面試題及答案
- 駕考英文考試題庫及答案
- 初三中考宣誓誓詞82060
- 觸電事故桌面推演方案
- 護理風險評估及填寫要求
- 《中興通訊績效管理制度》-人事制度表格【管理資料】
- 微邦生物技術(shù)生活污水處理中的應用
- 鐵路工務技術(shù)手冊
- (完整版)硬件測試規(guī)范
- 2006年工資標準及套改對應表
- DBJ∕T 13-183-2014 基樁豎向承載力自平衡法靜載試驗技術(shù)規(guī)程
- 張雙樓煤礦安全評價報告(出版稿10.14)
- [模板]健康教育處方
評論
0/150
提交評論