面向对象程序课程设计任务书
设计题目:
客房管理系统(支撑课程目标1、2、3、4)
参考学时:
1周
设计内容
有一个小型的快捷酒店,该酒店共有 10个房间,可在柜台办理入住或退房。现在请你编写一个简单的酒店客房管理系统。
学习目的
理解掌握程序中的类与现实中事物的对应关系,通过类的组合、继承等模拟现实世界解决问题的方式。
设计要求
1、 能够正确接受顾客的住房和退房申请,成绩≥60;
2、 能够统计当前客房的入住情况,界面设计友好,成绩≥70;
3、 能够实现客房信息到文件的导出和导入,成绩≥80;
4、 能够考虑不同类型(标准间、大床房)的客房和价格,并且可以添加、删除客房及修改客房信息,成绩≥90。
面向对象程序课程设计
目 录
一、 题目
二、 需求分析
三、 系统功能结构图
四、 类的设计
五、 程序代码与说明
六、 运行结果与分析
七、 心得与体会
一、 题目
小型快捷酒店的客房管理系统
二、 需求分析
1.可以实现顾客预订,退房的功能,并记录顾客的操作的信息。
2.可以实现酒店信息的管理,对房间信息的修改操作。
3.可以记录每日的顾客操作,并可以实现信息的导入或导出。
4.可以查询入住者的房间信息。
5.可以查询具体日期的客房预定信息。
6.可以实现按日期处理房间信息,当入住时间截至自动退房。
7.可以实现显示一个月的房间入住情况。
三、 系统功能结构图
四、 类的设计
- 顾客类:储存客户的个人信息
- 时间类:记录时间,实现记录每一天的预订信息
- 房间类:不同种类房间的基类
- 房间信息类:储存全部房间的入住信息
- 大床房类:储存大床房的信息
- 标准间类:储存标准间的信息
五、 程序代码与说明
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cstring>
#include <string>
#include <cstdio>
#include <vector>
#include <time.h>
#include <cstdlib>
#include <windows.h>
#include <iterator>
#include <conio.h>
#include <map>
#define FACE_X 29
#define FACE_Y 20
using namespace std;
class Date//日期类
{
public:
Date();
int getyear(){return year;}
int getmonth(){return month;}
int getday(){return day;}
private:
int year,month,day;
string in_text;
};
Date::Date()//读入系统时间
{
time_t now;
time(&now);
struct tm *t_now;
t_now = localtime(&now);
year=t_now -> tm_year + 1900;
month=t_now -> tm_mon + 1;
day=t_now -> tm_mday;
};
class roominformation//统计住房信息类
{
public:
roominformation(){};
roominformation(char* sta,char* ow,char* room)
{
strcpy(state,sta);
strcpy(ower,ow);
strcpy(roomnumber,room);
};
char* getstate() {return state;}
char* getower() {return ower;}
char* getroomnumber() {return roomnumber;}
void display()
{
cout<<" "<<state<<" "<<ower<<"\t"<<roomnumber<<endl;
}
private:
char state[100]; //房间状态
char ower[100]; //房主
char roomnumber[100]; //房间号码
};
class Customer//顾客信息类
{
public:
Customer(string na="0",int ids=0,string room="0"):id(ids)
{name=na;roomnumber=room;}
void setname(string na,int ids){name=na;id=ids;}
void setroom(string n){roomnumber=n;}
int getid(){return id;}
int getroomnumber()
{
int ans=0;
for(int i=0;i<4;i++)
{
ans=ans*10+roomnumber[i]-'0';
}
return ans;
}
string getname(){return name;}
private:
string name; //姓名
int id; //身份证号
string roomnumber; //所住房间
};
vector<Customer>man; //储存客户信息容器
int vis[2][1000]; //标记房间状态
int cha[2][1000]; //标记改变状态
string text_last=".text";
int ids;
string na;
string namess[2000];
int roomss[2000];
char temp[100];
char tempn[100];
char tempname[100][100];
class Room//房间类
{
public:
Room(int dep=100):deposit(dep){};
virtual int outprice(int n,int day)=0;
virtual void inroom(int n,int day,string text)=0;
virtual int outroom(int n,string text)=0;
virtual int getnumber()=0;
virtual int getprice()=0;
virtual int getttnumber()=0;
virtual int setnumber(int n)=0;
virtual void changen(int n)=0;
virtual void changep(int n)=0;
protected:
int deposit; //定金
};
class normal_room:public Room//标准间类
{
public:
normal_room(int pri=180,int num=5,int totle=5):price(pri),number(num),totle_number(totle)
{
for(int i=1;i<=totle;i++) //生成房间号码
{
string rooms=to_string(1000+i);
roomnumber.push_back(rooms);
}
};
void normal(int num,int totle_num)
{
number=num;
totle_number=totle_num;
for(int i=1;i<=totle_num;i++) //生成房间号码
{
string rooms=to_string(1000+i);
roomnumber.push_back(rooms);
}
}
void inroom(int n,int day,string text);
int outprice(int n,int day);
int outroom(int n,string text);
int setnumber(int n);
int getnumber();
int getprice();
int getttnumber();
void changen(int n);
void changep(int n);
private:
int price,number,totle_number; //单价,可用房间数,房间总数
vector<string>roomnumber; //统计房间号码
};
int normal_room::getnumber()
{
return number;
}
int normal_room::getprice()
{
return price;
}
int normal_room::getttnumber()
{
return totle_number;
}
int normal_room::setnumber(int n)
{
number-=n;
return number;
}
int normal_room::outprice(int n,int day)
{
return n*day*price+n*deposit;
}
void normal_room::inroom(int n,int day,string text) //入住信息统计
{
ofstream OpenFile(text,ios::app); //读入预定信息的文件
if(n<=number)
{
cout<<"可预定: "<<endl;
number=number-n;
cout<<"共缴费:"<<outprice(n,day)<<endl<<endl;
OpenFile<<"\n 共缴费:"<<outprice(n,day)<<"\n";
cout<<"输入您的个人信息"<<endl;
OpenFile<<" 房间的个人信息:\n";
for(int i=0;i<totle_number&&a