ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

酒店管理系统(c++课程设计)

2021-10-06 18:58:15  阅读:267  来源: 互联网

标签:课程设计 string 管理系统 Ordering Hotel c++ include id cout


这是一个用c++编写的一个课程设计的代码:酒店管理系统

大概实现了一下操作:对订单进行增删查改,对订单文件保存,对订单数据保存进入ordering.dat,对订单文件的销毁。

如有不足,请指正~~

Ordering.h

#include<iostream>
#include<string>
#include<cstring>
#include<vector>
using namespace std;

class Ordering
{
    public:
        Ordering();
        Ordering(string , string , string , string , string);
        virtual ~Ordering();

        string GetId() { return id; }
        string GetName() { return name; }
        friend ostream& operator<<(ostream& , const Ordering& );
        friend istream& operator>>(istream& , Ordering& );


    private:
        string name;//姓名
        string tel;//电话号码
        string time;//订餐时间
        string remarks;//备注
        string id;//房间号
};

Hotel.h

#include "Ordering.h"
#include<iostream>
#include<string>
#include<cstring>
#include<vector>
using namespace std;

class Hotel 
{
public:
    Hotel();
    ~Hotel();
    bool AddOrder(Ordering);
    bool DeleteOrder(string);
    bool FindOrder(string);
    void DispAll();
    void SaveToFile();
    void ReadFromFile();
    void DestroyOrder();
    int cnt;//人数

private:
    Ordering addr[50];
   
};

Hotel.cpp

#include"Hotel.h"
#include<iostream>
#include<string>
#include<cstring>
#include <fstream>
#include<istream>
#include<vector>
using namespace std;
int N = 50;
Hotel::Hotel()
{
    cnt = 0;
}

Hotel::~Hotel()
{
    
}

bool Hotel::AddOrder(Ordering ord) {
    int i;
    for (i = 0; i < cnt; i++) {
        if (addr[i].GetId()==ord.GetId()) {
            cout << "这个已经存在,无法加入!" << endl;
            return false;
        }
    }
    if (cnt < N && i == cnt){
        addr[cnt] = ord;
        cnt++;
        cout << "订单添加成功." << endl;
        return true;
    }
    else  return false;
}

void Hotel::DispAll() {
    Ordering ord;
    cout << " 房间号" << "\t姓名" << "\t\t电话号码" << "\t\t预定时间" << "\t备注" << endl;
    for (int i = 1; i <= 54; i++)
        cout << "=";
    cout << endl;
    for (int i = 0; i < cnt; i++) {
        ord= addr[i];
        cout << ord;
    }
}

bool Hotel::DeleteOrder(string id) {
    int i;
    for (i = 0; i < cnt; i++) {
        if (addr[i].GetId()==id) {
            int j = i;
            for (; j < cnt; j++) {
                addr[j] = addr[j + 1];
            }
            cout << "这个订单的信息已经删除!" << endl;
            cnt--;
            return true;
        }
    }
    if (i == cnt) {
        cout << "这个订单没有找到,无法删除" << endl;
        return false;
    }
    return false;
}

bool Hotel::FindOrder(string id) {
    int i;
    Ordering ord;
    for (i = 0; i < cnt; i++) {
        ord = addr[i];
        if (ord.GetId()==id) {
            cout << "订单信息找到!" << endl;
            cout << " 房间号" << "\t姓名" << "\t\t电话号码" << "\t\t预定时间" << "\t备注" << endl;
            for (int i = 1; i <= 54; i++)
                cout << "=";
            cout << endl;
            //cout << sta.id << '\t' << sta.name << '\t' << sta.department << '\t' << sta.wage << '\t' << sta.position << endl;
            cout << ord;
            return true;
        }
    }
    if (i == cnt) {
        cout << "订单信息没有找到!" << endl;
        return false;
    }
    return false;
}

void Hotel::SaveToFile()
{
    ofstream ofs("ordering.dat", ios::binary | ios::out | ios::trunc);
    if (!ofs)
    {
        cerr << "Write file error." << endl;
        return;
    }
    for (int i = 0; i < cnt; i++)
        ofs.write((char*)&addr[i], sizeof(addr[i]));
    ofs.close();
    cout << "文件保存完成!" << endl;
}

void Hotel::ReadFromFile() {
    ifstream ifs("odering.dat", ios::binary | ios::in);
    if (!ifs) {
        cerr << "Open the file error." << endl;
        cout << "请创建文件:ordering.dat,开始创建..." << endl;
        ofstream ofs("odering.dat", ios::binary | ios::trunc);
        ofs.close();
        cout << "空文件创建完成!" << endl;
    }
    else {
        ifs.seekg(0, ios::end);
        long filelen = ifs.tellg();
        cnt = filelen / sizeof(Ordering);
        cout << "文件已打开,请注意修改后及时保存!!" << endl;
        ifs.seekg(0, ios::beg);
        for (int i = 0; i < cnt; i++)
            ifs.read((char*)&addr[i], sizeof(addr[i]));
        ifs.close();
    }
}

