學(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),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、天津城市建設(shè)學(xué)院課程設(shè)計(jì)任務(wù)書20112012學(xué)年第1學(xué)期 電子與信息工程 系 專業(yè) 班級(jí)課程設(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)度對(duì)待課程設(shè)計(jì)的每一項(xiàng)任務(wù);(2)按照課程設(shè)計(jì)的題目要求,獨(dú)立地完成各項(xiàng)任務(wù),嚴(yán)禁抄襲;凡發(fā)現(xiàn)抄襲,抄襲者與被抄襲者皆以零分計(jì)入本課程設(shè)計(jì)成績(jī)。凡發(fā)現(xiàn)實(shí)驗(yàn)報(bào)告或源程序雷同,

2、涉及的全部人員皆以零分計(jì)入本課程設(shè)計(jì)成績(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)請(qǐng)?jiān)O(shè)計(jì)一個(gè)學(xué)生作業(yè)完成情況管理程序。假設(shè)某門課程一學(xué)期要留10次作業(yè),每次老師要進(jìn)行批改,給出分?jǐn)?shù)后還要進(jìn)行登記。學(xué)期期末要根據(jù)每次作業(yè)的成績(jī)計(jì)算出最終的平時(shí)成績(jī)(滿分100)。作業(yè)登記信息應(yīng)該包含:學(xué)號(hào)、姓名、10次作業(yè)的完成情況。2)基本要求該程序應(yīng)該具有下列功能:(1) 通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù);(2) 給定學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況;(3) 給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況;(4) 給定某位學(xué)生的學(xué)號(hào),

3、修改該學(xué)生的作業(yè)完成信息;(5) 給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息;(6) 按學(xué)生的最終平時(shí)成績(jī)進(jìn)行排序;(7) 輸平均分?jǐn)?shù)目錄一、需求分析61、 1.程序的功能62、 2.輸入輸出的要求63、 3.測(cè)試數(shù)據(jù)6二、概要設(shè)計(jì)74、 1.程序設(shè)計(jì)組成框圖75、 2.程序流程圖88三、詳細(xì)設(shè)計(jì)86、 1.函數(shù)的入口和出口87、 2.主函數(shù)88、 3.成員函數(shù)9四、調(diào)試分析9五、核心源程序清單和執(zhí)行結(jié)果109、 1.程序清單1010、 2.執(zhí)行結(jié)果14六、參考文獻(xiàn)16一、需求分析1.程序的功能 設(shè)計(jì)一個(gè)學(xué)生作業(yè)完成情況程序,實(shí)現(xiàn)對(duì)學(xué)生作業(yè)完成情況的修改,對(duì)學(xué)生信息的刪除,對(duì)總成績(jī)的排序,輸出平均分

4、數(shù)。2.輸入輸出的要求必須符合輸入輸出函數(shù)的定義。3.測(cè)試數(shù)據(jù)系統(tǒng)保存的學(xué)生信息:stu1("1","David",1); stu2("2","Mike",1);stu3("3","Tom",2);學(xué)號(hào) 第幾次作業(yè) 成績(jī) 1 1 22 1 2 33 1 3 44 2 1 55 2 2 66 2 3 77 3 1 88 3 2 993 3 100二、概要設(shè)計(jì)1.程序設(shè)計(jì)組成框圖在主函數(shù)main()中調(diào)用各函數(shù)定義學(xué)生作業(yè)情況的一維數(shù)組以菜單形式提示輸入用switch語句對(duì)輸入作

5、出反應(yīng)實(shí)現(xiàn)輸出聲明student類各學(xué)生學(xué)號(hào)學(xué)生班級(jí)各學(xué)生姓名在類中調(diào)用setPoint等函數(shù)學(xué)號(hào)、姓名、10次作業(yè)的完成情況2.程序流程圖三、詳細(xì)設(shè)計(jì)1.函數(shù)的入口和出口cout<<" -輸入操作1-7 8退出-nn"cout<<" (1)通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù),請(qǐng)按1n" cout<<" (2)給定學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況,請(qǐng)按2n" cout<<" (3)給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況,請(qǐng)按3n" cout<<&

