學(xué)生作業(yè)完成情況管理程序_第1頁
學(xué)生作業(yè)完成情況管理程序_第2頁
學(xué)生作業(yè)完成情況管理程序_第3頁
學(xué)生作業(yè)完成情況管理程序_第4頁
學(xué)生作業(yè)完成情況管理程序_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、天津城市建設(shè)學(xué)院課程設(shè)計(jì)任務(wù)書20112012 學(xué)年第 1 學(xué)期電子與信息工程系專業(yè)班級課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)題目:學(xué)生作業(yè)完成情況管理程序完成期限:自2012 年 1 月 2 日至2012 年 1 月6 日共1 周設(shè)計(jì)依據(jù)、要求及主要內(nèi)容(可另加附頁):一、設(shè)計(jì)目的熟悉各種數(shù)據(jù)結(jié)構(gòu)和運(yùn)算,會(huì)使用數(shù)據(jù)結(jié)構(gòu)的基本操作解決一些實(shí)際問題。二、設(shè)計(jì)要求(1)重視課程設(shè)計(jì)環(huán)節(jié),用嚴(yán)謹(jǐn)、 科學(xué)和踏實(shí)的工作態(tài)度對待課程設(shè)計(jì)的每一項(xiàng)任務(wù);(2)按照課程設(shè)計(jì)的題目要求,獨(dú)立地完成各項(xiàng)任務(wù),嚴(yán)禁抄襲;凡發(fā)現(xiàn)抄襲,抄襲者與被抄襲者皆以零分計(jì)入本課程設(shè)計(jì)成績。凡發(fā)現(xiàn)實(shí)驗(yàn)報(bào)告或源程序雷同,涉及的全部人員皆以

2、零分計(jì)入本課程設(shè)計(jì)成績;(3)學(xué)生在接受設(shè)計(jì)任務(wù)后,首先要按設(shè)計(jì)任務(wù)書的要求編寫設(shè)計(jì)進(jìn)程表;(4)認(rèn)真編寫課程設(shè)計(jì)報(bào)告。三、設(shè)計(jì)內(nèi)容1)請?jiān)O(shè)計(jì)一個(gè)學(xué)生作業(yè)完成情況管理程序。假設(shè)某門課程一學(xué)期要留10 次作業(yè), 每次老師要進(jìn)行批改,給出分?jǐn)?shù)后還要進(jìn)行登記。學(xué)期期末要根據(jù)每次作業(yè)的成績計(jì)算出最終的平時(shí)成績(滿分100) 。作業(yè)登記信息應(yīng)該包含:學(xué)號、姓名、10 次作業(yè)的完成情況。2)基本要求該程序應(yīng)該具有下列功能:(1) 通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù);(2) 給定學(xué)號,顯示某位學(xué)生作業(yè)完成情況;(3) 給定某個(gè)班級的班號,顯示該班所有學(xué)生的作業(yè)完成情況;(4) 給定某位學(xué)生的學(xué)號,修改該學(xué)生

3、的作業(yè)完成信息;(5) 給定某位學(xué)生的學(xué)號,刪除該學(xué)生的信息;(6) 按學(xué)生的最終平時(shí)成績進(jìn)行排序;(7) 輸平均分?jǐn)?shù)1 目錄一、需求分析 . 21、1. 程序的功能 . 22、2. 輸入輸出的要求 . 23、3. 測試數(shù)據(jù) . 2二、概要設(shè)計(jì) . 34、1. 程序設(shè)計(jì)組成框圖. 35、2. 程序流程圖 . 4 . 4三、詳細(xì)設(shè)計(jì) . 46、1. 函數(shù)的入口和出口. 47、2. 主函數(shù) . 48、3. 成員函數(shù) . 5四、調(diào)試分析 . 5五、核心源程序清單和執(zhí)行結(jié)果 . 69、1. 程序清單 . 610、. 2. 執(zhí)行結(jié)果 . 10 六、參考文獻(xiàn) . 12 2 一、需求分析1. 程序的功能設(shè)計(jì)

