C++机房计费管理系统_第1页
C++机房计费管理系统_第2页
C++机房计费管理系统_第3页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、需求分析2二、概要设计2三、详细设计4四、调试分析17五、用户手册17六、测试数据18七、附录20一、需求分析输入功能:输入30名学生的学号、班级、姓名、上机起始时间。1. 计算功能:计算每个下机学生的上机费用,每小时1元。(上机费用=上机时间*1.0/h,不足一小时按一小时计算)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。2. 机器使用情况的显示(显示方式不限但要一目了然)要求:1)源文件采用多文件的工程结构;2)数据存储采用文件形式;3)米用面向对象方法设计;4)功能完善,适当的注释;5)关丁文件的内容需要自学;二、概要设计学生类的定义:Student(学生类)intt

2、ag;/删除标记charname20;学生姓名intcla;班级intstunum;学号intcomnum;上机号time_tstime;开始上机时间time_totime;下机时间doublehtime;上机总时间intmoney;上机费用Student();构造函数Voidupcom(charName20,intCla,intStunum,intComnum);上机操作intdowncom();下机操作1. 学生类的定义:Student(学生类)inttag;/删除标记charname20;学生姓名intcla;班级intstunum;学号intcomnum;上机号time_tstime;

3、开始上机时间time_totime;下机时间doublehtime;上机总时间intmoney;上机费用Student();构造函数Voidupcom(charName20,intCla,intStunum,intComnum);上机操作intdowncom();下机操作voiddelstu();删除操作voidsetotime();设置下机时问time_tgettime();问获取当前时char*getname();获取姓名intgetcla();获取班级号intgettag();获取标记intgetstunum();获取学号intgetcomnum();获取上机号doublecountht

4、();问计算上机时intcountm();计算上机费用voiddisp();显示voiddisp2();显示22. 学生库类定义:StuData(学生库类)inttop;学生记录指针StudentstudentMAXS;学生记录StuData();构造函数Student*searchnum(intStunum);按学号搜索学生Student*searchcla(intCla);按班级搜索学生voiddispbycla(intCla);按班级显示学生Student*searchname(char*Name);按姓名显示学生voiddispall();显示所有学生信息voidupcom(charN

5、ame20,intCla,intStunum,intComnum);上机操作voiddowncom(intStunum);下机操作intsearch();搜索操作StuData();析构函数3. 电月商类的定义:Computer(电月商类)inttag;删除标记intcomnum;电脑号Computer();构造函数voidsetcomnum(intComnum);设置电脑号intgetcomnum();获取电脑号voidupcom();上机操作voiddowncom();下机操作intgettag();获取标记4. 电脑库类的定义:intupcom();上机操作voiddisp();显示Co