6、quot; (4)給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的作業(yè)完成信息,請(qǐng)按4n" cout<<" (5)給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息,請(qǐng)按5n" cout<<" (6)按學(xué)生的最終平時(shí)成績(jī)進(jìn)行排序,請(qǐng)按6n" cout<<" (7)輸出平均分?jǐn)?shù),請(qǐng)按7n" cout<<" (8)退出,請(qǐng)按8nn"2.主函數(shù)void main()string name,id;double point;int index,i,cls;int select;vector<

7、Student> 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(stu3);3.成員函數(shù)getTotal():用來實(shí)現(xiàn)十次作業(yè)的情況輸入和。showHomework():用來實(shí)現(xiàn)某個(gè)學(xué)生

8、十次完成作業(yè)的情況。getName():讓后面的類調(diào)用此函數(shù),名字函數(shù)。getId():讓后面的類調(diào)用此函數(shù),學(xué)號(hào)函數(shù),實(shí)現(xiàn)根據(jù)學(xué)號(hào)顯示此學(xué)生的作業(yè)完成情況。getSClass():讓后面的類調(diào)用此函數(shù),班級(jí)函數(shù),實(shí)現(xiàn)根據(jù)班級(jí)顯示學(xué)生作業(yè)完成情況的功能。SetPoint():記錄成績(jī)函數(shù),使后面的類調(diào)用此函數(shù)用來顯示修改后的成績(jī)。getHomework():獲得作業(yè)完成情況函數(shù),使后面的類調(diào)用此函數(shù)實(shí)現(xiàn)修改后的學(xué)生作業(yè)完成情況。void Sort():排序函數(shù),使用快速排序?qū)崿F(xiàn)對(duì)學(xué)生總成績(jī)的排序。四、調(diào)試分析(1)在類中調(diào)用函數(shù)時(shí),出現(xiàn)了一些錯(cuò)誤,問題出現(xiàn)在調(diào)用時(shí)的函數(shù)變量和初始化函數(shù)時(shí)的變量

9、不一致,然后又檢查程序,將變量匹配。(2)運(yùn)用了快速排序的方法,到調(diào)用排序函數(shù)時(shí)出現(xiàn)變量不匹配,檢查程序,并修改。(3)在輸出平均成績(jī)的時(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)了解了容器的功能對(duì)程序加以修改直至沒有錯(cuò)誤。(5)運(yùn)用了map功能,這個(gè)功能適用于對(duì)這次設(shè)計(jì)的查詢并修改的程序,使程序更優(yōu)化。(6)對(duì)數(shù)據(jù)結(jié)構(gòu)有了進(jìn)一步的理解,使用算法后可以使設(shè)計(jì)思路更加清晰,對(duì)所學(xué)過東西的結(jié)合,也學(xué)了新的東西vector,

10、map。五、核心源程序清單和執(zhí)行結(jié)果1.程序清單#include<iostream>#include<string>#include<vector> /屬于STL庫(kù),為了把c和c+分開#include<map> /map是一種關(guān)聯(lián)容器,它定義了一種數(shù)據(jù)結(jié)構(gòu),類似查表功能,每一個(gè)數(shù)據(jù)都有自己的鍵值,通過鍵值可以查找和排序相應(yīng)的數(shù) 據(jù)using namespace std;class Studentstring id; /學(xué)生學(xué)號(hào)string name; /學(xué)生姓名int sClass; /學(xué)生所正在班級(jí)double sum; /所有作業(yè)成績(jī)之和do

11、uble homework10; /十次作業(yè)完成情況及成績(jī)enumunfinished=-1; /枚舉類型,枚舉初始化,將學(xué)生完成情況一一枚舉出來,等待成績(jī)賦值public: Student(string id,string na,int cls):name(na),id(id),sClass(cls) /構(gòu)造函數(shù)賦值for(int i=0;i<10;i+)homeworki=unfinished; /初始化學(xué)生的10次作業(yè)都是未完成的void setPoint(int index,double point) /錄入成績(jī)函數(shù),index是每次作業(yè)計(jì)數(shù),point是作業(yè)分?jǐn)?shù)homework

12、index-1=point; /把每次作業(yè)成績(jī)賦給作業(yè)完成情況double getHomework(int index) /得到作業(yè)完成情況函數(shù)returnhomeworkindex-1;double getTotal() /作業(yè)總成績(jī)函數(shù)sum=0;for(int i=0;i<10;i+) if(homeworki!=unfinished)sum+=homeworki;return sum;void showHomework() /顯示最后學(xué)生作業(yè)完成情況函數(shù)for(int i=0;i<10;i+)if(homeworki=unfinished)cout<<"

