【Qt C++】简单的酒店管理系统

1.项目简介

写了个基于Qt C++的酒店管理系统,开发工具Qt Creater,数据库SQLIte。

主要功能模块包括:预约,登记,追加消费,退房,综合查询,查看今日房态。具体有些细节没实现(比如电话号判断,一些输入为空什么的),感觉没必要写了这个项目主要为了实现主要功能。

主要技术为Qt C++一些控件使用,ui设计,qss样式表,数据库增删改查,多表联查,没用model。

开发环境:qt6.5.2。

源码去【Qt C++】酒店管理系统_哔哩哔哩_bilibili三连加私信。

2.数据库设计

一共四个表

1.room表

roomNumberroomTyperoomDepictpricestatus
text主键texttextintergertext

房间号,101,201,301...

房间类型,单人房,双人房,套房

房间描述,单人房的是:一张床、书桌、衣柜和卫生间

价格,100,200,300(一天)

状态,无人入住,有人预约,有人入住

2.appointment表

appointmentIdnameIDNumberphoneNumberappointmentDateroomNumber
interger主键texttexttexttexttext

预约id,姓名,身份证号,电话号,预约时间,房间号

3.customer表

customerIDnamesexIDNumberphoneNumberroomNumberdateOfArrivaldODcons
interger主键texttexttexttexttextdatedateinterger

外键roomNumber

4.recordCustomer表

字段和customer表一样

3.项目内容介绍

1.登录界面

主体为stackedWidget,构造函数中默认登录界面 
    ui->stackedWidget->setCurrentIndex(0);

登录没什么好写的,基本就是数据库存账号密码,这里图简单账号密码写死。

2.服务选择界面

主要功能在“酒店管理”按钮里,“系统设置”没写。

3.预约

预约功能三个槽函数,重置按钮和下拉框比较次要,主要在预约按钮。

预约按钮:填完预约信息后点击,首先根据roomNumber在room表里查改roomNumber的status,如果为“有人预约”或“有人入住”,提示预约失败(已被预约和入住的房间当然无法预约),如果为“无人入住”,判断预约时间,小于当前日期提示“预约时间输入有误”(防止前台不小心输错)。以上两点都通过则提示预约成功,将该输入信息插入appointment表,并在room表更新本次预约roomNumber的status为“有人预约”,更新“今日房态”的房间颜色。

重置按钮:清空所有lineEdit的输入信息,dateEdit设置为当前日期。

返回按钮:返回选择服务界面。

房间号的lineEdit有个槽函数textChanged,文本变化时根据输入房间号comboBox显示对应房间类型(101,单人房)。

4.登记

查询预约情况按钮:如果客户是预约后来酒店登记的情况。只输入姓名在appointment表查询信息,查到输入的姓名,说明有先前预约,将查到信息放在当前页面各个lineEdit里。没查到提示“该顾客没有之前的预约”。

登记按钮: 先根据输入姓名查询appointment对应的IDNumber,和登记上输入的身份证号比较,如果身份证号不一样,说明是重名人来登记的(预约查询的是相同名字的其他人的预约,毕竟身份证不会出现一样的),提示“该房间有人预约”,要换个房间查房间状态。其他类似预约按钮,查房间状态,查输入入住日期和离店日期是否合法。登记成功后,插入customer表,跟新room表房间状态,如果更新“今日房态”的房间颜色,appointment表删除本次登记roomNumber的预约(如果有预约就删除了,没预约sql语句执行失败)。

5.追加消费

 确认按钮:首先在room表查询所输入房间号的房间状态,如果不为“有人入住”,说明房间号不小心输入错误,提示“追加消费失败”。否则,计算输入的“商品消费”和“损坏赔偿”的和,修改customer表对应roomNumber的consume(本次计算的和+consume原来的数值)。

6.退房

核实信息按钮:输入房间号,将查询的信息显示在各个lineEdit。

 //多表联查
    QString str = QString("select * from customer join room using(roomNumber) where roomNumber = '%1'").arg(roomNumber);

其中总价计算

//房间单价
quint16 price = q.value(11).toInt();
//天数 计算
quint16 day = departureDate.right(2).toInt() - arriavlDate.right(2).toInt() ;
//总价 计算
quint16 consume = day * price + otherconsume;

 退房按钮:customer表更新consume,将这条信息插入到recordCustomer表,删除customer表这条信息,跟新room表房间状态,跟新今日房态房间颜色,

7.综合查询

 查询按钮:输入姓名或房间号都可查询全部信息,姓名lineEdit为空执行房间号查询,不为空执行姓名查询,将查询的信息显示到各个lineEdit。

 QString name = ui->letEName->text();
 QString roomNumber = ui->letERoomNumber->text();
 QSqlQuery q;
 //多表联查
 QString str1 = QString("select * from customer join room using(roomNumber) where name = '%1'").arg(name);
 QString str2 = QString("select * from customer join room using(roomNumber) where roomNumber = '%1'").arg(roomNumber);

8.查看今日房态

showRoomStatus()函数,每次调用,查询room表各个房间的状态,对应的label显示不同颜色。 

  • 32
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值