4、一個(gè)學(xué)生作業(yè)完成情況程序,實(shí)現(xiàn)對學(xué)生作業(yè)完成情況的修改,對學(xué)生信息的刪除,對總成績的排序,輸出平均分?jǐn)?shù)。2. 輸入輸出的要求必須符合輸入輸出函數(shù)的定義。3. 測試數(shù)據(jù)系統(tǒng)保存的學(xué)生信息:stu1(1,david,1); stu2(2,mike,1); stu3(3,tom,2); 學(xué)號第幾次作業(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 二、概要設(shè)計(jì)1. 程序設(shè)計(jì)組成框圖在主函數(shù)main()中調(diào)用各函數(shù)定義學(xué)生作業(yè)情況的一維數(shù)組以 菜 單 形式 提 示 輸入用 switch語句對輸入作出反應(yīng)實(shí)現(xiàn)輸出聲

5、明student類各學(xué)生學(xué)號學(xué)生班級各學(xué)生姓名在類中調(diào)用setpoint 等函數(shù)學(xué)號、姓名、 10 次作業(yè)的完成情況4 2. 程序流程圖三、詳細(xì)設(shè)計(jì)1. 函數(shù)的入口和出口cout -輸入操作1-7 8退出 -nn; cout (1)通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù),請按1n; cout (2)給定學(xué)號,顯示某位學(xué)生作業(yè)完成情況,請按2n; cout (3)給定某個(gè)班級的班號,顯示該班所有學(xué)生的作業(yè)完成情況,請按3n; cout (4)給定某位學(xué)生的學(xué)號,修改該學(xué)生的作業(yè)完成信息,請按4n; cout (5)給定某位學(xué)生的學(xué)號,刪除該學(xué)生的信息,請按5n; cout (6)按學(xué)生的最終平時(shí)成績

6、進(jìn)行排序,請按6n; cout (7)輸出平均分?jǐn)?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():用來實(shí)現(xiàn)十次作業(yè)的情況輸入和。showhomework ():用來實(shí)現(xiàn)某個(gè)學(xué)生十次完成作業(yè)的情況。getname():讓后面的類調(diào)用此函數(shù),名字函數(shù)。getid ():讓后面的類調(diào)用此函數(shù),學(xué)號函數(shù),實(shí)現(xiàn)根據(jù)學(xué)號顯示此學(xué)生的作業(yè)完成情況。getsclass () :讓后面的類調(diào)用此函數(shù),班級函數(shù),實(shí)現(xiàn)根據(jù)班級顯示學(xué)生作業(yè)完成情況的功能。setpoint () :記錄成績函數(shù),使后面的類調(diào)用此函數(shù)用來顯示修改后的成績。gethomework() :獲得作業(yè)完成情況函數(shù),使后面的類調(diào)用此函數(shù)實(shí)現(xiàn)修改后的學(xué)生作業(yè)完成情況。void sort() : 排序函

8、數(shù),使用快速排序?qū)崿F(xiàn)對學(xué)生總成績的排序。四、調(diào)試分析(1)在類中調(diào)用函數(shù)時(shí),出現(xiàn)了一些錯(cuò)誤,問題出現(xiàn)在調(diào)用時(shí)的函數(shù)變量和初始化函數(shù)時(shí)的變量不一致,然后又檢查程序,將變量匹配。(2)運(yùn)用了快速排序的方法,到調(diào)用排序函數(shù)時(shí)出現(xiàn)變量不匹配,檢查程序,并修改。(3)在輸出平均成績的時(shí)候,循環(huán)出現(xiàn)錯(cuò)誤,沒有語法錯(cuò)誤,但是輸出結(jié)果與正確結(jié)果不一致,后來發(fā)現(xiàn)是最后輸出在循環(huán)內(nèi),所以又進(jìn)行了修改。(4)運(yùn)用了容器vector ,在用之前并不熟悉這個(gè)功能,也出現(xiàn)了不少錯(cuò)誤,比如它的定義,裝載,輸出,最后通過上網(wǎng)了解了容器的功能對程序加以修改直至沒有錯(cuò)誤。(5)運(yùn)用了map功能,這個(gè)功能適用于對這次設(shè)計(jì)的查詢并修