13、;unfinishedt"elsecout<<homeworki<<"t"cout<<"n"string getName() /初始化學(xué)生姓名函數(shù)return name;string getId() /初始化學(xué)生學(xué)號(hào)函數(shù)return id;int getSClass() /初始化學(xué)生所在班級(jí)函數(shù)return sClass; ;void sort(int s ,int t,double a,string b) /快速排序,排序平均成績(jī)int i,j;double x;string y;i=s; j=t; x=a

14、i;y=bi;while(i!=j)while (j>i)&&(aj>=x) j-; if (j>i) ai=aj; bi=bj; i+; while (j>i)&&(ai<=x) i+; if (j>i) aj=ai; bj=bi; j-; ai=x;bi=y;i+; j-;if (j>s) sort(s,j,a,b);if (i<t) sort(i,t,a,b);void main()string name,id;double point;int index,i,cls;int select;vector<

15、;Student> students; /定義容器studentsStudent 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<

16、;<" -輸入操作1-7 8退出-nn"cout<<" (1)通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù),請(qǐng)按1n" cout<<" (2)給定學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況,請(qǐng)按2n" cout<<" (3)給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況,請(qǐng)按3n" cout<<" (4)給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的作業(yè)完成信息,請(qǐng)按4n" cout<<" (5)給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息,請(qǐng)按5n"

17、; cout<<" (6)按學(xué)生的最終平時(shí)成績(jī)進(jìn)行排序,請(qǐng)按6n" cout<<" (7)輸出平均分?jǐn)?shù),請(qǐng)按7n" cout<<" (8)退出,請(qǐng)按8nn"while(true)cout<<"輸入操作1-7 8退出n" double tol=0;cin>>select;switch(select)case 1:cout<<"輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)n"/1號(hào)功能cin>>id>>index>

18、;>point;for(i=0;i<students.size();i+)if (id=studentsi.getId()studentsi.setPoint(index,point);break;case 2:cout<<"給定學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況n"/2號(hào)功能cin>>id;for( i=0;i<students.size();i+)if (id=studentsi.getId()studentsi.showHomework();break;case 3:cout<<"給定某個(gè)班級(jí)的班號(hào),顯示該班

19、所有學(xué)生的作業(yè)完成情況n"/3號(hào)功能cin>>cls;for( i=0;i<students.size();i+)if (cls=studentsi.getSClass()cout<<studentsi.getName()<<"n"studentsi.showHomework();break;case 4:cout<<"給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的作業(yè)完成信息為未完成n"/4號(hào)功能cin>>id>>index;for( i=0;i<students.size

20、();i+)for(i=0;i<students.size();i+)if (id=studentsi.getId()studentsi.setPoint(index,-1);break;case 5:cout<<"給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息n"/5號(hào)功能cin>>id;for( i=0;i<students.size();i+)if (id=studentsi.getId()students.erase(&studentsi);break;case 6:cout<<"按學(xué)生的最終平時(shí)成績(jī)進(jìn)行排序n

21、"/6號(hào)功能for(i=0;i<students.size();i+)ai+1=studentsi.getTotal(),bi+1=studentsi.getName();sort(1,students.size(),a,b);for(i=students.size();i>=1;i-)cout<<bi<<"t"<<ai;cout<<endl;break;case 7: cout<<"輸出平均分?jǐn)?shù)n"/7號(hào)功能for( i=0;i<students.size();i+

22、)tol+=studentsi.getTotal(); cout<<tol/students.size();cout<<endl;break;default:return;/switch/while2.執(zhí)行結(jié)果 -輸入操作1-7 8退出- (1)通過鍵盤輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù),請(qǐng)按1 (2)給定學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況,請(qǐng)按2 (3)給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況,請(qǐng)按3 (4)給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的作業(yè)完成信息,請(qǐng)按4 (5)給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息,請(qǐng)按5 (6)按學(xué)生的最終平時(shí)成績(jī)進(jìn)行排序,請(qǐng)按6 (7)輸出平均分?jǐn)?shù),請(qǐng)按7 (8)退出,請(qǐng)按8輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)1122輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)1233輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)1344輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)2155輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)2266輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)2377輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)3188輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)3299輸入操作1-7 8退出1輸入某位學(xué)生學(xué)號(hào)某次作業(yè)的分?jǐn)?shù)3310

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論