1、目录 一、需求分析 2 二、概要设计 2 三、具体设计 4 四、调试分析 17 五、用户手册 17 六、测试数据 18 七、附录 20 一、需求分析 1. 输入功能:输入30名学生的学号、班级、姓名、上机起始时间。 2. 计算功能:计算每个下机学生的上机费用,每小时1元。(上机费用=上机时间* 1.0/h ,局限性一小时按一小时计算) 3. 查询功能:按条件(班级、学号、姓名)显示学生的上机时间。 4. 机器使用情况的显示(显示方式不限但要一目了然) 5. 规定: 1) 源文献采用多文献的工程结构; 2) 数据存储采用文献形式; 3) 采用面向对象方法设计;
2、4) 功能完善,适当的注释; 5) 关于文献的内容需要自学; 二、概要设计 1. 学生类的定义: Student(学生类) int tag; //删除标记 char name[20]; 学生姓名 int cla; 班级 int stunum; 学号 int comnum; 上机号 time_t stime; 开始上机时间 time_t otime; 下机时间 double htime; 上机总时间 int money; 上机费用 Student(); 构造函数 Void upcom(char Name[20],int Cla,int Stu
3、num,int Comnum); 上机操作 int downcom(); 下机操作 void delstu(); 删除操作 void setotime(); 设立下机时间 time_t gettime(); 获取当前时间 char* getname(); 获取姓名 int getcla(); 获取班级号 int gettag(); 获取标记 int getstunum(); 获取学号 int getcomnum(); 获取上机号 double countht(); 计算上机时间 int countm(); 计算上机费用 void disp(); 显示 void
4、disp2(); 显示2 2. 学生库类定义: StuData(学生库类) int top;学生记录指针 Student student[MAXS]; 学生记录 StuData(); 构造函数 Student* searchnum(int Stunum);按学号搜索学生 Student* searchcla(int Cla);按班级搜索学生 void dispbycla(int Cla);按班级显示学生 Student*searchname(char *Name);按姓名显示学生 void dispall();显示所有学生信息 void upcom(c
5、har Name[20],int Cla,int Stunum,int Comnum);上机操作 void downcom(int Stunum);下机操作 int search(); 搜索操作 ~StuData(); 析构函数 3. 电脑类的定义: Computer(电脑类) int tag;删除标记 int comnum; 电脑号 Computer();构造函数 void setcomnum(int Comnum);设立电脑号 int getcomnum();获取电脑号 void upcom();上机操作 void downcom();下机操作 i
6、nt gettag();获取标记 4. 电脑库类的定义: ComData(电脑库类) Computer computer[30];记录电脑 ComData();构造函数 Computer* searchcom();搜索空闲电脑 Computer* searchnum(int Comnum);按电脑号搜索 int upcom();上机操作 void disp();显示 ~ComData();析构函数 三、具体设计 1. 学生类成员函数的定义: Student::Student() //构造函数 {} void Stu
7、dent::upcom(char Name[20],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 St
8、udent::delstu() //更改上机标记 { tag=0; } void Student::setotime() //获取下机时间 { otime=gettime(); } time_t Student::gettime() //获取当前时间 { return time(NULL); } char* Student::getname() //获取姓名 { return name; } int Student::getcla() //获取班级 { return cla; } int Stu
9、dent::gettag() //获取上机标记 { return tag; } int Student::getstunum() //获取学号 { return stunum; } int Student::getcomnum() //获取上机号 { return comnum; } double Student::countht() //计算总上机时间 { return difftime(otime,stime); } int Student::countm() //计算上机费用 { if(((
10、int)countht())%3600==0)
return ((int)countht())/3600;
return ((int)countht()/3600)+1;
}
void Student::disp() //显示
{
cout<<"姓名:"< 11、<"小时"<<" "<<"上机费用:"< 12、"< 13、
}
fin.close();
}
Student* StuData::searchnum(int Stunum) //按学号搜索
{
for(int i=0;i<=top;i++)
if(student[i].getstunum()==Stunum&&student[i].gettag()==1)
{return &student[i];}
return NULL;
}
Student* StuData::searchcla(int Cla) //按班级搜索
{
for(int i=0;i<=top;i++)
14、 if(student[i].getcla()==Cla&&student[i].gettag()==1)
{return &student[i];}
return NULL;
}
void StuData::dispbycla(int Cla) //按班级显示
{
for(int j=0;j<=top;j++)
if(student[j].getcla()==Cla&&student[j].gettag()==1)
{
student[j].disp();
cout< 15、 StuData::searchname(char *Name) //按姓名搜索
{
for(int i=0;i<=top;i++)
if(!strcmp(student[i].getname(),Name)&&student[i].gettag()==1)
{return &student[i];}
return NULL;
}
void StuData::dispall() //显示所有学生
{
for(int i=0;i<=top;i++)
if(student[i].gettag()==1)
{
stu 16、dent[i].setotime();
student[i].disp();
cout< 17、p->downcom();
}
int StuData::search() //机房学生查询
{
char choice;
char name[20];
int stunum;
int cla;
Student *s;
while(choice!='0')
{
cout< 18、"< 19、)
{
cout<<"机房没有此人"< 20、 '3':
system("cls");
cout<<"请输入班级号:"< 21、
dispall();
break;
case '0':
return 0;
default:
cout<<"输入有误,请重新输入:"< 22、
if(student[i].gettag()==1)
fout.write((char*)&student[i],sizeof(student[i]));
fout.close();
}
3. 电脑类成员函数定义:
Computer::Computer() //构造函数
{
tag=0;
}
void Computer::setcomnum(int Comnum) //设立电脑号
{
comnum=Comnum;
}
int Computer::getcomnum() //获取电脑号
{
23、
return comnum;
}
void Computer::upcom() //上机
{
tag=1;
}
void Computer::downcom() //下机
{
tag=0;
}
int Computer::gettag() //获取上机标记
{
return tag;
}
4. 电脑库类成员函数定义:
ComData::ComData() //构造函数
{
Computer c;
ifstream fin("computer.txt");
for(int j=0;j 24、XC;j++)
{
fin.read((char*)&c,sizeof(c));
computer[j]=c;
}
fin.close();
for(int i=0;i 25、LL;
}
Computer* ComData::searchnum(int Comnum) //按电脑号搜索电脑
{
for(int i=0;i 26、turn 0;
}
p->upcom();
return p->getcomnum();
}
void ComData::disp() //显示
{
cout< 27、
}
}
ComData::~ComData() //析构函数
{
ofstream fout("computer.txt");
for(int i=0;i 28、容不合法时没有任何提醒,导致某些功能出现故障;调试时对输入内容的合法性做出的判断,并给出了相映的提醒信息。
3. 体会:C++语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检查。从开始的算法思绪到运营调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。这不仅激发了我的创新意识,还开发了我的发明能力、培养了我的沟通能力。老师对我们进行了细心、耐心的指导,鼓励我们 29、对程序进行合理改善,培养了我们的创新意识和创新能力。本来是我认为可怕的课程设计,就在种种辅助条件下完毕了,心里有说不出的快乐。这是一个发现问题和解决问题的过程,从困惑到明朗,从苦恼道兴奋。我一步步地走过来,发现编程真是一个奇妙刺激的路程。特别是当我把一个自己认为毫无也许的事情完毕自后,那种感觉简直不能用言语来表达。感谢这次课程设计给我带来的全新体验和丰富经验。我会把它换成我以后奋斗的源泉。
五、用户手册
⒈ 本程序的运营环境为DOS操作系统,执行文献为:机房管理系统.exe;
⒉ 进入演示程序后,即显示对话形式的提醒操作过程,
⒊选择上机项后,输入上机学生的基本信息;
⒋选择下级项后 30、输入要下机学生的学号即可,系统自动给出上机总时间和费用;
⒌选择学生信息查询项后,可按各种信息搜索,选择相应选项即可;
⒍ 选择电脑使用情况项后,系统便会显示所有电脑的被使用情况。
六、测试数据
主界面: 上机操作:
下机操作:
查询界面:
按姓名查询:
按学号查询:
按班级查询:
电脑呗使用情况:
七、附录
// ----------------------------------------------- “Student.h”--------------- 31、
#ifndef Student_H_H
#define Student_H_H
typedef long time_t;
class Student{
public:
Student(); //构造函数
void upcom(char Name[20],int Cla,int Stunum,int Comnum); //上机
int downcom(); //下机
void delstu(); //更改上机标记
void setotime(); //获取下机时间
time_t ge 32、ttime(); //获取当前时间
char* getname(); //获取姓名
int getcla(); //获取班级
int gettag(); //获取上机标记
int getstunum(); //获取学号
int getcomnum(); //获取上机号
double countht(); //计算总上机时间
int countm(); //计算上机费用
void disp(); //显示
void disp2(); //显示
private:
int tag;
char name[20];
int cl 33、a;
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
#include"Studen 34、t.h"
const int MAXS=30;
class StuData{
public:
StuData(); //构造函数
Student* searchnum(int Stunum); //按学号搜索
Student* searchcla(int Cla); //按班级搜索
void dispbycla(int Cla); //按班级显示
Student* searchname(char *Name); //按姓名搜索
void dispall(); //显示所有学生
void upcom(char Nam 35、e[20],int Cla,int Stunum,int Comnum); //上机
void downcom(int Stunum); //下机
int search(); //机房学生查询
~StuData(); //析构函数
private:
int top;
Student student[MAXS];
};
#endif
// --------------------------------------“Computer.h”-------------------------------------------------- 36、
#ifndef Computer_H_H
#define Computer_H_H
class Computer{
public:
Computer(); //构造函数
void setcomnum(int Comnum); //设立电脑号
int getcomnum(); //获取电脑号
void upcom(); //上机
void downcom(); //下机
int gettag(); //获取上机标记
private:
int tag;
int comnum;
};
#endif
//---- 37、ComData.h”-------------------------------------------------------
#ifndef ComData_H_H
#define ComData_H_H
#include"Computer.h"
const int MAXC=30;
class ComData{
public:
ComData(); //构造函数
Computer* searchcom(); //搜索空闲电脑
Computer* searchn 38、um(int Comnum); //按电脑号搜索电脑
int upcom(); //上机
void disp(); //显示
~ComData(); //析构函数
private:
Computer computer[30];
};
#endif
//-----------------------------------------“Student.cpp”--------------------------------------------------------
#include "Student.h"
#include 39、h>
#include 40、owncom() //下机
{
//otime=gettime();
setotime();
delstu();
disp();
return comnum;
}
void Student::delstu() //更改上机标记
{
tag=0;
}
void Student::setotime() //获取下机时间
{
otime=gettime();
}
time_t Student::gettime() //获取当前时间
{
return time(NULL);
}
c 41、har* Student::getname() //获取姓名
{
return name;
}
int Student::getcla() //获取班级
{
return cla;
}
int Student::gettag() //获取上机标记
{
return tag;
}
int Student::getstunum() //获取学号
{
return stunum;
}
int Student::getcomnum() //获取上机号
{
return comnum;
} 42、
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<<"姓名:"< 43、la<<" "<<"学号:"< 44、< 45、
#include 46、of(s));
if(!fin)
break;
top++;
student[top]=s;
}
fin.close();
}
Student* StuData::searchnum(int Stunum) //按学号搜索
{
for(int i=0;i<=top;i++)
if(student[i].getstunum()==Stunum&&student[i].gettag()==1)
{
return &student[i];
}
return NULL;
}
St 47、udent* StuData::searchcla(int Cla) //按班级搜索
{
for(int i=0;i<=top;i++)
if(student[i].getcla()==Cla&&student[i].gettag()==1)
{
return &student[i];
}
return NULL;
}
void StuData::dispbycla(int Cla) //按班级显示
{
for(int j=0;j<=top;j++)
if(student[j].getcla()==Cla&&s 48、tudent[j].gettag()==1)
{
student[j].disp();
cout< 49、uData::dispall() //显示所有学生
{
for(int i=0;i<=top;i++)
if(student[i].gettag()==1)
{
student[i].setotime();
student[i].disp();
cout< 50、um,Comnum);
}
void StuData::downcom(int Stunum) //下机
{
Student *p;
p=searchnum(Stunum);
p->downcom();
}
int StuData::search() //机房学生查询
{
char choice;
char name[20];
int stunum;
int cla;
Student *s;
while(choice!='0')
{
cout<
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818