9、改的程序,使程序更優(yōu)化。(6)對數(shù)據(jù)結(jié)構(gòu)有了進(jìn)一步的理解,使用算法后可以使設(shè)計(jì)思路更加清晰,對所學(xué)過東西的結(jié)合,也學(xué)了新的東西vector ,map 。6 五、核心源程序清單和執(zhí)行結(jié)果1. 程序清單#include #include #include /屬于 stl庫,為了把c 和 c+分開#include /map是一種關(guān)聯(lián)容器,它定義了一種數(shù)據(jù)結(jié)構(gòu),類似查表功能,每一個(gè)數(shù)據(jù)都有自己的鍵值,通過鍵值可以查找和排序相應(yīng)的數(shù)據(jù)using namespace std; class student string id; /學(xué)生學(xué)號string name; /學(xué)生姓名int sclass; /學(xué)生所正

10、在班級double sum; /所有作業(yè)成績之和double homework10; /十次作業(yè)完成情況及成績enumunfinished=-1; /枚舉類型,枚舉初始化,將學(xué)生完成情況一一枚舉出來,等待成績賦值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; /初始化學(xué)生的10 次作業(yè)都是未完成的 void setpoint(int index,double point) /錄入成績函數(shù),index

11、是每次作業(yè)計(jì)數(shù),point是作業(yè)分?jǐn)?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() /顯示最后學(xué)生作業(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); /把三個(gè)學(xué)生信息存到容器中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)通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù),請按1n; cout (2)給定學(xué)號,顯示某位學(xué)生作業(yè)完成情況,請按2n; cout (3)給定某個(gè)班級的

14、班號,顯示該班所有學(xué)生的作業(yè)完成情況,請按3n; cout (4)給定某位學(xué)生的學(xué)號,修改該學(xué)生的作業(yè)完成信息,請按4n; cout (5)給定某位學(xué)生的學(xué)號,刪除該學(xué)生的信息,請按5n; cout (6)按學(xué)生的最終平時(shí)成績進(jìn)行排序,請按6n; cout (7)輸出平均分?jǐn)?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 按學(xué)生的最終平時(shí)成績進(jìn)行排序n;/6號功能for(i=0;i=1;i-) coutbitai; coutendl; break; case 7

17、: cout輸出平均分?jǐn)?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)通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù),請按1 (2)給定學(xué)號,顯示某位學(xué)生作業(yè)完成情況,請按2 (3)給定某個(gè)班級的班號,顯示該班所有學(xué)生的作業(yè)完成情況,請按3 (4)給定某位學(xué)生的學(xué)號,修改該學(xué)生的作業(yè)完成信息,請按4 (5)給定某位學(xué)生的

18、學(xué)號,刪除該學(xué)生的信息,請按5 (6)按學(xué)生的最終平時(shí)成績進(jìn)行排序,請按6 (7)輸出平均分?jǐn)?shù),請按7 (8)退出,請按8 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)1 1 22 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)1 2 33 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)1 3 44 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)2 1 55 輸入操作1-7 8 退出11 1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)2 2 66 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)2 3 77 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)3 1 88 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)3 2 99 輸入操作1-7 8 退出1 輸入某位學(xué)生學(xué)號某次作業(yè)的分?jǐn)?shù)3 3 100 輸入操作1-7 8 退出6 按學(xué)生的最終平時(shí)成績進(jìn)行排序tom 287 mike 198 david 99 輸入操作1-7 8 退出7 輸出平均分?jǐn)?shù)194.667 輸入操作1-7 8 退出2 給定學(xué)號,顯示某位學(xué)生作業(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)容里面會(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

提交評論