void Hotel::DestroyOrder()
{
    char ch;
    cout << "危险!!你确认要清空说有订单信息?(y/n):";

    while ((ch = getchar()) != '\n')
        continue;
    cin.get(ch);
    if (ch == 'y' || ch == 'Y')
    {
        ofstream ofs("ordering.dat", ios::binary | ios::trunc);
        ofs.close();
        cout << "订单信息已清空!" << endl;
        cnt = 0;
    }
}

Ordering.cpp

#include<iostream>
#include<string>
#include<cstring>
#include"Ordering.h"
#include<vector>

Ordering::Ordering()
{
	this->id = "";
	this->name = "";
	this->remarks = "";
	this->tel = "";
	this->time = "";
}
Ordering::Ordering(string name, string tel, string time, string remarks, string room)
{
	this->id = id;
	this->name = name;
	this->remarks = remarks;
	this->tel = tel;
	this->time = time;
}
Ordering::~Ordering(){}

ostream& operator<<(ostream& o, const Ordering& ord) {
	o << ord.id << '\t' << ord.name << "\t\t" << ord.tel << '\t' << ord.time << '\t' << ord.remarks << endl;
	return o;
}
istream& operator>>(istream& in, Ordering& ord) {
	cout << "请输入房间号:";
	in >> ord.id;
	cout << "请输入姓名:";
	in >> ord.name;
	cout << "请输入电话号码:";
	in >> ord.tel;
	cout << "请输入订餐时间:";
	in >> ord.time;
	cout << "请输入订餐备注:";
	in >> ord.remarks;
	return in;
}

main.cpp

#include"Hotel.h"
#include<iostream>
#include<string>
#include<cstring>
#include<vector>
using namespace std;
const int NUM = 30;
const char password[] = "wslxc";
Hotel *hol = new Hotel();

void login() {
    int c = 3, count = 1;
    char key[NUM];
    cout << "请输入登录密码(您有三次机会):";
    cin >> key;
    while (strcmp(key, password) != 0) {
        if (count < 3)
            cout << "密码错误,您还有" << --c << "次机会,请重新输入:";
        if (count >= 3)
        {
            cout << "**抱歉,输入错误三次,退出系统**\n";
            exit(0);
        }
        cin >> key;
        count++;
    }
    cout << "密码正确,欢迎使用!\n\n";
    system("pause");
}

void ShowMainMenu()
{
    system("cls");
    cout << "请选择您的操作:" << endl;
    cout << "****************************" << endl;
    cout << "     1 打开订餐信息表" << endl;
    cout << "     2 登记订餐信息" << endl;
    cout << "     3 查找订餐信息" << endl;
    cout << "     4 显示所有订餐信息" << endl;
    cout << "     5 删除订餐信息" << endl;
    cout << "     6 保存订餐信息" << endl;
    cout << "     7 清空订餐信息表" << endl;
    cout << "     0 退出" << endl;
    cout << "****************************" << endl;
}


void Welcome()
{
    cout << endl;
    cout << "     $-------------------------------------------------$" << endl;
    cout << "     |                                                 |" << endl;
    cout << "     |      **欢迎进入酒店订餐信息管理程序 **          | " << endl;
    cout << "     |                                                 |" << endl;
    cout << "     @-------------------------------------------------@" << endl;
}


void SelectFun(int sel) {
    Ordering *order=new Ordering();
    string id;
    switch (sel) {
    case 1:
        hol->ReadFromFile();
        system("pause");
        break;
    case 2:
        cout << "请输入要添加的订餐信息:" << endl;
        cin >> *order;
        hol->AddOrder(*order);
        system("pause");
        break;
    case 3:
        cout << "请输入要查找的房间号:";
        cin >> id;
        hol->FindOrder(id);
        system("pause");
        break;
    case 4:
        cout << "所有的订餐信息如下:" << endl;
        hol->DispAll();
        system("pause");
        break;
    case 5:
        cout << "请输入要删除的房间号:";
        cin >> id;
        hol->DeleteOrder(id);
        system("pause");
        break;
    case 6:
        hol->SaveToFile();
        system("pause");
        break;
    case 7:
        hol->DestroyOrder();
        system("pause");
        break;
    case 0:
        break;
    default:
    {
        cout << "输入错误,请重新输入!" << endl;
        system("pause");
    }
    }
}


int main()
{
    int sel = 1;
    Welcome();
    login();
    while (sel)
    {
        ShowMainMenu();
        cout << "订餐总人数:" << hol->cnt << ",请输入选择功能(0-7):";
        cin >> sel;
        cout << endl;
        SelectFun(sel);
    }
    delete hol;
    return 0;

}

标签:课程设计,string,管理系统,Ordering,Hotel,c++,include,id,cout
来源: https://blog.csdn.net/a13275906705/article/details/120627829

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有