版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄一、需求分析2二、概要設(shè)計2三、詳細(xì)設(shè)計4四、調(diào)試分析17五、用戶手冊17六、測試數(shù)據(jù)18七、附錄20一、需求分析1. 輸入功能:輸入30名學(xué)生的學(xué)號、班級、姓名、上機起始時間。2. 計算功能:計算每個下機學(xué)生的上機費用,每小時1元。(上機費用=上機時間* 1.0/h ,不足一小時按一小時計算)3. 查詢功能:按條件(班級、學(xué)號、姓名)顯示學(xué)生的上機時間。4. 機器使用情況的顯示(顯示方式不限但要一目了然)5. 要求:1) 源文件采用多文件的工程結(jié)構(gòu);2) 數(shù)據(jù)存儲采用文件形式;3) 采用面向?qū)ο蠓椒ㄔO(shè)計;4) 功能完善,適當(dāng)?shù)淖⑨專?) 關(guān)于文件的內(nèi)容需要自學(xué);二、概要設(shè)計1. 學(xué)生類的
2、定義:33 Student(學(xué)生類)int tag; /刪除標(biāo)記char name20; 學(xué)生姓名int cla; 班級int stunum; 學(xué)號int comnum; 上機號time_t stime; 開始上機時間time_t otime; 下機時間double htime; 上機總時間int money; 上機費用Student(); 構(gòu)造函數(shù)Void upcom(char Name20,int Cla,int Stunum,int Comnum); 上機操作int downcom(); 下機操作void delstu(); 刪除操作void setotime(); 設(shè)置下機時間time
3、_t gettime(); 獲取當(dāng)前時間char* getname(); 獲取姓名int getcla(); 獲取班級號int gettag(); 獲取標(biāo)記int getstunum(); 獲取學(xué)號int getcomnum(); 獲取上機號double countht(); 計算上機時間int countm(); 計算上機費用void disp(); 顯示void disp2(); 顯示22. 學(xué)生庫類定義: StuData(學(xué)生庫類)int top;學(xué)生記錄指針Student studentMAXS; 學(xué)生記錄StuData(); 構(gòu)造函數(shù)Student* searchnum(int St
4、unum);按學(xué)號搜索學(xué)生Student* searchcla(int Cla);按班級搜索學(xué)生void dispbycla(int Cla);按班級顯示學(xué)生Student*searchname(char *Name);按姓名顯示學(xué)生void dispall();顯示所有學(xué)生信息void upcom(char Name20,int Cla,int Stunum,int Comnum);上機操作void downcom(int Stunum);下機操作int search(); 搜索操作StuData(); 析構(gòu)函數(shù)3. 電腦類的定義: Computer(電腦類)int tag;刪除標(biāo)記int
5、comnum; 電腦號Computer();構(gòu)造函數(shù)void setcomnum(int Comnum);設(shè)置電腦號int getcomnum();獲取電腦號void upcom();上機操作void downcom();下機操作int gettag();獲取標(biāo)記4. 電腦庫類的定義: ComData(電腦庫類)Computer computer30;記錄電腦ComData();構(gòu)造函數(shù)Computer* searchcom();搜索空閑電腦Computer* searchnum(int Comnum);按電腦號搜索int upcom();上機操作void disp();顯示ComData()
6、;析構(gòu)函數(shù)三、詳細(xì)設(shè)計1. 學(xué)生類成員函數(shù)的定義:Student:Student() /構(gòu)造函數(shù)void Student:upcom(char Name20,int Cla,int Stunum,int Comnum) /上機strcpy(name,Name);tag=1;cla=Cla;stunum=Stunum;comnum=Comnum;stime=gettime();int Student:downcom() /下機/otime=gettime();setotime();delstu();disp();return comnum;void Student:delstu() /更改上機標(biāo)
7、記tag=0;void Student:setotime() /獲取下機時間otime=gettime();time_t Student:gettime() /獲取當(dāng)前時間return time(NULL);char* Student:getname() /獲取姓名return name;int Student:getcla() /獲取班級return cla;int Student:gettag() /獲取上機標(biāo)記return tag;int Student:getstunum() /獲取學(xué)號return stunum;int Student:getcomnum() /獲取上機號return
8、 comnum;double Student:countht() /計算總上機時間return difftime(otime,stime);int Student:countm() /計算上機費用if(int)countht()%3600=0)return (int)countht()/3600;return (int)countht()/3600)+1;void Student:disp() /顯示cout姓名:name 班級:cla 學(xué)號:stunum 上機號comnumendl;cout開始上機時間:asctime(localtime(&stime) 上機總時間:countht()/36
9、00.00小時 上機費用:countm()元endl;void Student:disp2() /顯示coutendlendl -上機成功-endl;cout姓名:nameendl班級:claendl學(xué)號:stunumendl開始上機時間:asctime(localtime(&stime)上機號:comnumendl;/cout開始上機時間:stime 上機總時間:countht() 上機費用:countm()endl;2. 學(xué)生庫類成員函數(shù)定義:StuData:StuData() /構(gòu)造函數(shù),將student.txt中的內(nèi)容讀到student中Student s;top=-1;ifstrea
10、m fin(student.txt);while(1)fin.read(char *)&s,sizeof(s);if(!fin)break;top+;studenttop=s;fin.close();Student* StuData:searchnum(int Stunum) /按學(xué)號搜索for(int i=0;i=top;i+)if(studenti.getstunum()=Stunum&studenti.gettag()=1)return &studenti;return NULL;Student* StuData:searchcla(int Cla) /按班級搜索for(int i=0;
11、i=top;i+)if(studenti.getcla()=Cla&studenti.gettag()=1)return &studenti;return NULL;void StuData:dispbycla(int Cla) /按班級顯示for(int j=0;j=top;j+)if(studentj.getcla()=Cla&studentj.gettag()=1)studentj.disp();coutendl;Student* StuData:searchname(char *Name) /按姓名搜索for(int i=0;i=top;i+)if(!strcmp(studenti.g
12、etname(),Name)&studenti.gettag()=1)return &studenti;return NULL;void StuData:dispall() /顯示所有學(xué)生for(int i=0;i=top;i+)if(studenti.gettag()=1)studenti.setotime();studenti.disp();coutdowncom();int StuData:search() /機房學(xué)生查詢char choice;char name20;int stunum;int cla;Student *s; while(choice!=0)coutendlendl-
13、機房學(xué)生查詢-endlendl;cout-1 按姓名查詢 -endl;cout-2 按學(xué)號查詢 -endl;cout-3 按班級查詢 -endl;cout-4 全部學(xué)生信息 -endl;cout-0 返回主菜單 -choice;switch(choice)case 1:system(cls);cout請輸入學(xué)生姓名:name;s=searchname(name);if(s=NULL)cout機房沒有此人disp();break;case 2:system(cls);cout請輸入學(xué)生學(xué)號:stunum;s=searchnum(stunum);if(s=NULL)cout機房沒有此人disp()
14、;break;case 3:system(cls);cout請輸入班級號:cla;s=searchcla(cla);if(s=NULL)cout機房沒有該班級的人!endl;break;dispbycla(cla);break;case 4:system(cls);coutendlendl -機房所有上機學(xué)生信息如下-endlendl;dispall();break;case 0:return 0;default:cout輸入有誤,請重新輸入:endl;cout按任意鍵返回endl;getch();system(cls);StuData:StuData() /析構(gòu)函數(shù),將student中數(shù)據(jù)寫
15、到srudent.txt中ofstream fout(student.txt); for(int i=0;i=top;i+) if(studenti.gettag()=1) fout.write(char*)&studenti,sizeof(studenti); fout.close();3. 電腦類成員函數(shù)定義:Computer:Computer() /構(gòu)造函數(shù)tag=0;void Computer:setcomnum(int Comnum) /設(shè)置電腦號comnum=Comnum;int Computer:getcomnum() /獲取電腦號return comnum;void Compu
16、ter:upcom() /上機tag=1;void Computer:downcom() /下機tag=0;int Computer:gettag() /獲取上機標(biāo)記return tag;4. 電腦庫類成員函數(shù)定義:ComData:ComData() /構(gòu)造函數(shù)Computer c;ifstream fin(computer.txt);for(int j=0;jMAXC;j+)fin.read(char*)&c,sizeof(c);computerj=c;fin.close();for(int i=0;iMAXC;i+)computeri.setcomnum(i+1);Computer* Co
17、mData:searchcom() /搜索空閑電腦for(int i=0;iMAXC;i+)if(computeri.gettag()=0)return &computeri;return NULL;Computer* ComData:searchnum(int Comnum) /按電腦號搜索電腦for(int i=0;iMAXC;i+)if(computeri.getcomnum()=Comnum)return &computeri;return NULL;int ComData:upcom() /上機Computer *p=searchcom();if(p=NULL)cout機房已滿,不能
18、上機upcom();return p-getcomnum();void ComData:disp() /顯示coutendlendl電腦使用情況如下,1為被使用中,0為空閑中!endlendl;for(int i=0;iMAXC;i+)/coutcomputeri.getcomnum();printf(%4d,computeri.gettag();if(i+1)%6=0)coutendl;ComData:ComData() /析構(gòu)函數(shù)ofstream fout(computer.txt);for(int i=0;iMAXC;i+)/if(computeri.gettag()=1)fout.wr
19、ite(char*)&computeri,sizeof(computeri);fout.close();四、調(diào)試分析1. 調(diào)試前,界面有些凌亂,選擇某項功能后,之前的菜單仍然在界面上;調(diào)試時,適當(dāng)加入了清屏函數(shù),使界面更加簡潔清晰。2. 調(diào)試前,當(dāng)輸入的內(nèi)容不合法時沒有任何提示,導(dǎo)致某些功能出現(xiàn)故障;調(diào)試時對輸入內(nèi)容的合法性做出的判斷,并給出了相映的提示信息。3. 體會:C+語言課程設(shè)計和現(xiàn)代計算機技術(shù)的實際應(yīng)用相結(jié)合,是我們在本階段學(xué)完理論課程之后對自己該方面的能力的一次很好的檢驗。從開始的算法思路到運行調(diào)試后的美觀的圖形界面以及另人興奮的可用程序,都是一個很好的學(xué)習(xí)和鍛煉的過程。使我們鞏固
20、了原有的理論知識,培養(yǎng)了我們靈活運用和組合集成所學(xué)過知識及技能來分析、解決實際問題的能力。使我們體會到自身知識和能力能在實際中的應(yīng)用和發(fā)揮。這不但激發(fā)了我的創(chuàng)新意識,還開發(fā)了我的創(chuàng)造能力、培養(yǎng)了我的溝通能力。老師對我們進(jìn)行了細(xì)心、耐心的指導(dǎo),鼓勵我們對程序進(jìn)行合理改進(jìn),培養(yǎng)了我們的創(chuàng)新意識和創(chuàng)新能力。原來是我認(rèn)為可怕的課程設(shè)計,就在種種輔助條件下完成了,心里有說不出的高興。這是一個發(fā)現(xiàn)問題和解決問題的過程,從困惑到明朗,從苦惱道興奮。我一步步地走過來,發(fā)現(xiàn)編程真是一個奇妙刺激的旅程。特別是當(dāng)我把一個自己認(rèn)為毫無可能的事情完成自后,那種感覺簡直不能用言語來表達(dá)。感謝這次課程設(shè)計給我?guī)淼娜麦w驗
21、和豐富經(jīng)驗。我會把它換成我以后奮斗的源泉。五、用戶手冊 本程序的運行環(huán)境為DOS操作系統(tǒng),執(zhí)行文件為:機房管理系統(tǒng).exe; 進(jìn)入演示程序后,即顯示對話形式的提示操作過程,選擇上機項后,輸入上機學(xué)生的基本信息;選擇下級項后,輸入要下機學(xué)生的學(xué)號即可,系統(tǒng)自動給出上機總時間和費用;選擇學(xué)生信息查詢項后,可按各種信息搜索,選擇相應(yīng)選項即可; 選擇電腦使用情況項后,系統(tǒng)便會顯示所有電腦的被使用情況。六、測試數(shù)據(jù)主界面: 上機操作: 下機操作:查詢界面: 按姓名查詢:按學(xué)號查詢:按班級查詢:電腦唄使用情況:七、附錄/ - “Student.h”-#ifndef Student_H_H#define S
22、tudent_H_Htypedef long time_t;class Studentpublic:Student(); /構(gòu)造函數(shù)void upcom(char Name20,int Cla,int Stunum,int Comnum); /上機int downcom(); /下機void delstu(); /更改上機標(biāo)記void setotime(); /獲取下機時間time_t gettime(); /獲取當(dāng)前時間char* getname(); /獲取姓名int getcla(); /獲取班級int gettag(); /獲取上機標(biāo)記int getstunum(); /獲取學(xué)號int
23、 getcomnum(); /獲取上機號double countht(); /計算總上機時間int countm(); /計算上機費用void disp(); /顯示void disp2(); /顯示private:int tag;char name20;int cla;int stunum;int comnum;time_t stime;time_t otime;double htime;int inthtime;int money;#endif/ -“StuData.h”-#ifndef StuData_H_H#define StuData_H_H#includeStudent.hcons
24、t int MAXS=30;class StuDatapublic:StuData(); /構(gòu)造函數(shù)Student* searchnum(int Stunum); /按學(xué)號搜索Student* searchcla(int Cla); /按班級搜索void dispbycla(int Cla); /按班級顯示Student* searchname(char *Name); /按姓名搜索void dispall(); /顯示所有學(xué)生void upcom(char Name20,int Cla,int Stunum,int Comnum); /上機void downcom(int Stunum);
25、/下機int search(); /機房學(xué)生查詢StuData(); /析構(gòu)函數(shù)private:int top;Student studentMAXS;#endif/ -“Computer.h”-#ifndef Computer_H_H#define Computer_H_Hclass Computerpublic:Computer(); /構(gòu)造函數(shù)void setcomnum(int Comnum); /設(shè)置電腦號int getcomnum(); /獲取電腦號void upcom(); /上機void downcom(); /下機int gettag(); /獲取上機標(biāo)記private:in
26、t tag;int comnum;#endif/-“ComData.h”-#ifndef ComData_H_H#define ComData_H_H#includeComputer.hconst int MAXC=30;class ComDatapublic:ComData(); /構(gòu)造函數(shù)Computer* searchcom(); /搜索空閑電腦Computer* searchnum(int Comnum); /按電腦號搜索電腦int upcom(); /上機void disp(); /顯示ComData(); /析構(gòu)函數(shù)private:Computer computer30;#endi
27、f/-“Student.cpp”-#include Student.h#include #include #include #include Student:Student() /構(gòu)造函數(shù)void Student:upcom(char Name20,int Cla,int Stunum,int Comnum) /上機strcpy(name,Name);tag=1;cla=Cla;stunum=Stunum;comnum=Comnum;stime=gettime();int Student:downcom() /下機/otime=gettime();setotime();delstu();dis
28、p();return comnum;void Student:delstu() /更改上機標(biāo)記tag=0;void Student:setotime() /獲取下機時間otime=gettime();time_t Student:gettime() /獲取當(dāng)前時間return time(NULL);char* Student:getname() /獲取姓名return name;int Student:getcla() /獲取班級return cla;int Student:gettag() /獲取上機標(biāo)記return tag;int Student:getstunum() /獲取學(xué)號retu
29、rn stunum;int Student:getcomnum() /獲取上機號return comnum;double Student:countht() /計算總上機時間return difftime(otime,stime);int Student:countm() /計算上機費用if(int)countht()%3600=0)return (int)countht()/3600;return (int)countht()/3600)+1;void Student:disp() /顯示cout姓名:name 班級:cla 學(xué)號:stunum 上機號comnumendl;cout開始上機時
30、間:asctime(localtime(&stime) 上機總時間:countht()/3600.00小時 上機費用:countm()元endl;void Student:disp2() /顯示coutendlendl -上機成功-endl;cout姓名:nameendl班級:claendl學(xué)號:stunumendl開始上機時間:asctime(localtime(&stime)上機號:comnumendl;/cout開始上機時間:stime 上機總時間:countht() 上機費用:countm()endl;/-“StuData.cpp”-#include#includeStuData.h#
31、includeStudent.h#include#include#include#includeStuData:StuData() /構(gòu)造函數(shù)Student s;top=-1;ifstream fin(student.txt);while(1)fin.read(char *)&s,sizeof(s);if(!fin)break;top+;studenttop=s;fin.close();Student* StuData:searchnum(int Stunum) /按學(xué)號搜索for(int i=0;i=top;i+)if(studenti.getstunum()=Stunum&studenti
32、.gettag()=1)return &studenti;return NULL;Student* StuData:searchcla(int Cla) /按班級搜索for(int i=0;i=top;i+)if(studenti.getcla()=Cla&studenti.gettag()=1)return &studenti;return NULL;void StuData:dispbycla(int Cla) /按班級顯示for(int j=0;j=top;j+)if(studentj.getcla()=Cla&studentj.gettag()=1)studentj.disp();co
33、utendl;Student* StuData:searchname(char *Name) /按姓名搜索for(int i=0;i=top;i+)if(!strcmp(studenti.getname(),Name)&studenti.gettag()=1)return &studenti;return NULL;void StuData:dispall() /顯示所有學(xué)生for(int i=0;i=top;i+)if(studenti.gettag()=1)studenti.setotime();studenti.disp();coutdowncom();int StuData:searc
34、h() /機房學(xué)生查詢char choice;char name20;int stunum;int cla;Student *s; while(choice!=0)coutendlendl-機房學(xué)生查詢-endlendl;cout-1 按姓名查詢 -endl;cout-2 按學(xué)號查詢 -endl;cout-3 按班級查詢 -endl;cout-4 全部學(xué)生信息 -endl;cout-0 返回主菜單 -choice;switch(choice)case 1:system(cls);cout請輸入學(xué)生姓名:name;s=searchname(name);if(s=NULL)cout機房沒有此人di
35、sp();break;case 2:system(cls);cout請輸入學(xué)生學(xué)號:stunum;s=searchnum(stunum);if(s=NULL)cout機房沒有此人disp();break;case 3:system(cls);cout請輸入班級號:cla;s=searchcla(cla);if(s=NULL)cout機房沒有該班級的人!endl;break;dispbycla(cla);break;case 4:system(cls);coutendlendl -機房所有上機學(xué)生信息如下-endlendl;dispall();break;case 0:return 0;defa
36、ult:cout輸入有誤,請重新輸入:endl;cout按任意鍵返回endl;getch();system(cls);StuData:StuData() /析構(gòu)函數(shù)ofstream fout(student.txt); for(int i=0;i=top;i+) if(studenti.gettag()=1) fout.write(char*)&studenti,sizeof(studenti); fout.close();/-“Computer.cpp”-#includeComputer.hComputer:Computer() /構(gòu)造函數(shù)tag=0;void Computer:setcom
37、num(int Comnum) /設(shè)置電腦號comnum=Comnum;int Computer:getcomnum() /獲取電腦號return comnum;void Computer:upcom() /上機tag=1;void Computer:downcom() /下機tag=0;int Computer:gettag() /獲取上機標(biāo)記return tag;/-“ComData.cpp”-#includeComData.h#includeComputer.h#include#include#includeComData:ComData() /構(gòu)造函數(shù)Computer c;/*for(int i=0;iMAXC;i+)computeri.setcomnum(i+1);*/ifstream fin(computer.txt);for(int j=0;jMAXC;j+)fin.read(char*)&c,sizeof(c);computerj=c;fin.close();for(int i=0;iMAXC;i+)computeri.setcomnum(i+1);Computer* ComData:searchcom() /搜索空閑電腦for(int i=0;iMAXC;i+)if(computeri.get
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024實習(xí)合同書范本參考
- 2024裝修工程協(xié)議合同
- 個人借款合同法律解讀
- 2024個人門面房屋租賃合同書常用版
- 經(jīng)典代理合同參考
- 企業(yè)租車協(xié)議書樣式
- 2024年度環(huán)保工程設(shè)計與施工合同
- 2024房屋抵款合同書
- 2024解除勞動合同的賠償
- 成都市古建筑工程施工合同
- 中國書法介紹英文版calligraphyintroduction
- 銷售技巧之導(dǎo)購六式
- GB/T 41715-2022定向刨花板
- YC/T 384.3-2018煙草企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范第3部分:考核評價準(zhǔn)則和方法
- 夏商周考古課件 第5章 西周文化(3節(jié))
- GB/T 7324-2010通用鋰基潤滑脂
- GB/T 4459.1-1995機械制圖螺紋及螺紋緊固件表示法
- 危險化學(xué)品安全告知牌硝酸、鹽酸、硫酸、氫氧化鈉
- 上海英文介紹課件
- 上交所個股期權(quán)基礎(chǔ)知識課件
- 最新山羊、綿羊人工授精技術(shù)及新技術(shù)介紹(含人工授精視頻)課件
評論
0/150
提交評論