C++機房計費管理系統(tǒng)(共33頁)_第1頁
C++機房計費管理系統(tǒng)(共33頁)_第2頁
C++機房計費管理系統(tǒng)(共33頁)_第3頁
C++機房計費管理系統(tǒng)(共33頁)_第4頁
C++機房計費管理系統(tǒng)(共33頁)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄一、需求分析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é)生類的定義:專心-專注-專業(yè) Student(學(xué)生類)int tag; /刪除標(biāo)記

2、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_t gettime(); 獲取當(dāng)前時間char* getnam

3、e(); 獲取姓名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 Stunum);按學(xué)號搜索學(xué)生Student* searchcla(

4、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 comnum; 電腦號Computer();構(gòu)造函數(shù)void s

5、etcomnum(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();析構(gòu)函數(shù)三、詳細設(shè)計1. 學(xué)生類成員函數(shù)的定義:Student

6、: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)記tag=0;void Student:setotime() /

7、獲取下機時間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 comnum;double Student:countht()

8、 /計算總上機時間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é)

9、號:"<<stunum<<" "<<"上機號"<<comnum<<endl;cout<<"開始上機時間:"<<asctime(localtime(&stime)<<" "<<"上機總時間:"<<countht()/3600.00<<"小時"<<" "<<"上機費用:"

10、;<<countm()<<"元"<<endl;void Student:disp2() /顯示cout<<endl<<endl<<" -上機成功-"<<endl;cout<<"姓名:"<<name<<endl<<"班級:"<<cla<<endl<<"學(xué)號:"<<stunum<<endl<<&qu

11、ot;開始上機時間:"<<asctime(localtime(&stime)<<"上機號:"<<comnum<<endl;/cout<<"開始上機時間:"<<stime<<" "<<"上機總時間:"<<countht()<<" "<<"上機費用:"<<countm()<<endl;2. 學(xué)生庫類成員函數(shù)定

12、義:StuData:StuData() /構(gòu)造函數(shù),將student.txt中的內(nèi)容讀到student中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&&am

13、p;studenti.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&

14、;&studentj.gettag()=1)studentj.disp();cout<<endl;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.getta

15、g()=1)studenti.setotime();studenti.disp();cout<<endl;void StuData:upcom(char Name20,int Cla,int Stunum,int Comnum) /上機top+;studenttop.upcom(Name,Cla,Stunum,Comnum);void StuData:downcom(int Stunum) /下機Student *p;p=searchnum(Stunum);p->downcom();int StuData:search() /機房學(xué)生查詢char choice;char na

16、me20;int stunum;int cla;Student *s; while(choice!='0')cout<<endl<<endl<<"-機房學(xué)生查詢-"<<endl<<endl;cout<<"-1 按姓名查詢 -"<<endl;cout<<"-2 按學(xué)號查詢 -"<<endl;cout<<"-3 按班級查詢 -"<<endl;cout<<&quo

17、t;-4 全部學(xué)生信息 -"<<endl;cout<<"-0 返回主菜單 -"<<endl;cin>>choice;switch(choice)case '1':system("cls");cout<<"請輸入學(xué)生姓名:"<<endl;cin>>name;s=searchname(name);if(s=NULL)cout<<"機房沒有此人"<<endl;break;s->dis

18、p();break;case '2':system("cls");cout<<"請輸入學(xué)生學(xué)號:"<<endl;cin>>stunum;s=searchnum(stunum);if(s=NULL)cout<<"機房沒有此人"<<endl;break;s->disp();break;case '3':system("cls");cout<<"請輸入班級號:"<<endl;cin

19、>>cla;s=searchcla(cla);if(s=NULL)cout<<"機房沒有該班級的人!"<<endl;break;dispbycla(cla);break;case '4':system("cls");cout<<endl<<endl<<" -機房所有上機學(xué)生信息如下-"<<endl<<endl;dispall();break;case '0':return 0;default:cout<

20、<"輸入有誤,請重新輸入:"<<endl;cout<<"按任意鍵返回"<<endl;getch();system("cls");StuData:StuData() /析構(gòu)函數(shù),將student中數(shù)據(jù)寫到srudent.txt中ofstream fout("student.txt"); for(int i=0;i<=top;i+) if(studenti.gettag()=1) fout.write(char*)&studenti,sizeof(studenti

21、); 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 Computer:upcom() /上機tag=1;void Computer:downcom() /下機tag=0;int Computer:gettag() /獲取上機標(biāo)記return tag;4. 電腦庫類成員函數(shù)定義:ComData:ComData() /構(gòu)造

22、函數(shù)Computer c;ifstream fin("computer.txt");for(int j=0;j<MAXC;j+)fin.read(char*)&c,sizeof(c);computerj=c;fin.close();for(int i=0;i<MAXC;i+)computeri.setcomnum(i+1);Computer* ComData:searchcom() /搜索空閑電腦for(int i=0;i<MAXC;i+)if(computeri.gettag()=0)return &computeri;return NU