6、mData();析构函数1. ComData(电脑库类)Computercomputer30;记录电脑ComData();构造函数Computer*searchcom();搜索空闲电脑Computer*searchnum(intComnum胶电脑号搜索三、详细设计学生类成员函数的定义:Student:Student()/构造函数voidStudent:upcom(charName20,intCla,intStunum,intComnum)/上机strcpy(name,Name);tag=1;cla=Cla;stunum=Stunum;comnum=Comnum;stime=gettime();

7、intStudent:downcom()/下机/otime=gettime();setotime();delstu();disp();returncomnum;voidStudent:delstu()/更改上机标记(tag=0;voidStudent:setotime()/获取下机时间(otime=gettime();time_tStudent:gettime()/获取当前时间(returntime(NULL);char*Student:getname()/获取姓名(returnname;intStudent:getcla()/获取班级(returncla;intStudent:gettag(

8、)/intStudent:gettag()/获取上机标记(returntag;intStudent:getstunum()/获取学号(returnstunum;intStudent:getcomnum()/获取上机号(returncomnum;doubleStudent:countht()/计算总上机时间(returndifftime(otime,stime);intStudent:countm()/计算上机费用(if(int)countht()%3600=0)return(int)countht()/3600;return(int)countht()/3600)+1;voidStudent:

9、disp()/显示cout<<"姓名:"<<name<<""<<"班级:"<<cla<<""<<"学号:"<<stunum<<""<<"上机号"<<comnum<<endl;cout<<"开始上机时间:"<<asctime(localtime(&stime)<

10、;<""<<"上机总时问:"<<countht()/3600.00<<"小时"<<""<<"上机费用:"<<countm()<<"元"<<endl;voidStudent:disp2()/显示cout<<endl<<endl<<"上机成功"<<endl;cout<<"姓名:"&

11、lt;<name<<endl<<"班级:"<<cla<<endl<<"学号:"<<stunum<<endl<<"开始上机时间:"<<asctime(localtime(&stime)<<"上机号:"<<comnum<<endl;/cout<<"开始上机时间:"<<stime<<""&l

12、t;<"上机总时间:"<<countht()<<""<<"上机费用:"<<countm()<<endl;学生库类成员函数定义:StuData:StuData()/构造函数,将student.txt中的内容读到student中Students;top=-1;ifstreamfin("student.txt");while(1)fin.read(char*)&s,sizeof(s);if(!fin)break;top+;studenttop=s;

13、fin.close();Student*StuData:searchnum(intStunum)/按学号搜索(for(inti=0;i<=top;i+)if(studenti.getstunum()=Stunum&&studenti.gettag()=1)(return&studenti;returnNULL;Student*StuData:searchcla(intCla)/按班级搜索(for(inti=0;i<=top;i+)if(studenti.getcla()=Cla&&studenti.gettag()=1)(return&

14、;studenti;returnNULL;voidStuData:dispbycla(intCla)/按班级显示(for(intj=0;j<=top;j+)if(studentj.getcla()=Cla&&studentj.gettag()=1)studentj.disp();cout<<endl;Student*StuData:searchname(char*Name)/按姓名搜索(for(inti=0;i<=top;i+)if(!strcmp(studenti.getname(),Name)&&studenti.gettag()=1

15、)(return&studenti;returnNULL;voidStuData:dispall()/显示所有学生(for(inti=0;i<=top;i+)if(studenti.gettag()=1)(studenti.setotime();studenti.disp();cout<<endl;voidStuData:upcom(charName20,intCla,intStunum,intComnum)/上机(top+;studenttop.upcom(Name,Cla,Stunum,Comnum);voidStuData:downcom(intStunum)/

16、下机Student*p;p=searchnum(Stunum);p->downcom();intStuData:search()/机房学生查询charchoice;charname20;intstunum;intcla;Student*s;while(choice!='0')cout<<endl<<endl<<"机房学生查询"<<endl<<endl;cout<<"1按姓名查询"<<endl;cout<<"2按学号查询"

17、;<<endl;cout<<"3按班级查询"<<endl;cout<<"4全部学生信息"<<endl;cout<<"0返回主菜单"<<endl;cin>>choice;switch(choice)(case'1':system("cls");cout<<"请输入学生姓名:"<<endl;cin>>name;s=searchname(name);if(

18、s=NULL)(cout<<"机房没有此人"<<endl;break;s->disp();break;case'2':system("cls");cout<<"请输入学生学号:"<<endl;cin>>stunum;s=searchnum(stunum);if(s=NULL)(cout<<"机房没有此人"<<endl;break;s->disp();break;case'3':system

19、("cls");cout<<"请输入班级号:"<<endl;cin>>cla;s=searchcla(cla);if(s=NULL)cout<<"机房没有该班级的人!"<<endl;break;dispbycla(cla);break;case'4':system("cls");cout<<endl<<endl<<"机房所有上机学生信息如下"<<endl<<en

20、dl;dispall();break;case'0':return0;default:cout<<"输入有误,请重新输入:"<<endl;cout<<"按任意键返回"<<endl;getch();system("cls");StuData:StuData()/析构函数,将student中数据写到srudent.txt中(ofstreamfout("student.txt");for(inti=0;i<=top;i+)if(studenti.get

21、tag()=1)fout.write(char*)&studenti,sizeof(studenti);fout.close();2. 电脑类成员函数定义:Computer:Computer()/构造函数(tag=0;voidComputer:setcomnum(intComnum)/设置电脑号(comnum=Comnum;intComputer:getcomnum()/获取电脑号(returncomnum;voidComputer:upcom()/上机(tag=1;voidComputer:downcom()/下机(tag=0;intComputer:gettag()/获取上机标记(

22、returntag;3. 电脑库类成员函数定义:ComData:ComData()/构造函数(Computerc;ifstreamfin("computer.txt");for(intj=0;j<MAXC;j+)fin.read(char*)&c,sizeof(c);computerj=c;fin.close();for(inti=0;i<MAXC;i+)computeri.setcomnum(i+1);Computer*ComData:searchcom()/搜索空闲电脑for(inti=0;i<MAXC;i+)if(computeri.gett

23、ag()=0)return&computeri;returnNULL;Computer*ComData:searchnum(intComnum)/按电脑号搜索电脑for(inti=0;i<MAXC;i+)if(computeri.getcomnum()=Comnum)return&computeri;returnNULL;intComData:upcom()/上机Computer*p=searchcom();if(p=NULL)(cout<<"机房已满,不能上机"<<endl;return0;p->upcom();retu

24、rnp->getcomnum();voidComData:disp()/显示(cout<<endl<<endl<<"电脑使用情况如下,'1'为被使用中,0'为空闲中!<<endl<<endl;for(inti=0;i<MAXC;i+)(/cout<<computeri.getcomnum();printf("%4d",computeri.gettag();if(i+1)%6=0)cout<<endl;ComData:ComData()/析构函数(

25、ofstreamfout("computer.txt");for(inti=0;i<MAXC;i+)/if(computeri.gettag()=1)fout.write(char*)&computeri,sizeof(computeri);fout.close();四、调试分析调试前,界面有些凌乱,选择某项功能后,之前的菜单仍然在界面上;调试时,适当加入了活屏函数,使界面更加简洁活晰。1. 调试前,当输入的内容不合法时没有任何提示,导致某些功能出现故障;调试时对输入内容的合法性做出的判断,并给出了相映的提示信息。2. 体会:C+祁言课程设计和现代计算机技术的

26、实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验。从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。这不但激发了我的创新意识,还开发了我的创造能力、培养了我的沟通能力。老师对我们进行了细心、耐心的指导,鼓励我们对程序进行合理改进,培养了我们的创新意识和创新能力。原来是我认为可怕的课程设计,就在种种辅助条件下完成了,心里有说不出的高兴。这是一个发现问题和解决问题的过程

27、,从困惑到明朗,从苦恼道兴奋。我一步步地走过来,发现编程真是一个奇妙刺激的旅程。特别是当我把一个自己认为毫无可能的事情完成自后,那种感觉简直不能用言语来表达。感谢这次课程设计给我带来的全新体验和丰富经验。我会把它换成我以后奋斗的源泉。1. 五、用户手册本程序的运行环境为DO躲作系统,执行文件为:机房管理系统.exe;进入演示程序后,即显示对话形式的提示操作过程,选择上机项后,输入上机学生的基本信息;选择下级项后,输入要下机学生的学号即可,系统自动给出上机总时间和费用;选择学生信息查询项后,可按各种信息搜索,选择相应选项即可;选择电脑使用情况项后,系统便会显示所有电脑的被使用情况。六、测试数据主

28、界面:主界面:上机操作:机房计费管理系统2F孔=一一3机点学生查询一一4前府使南情况9退出1小八上机成切姓步;huhu班感102023学号;10202356弁始上机时间己SatFeb2S89:51£机号,1按任意摧透回主菜单?:45Z012下机操作:曲刖入需要结账下机的人的学号,1920213姓角黄涛班级胃102023学号;10202313上机号8枷nFeb2008=08=192012姓角黄涛班级胃102023学号;10202313上机号8枷nFeb2008=08=192012枷nFeb2008=08=192012枷nFeb2008=08=192012开始上机时间;_三机岛叶皿LN.

29、83&小时上机费用:1227L安任苴键返回主菜单查询界面:机房学生查询息询询询1!杳一盘名号盥亍王姓.学所都回1234*0按姓名查询:上机号4102633学号:2220:24:212012上机费用:曲元«L邛b9e1F6g2niLar0iF&-iaLlBJ回onNBE机,侦键.上机意套上任姓开按按学号查询:请输入学生学号;1H2H23L3姓务:黄涛班象102023学号:16202313上机号8开始上机时间eHonFeb20BB:06=192U2E机息时可;121-866>hB寸上机机用:元按任意藤最回按班级查询:llrr电脑呗使用情况:电脑使用情况如下为被使用中

30、,为空闲中!010H011aa10QQ0000010Q00按任意槌返回主莱单七、附录/"Student.h"#ifndefStudent_H_H#defineStudentHHtypedeflongtime_t;classStudentpublic:Student();/构造函数下机更改上机标记获取下机时间获取当前时间获取姓名获取班级获取上机标记获取学号获取上机号计算总上机时间计算上机费用显示显示下机更改上机标记获取下机时间获取当前时间获取姓名获取班级获取上机标记获取学号获取上机号计算总上机时间计算上机费用显示显示下机更改上机标记获取下机时间获取当前时间获取姓名获取班级获取

31、上机标记获取学号获取上机号计算总上机时间计算上机费用显示显示/上机voidupcom(charName20,intCla,intStunum,intComnum);/intdowncom();/voiddelstu();/voidsetotime();/time_tgettime();/char*getname();/intgetcla();/intgettag();/intgetstunum();/intgetcomnum();doublecountht();intcountm();/voiddisp();/voiddisp2();/private:inttag;charname20;int

32、cla;intstunum;intcomnum;time_tstime;time_totime;doublehtime;intinthtime;intmoney;#endif/"StuData.h"#ifndefStuData_H_H#defineStuDataHH/#include"Student.h"constintMAXS=30;classStuDatapublic:StuData();/构造函数Student*searchnum(intStunum);/按学号搜索按班级搜索Student*searchcla(intCla);/voiddispby

33、cla(intCla);/按班级显示Student*searchname(char*Name);/按姓名搜索voiddispall();/显示所有学生voidupcom(charName20,intCla,intStunum,intComnum);/上机voiddowncom(intStunum);/下机intsearch();/机房学生查询StuData();/析构函数private:inttop;StudentstudentMAXS;#endif/"Computer.h"#ifndefComputer_H_H#defineComputer_H_HclassCompute

34、r(public:Computer();/构造函数voidsetcomnum(intComnum);/设置电脑号intgetcomnum();/获取电脑号voidupcom();/上机voiddowncom();/下机intgettag();/获取上机标记private:inttag;intcomnum;#endif/"ComData.h"#ifndefComData_H_H#defineComData_H_H#include"Computer.h"constintMAXC=30;classComData(public:ComData();/构造函数Co

35、mputer*searchcom();/搜索空闲电脑Computer*searchnum(intComnum);/按电脑号搜索电脑intupcom();/上机voiddisp();/显示ComData();/析构函数private:Computercomputer30;#endif/"Student.cpp"#include"Student.h"#include<iostream.h>#include<string.h>#include<time.h>#include<windows.h>Student:S

36、tudent()/构造函数上机voidStudent:upcom(charName20,intCla,intStunum,intComnum)/strcpy(name,Name);tag=1;cla=Cla;stunum=Stunum;comnum=Comnum;stime=gettime();intStudent:downcom()/下机/otime=gettime();setotime();delstu();disp();returncomnum;voidStudent:delstu()/更改上机标记tag=0;voidStudent:setotime()/获取下机时间(otime=get

37、time();time_tStudent:gettime()/获取当前时间(returntime(NULL);char*Student:getname()/获取姓名(returnname;intStudent:getcla()/获取班级(returncla;intStudent:gettag()/获取上机标记(returntag;intStudent:getstunum()/获取学号(returnstunum;intStudent:getcomnum()/获取上机号(returncomnum;doubleStudent:countht()/计算总上机时间(returndifftime(otim

38、e,stime);intStudent:countm()/计算上机费用(if(int)countht()%3600=0)return(int)countht()/3600;return(int)countht()/3600)+1;voidStudent:disp()/显示(cout<<"姓名:"<<name<<""<<"班级:"<<cla<<""<<"学号:"<<stunum<<"

39、;"<<”上机号"<<comnum<<endl;cout<<"开始上机时间:"<<asctime(localtime(&stime)<<""<<"上机总时间:"<<countht()/3600.00<<"小时"<<""<<”上机费用:"<<countm()<<"元"<<en

40、dl;voidStudent:disp2()/显示(cout<<endl<<endl<<"上机成功"<<endl;cout<<"姓名:"<<name<<endl<<”班级:"<<cla<<endl<<”学号:"<<stunum<<endl<<"开始上机时间:"<<asctime(localtime(&stime)<<&

41、quot;上机号:"<<comnum<<endl;/cout<<"开始上机时间:"<<stime<<""<<"上机总时间:"<<countht()<<""<<"上机费用:"<<countm()<<endl;/"StuData.cpp"#include<iostream.h>#include"StuData.h&qu

42、ot;#include"Student.h"#include<string.h>#include<fstream.h>#include<windows.h>#include<conio.h>StuData:StuData()/构造函数(Students;top=-1;ifstreamfin("student.txt");while(1)(fin.read(char*)&s,sizeof(s);if(!fin)break;top+;studenttop=s;fin.close();Student*St

43、uData:searchnum(intStunum)/按学号搜索(for(inti=0;i<=top;i+)if(studenti.getstunum()=Stunum&&studenti.gettag()=1)(return&studenti;returnNULL;Student*StuData:searchcla(intCla)/按班级搜索(for(inti=0;i<=top;i+)if(studenti.getcla()=Cla&&studenti.gettag()=1)(return&studenti;returnNULL;v

44、oidStuData:dispbycla(intCla)/按班级显示(for(intj=0;j<=top;j+)if(studentj.getcla()=Cla&&studentj.gettag()=1)(studentj.disp();cout<<endl;Student*StuData:searchname(char*Name)/按姓名搜索(for(inti=0;i<=top;i+)if(!strcmp(studenti.getname(),Name)&&studenti.gettag()=1)(return&studenti

45、;returnNULL;voidStuData:dispall()/显示所有学生(for(inti=0;i<=top;i+)if(studenti.gettag()=1)(studenti.setotime();studenti.disp();cout<<endl;voidStuData:upcom(charName20,intCla,intStunum,intComnum)/上机(top+;studenttop.upcom(Name,Cla,Stunum,Comnum);voidStuData:downcom(intStunum)/下机(Student*p;p=search

46、num(Stunum);p->downcom();intStuData:search()/机房学生查询(charchoice;charname20;intstunum;intcla;Student*s;while(choice!='0')(cout<<endl<<endl<<"机房学生查询"<<endl<<endl;cout<<"1按姓名查询"<<endl;cout<<"2按学号查询"<<endl;cout

47、<<"3按班级查询"<<endl;cout<<"4全部学生信息"<<endl;cout<<"0返回主菜单"<<endl;cin>>choice;switch(choice)(case'1':system("cls");cout<<"请输入学生姓名:"<<endl;cin>>name;s=searchname(name);if(s=NULL)(cout<&l

48、t;"机房没有此人"<<endl;break;s->disp();break;case'2':system("cls");cout<<"请输入学生学号:"<<endl;cin>>stunum;s=searchnum(stunum);if(s=NULL)(cout<<"机房没有此人"<<endl;break;s->disp();break;case'3':system("cls");

49、cout<<"请输入班级号:"<<endl;cin>>cla;s=searchcla(cla);if(s=NULL)(cout<<"机房没有该班级的人!"<<endl;break;dispbycla(cla);break;case'4':system("cls");cout<<endl<<endl<<"机房所有上机学生信息如下"<<endl<<endl;dispall();brea

50、k;case'0':return0;default:cout<<"输入有误,请重新输入:"<<endl;cout<<"按任意键返回"<<endl;getch();system("cls");StuData:StuData()/析构函数(ofstreamfout("student.txt");for(inti=0;i<=top;i+)if(studenti.gettag()=1)fout.write(char*)&studenti,size

51、of(studenti);fout.close();/"Computer.cpp"#include"Computer.h"Computer:Computer()/构造函数(tag=0;voidComputer:setcomnum(intComnum)/设置电脑号(comnum=Comnum;intComputer:getcomnum()/获取电脑号(returncomnum;voidComputer:upcom()/上机(tag=1;voidComputer:downcom()/下机(tag=0;intComputer:gettag()/获取上机标记(r

52、eturntag;/"ComData.cpp"#include"ComData.h”#include"Computer.h"#include<fstream.h>#include<iostream.h>#include<stdio.h>ComData:ComData()/构造函数(Computerc;/*for(inti=0;i<MAXC;i+)(computeri.setcomnum(i+1);*/ifstreamfin("computer.txt");for(intj=0;j&l

53、t;MAXC;j+)(fin.read(char*)&c,sizeof(c);computerj=c;fin.close();for(inti=0;i<MAXC;i+)(computeri.setcomnum(i+1);Computer*ComData:searchcom()/搜索空闲电脑(for(inti=0;i<MAXC;i+)if(computeri.gettag()=0)return&computeri;returnNULL;Computer*ComData:searchnum(intComnum)/按电脑号搜索电脑(for(inti=0;i<MAXC

54、;i+)if(computeri.getcomnum()=Comnum)return&computeri;returnNULL;intComData:upcom()/上机(Computer*p=searchcom();if(p=NULL)(cout<<"机房已满,不能上机”<<endl;return0;p->upcom();returnp->getcomnum();voidComData:disp()/显示(cout<<endl<<endl<<"电脑使用情况如下,'1'为被使用中

55、,'0'为空闲中!"<<endl<<endl;for(inti=0;i<MAXC;i+)(/cout<<computeri.getcomnum();printf("%4d”,computeri.gettag();if(i+1)%6=0)cout<<endl;ComData:ComData()/析构函数(ofstreamfout("computer.txt");for(inti=0;i<MAXC;i+)/if(computeri.gettag()=1)fout.write(char*)&computeri,sizeof(computeri);fout.close();/"main.cpp"#include<iostream.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include"Student.h"#include"StuData.h"#include"Computer.h"#include"ComData.h”intmain()(charchoice;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论