快捷酒店管理系统

本文是面向对象程序课程设计的任务书,要求设计一个小型快捷酒店的客房管理系统,包括顾客预订、退房、房间信息管理、文件导入导出等功能。系统应支持标准间、大床房类型的客房,以及添加、删除和修改客房信息。设计中强调理解类与现实世界的关系,以及封装、继承和多态等面向对象概念的应用。
摘要由CSDN通过智能技术生成

面向对象程序课程设计任务书

设计题目:
客房管理系统(支撑课程目标1、2、3、4)
参考学时:
1周
设计内容
有一个小型的快捷酒店,该酒店共有 10个房间,可在柜台办理入住或退房。现在请你编写一个简单的酒店客房管理系统。
学习目的
理解掌握程序中的类与现实中事物的对应关系,通过类的组合、继承等模拟现实世界解决问题的方式。
设计要求
1、 能够正确接受顾客的住房和退房申请,成绩≥60;
2、 能够统计当前客房的入住情况,界面设计友好,成绩≥70;
3、 能够实现客房信息到文件的导出和导入,成绩≥80;
4、 能够考虑不同类型(标准间、大床房)的客房和价格,并且可以添加、删除客房及修改客房信息,成绩≥90。

面向对象程序课程设计
目 录

一、 题目
二、 需求分析
三、 系统功能结构图
四、 类的设计
五、 程序代码与说明
六、 运行结果与分析
七、 心得与体会

一、 题目
小型快捷酒店的客房管理系统
二、 需求分析
1.可以实现顾客预订,退房的功能,并记录顾客的操作的信息。
2.可以实现酒店信息的管理,对房间信息的修改操作。
3.可以记录每日的顾客操作,并可以实现信息的导入或导出。
4.可以查询入住者的房间信息。
5.可以查询具体日期的客房预定信息。
6.可以实现按日期处理房间信息,当入住时间截至自动退房。
7.可以实现显示一个月的房间入住情况。
三、 系统功能结构图

四、 类的设计

  1. 顾客类:储存客户的个人信息
  2. 时间类:记录时间,实现记录每一天的预订信息
  3. 房间类:不同种类房间的基类
  4. 房间信息类:储存全部房间的入住信息
  5. 大床房类:储存大床房的信息
  6. 标准间类:储存标准间的信息
    五、 程序代码与说明


#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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值