23、LL;Computer* ComData:searchnum(int Comnum) /按電腦號搜索電腦for(int i=0;i<MAXC;i+)if(computeri.getcomnum()=Comnum)return &computeri;return NULL;int ComData:upcom() /上機Computer *p=searchcom();if(p=NULL)cout<<"機房已滿,不能上機"<<endl;return 0;p->upcom();return p->getcomnum();void C

24、omData:disp() /顯示cout<<endl<<endl<<"電腦使用情況如下,'1'為被使用中,'0'為空閑中!"<<endl<<endl;for(int i=0;i<MAXC;i+)/cout<<computeri.getcomnum();printf("%4d",computeri.gettag();if(i+1)%6=0)cout<<endl;ComData:ComData() /析構(gòu)函數(shù)ofstream fout(

25、"computer.txt");for(int i=0;i<MAXC;i+)/if(computeri.gettag()=1)fout.write(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é)合,是

26、我們在本階段學(xué)完理論課程之后對自己該方面的能力的一次很好的檢驗。從開始的算法思路到運行調(diào)試后的美觀的圖形界面以及另人興奮的可用程序,都是一個很好的學(xué)習(xí)和鍛煉的過程。使我們鞏固了原有的理論知識,培養(yǎng)了我們靈活運用和組合集成所學(xué)過知識及技能來分析、解決實際問題的能力。使我們體會到自身知識和能力能在實際中的應(yīng)用和發(fā)揮。這不但激發(fā)了我的創(chuàng)新意識,還開發(fā)了我的創(chuàng)造能力、培養(yǎng)了我的溝通能力。老師對我們進行了細心、耐心的指導(dǎo),鼓勵我們對程序進行合理改進,培養(yǎng)了我們的創(chuàng)新意識和創(chuàng)新能力。原來是我認為可怕的課程設(shè)計,就在種種輔助條件下完成了,心里有說不出的高興。這是一個發(fā)現(xiàn)問題和解決問題的過程,從困惑到明朗,從

27、苦惱道興奮。我一步步地走過來,發(fā)現(xiàn)編程真是一個奇妙刺激的旅程。特別是當(dāng)我把一個自己認為毫無可能的事情完成自后,那種感覺簡直不能用言語來表達。感謝這次課程設(shè)計給我?guī)淼娜麦w驗和豐富經(jīng)驗。我會把它換成我以后奮斗的源泉。五、用戶手冊 本程序的運行環(huán)境為DOS操作系統(tǒng),執(zhí)行文件為:機房管理系統(tǒng).exe; 進入演示程序后,即顯示對話形式的提示操作過程,選擇上機項后,輸入上機學(xué)生的基本信息;選擇下級項后,輸入要下機學(xué)生的學(xué)號即可,系統(tǒng)自動給出上機總時間和費用;選擇學(xué)生信息查詢項后,可按各種信息搜索,選擇相應(yīng)選項即可; 選擇電腦使用情況項后,系統(tǒng)便會顯示所有電腦的被使用情況。六、測試數(shù)據(jù)主界面: 上機操作

28、: 下機操作:查詢界面: 按姓名查詢:按學(xué)號查詢:按班級查詢:電腦唄使用情況:七、附錄/ - “Student.h”-#ifndef Student_H_H#define Student_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)前時間

29、char* getname(); /獲取姓名int getcla(); /獲取班級int gettag(); /獲取上機標(biāo)記int getstunum(); /獲取學(xué)號int 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

30、 money;#endif/ -“StuData.h”-#ifndef StuData_H_H#define StuData_H_H#include"Student.h"const 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 dis

31、pall(); /顯示所有學(xué)生void upcom(char Name20,int Cla,int Stunum,int Comnum); /上機void downcom(int Stunum); /下機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

32、); /設(shè)置電腦號int getcomnum(); /獲取電腦號void upcom(); /上機void downcom(); /下機int gettag(); /獲取上機標(biāo)記private:int tag;int comnum;#endif/-“ComData.h”-#ifndef ComData_H_H#define ComData_H_H#include"Computer.h"const int MAXC=30;class ComDatapublic:ComData(); /構(gòu)造函數(shù)Computer* searchcom(); /搜索空閑電腦Computer* se

33、archnum(int Comnum); /按電腦號搜索電腦int upcom(); /上機void disp(); /顯示ComData(); /析構(gòu)函數(shù)private:Computer computer30;#endif/-“Student.cpp”-#include "Student.h"#include <iostream.h>#include <string.h>#include <time.h>#include <windows.h>Student:Student() /構(gòu)造函數(shù)void Student:upcom

34、(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)記tag=0;void Student:setotime() /獲取下機時間otime=gettime();time_t Stude

35、nt: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 comnum;double Student:countht() /計算總上機時間return difftime(otime,sti

36、me);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<<&quo

37、t; "<<"上機號"<<comnum<<endl;cout<<"開始上機時間:"<<asctime(localtime(&stime)<<" "<<"上機總時間:"<<countht()/3600.00<<"小時"<<" "<<"上機費用:"<<countm()<<"元&q

