*主要功能:1.打印已经被预定的房号,用于客户订房2.客户退房,结算时间和消费特点:使用person和client类,文件,引用,全局变量*
#include<iostream>
#include<string.h>
#include<iomanip>
#include<fstream>
using namespace std;
class person {
private:int roomnum;char *name;char *begintime, *pretime;//开房时间,预计开房时间
public:void getnroomnum(int num){roomnum = num;}void getname(char* p){name = new char[100];strcpy_s(name, strlen(p) +1, p);}void getbegintime(char* p){begintime = new char[100];strcpy_s(begintime, strlen(p) +1, p);}void getpretime(char* p){pretime = new char[100];strcpy_s(pretime, strlen(p) + 1, p);}int cnum(){return roomnum;}char* cname(){return name;}char* ctime1(){return begintime;}char* ctime2(){return pretime;}int rmonth();int rday();int year();};int person:: rmonth()//返回入住月日时整数{int k, j=0;for (k = 0; k < strlen(begintime); k++)if (begintime[k] == 'M'){j= (begintime[k - 2] - '0') * 10 + begintime[k - 1] - '0';break;}return j;}
int person::rday(){int k, j=0;for (k = 0; k < strlen(begintime); k++)if (begintime[k] == 'D'){j= (begintime[k - 2] - '0') * 10 + begintime[k - 1] - '0';break;}return j;}
int person::year(){int k, j=0;for (k = 0; k < strlen(begintime); k++)if (begintime[k] == 'Y'){j = (begintime[k - 4] - '0') * 1000+ (begintime[k- 3] - '0') * 100 + (begintime[k - 2] - '0') * 10 + begintime[k - 1] - '0';break;}return j;}
class client {
private:int other;char *canceltime;
public:void inother(int x) { other = x; }void incanceltime(char* p){canceltime= new char[100];strcpy_s(canceltime, strlen(p) + 1, p);}int outother(){return other;}char* outcanceltime(){return canceltime;}int remonth();int reday();};int client:: remonth()//返回退房月日时{int k, j=0;for (k = 0; k < strlen(canceltime); k++)if (canceltime[k] == 'M'){j = (canceltime[k - 2] - '0') * 10 + canceltime[k - 1] - '0';break;}return j;}
int client::reday(){int k, j=0;for (k = 0; k < strlen(canceltime); k++)if (canceltime[k] == 'D'){j = (canceltime[k - 2] - '0') * 10 + canceltime[k - 1] - '0';break;} return j;}
person room[100];
client roomm[100];
int i,n;
char ti[100], begint[100];
void menu() {cout << setw(60)<<"a.订房" << endl;cout <<setw(60)<< "b.退房" << endl;cout << setw(60)<<"c.退出" << endl;
}
int regis() {int num;char ch,ch2[4];cout << "请选择房号(1-100 格式:xxx):";cin.getline(ch2,4);//以字符形式输入房号,以便存入文件,fstream housefile,file;housefile.open("存房号.txt", ios::app);//存入登记的房号file.open("酒店入住人员信息.txt", ios::app);if (!file){cout << "打开文件失败!";exit(0);}if (!housefile){cout << "打开文件失败!";exit(0);}file << "房号:"<<ch2;housefile << ch2<<"\n";//多存入一个换行符,格式整齐housefile.close();num=(ch2[0]-48)*100+(ch2[1]-48)*10+(ch2[2]-48);return num;//返回房号的整数,用于做数组下标
}
void order(person& p)
{char nam[20],ch[4];char  pret[100];fstream file;int num;file.open("酒店入住人员信息.txt", ios::app);if (!file){cout << "打开文件失败!";exit(0);}p.getnroomnum(i);cout << "请输入姓名:";cin >> nam;file <<"姓名:" <<nam<<" ";cin.ignore();p.getname(nam);cout << "请输入开房时间(格式:xxY(年) xxM(月) xxD(日);";cin.getline(begint,100);file <<"开房时间:"<< begint<<" ";p.getbegintime(begint);cout << "请输入预计订房时间(格式:xxY(年) xxM(月) xxD(日):";cin.getline(pret, 100);file <<"预计订房时间:"<< pret<<" ";file << '\n';file.close();p.getpretime(pret);cout << setw(60) << "你的信息为:" << endl;cout << setw(60) <<"房号:" << p.cnum() << endl;cout << setw(60) << "姓名:" << p.cname() << endl;cout << setw(60) << "开房时间:" << p.ctime1() << endl;cout << setw(60) << "预计订房时间:" << p.ctime2() << endl;
}
int irregis() {fstream delfile;int num;char information[100][100],ch2[4];cout << "请输入您的房号(1-100):";cin.getline(ch2,4);num = (ch2[0] - 48) * 100 + (ch2[1] - 48) * 10 + (ch2[2] - 48);int a = 0,c=0;while (c != 1){delfile.open("酒店入住人员信息.txt", ios::in);//判断输入的房号是否有效或是否有该客户信息,若输入错误,持续弹出输出界面。提供再次输入的机会if (!delfile){cout << "打开文件失败!";exit(0);}while (!delfile.eof()){delfile.getline(information[a], 100);if ((information[a][6]-'0') * 100 + (information[a][7]-'0') * 10 + (information[a][8]-'0') == num){c = 1;break;}a++;}if (c == 0){delfile.close();cout << "请输入正确的房号:";a = 0;cin >> num;}}delfile.close();return num;
}
void withdraw(client&q,person&p)
{fstream delfile,del2;char information[100][100] = { "0" }, information2[100][100] = { "\0" };delfile.open("酒店入住人员信息.txt", ios::in);if(!delfile){cout << "打开文件失败!";exit(0);}del2.open("酒店副本.txt", ios::out);//利用多文件,删除信息(删除的信息不复制)if (!del2){cout << "打开文件失败!";exit(0);}int a = 0;while (!delfile.eof()){delfile.getline(information[a], 100);if ((information[a][6] - '0') * 100 + (information[a][7] - '0') * 10 + (information[a][8] - '0') == n){p.getbegintime(information[a]);//把需要删除的信息存到类变量,起到了一一对应的作用,否则begintime无值a++;continue;}elsedel2 << information[a]<<"\n";a++;}int caltime(person&,client&);//计算消费时间int money;//额外消费cout << "请输入其他消费金额总额:";cin>>money;cin.ignore();q.inother(money);cout << "请输入退房时间(格式:xxY(年) xxM(月) xxD(日)):";cin.getline(ti, 100);q.incanceltime(ti);cout << setw(60) << "您的信息为:" << endl;cout<< setw(60) << "额外消费:"<<q.outother() <<"元"<< endl;cout<< setw(60) << "退房时间为:"<<q.outcanceltime() << endl;cout << setw(60) << "您的总消费金额:" << caltime(room[i], roomm[n]) + q.outother() << "元" << endl;;delfile.close();del2.close();delfile.open("酒店入住人员信息.txt", ios::out);char ch[4]="\0";if (!delfile){cout << "打开文件失败!";exit(0);}del2.open("酒店副本.txt", ios::in);if (!del2){cout << "打开文件失败!";exit(0);}a = 0;while (!del2.eof()){del2.getline(information2[a], 100);delfile << information2[a]<<"\n";a++;}del2.close();delfile.close();fstream f1,f2;//更新文件中的房号f1.open("存房号.txt", ios::in);f2.open("存房号副本.txt", ios::out);if (!f1){cout << "打开文件失败!" ;exit(0);}if (!f2){cout << "打开文件失败!"  ;exit(0);}while (!f1.eof()){f1.getline(ch, 4);if (((ch[0] - '0') * 100 + (ch[1] - '0') * 10 + ch[2] - '0')==n)continue;elsef2 << ch << "\n";}f1.close();f2.close();f1.open("存房号.txt", ios::out);f2.open("存房号副本.txt", ios::in);if (!f1){cout << "打开文件失败!";exit(0);}if (!f2){cout << "打开文件失败!";exit(0);}while (!f2.eof()){f2.getline(ch, 4);f1<< ch << "\n";}f1.close();f2.close();}
int caltime(person&p,client&c)
{int mon(int mo,int Feb);//计算每个月的天数int month, sum = 0, b = 28, d = 0, sumday=0;if (p.year() % 4 == 0 && p.year() % 100 != 0)//判断闰年平年b = 29;elseif (p.year() % 400 == 0)b = 29;month = p.rmonth();d=mon(month, b);for (month=month+1; month < c.remonth(); month++){sum=sum+mon(month, b);}sumday = d - p.rday() + 1 + sum + c.reday();cout << setw(60) << "您的消费时间为:" << sumday<< "天"<<endl;return sumday * 158;
}
int mon(int mo,int Feb)
{int sum = 0;switch (mo) {case 1:sum = 31; break;case 2:sum = Feb; break;case 3:sum = 31; break;case 4:sum = 30; break;case 5:sum = 31; break;case 6:sum = 30; break;case 7:sum = 31; break;case 8:sum = 31; break;case 9:sum = 30; break;case 10:sum = 31; break;case 11:sum = 30; break;case 12:sum = 31; break;}return sum;
}
void pri_house()
{char a[4];cout << "已经被选的房号:" << endl;fstream house;//打印出已经被选的房号名单house.open("存房号.txt", ios::in);if (!house){cout << "打开文件失败!";exit(0);}while (!house.eof()){house.getline(a, 4);cout<<a<<endl ;}house.close();
}
int main()
{cout << setw(79)<<"*****************欢迎光临******************"<<endl;cout<< setw(82) << "*****************请选择服务类型******************" << endl;void pri_house();void corresponding(person&);void menu();void order(person&);void withdraw(client&,person&);int irregis();//同下int regis();//输入房号作为数组名char choice;int j = 0;do {menu();cin.get(choice);cin.ignore();switch (choice){case 'a':pri_house(); i = regis(), order(room[i]); break;case 'b':n=irregis(),i=n,withdraw(roomm[n],room[i]),cout << "退房成功!欢迎下次光临!"<<endl; break;}} while (choice != 'C' && choice != 'c');}

简易酒店管理系统(c++)相关推荐

  1. SSM+酒店管理系统的设计和实现 毕业设计-附源码260839

    酒店管理系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...

  2. 这六大要素教会你挑选合适的酒店管理系统

    1 年前 随着社会经济的发展,以及市场经济的不断完善,酒店管理系统已经成为当代酒店业中不可或缺的管理辅助工具.那么面对市场上多种多样的酒店管理系统,我们又该怎样选择适合本酒店的管理系统呢?现在小编就带 ...

  3. (附源码)ssm华辰酒店管理系统 毕业设计 021206

    华辰酒店管理系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课 ...

  4. [计算机毕设]基于java的酒店管理系统系统设计与实现(项目报告+答辩PPT+源代码+数据库)

    项目报告 酒店管理系统的设计与实现 摘 要 中国经济近几年来取得蓬勃飞速发展,使得人民生活水平的要求和生活的质量有了很高的要求.因此人们对外出旅游和就餐的需求也越来越大.同时,随着我国科技水平的兴起和 ...

  5. (附源码)ssm华辰酒店管理系统 毕业设计021206

    华辰酒店管理系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课 ...

  6. 计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  7. 用C语言数组写的简易客房管理系统

    简易房客管理系统,用数组写的,学籍管理系统也可以参考. 大学C语言小学期作业. 有不对的谢谢大家指正,有什么问题可以评论. 开始先定义密码,账号,结构体以及各个函数名. 账号和密码可以自定义.## C ...

  8. 酒店管理系统的设计与实现(任务书+中期检查+PPT+论文)

    毕业设计(论文)任务书 第1页 毕业设计(论文)题目:酒店管理系统的设计与实现毕业设计(论文)要求及原始数据(资料):1.综合国内外酒店运营管理的情况:2.深刻反思现有的酒店管理的技术相关应用:3.深 ...

  9. Java项目:酒店管理系统(java+SSM+jsp+mysql+maven)

    源码获取:博客首页 "资源" 里下载! 主要技术:java springmvc  mybatis   mysql  tomcat js   jauery  jsp   log4j等 ...

最新文章

  1. iOS面试题整理---关键字!!!
  2. 来玩Play框架07 静态文件
  3. java创建描述文件,IT技术交流:Java 轻量级整合开发
  4. 如何让程序运行在所有CPU核心上
  5. java中的boolean_java中boolean的用法
  6. php xml 添加节点 出问题,PHP往XML中添加节点的方法
  7. 使用layui实现表格制作
  8. c语言程序设计实验结果与分析,C语言程序设计实验报告(7)
  9. k3s-(3)k3s-agent工作节点安装
  10. 据说是最健康的作息时间表
  11. 监听audio是否加载完毕
  12. 图片不超过200kb怎么调整?一分钟学会图片压缩到指定大小
  13. AlexNet分类Fashi-MNIST(Pytorch实现)
  14. MSN登录不了解决办法总结
  15. 德国转专业申请计算机,详细攻略:在德国,如何转学或转专业?
  16. 2016年Visual C++推荐图书125本
  17. 性能分析系列-小命令保证大性能
  18. 为什么决策树模型不考虑变量之间的共线性?
  19. python输入字符串并反序result_python字符串反转的四种方法详解
  20. k8s-Authorization鉴权

热门文章

  1. WT588F02B-8S(芯片代码C001_01)语音芯片在化妆品/保健品/食品行业保质期和使用期得应用解决方案
  2. 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5
  3. android脚本实现自动捉妖,一起来捉妖自动捉妖
  4. GDR(Gradual Decoding Refresh, GradualDecoder Refresh)
  5. Verilog学习笔记HDLBits——Shift Registers
  6. 利用冒泡法对10个数字进行排序
  7. java 节气_java计算某个日期是什么节气(24节气)
  8. imple-unpack---攻防世界
  9. LINUX:Ubuntu重装虚拟机后无法拖拽文件的解决方法
  10. 《计算机网络 自顶向下方法》答案(第八章)(重制版)