38、uot;<<endl;void Student:disp2() /顯示cout<<endl<<endl<<" -上機成功-"<<endl;cout<<"姓名:"<<name<<endl<<"班級:"<<cla<<endl<<"學(xué)號:"<<stunum<<endl<<"開始上機時間:"<<asctime(lo

39、caltime(&stime)<<"上機號:"<<comnum<<endl;/cout<<"開始上機時間:"<<stime<<" "<<"上機總時間:"<<countht()<<" "<<"上機費用:"<<countm()<<endl;/-“StuData.cpp”-#include<iostream.h>#inc

40、lude"StuData.h"#include"Student.h"#include<string.h>#include<fstream.h>#include<windows.h>#include<conio.h>StuData: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=

41、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;i<=top;i+)if(studenti.getcla()=Cla&&studenti.gettag()=1)re

42、turn &studenti;return NULL;void StuData:dispbycla(int Cla) /按班級顯示for(int j=0;j<=top;j+)if(studentj.getcla()=Cla&&studentj.gettag()=1)studentj.disp();cout<<endl;Student* StuData:searchname(char *Name) /按姓名搜索for(int i=0;i<=top;i+)if(!strcmp(studenti.getname(),Name)&&stu

43、denti.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();cout<<endl;void StuData:upcom(char Name20,int Cla,int Stunum,int Comnum) /上機top+;studenttop.upcom(Name,Cla,Stunum,Comnum);void Stu

44、Data:downcom(int Stunum) /下機Student *p;p=searchnum(Stunum);p->downcom();int StuData:search() /機房學(xué)生查詢char choice;char name20;int stunum;int cla;Student *s; while(choice!='0')cout<<endl<<endl<<"-機房學(xué)生查詢-"<<endl<<endl;cout<<"-1 按姓名查詢 -"&

45、lt;<endl;cout<<"-2 按學(xué)號查詢 -"<<endl;cout<<"-3 按班級查詢 -"<<endl;cout<<"-4 全部學(xué)生信息 -"<<endl;cout<<"-0 返回主菜單 -"<<endl;cin>>choice;switch(choice)case '1':system("cls");cout<<"請輸入學(xué)生姓名:

46、"<<endl;cin>>name;s=searchname(name);if(s=NULL)cout<<"機房沒有此人"<<endl;break;s->disp();break;case '2':system("cls");cout<<"請輸入學(xué)生學(xué)號:"<<endl;cin>>stunum;s=searchnum(stunum);if(s=NULL)cout<<"機房沒有此人"<

47、<endl;break;s->disp();break;case '3':system("cls");cout<<"請輸入班級號:"<<endl;cin>>cla;s=searchcla(cla);if(s=NULL)cout<<"機房沒有該班級的人!"<<endl;break;dispbycla(cla);break;case '4':system("cls");cout<<endl<<

48、endl<<" -機房所有上機學(xué)生信息如下-"<<endl<<endl;dispall();break;case '0':return 0;default:cout<<"輸入有誤,請重新輸入:"<<endl;cout<<"按任意鍵返回"<<endl;getch();system("cls");StuData:StuData() /析構(gòu)函數(shù)ofstream fout("student.txt");

49、for(int i=0;i<=top;i+) if(studenti.gettag()=1) fout.write(char*)&studenti,sizeof(studenti); fout.close();/-“Computer.cpp”-#include"Computer.h"Computer:Computer() /構(gòu)造函數(shù)tag=0;void Computer:setcomnum(int Comnum) /設(shè)置電腦號comnum=Comnum;int Computer:getcomnum() /獲取電腦號return comnum;void Comp

50、uter:upcom() /上機tag=1;void Computer:downcom() /下機tag=0;int Computer:gettag() /獲取上機標(biāo)記return tag;/-“ComData.cpp”-#include"ComData.h"#include"Computer.h"#include<fstream.h>#include<iostream.h>#include<stdio.h>ComData:ComData() /構(gòu)造函數(shù)Computer c;/*for(int i=0;i<MAX

51、C;i+)computeri.setcomnum(i+1);*/ifstream fin("computer.txt");for(int j=0;j<MAXC;j+)fin.read(char*)&c,sizeof(c);computerj=c;fin.close();for(int i=0;i<MAXC;i+)computeri.setcomnum(i+1);Computer* ComData:searchcom() /搜索空閑電腦for(int i=0;i<MAXC;i+)if(computeri.gettag()=0)return &

52、computeri;return NULL;Computer* ComData:searchnum(int Comnum) /按電腦號搜索電腦for(int i=0;i<MAXC;i+)if(computeri.getcomnum()=Comnum)return &computeri;return NULL;int ComData:upcom() /上機Computer *p=searchcom();if(p=NULL)cout<<"機房已滿,不能上機"<<endl;return 0;p->upcom();return p->

53、;getcomnum();void ComData:disp() /顯示cout<<endl<<endl<<"電腦使用情況如下,'1'為被使用中,'0'為空閑中!"<<endl<<endl;for(int i=0;i<MAXC;i+)/cout<<computeri.getcomnum();printf("%4d",computeri.gettag();if(i+1)%6=0)cout<<endl;ComData:ComData() /析構(gòu)函數(shù)ofstream fout("computer.txt");for(in

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論