酒店管理系统代码
酒店管理系统c语言程序设计

酒店管理系统c语言程序设计以下是一个简单的酒店管理系统的 C 语言程序设计示例,包括了客户入住、退房和查询房间状态等基本功能。
请注意,这只是一个简化的示例,实际的酒店管理系统可能需要更多的功能和复杂的逻辑。
```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_ROOMS 100#define MAX_CUSTOMERS 100// 房间结构体struct Room {int roomNumber;int isOccupied;int customerID;};// 客户结构体struct Customer {int customerID;char customerName[50];};// 房间列表struct Room rooms[MAX_ROOMS];// 客户列表struct Customer customers[MAX_CUSTOMERS];// 初始化房间列表void initRooms() {for (int i = 0; i < MAX_ROOMS; i++) {rooms[i].roomNumber = i + 1;rooms[i].isOccupied = 0;rooms[i].customerID = 0;}}// 初始化客户列表void initCustomers() {for (int i = 0; i < MAX_CUSTOMERS; i++) {customers[i].customerID = i + 1;strcpy(customers[i].customerName, "Customer");}}// 查找空闲房间int findFreeRoom() {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].isOccupied == 0) {return i;}}return -1;}// 客户入住void checkIn(int customerID, int roomNumber) {int freeRoom = findFreeRoom();if (freeRoom != -1) {rooms[freeRoom].isOccupied = 1;rooms[freeRoom].customerID = customerID;printf("Customer %d checked in to Room %d\n", customerID, roomNumber); } else {printf("No free rooms available\n");}}// 客户退房void checkOut(int roomNumber) {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].roomNumber == roomNumber && rooms[i].isOccupied == 1) { rooms[i].isOccupied = 0;rooms[i].customerID = 0;printf("Customer checked out of Room %d\n", roomNumber);return;}}printf("Room not found\n");}// 查询房间状态void viewRoomStatus(int roomNumber) {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].roomNumber == roomNumber) {if (rooms[i].isOccupied == 1) {printf("Room %d is occupied by Customer %d\n", roomNumber, rooms[i].customerID);} else {printf("Room %d is vacant\n", roomNumber);}return;}}printf("Room not found\n");}// 主函数int main() {initRooms();initCustomers();int choice;while (1) {printf("1. Check In\n2. Check Out\n3. View Room Status\n4. Exit\n"); scanf("%d", &choice);switch (choice) {case 1:int customerID, roomNumber;printf("Enter customer ID: ");scanf("%d", &customerID);printf("Enter room number: ");scanf("%d", &roomNumber);checkIn(customerID, roomNumber);break;case 2:printf("Enter room number: ");scanf("%d", &roomNumber);checkOut(roomNumber);break;case 3:printf("Enter room number: ");scanf("%d", &roomNumber);viewRoomStatus(roomNumber);break;case 4:exit(0);break;default:printf("Invalid choice\n");}}return 0;}```上述代码实现了一个简单的酒店管理系统,包括客户入住、退房和查询房间状态等功能。
酒店管理系统源码前台流程文档

本源码下载地址:/ 酒店管理系统前台流程文档流程图目录DT_CKGL 常来客管理 (Form) (共 1 页)DT_CKLB 由常来客登记时的列表 (Form) (共 1 页)DT_KFHF 客房换房 (Form) (共页)DT_KFFP 派房 (Form) (共 1 页) 1999.04.12DT_KRDJ 客人登记 (Form) (共页)DT_KRGL 客人管理 (Form) (共 1 页)DT_MAIN 前台接待主菜单 (Form) (共 3 页)DT_SFDJ 散客无预订登记 (Form) (共 1 页)DT_SYDJ 散客有预订登记 (Func) (共1 页)DT_TDGL 团队管理 (Form) (共 1 页) 1999.04.12DT_TDDJ 团队登记 (Form) (共页)DT_TFDJ 团队无预订登记 (Form) (共 1 页) 1999.04.12DT_TYDJ 团队有预订登记 (Func) (共1 页) 1999.04.12DT_WGCGL 外管处数据管理 (Form) (共 2 页) 1999.04.12DT_YDLB 由预订登记时的列表 (Form) (共 1 页) 1999.04.12DT_ZCKBZ 早餐卡标准设定 (Form) (共 2 页)DT_ZCKCX 免费早餐卡查询 (Form) (共 1 页) 1999.04.12PUB_FJFL 将字符串转换到数值数组 (Func) (共 1 页) 1999.04.12PUB_JOIN 将数值数组转换到字符串 (Func) (共 1 页) 1999.04.12PUB_ZHPD 判断帐号合法性 (Form) (共 1 页)ZW_SJK 确定帐号使用的帐首及帐首归档表名 (Func) (共 1 页)ZW_ZHQR 前台帐务客帐结算时检查对方帐号的合法性,并输出对应数据库 (Func) (共 1 页)PUB_YDEN 预订单归档 (Func) (共页)系 统 名:大连国际博览中心酒店管理系统模块名称:DT_MAIN.FRM (前台接待主菜单)说 明:建立前台接待系统的主菜单输入 处理 输出主菜单为 1.预定管理 2.住客管理 3.信息查询 4.打印报表 5.日常业务 6.退出各菜单明细说明1.预订管理预订管理 pub_ydgl会议预订 pub_hyyd预订等待 pub_wait2.住客管理散客管理 dt_krgl团队管理 dt_tdgl换房 dt_kfhf并房错误 dt_hfccl赃房修改 kf_zfxg3.信息查询预订单查询 pub_ydll预订档案查询 pub_ydda 在店团队查询 pub_ztcx离店团队查询 pub_ztda 在店客人查询 pub_zkcx 离店客人查询 pub_zkda 客房出租率查询 pub_kfzl 写字间出租情况 pub_xzj 长包房出租情况 pub_cbf日期:1999/03/11 制作人: 梁 卫 共 3 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_MAIN.FRM (前台接待主菜单)说 明:建立前台接待系统的主菜单输入 处理 输出住客住房情况查询 pub_zkzf房价查询 pub_fjcx房态查询 pub_ftcx with "00",0,""房态形象查询 pub_ftxx客房利用查询 pub_lycx with "SY",date(),date()+365,""本地同行住客情况 pub_ther早餐卡数据查询 dt_zckcx外管处数据查询 dt_wgccx免费房数据查询 dt_zkfcx分段折扣率查询 dt_zkfdc特殊房数据查询 dt_tsfcx双人间住单人查询 dt_srfcx当日电话费查询 pub_chcx历史电话费查询 pub_chda客人等级查询 kf_vip4.打印报表外宾分析打印 dt_wbbdy宾客国籍统计表 dt_zkgj客房营业报打印 dt_kfyyb客房出租预报打印 dt_czyc客房出租情况月报 dt_czyb预订未达、取消 dt_ydwq住客报告表 dt_zsdy日期:1999/03/11 制作人: 梁 卫 共 3 页 第 2 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_MAIN.FRM (前台接待主菜单)说 明:建立前台接待系统的主菜单输入 处理 输出5.日常事务常来客管理 pub_ckgl早餐卡领用 dt_zck with "领用","",0早餐卡发放 dt_zck with "发放","",0客房预留数 pub_kfyl操作员密码 pub_psw早餐卡标准 dt_zckbz预报数据登记 dt_lszk订房方式设置 jf_dffs with 6,30,"YD_DFFS",1抵达方式设置 jf_dffs with 6,30,"YD_DDFS",1特殊服务设置 jf_dffs with 6,30,"YD_TSFW",1订房员补记 dt_xgdfy外管处信息不全的客人 dt_krwgc新旧帐号对照表 zw_gdtx7.退出日期:1999/03/11 制作人: 梁 卫 共 3 页 第 3 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_ZCKBZ.FRM (早餐卡标准)说 明:用于输入早餐卡标准及餐厅和客房部门分担额输入 处理 输出单击菜单《早餐卡标准》按 F2 键或单击<增加>按钮 按 F3 键或单击<修改>按钮 按 F4 键或单击<删除>按钮按 F5 键或单击<打印>按钮 0.显示早餐卡标准列表界面1.激活编辑界面2.输入早餐卡标准 m_zck_bz若为增加; 直接键入早餐卡标准 m_zck_bz(条件;> = 0 的数字), 转 3;修改; 键入 m_zck_bz 后, 在 DT_ZCKBZ 表中查找满足条件的记录并显示, 转3;删除; 键入 m_zck_bz 后, 在 DT_ZCKBZ 表中查找满足条件的记录并显示, 转4;3.增加和修改时, 键入客房分担额 m_fd_kf((条件;> = 0 且< = m_zck_bz 的数字),餐厅分担额 m_fd_ct = m_zck_bz - m_fd_kf4.如果选择<确定>若为增加; 增加记录到 DT_ZCKBZ 表中, 转 5.若为修改; 修改DT_ZCKBZ表中 ZCK_BZ = m_zck_bz 的记录, 转 5.若为删除; 删除DT_ZCKBZ表中 ZCK_BZ = m_zck_bz 的记录, 转 5.如果选择<退出> 转 4.5.置录入界面为非激活状态, 激活早餐卡标准列表界面,转 06.列表打印常来客信息, 转 0;日期:1999/03/11 制作人: 梁 卫 共 2 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_ZCKBZ.FRM (早餐卡标准)说 明:用于输入早餐卡标准及餐厅和客房部门分担额输入 处理 输出按 F6 键或单击<筛选>按钮 按 F9 键或单击<刷新>按钮 按 Esc 键或单击<退出>按钮 7.激活筛选条件窗口, 键入筛选条件 tx_zck_bz , 按 Return 键按照筛选条件重新显示列表窗口; 转 0 ;8.按照筛选条件重新显示列表窗口; 转 0 ;9.退出;日期:1999/03/11 制作人: 梁 卫 共 2 页 第 2页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_KRGL.FRM (客人管理)说 明:完成客人明细显示, 客人修改,客人有预订登记, 客人无预订登记, 同住登记输入 处理 输出1.建立浏览窗口, 在窗口中浏览表 DT_KRQD 中的内容;2.按空格键或单击<明 细>按钮: 调用: DT_KRDJ ; 转 1 ;按 F3 键 或单击<修 改>按钮: 调用: DT_KRDJ ; 转 1 ;按 F7 键 或单击<无预订>按钮: 调用: DT_SFDJ ; 转 1 ;按 F8 键 或单击<有预订>按钮: 调用: DT_SYDJ ; 转 1 ;按 F10 键 或单击<同 住>按钮: 调用: DT_KRDJ ; 转 1 ;按 F9 键 或单击<刷 新>按钮: 刷新当前界面; 转 1 ;按 Esc 键 或单击<退 出>按钮: 转3;3.退出日期:1999/03/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_TDGL.FRM (团队管理)说 明:完成团队明细显示, 团队修改,团队有预订登记, 团队无预订登记输入 处理 输出1.建立浏览窗口, 在窗口中浏览表 DT_TDQD 中的内容;2.按空格键或单击<明 细>按钮: \\调用: DT_KRDJ ; 转 1 ;按 F3 键 或单击<修 改>按钮: 调用: DT_TDDJ ; 转 1 ;按 F7 键 或单击<无预订>按钮: 调用: DT_TFDJ ; 转 1 ;按 F8 键 或单击<有预订>按钮: 调用: DT_TYDJ ; 转 1 ;按 F9 键 或单击<刷 新>按钮: 重新刷新当前界面; 转 1 ;按 Esc 键或单击<退 出>按钮: 转 3;3.退出日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_SFDY.FRM (散客无预订登记)说 明:用于进行无预订客人的登记输入 处理 输出1.定义变量SFDJ_YZRQ(预入住日),SFDJ_YLRQ(预离店日),SFDJ_YZRQ为本日日期, SFDJ_YLRQ清空;定义数组SFDJ_DFFLS(SYS_LXN)(订各类房数),清0;2.录入住客类型(m_zklx)若m_zklx=SYS_TDLX,录入相应的团队号及名称,入住人数,预离店日,各种房类的房间数3.调用SFDJ_FREEFT=PUB_FREE(参数:SFDJ_RZRQ,SFDJ_LDRQ,SFDJ_DFFLS,M_ZKLX,PUB_CODE);如果SFDJ_FREEFT=.F.,调用=PUB_SYKF 显示客房利用情况表的剩余房源情况;转4如果SFDJ_FREEFT=.T.,调用: PUB_KFTJ 修改客房利用情况表(KF_KFLY);调用DT_KRDJ 进行客人登记 ;4.返回;日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_SYDJ.FRM (散客有预订登记)说 明:有预订散客的登记卡登记输入 处理 输出1.输入预定单号, SYDJ_YDH=键入的预订单号, 令 SYDJ_LEN=SYS_SKQZ 的长度,若 SYDJ_YDH 的前 SYDJ_LEN位不包含于 SYS_SKQZ中, 转 8;2.定义变量 SYDJ_RZRQ(日期型), 置初值;调用 SYDJ_OK=PUB_YDDQ(SYDJ_YDH);如果 SYDJ_OK=.F., 转 8;如果 SYDJ_OK=.T., 若 SYDJ_RZRQ>DATE(), 显示:"客人的入住日期比预来店日期提前,请作为无预订散客处理!"; 转 8;3.定义数组 SYDJ_FLS(SYS_LXN), 并置初值; SYDJ_RZRQ=DATE();4.将 YD_YDDK.DBF 中 YDD_H=SYDJ_YDH 的记录的字段值赋给对应的变量;SYDJ_LKRQ=LKRQ, SYDJ_ZKLX=ZKLX, SYDJ_RS=KR_RS;5.调用=PUB_FLHJ(参数:"YD_YDDK",SYDJ_FLS,PUB_CODE);6.调用 PUB_KRDJ(参数:SYDJ_YDH, "", "", SYDJ_RZRQ, SYDJ_LKRQ, SYDJ_FLS,SYDJ_ZKLX, SYDJ_RS, PUB_CODE );7.调用 SYDJ_RS=PUB_YDEN(参数:SYDJ_YDH,PUB_CODE);如果 SYDJ_RS=.F., 显示错误信息, 转 8;8.返回;日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_TYDJ.FRM (团队有预订登记)说 明:用于团队有预订登记输入 处理 输出1.输入预定单号, 调用 PUB_YDDQ(参数:预订单号)确认预订单,如果未确认, 转6;如果确认, 若 TYDJ_RZRQ>DATE(), 显示:"该团队预订来店日期不是今天, 请作为无预订团队处理!"; 转 6;2.生成一个团队号,a.M.ZH="C"+"001",b.在 DT_TDQD.DBF 中查找是否有该团队号,若存在, 团队号变量加 1,如果团队帐号>"C999",显示"团队号超出系统的限额,通知管理人员";转 8;否则, 转 b;若不存在, 转 3;3.(1)在 DT_TDQD.DBF中追加一条空记录, 把对应预订单中当前记录的内容赋值给对应的字段;⑵把 YD_TDJC.DBF 中该预订单的记录添加到DT_TDJC.DBF 中, 同时把YDD_H 字段用团队帐号替换;⑶建立团队帐页表;4.调用 DT_TDDJ 参数团队帐号,”1”, PUB_CODE;5.调用=PUB_YDEN(参数:预订单号,PUB_CODE);6.返回;日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_TFDJ.FRM (团队无预订登记)说 明:用于团队无预订登记输入 处理 输出1.生成一个团队号,⑴M.ZH="C"+"001"⑵在 DT_TDQD.DBF中查找是否有该团队号,若存在, 团队号变量加1,如果团队帐号>"C999",显示"团队号超出系统的限额,通知管理人员";转 4;否则, 转⑵;若不存在, 转2;2.输入离店时间及各种客房类型;3.调用 PUB_FREE(参数:入住日,离店日,TFDJ_FLS,PUB_CODE), 判断是否可以入住;若不可以入住:调用 PUB_SYKF(参数:入住日,离店日,订房房类数,功能代码);转 4;若可以入住:调用: =PUB_KFTJ(参数:入住日,离店日,订房房类数,入住日,离店日,订房房类数,团队住客类型,功能代码);在 DT_TDQD.DBF 中追加一条记录, 并给各字段赋值;为团队建立帐页表;调用 DT_TDDJ(参数:"",团队号,”1”,功能代码);4.返回;日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:PUB_ZHPD.FRM (帐号判断)说 明:本功能模块是为了查找确认输入帐号的合法性输入 处理 输出CS_tbname 帐号表名 CS_zh 帐号 1. 在指定的表 CS_tbname 中显示该记录的内容:①如果 CS_zh 的首位为 SYS_SK中的数字字符或等于 SYS_TZYSK显示: 帐号: ZH , 客人姓: KR_X , 客人名: KR_M ,国籍: KR_GJ , 证件号码: KR_ZJHM , 定金 : KR_DJ ,消费金额: ZXFE , 余额: YE②如果 CS_zh 的首位为 SYS_TD显示: 团队号: ZH , 团队名称: TD_MC , 定金: KR_DJ ,消费金额: ZXFE , 余额: YE③如果 CS_zh 的首位为 其它显示: 帐号: ZH , 单位名称: DW , 定金 : KR_DJ ,消费金额: ZXFE , 余额: YE④显示: "是该客人否 ?"2. 返回窗口属性 ZHPD_FT如果确认,ZHPD_FT = True否则,ZHPD_FT = False日期:1999/03/16 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_ZCK.FRM (早餐卡领用, 发放和回收)说 明:用于记录每笔早餐卡领用,发放和回收的数量输入 处理 输出CS_zck_id 表示”领用”,”发放”,”回收” CS_zdh_in 帐单号 1.把 PUBLIC 库DT_ZCKBZ 表中的标准增加至本地库HOTEL 的 DT_ZCK表中2.显示窗口a.若 CS_zc_id=”发放”或 CS_zc_id=”回收”,显示 m_dfzh, 否则, 不显示b. DT_ZCK的列表显示,c.各字段的编辑控件3.按”Esc”键, 转 6;4.若 CS_zc_id=”发放”或 CS_zc_id=”回收”, 键入m_dfzh,,并判断其合法性;若合法, 转 5; 否则, 转 4;5.在列表显示上,按 Return 键, 激活 数量(m_fssl)及备注(m_fsbz) 的编辑窗口 键入 m_fssl, m_fsbz若按 “确定” , 把当前记录保存到 DT_ZCK 表中;转5;若按 “退出” , 转 5;6.按”Esc”键a.把指针移至 DT_ZCK 表中的第一条记录b.若没到表尾,转 c;否则, 转 7;c.若 FSSL=0,转 d;若 FSSL<>0,调用 PUB_CZLS;把当前记录追加至早餐卡归档表中(“ZC”+YYYY);修改 DT_KRQD 中 MFZC_FT = 1 条件;ZH = m_dfzh;调用 PUB_CZLE;转 d;d.移到下一条记录;7.返回;日期:1999/03/16 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_CKGL.FRM (常来客管理)说 明:用于管理常来客信息(增加, 修改, 删除, 打印, 刷新, 筛选等)输入 处理 输出单击菜单《常来客管理》按 F2 键或单击<增加>按钮 按 F3 键或单击<修改>按钮 按 F4 键或单击<删除>按钮按 F5 键或单击<打印>按钮 按 F6 键或单击<筛选>按钮 按 F9 键或单击<刷新>按钮 按 Esc 键或单击<退出>按钮 0.显示常来客信息列表界面1.激活编辑界面2.输入常来客信息字段, 并进行合法性检验3.如果选择<确定>若为增加; 增加记录到 DT_CKQD 表中, 转 4.若为修改; 修改DT_CKQD表中 XH = m_xh 的记录, 转 4.若为删除; 删除DT_ZCKBZ表中 ZCK_BZ = m_zck_bz 的记录, 转 4.如果选择<退出> 转 4.4.置录入界面为非激活状态, 激活常来客列表,转 05.列表打印常来客信息, 转 0;6.激活筛选条件窗口, 键入筛选条件 tx_zck_bz , 按 Return 键按照筛选条件重新显示列表窗口; 转 0 ;7.按照筛选条件重新显示列表窗口; 转 0 ;9.退出;日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_ZCKCX.FRM (早餐卡查询)说 明:用于按年月查询免费早餐卡的领用, 发放和回收的数量输入 处理 输出生成功能代码, PUB_CODE=PUB_CODE("DT_ZCKCX"), 并进行权限检测;1.显示年,月,显示条件及显示满足条件的记录列表, 按类别分月求和的列表;.显示条件: 全部显示, 发放, 领用, 回收;.列表内容: 日期 ,房间号, 领用 , 发放 , 回收 , 操作员 ,备注FSRQ ,KF_FH,ZCK_LYSL,ZCK_FFSL,ZCK_HSSL,USER_CODE, BZ脚注 : ZCK_LYSL,ZCK_FFSL,ZCK_HSSL 统计合.分月求和内容: 年, 月, 领用 , 发放 , 回收YER,MON,ZCK_LYSL,ZCK_FFSL,ZCK_HSSL脚注 : ZCK_LYSL,ZCK_FFSL,ZCK_HSSL 统计合2.按条件显示 Zcyyyy 表中的内容;列表显示满足条件的记录; 分月求和列表显示该年度按类别分组求和的信息;设置筛选条件:键盘输入年 m_year:C:2(yy),月份 m_month:C:2(mm)若 m_month 的串长 = 2, 查询日期: 为当年当月;若 m_month的串长 = 0, 查询日期: 为当年;按 m_year,m_month筛选 ZCyyyy 中 FSRQ 为该年月的记录附加条件:如果选<全部>, ZCK_LYSL <> 0, 转 3;如果选<发放>, ZCK_FFSL <> 0, 转 3;如果选<回收>, ZCK_HSSL <> 0, 转 3;如果选<领用>, ZCK_HSSL <> 0, 转 3;如果按 ESC 键, 转 3;3. 返回日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_KRDJ.FRM (前厅接待处的客人登记)说 明:用于进行散客有预订登记, 散客无预订登记, 团队有预订登记, 团队无预订登记, 客人登记修改, 客人登记显示, 同住登记等输入 处理 输出日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:ZW_SJK 函数 (确定帐号对应的帐首及帐首归档表名)说 明:用于确定帐号对应的帐首及帐首归档表名输入 处理 输出t_zh 帐号t_zhk 帐首表名t_gdk 帐首归档表名 t_fsrq 发生日期t_zhxz 帐号性质 1. 在 ZW_ZHK 表中查找 ZH_SW=t_zh 首位的记录如果没找到,提示:"输入的帐号不合法 !",返回否则,t_zhk = ZH_K1, t_gdk = GD_QZ + year(t_fsrq), t_zhxz=ZH_XZ2. 返回;t_zhk 帐首表名t_gdk 帐首归档表名t_zhxz 帐号性质日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:ZW_ZHQR 函数 (用于前台帐务客帐结算时检查对方帐号的合法性,并输出对应数据库)说 明:用于前台帐务客帐结算时检查对方帐号的合法性,并输出对应数据库输入 处理 输出t_zh -- 帐号t_yn -- 是否确认帐户t_zhk -- 帐号的帐首表名 t_gdk -- 帐号的归档表名 t_ft -- 是否存在帐户t_fsrq -- 发生日期 1. T_ZHXZ=" "2. 调用: ZW_SJK(t_zh,t_zhk,t_gdk,t_fsrq,t_zhxz)3. 如果 t_zh 不为空值或 t_zhk 不为空值在表t_zhk 中查找 ZH=t_zh 的记录如果找到,则t_ft=.T.调用: PUB_ZHPD(t_zhk,t_zh,t_yn)4. 返回(全部传地址)t_zhk--帐号的帐首表名t_gdk--帐号的归档表名t_yn --是否确认帐户(帐号判断的返回值PUB_ZHPD())t_ft -- 是否存在帐户日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_KFFP.FRM (派房)说 明:用于显示满足条件的可卖房, 为客人分配客房, 包括有预定和无预定的两种输入 处理 输出按Enter键或单击<选中>按钮 按 Esc 键 1.显示客房派房窗口内容:a. 客房类型 (KFFP_LXN) 客房楼层 (KFFP_KFLC)接收变量 KFFP_LXN(范围 0--SYS_LXN),KFFP_KFLC;判断: 若 KFFP_KFLC 为空, 忽略楼层;若 KFFP_LXN=0 或空串, 忽略类型;b.浏览 KF_FTK 中满足条件的记录的控件控件内容: KF_FH 客房房号 KF_LX 客房类型条件是 : 房态是可卖房即.NOT.(KF_ZR .OR. KF_ZF .OR. KF_GZ .OR. KF_NB .OR. KF_WX)附加条件: KF_FTK.KF_FH 的前两位=tx_kflc (tx_kflc 不为空) 并且KF_FTK.KF_LXN=tx_kflx_dm (tx_kflx_dm 不为 0 AND tx_kflx_dm<=SYS_LXN)注: 控件内容可滚动, 回车为选择所需要的房号;2.返回当前记录的KF_FH; 转 3;3.返回;选中时: KF_FH未选中: 空串日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_KFHF.FRM (客房换房)说 明:用于客人更换房间输入 处理 输出日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_CKLB.FRM (常来客列表)说 明:用于由常来客登记时的列表显示输入 处理 输出Xh=0(设置初始值)按 F6 键或单击<筛选>按钮按Enter键或单击<选中>按钮 按 Esc 键或单击<退出>按钮 1.显示常来客信息窗口表名: DT_CKQD内容: KR_X(中文姓), KR_M(中文名), YW_X(外文姓), YW_M(外文名),KR_XBMC(性别) ,GJMC(国籍);及筛选条件(KR_X, KR_M, YW_X, YW_M, GJMC)注 : 按 Enter 键, 为选中; 按 F6 键 为筛选;2.激活筛选条件录入界面, 录入筛选条件;按照筛选条件, 显示DT_CKQD表中满足条件的记录;(当筛选内容全部为空时, 则显示表中的全部记录)3.返回当前选中的常来客的序号(XH);转 4;4.返回;选中时:当前记录的 XH未选中:XH=0日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_YDLB.FRM (预订单客人列表)说 明:用于由预订客人登记时的列表显示输入 处理 输出Xh=0(设置初始值)按Enter键或单击<选中>按钮 按 Esc 键或单击<退出>按钮 1.显示常来客信息窗口表名: YD_KRQD内容: KR_X(中文姓), KR_M(中文名), YW_X(外文姓), YW_M(外文名),KR_XBMC(性别) ,GJMC(国籍), LSH(流水号);注 : 按 Enter 键, 为选中2.返回当前选中的预订客人的流水号(LSH);转 3;43.返回;选中时:当前记录的 LSH未选中:LSH=0日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_WGCCX.FRM (外管处数据查询)说 明:用于输入 处理 输出日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:PUB_JOIN ()说 明:用于将客人,团陪,地陪房类数/房价转存到对应串中输入 处理 输出t_hj 房类数的数组t_ws 字符串分割的位数 t_code 功能代码 1. 从 1 到 SYS_LXN , 将 t_hj (i) 按照t_ws 长依次将串连接到 PUB_JOIN ;2.返回 PUB_JOIN;日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:PUB_FJFL ()说 明:将字符串转换到数值数组输入 处理 输出t_hj(返回) 房类数(数组) t_stfls 待转变字符串t_ws 每段的宽度t_code 功能代码 1. 将 t_stfls 依次按每段长度为 t_ws 将各段子串转成数值, 依次赋给 t_hj(段序);2. 正常返回;返回值: t_hj日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1页系 统 名:大连国际博览中心酒店管理系统模块名称:PUB_YDEN (预订单归档)说 明:用于解除预订, 有预订散客登记, 有预订团队登记时的预订单归档输入 处理 输出日期:1999/04/12 制作人: 梁 卫 共 1 页 第 1 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_WGCGL.FRM (外管处数据管理)说 明:用于录入, 修改, 打印及生成外管处数据输入 处理 输出单击菜单《外管处数据管理》 按 F2 键或单击<增加>按钮按 F3 键或单击<修改>按钮按 F4 键或单击<删除>按钮按 F5 键或击<打印>按钮 0.显示外管处数据列表界面1.激活编辑界面2.编辑当前记录字段;3.按<确定>, 增加记录至 DT_WGJK 表中; 转 0;按<退出>, 转 0;4.修改当前编辑字段;5.按<确定>, 用新键入的内容刷新 DT_WGJK 表中的当前记录; 转 0;按<退出>, 转 0;6.显示要删除的记录内容;7.按<确定>, 删除 DT_WGJK 表中的当前记录; 转0;按<退出>, 转 0;8.列表打印外管局信息, 转 0;9.激活筛选条件窗口, 键入筛选条件 tx_zck_bz , 按 Return 键按照筛选条件重新显示 列表窗口; 转 0 ;日期:1999/04/12 制作人: 梁 卫 共 2 页 第 1页 系 统 名:大连国际博览中心酒店管理系统模块名称:DT_WGCGL.FRM (外管处数据管理)说 明:用于录入, 修改, 打印及生成外管处数据输入 处理 输出按 F8 键或单击<文件生成>按 钮按 F9 键或单击<刷新>按钮按 Esc 键或单击<退出>按钮 10.生成一文本文件;11.重新刷新界面;12.退出;日期:1999/04/12 制作人: 梁 卫 共 2 页 第 2 页系 统 名:大连国际博览中心酒店管理系统模块名称:DT_TDDJ.FRM (团队登记)说 明:用于在有预订, 无预订及修改时的团队登记输入 处理 输出日期:1999/03/11 制作人: 梁 卫 共 1 页 第 1 页。
啄木鸟酒店管理系统编码

啄木鸟酒店管理系统编码啄木鸟酒店管理系统是一个高效、便捷的酒店管理软件,为酒店业务提供了全方位的管理服务。
该系统以中文为基础语言,方便酒店工作人员的使用和了解。
下面将对该系统的编码特点进行详细介绍。
首先,啄木鸟酒店管理系统采用了全面的编码规范,保证了代码的可读性和可维护性。
系统的每个模块都经过详细的设计和测试,代码结构清晰,注释完善,使得开发人员能够快速理解和修改代码。
其次,啄木鸟酒店管理系统的编码过程中注重代码的可复用性。
系统中的各个功能模块都是相互独立的,可以单独进行测试和调整,方便后续的功能扩展和维护。
同时,系统还采用了面向对象的编程思想,使得代码的复用性更加高效。
再次,啄木鸟酒店管理系统在编码中注重了数据的安全性。
系统对用户的敏感信息进行了加密处理,确保数据的安全性和隐私性。
系统还采用了多层次的权限控制机制,保证只有授权的人员才能进行敏感操作,有效地减少了安全风险。
另外,啄木鸟酒店管理系统的编码过程中充分考虑了用户体验。
系统界面简洁明了,操作流程简单顺畅,让用户能够轻松上手使用。
系统还提供了多语言支持功能,使得不同国家和地区的用户都能够方便地使用该系统。
最后,啄木鸟酒店管理系统的编码过程中,注重代码的性能和效率。
系统利用缓存技术和优化算法,减少了数据库访问次数和网络传输量,提高了系统的运行速度和响应能力。
系统还采用了分布式架构,实现了系统的高可用性和负载均衡,保证了系统的稳定性和可靠性。
总之,啄木鸟酒店管理系统的编码过程中,充分考虑了代码的可读性、可复用性、数据安全性、用户体验和系统性能。
这些编码特点使得该系统成为一款功能完备、性能优良的酒店管理软件,为酒店业务提供了全面的管理服务。
对于未来的酒店管理软件开发和优化,这些编码特点具有重要的指导意义,值得借鉴和学习。
酒店管理系统代码

#include <windows.h〉#include <dos。
h>#include〈stdio.h〉#include〈stdlib。
h〉#include<time。
h〉//—-—-—-—-——--———---------————--—---—---—--——-———-——结构定义-————-—-——-----—--———-—-—-—--—-—--—————-—-typedef struct CheckinInformation{char name[10];//姓名int id;//证件号int roomType;//房型int countType;//计费方式}CheckinInfo;typedef struct HotelRoom{int roomType;//房型int roomNum;//房号int checked; //入住情况int price;//房价}Room;typedef struct RoomOrder{CheckinInfo *checkinInfo;//入住信息long date; //入住时间Room *room; //房间信息}Order;typedef struct HotelInfomation{int checkinAmount; //已入住房数int singleRemainAmount;//单人房剩余房数int doubleRemainAmount; //双人房剩余房数int bigRemainAmount; //大床房剩余房数}HotelInfo;//-—-—-——---————----—--——--——-—-——枚举类型——-—-——------—-———-—-—-——--enum {MainUI,HotelInfoUI,CheckinUI,CheckinResultUI,OrderUI,CheckOutUI,Exit};//GUI enum {Single,Double,Big};//Room Typeenum {Hour,Day};//countType//--——---—————--————-—--—---——-———全局变量-----—--———-—-—-—-——-—-——-int GUI = MainUI;Order*orderList[100];//订单数组Room* roomList[100];//房间数组HotelInfo * hotelInfo = NULL;//酒店房间信息//—————--—-—--——---——-—--—--——-——函数声明———--—-—--——--—————-——---——-void initiallizeRoomList();void insertToOrderList(Order * order);Room* getRoomByType(int roomType);Order*getOrderByRoomNum(int roomNum);void showMainUI();void showHotelInfoUI();void showCheckinUI();void showCheckinResultUI();void showOrderUI();void showCheckOutUI();//-——-—-——-—————--——---—-—————-——Main函数—--———-————-—-——-——---—--—--void main() //主函数{//初始化酒店房间信息hotelInfo = (HotelInfo *)malloc(sizeof(HotelInfo));hotelInfo -〉singleRemainAmount = 20;hotelInfo -〉doubleRemainAmount=40;hotelInfo -〉bigRemainAmount=40;hotelInfo -〉checkinAmount=0;//初始化房间列表initiallizeRoomList();//界面显示while(GUI != Exit){switch(GUI){case MainUI:showMainUI();break;case HotelInfoUI:showHotelInfoUI();break;case CheckinUI:showCheckinUI();break;case CheckinResultUI:showCheckinResultUI();break;case OrderUI:showOrderUI();break;case CheckOutUI:showCheckOutUI();break;default:break;}}}//-——---———-—--—-————-—--——-—————函数定义-——---——-—-—--—---—-———---——void initiallizeRoomList(){//房间数组初始化,初始化的结果是让roomList的数组有100个room指针,而且设置了相应的值int i;Room*newRoom=NULL;for(i=0;i<20;i++) //单人房房间信息初始化{newRoom = ( Room* )malloc(sizeof(Room));roomList[i]= newRoom;roomList[i]-〉checked=0;roomList[i]—〉price=110;roomList[i]—>roomNum=i+1;roomList[i]—>roomType=Single;}for(i=20;i<60;i++) //双人房房间信息初始化{newRoom = ( Room* )malloc(sizeof(Room));roomList[i] = newRoom;roomList[i]->checked=0;roomList[i]->price=180;roomList[i]—>roomNum=i+1;roomList[i]->roomType=Double;}for(i=60;i〈100;i++)//大床房房间信息初始化{newRoom = ( Room* )malloc(sizeof(Room));roomList[i] = newRoom;roomList[i]-〉checked=0;roomList[i]-〉price=180;roomList[i]-〉roomNum=i+1;roomList[i]—>roomType=Big;}}//通过所选择的房型获取空房间,获取房间后将房间信息改为已入住,并减少相应房型的剩余房间数Room*getRoomByType(int roomType){int i;switch(roomType){case Single:for(i=0;i〈20;i++){if(roomList[i]-〉checked == 0){roomList[i]->checked=1;hotelInfo—>singleRemainAmount -- ;hotelInfo-〉checkinAmount++;return roomList[i];}}break;case Double:for(i=20;i<60;i++){if( roomList[i]-〉checked == 0){roomList[i]—〉checked=1;hotelInfo—〉doubleRemainAmount —— ;hotelInfo—〉checkinAmount++;return roomList[i];}}break;case Big:for(i=60;i<100;i++){if(roomList[i]—>checked == 0){roomList[i]—〉checked=1;hotelInfo-〉bigRemainAmount --;hotelInfo—〉checkinAmount++;return roomList[i];}}break;}}//将订单放入订单列表void insertToOrderList(Order * order){int i;for( i = 0;i<100;i++){if( orderList[i] ==NULL ){orderList[i] = order;break;}}}//通过房号查询订单Order*getOrderByRoomNum(int roomNum){int i;for(i=0;i<100;i++){if(orderList[i]->room->roomNum == roomNum){return orderList[i];}}}void showMainUI(){//显示主界面,并接受输入int chooseNum;system(”cls");printf(”\n\n==========================酒店房间登记与计费管理管理系统=======================\t\n\n\n”);printf(”*\t\t\t\t1。
宾馆客房系统代码

第一页面中标签控件属性如下:Object Label1: TlabelLeft=57Top=78Width=36Height=12Caption='房间号'Object Label1: TlabelLeft=57Top=110Width=48Height=12Caption='客户姓名'Object Label1: TlabelLeft=57Top=142Width=48Height=12Caption='身份证号码'Object Label1: TlabelLeft=57Top=174Width=48Height=12Caption='入住时间'Object Label1: TlabelLeft=57Top=214Width=48Height=12Caption='入住理由'Object Label1: TlabelLeft=312Top=78Width=24Height=12Caption='房价'Object Label1: TlabelLeft=312Top=110Width=48Height=12Caption='住宿天数'Object Label1: TlabelLeft=312Top=142Width=48Height=12Caption='值班人员'Object Label1: TlabelLeft=312Top=174Width=48Height=12Caption='电话号码'Object Label1: TlabelLeft=312Top=214Width=48Height=12Caption='结算费用'Object Label1: TlabelLeft=224Top=24Width=120Height=20Caption='顾客入住登记'Font.Height=-20='宋体'第一页面中数据编辑类控件属性如下:Object DBEdit1: TDBEditLeft=129Top=79Width=121Height=20DataField='房间号' DataSource=Datasource1 Taborder=0Object DBEdit1: TDBEdit Left=129Top=111Width=121Height=20DataField='客户姓名' DataSource=Datasource1 Taborder=1Object DBEdit1: TDBEdit Left=129Top=143Width=121Height=20DataField='身份证号码' DataSource=Datasource1 Taborder=2Object DBEdit1: TDBEdit Left=129Top=175Width=121Height=20DataField='入住时间' DataSource=Datasource1 Taborder=3Object DBEdit1: TDBEdit Left=129Top=207Width=121Height=20DataField='入住理由' DataSource=Datasource1 Taborder=4Object DBEdit1: TDBEdit Left=129Top=79Width=121Height=20DataField='房价'DataSource=Datasource1Taborder=5Object DBEdit1: TDBEditLeft=382Top=111Width=121Height=20DataField='入住天数'DataSource=Datasource1Taborder=6Object DBEdit1: TDBEditLeft=382Top=143Width=121Height=20DataField='值班人员'DataSource=Datasource1Taborder=7Object DBEdit1: TDBEditLeft=382Top=175Width=121Height=20DataField='电话号码'DataSource=Datasource1Taborder=8Object DBEdit1: TDBEditLeft=382Top=207Width=121Height=20DataField='结算费用'DataSource=Datasource1Taborder=9第一页面中数据连接类控件属性如下:Object Table1: TtableActive=TureTableName=宾馆住宿系统.dbLeft=488Top=64Object DataSource1: TdataSourceDataSet=Table1Object DBNavigator1: TDBNavigatorLeft=184Top=224Width=240Height=25DataSource=DataSource1Flat=TrueTabOrder=10Procedure TForm1.Edit1Click(Sender:TObject); BeginEdit2.Text:=' 'Edit3.Text:=' ';End;Procedure TForm1.Edit2Click(Sender:Tobject); BeginEdit1.Text:=' 'Edit3.Text:=' ';End;Procedure TForm1.Edit3Click(Sender:Tobject); BeginEdit2.Text:=' 'Edit1.Text:=' ';End;执行按钮的程序代码如下:Procedure TForm1.Button1Click(Sender:Tobject); BeginTable1.refresh;With table1 doTryDisablecontrols;Filtered:=false;If edit1.text<>' ' then memo1.text:='客户姓名'+' ' ' '+edit1.text+' ' ' ';If edit2.text<>' ' then memo1.text:='房间号'+' ' ' '+edit2.text;If edit3.text<>' ' then memo1.text:='入住时期'+' ' ' '+edit1.text+' ' ' ';Filter:=memo1.text;Filtered:=true;FinallyEnablecontrols;If dbedit1.text=' ' then beginMessagebeep(1);Showmessage(' 没有符合条件的记录,请确认条件或放弃查询!');If messageDlg(' 是否继续查询?只有结束查询才能作其他操作!',mtinformation,[mbyes,mbno],0)=mrno then beginFiltered:=false;Table1.close;Table1.open;End;End else beginIf messageDlg('是否继续查询?只有结束查询才能作其他操作!',mtinformation,[mbyes,mbno],0)=mrno then beginFiltered:=false;Table1.close;Table1.open;End;End;End;End;第二页各个控件的属性描述如下:Object Tabsheet2: TtabsheetCaption=客房查询Object Labell2: TlabelLeft=215Top=10Width=114Height=19Caption=客户查询系统Font.Height=-19=宋体Object Labell3: TlabelLeft=24Top=200Width=60Height=12Caption=按姓名查询Object Labell4: TlabelLeft=24Top=224Width=60Height=19Caption=按房号查询Object Labell5: TlabelLeft=23Top=246Width=60Height=12Caption=按时期查询endObject DBFrid1: TDBGrid Left=8Top=40Width=553Height=140DataSource=DataSource1TitleFont.Height=-12=宋体Object Edit1:TeditLeft=93Top=197Width=102Hdight=20Text=Edit1Object Edit2:TeditLeft=93Top=218Width=103Hdight=20Text=Edit2Object Edit3:TeditLeft=93Top=241Width=103Hdight=20Text=Edit3Object Button1:TbuttonLeft=232Top=208Width=75Height=25Caption='执行查询'Object Memo1:TmemoLeft=372Top=189Width=185Height=61Visible=False第三页面命令控件代码:Procedure TForm1.Button2Click(Sender:Tobject); VarSum1:real;S:string;Bookmark1:tbookmark;BeginSum1=0.00;Bookmark1:=table1.getbookmark;Table1.disablecontrols;Table1.first;While not table1.eof doBeginSum1:=sum1+table1.fieldbyname('结算费用')。
C语言宾馆管理系统源代码

else
{
printf("要删除的话就按1:");
scanf("%d",&i);
if(i==1)
{
q=head;
while(q!=NULL&&q->next!=p)
q=q->next;
q->next=p->next;
}
while(b--)
{
p=(listnode *)malloc(sizeof(listnode));
printf("姓名 性别 证件 入住 天数 房号 标准 价格 预收 押金 离开 备注\n");
printf("**********************************************************************\n");
printf("*******************************************\n");
printf("姓名查找,按1表示查找:");
p=head->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入要查询的姓名:");
scanf("%s",&come);
while(p&&strcmp(p->e,come)<0)
p=p->next;
if(p==NULL||strcmp(p->e,come)>0)
酒店管理程序代码

程序代码N:最终改进版代码利用结构体储存多种类型的数据好处:比数组能储存更多类型的数据include<iostream>include<string>include<cstdlib> 准单人间 2.大床房 3.标准双人间 4. 套房string phoneNum; 准单人间 100/天 2.大床房 200/天 3.标准双人间 300/天 4.套房400/天"<<endl;cin>>type; roomType=type;cout<<"预留手机号:"<<endl;cin>>num; phoneNum=num;};void Book{cout<<"正在预定..."<<endl;switchthis->roomType{case 1:forint i=0;i<20;i++{if roomi.State==0 ays=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;cout<<"预定成功房间号:"<<roomi.Number<<endl<<endl;roomi.State=1;break; umber<<"号房间已有人"<<endl; }break;case 2:forint i=20;i<40;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;cout<<"预定成功房间号:"<<roomi.Number<<endl<<endl;roomi.State=1; break;}else cout<<roomi.Number<<"号房间已有人"<<endl;}break;case 3:forint i=40;i<60;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;cout<<"预定成功房间号:"<<roomi.Number<<endl<<endl;roomi.State=1; break;}else cout<<roomi.Number<<"号房间已有人"<<endl;}break;case 4:forint i=60;i<80;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;cout<<"预定成功房间号:"<<roomi.Number<<endl<<endl;roomi.State=1; break;}else cout<<roomi.Number<<"号房间已有人"<<endl;}break;default:cout<<"您输入的房间类型有误"<<endl;}};};class CheckIn 准单人间 100/天 2.大床房 200/天 3.标准双人间 300/天 4.套房 400/天"<<endl; cin>>type;roomType=type;cout<<"客户手机号:"<<endl; cin>>num; phoneNum=num;switchthis->roomType{case 1:forint i=0;i<20;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;roomi.ID=this->idNum;cout<<"入住成功房间号:"<<roomi.Number<<endl<<endl;cout<<"请支付200元押金"<<endl<<endl;roomi.State=1;break;}else cout<<"抱歉,该房间类型没有了"<<endl;}break;case 2:forint i=20;i<40;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;roomi.ID=this->idNum;cout<<"入住成功房间号:"<<roomi.Number<<endl<<endl;cout<<"请支付400元押金"<<endl<<endl;roomi.State=1;break;}else cout<<"抱歉,该房间类型没有了"<<endl;}break;case 3:forint i=40;i<60;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;roomi.ID=this->idNum;cout<<"入住成功房间号:"<<roomi.Number<<endl<<endl;cout<<"请支付600元押金"<<endl<<endl;roomi.State=1;break;}else cout<<"抱歉,该房间类型没有了"<<endl;}break;case 4:forint i=60;i<80;i++{ifroomi.State==0{roomi.days=this->stayTime;=this->cName;roomi.Phone=this->phoneNum;roomi.Price=this->stayTime;roomi.ID=this->idNum;cout<<"入住成功房间号:"<<roomi.Number<<endl<<endl;cout<<"请支付800元押金"<<endl<<endl;roomi.State=1;break;}else cout<<"抱歉,该房间类型没有了"<<endl;}break;default:cout<<"您输入的房间类型有误"<<endl;}}void booked{string compareItem;string id_num;cout<<"请输入您的姓名或者手机号:"<<endl;cin>>compareItem;forint i=0;i<80;i++{==compareItem||roomi.Phone==compareItem{cout<<"验证成功请支付:"<<roomi.Price2<<"元押金"<<endl;cout<<"请登记客户的身份证号:"<<endl;cin>>id_num;idNum=id_num;roomi.ID=idNum;cout<<"房间号为:" <<roomi.Number<<endl<<"欢迎入住"<<endl<<endl;break;}}}};class checkOut{private:string name;int number;int days;int price;public:void checkout{int expense;cout<<"请输入房间号:"<<endl; cin>>number;cout<<"请输入姓名:"<<endl; cin>>name;cout<<"请输入实际住宿天数:"<<endl; cin>>days;forint i=0;i<80;i++{==name && roomi.Number==number{expense=daysroomi.Number/100100;cout<<"房间号为"<<roomi.Number<<"的房间实际消费为"<<expense<<"元"<<endl;cout<<"押金为:"<<roomi.Price<<endl;ifexpense>roomi.Price cout<<"请补交"<<expense-roomi.Price<<"元"<<endl;else cout<<"退回:"<<roomi.Price-expense<<"元"<<endl; break;}else cout<<roomi.Number<<"号房不符合"<<endl;}cout<<"房费核算清后请安任意键继续"<<endl<<endl;system"pause";cout<<"感谢入住本酒店,欢迎下次光临"<<endl<<endl;}};void menu{cout<<"欢迎使用酒店管理系统"<<endl;cout<<"请选择:"<<endl;cout<<"1.预定房间"<<endl;cout<<"2.办理入住"<<endl;cout<<"3.退房结账"<<endl;cout<<"4.退出系统"<<endl; }void init{int n=101;forint i=0;i<20;i++{roomi.Number=n++;roomi.Price=100;roomi.State=0;}n=201;forint i=20;i<40;i++{roomi.Number=n++;roomi.Price=200;roomi.State=0;}n=301;forint i=40;i<60;i++{roomi.Number=n++;roomi.Price=300;roomi.State=0;}n=401;forint i=60;i<80;i++{roomi.Number=n++;roomi.Price=400;roomi.State=0;}}int mainvoid{init;int flag=1;whileflag{menu;int c;cin>>c;switchc{case 1:{BookRooma=new BookRoom; a->setData;a->Book;break;}case 2:{CheckInb=new CheckIn;cout<<"您有预定吗 1.已预定 2.未预定"<<endl;int c;cin>>c;switchc{case 1:{b->booked;break;}case 2:{b->unbooked;break;}default:cout<<"输入有误"<<endl;}break;}case 3:{checkOut c=new checkOut;c->checkout;break;}case 4:{cout<<"谢谢使用,再见"<<endl;flag=0;break;}default:cout<<"输入有误"<<endl;}}return 0;}O:最初废除版利用数组因为数组只能简单的储存一种类型的数据,例如字符和数字;而酒店管理系统这种情境,一个房间要储存多种数据,例如客户姓名、客户性别、预订房间号、客户预留手机号、客户占用天数、客户身份证号以及押金和实际花销等;因此我选用了结构体来储存;以下是Old version:include<iostream>include<string>using namespace std;int room_num420; 准单人间 2.大床房 3.标准双人间 4. 套房string phoneNum; 准单人间 2.大床房 3.标准双人间 4. 套房"<<endl; cin>>type; roomType=type;cout<<"预留手机号:"<<endl; cin>>num; phoneNum=num;};void Book{cout<<"正在预定..."<<endl;switchthis->roomType{case 1:forint i=0;i<20;i++{if room_num1i==0 ."<<endl;switchRoom_num/100{case 1:cout<<"办理成功共计消费:"<<100stayTime<<endl;break;case 2:cout<<"办理成功共计消费:"<<200stayTime<<endl;break;case 3:cout<<"办理成功共计消费:"<<300stayTime<<endl;break;case 4:cout<<"办理成功共计消费:"<<400stayTime<<endl;break;default:cout<<"输入错误"<<endl;}};} ;void menu{cout<<"欢迎使用酒店管理系统"<<endl;cout<<"请选择:"<<endl;cout<<"1.预定房间"<<endl;cout<<"2.办理入住"<<endl;cout<<"3.退房结账"<<endl;cout<<"4.退出系统"<<endl;}int mainvoid{forint i=0;i<4;i++{forint j=0;j<20;j++{room_numij=0;}}int flag=1;whileflag{menu;int c;cin>>c;switchc{case 1:{BookRooma=new BookRoom; a->setData;a->Book;break;}case 2:{Checkinb=new Checkin;b->setData;b->Check;break;}//case3 to docase 4:{cout<<"谢谢使用,再见"<<endl;flag=0;break;}default:cout<<"输入有误"<<endl; }}return 0;}。
酒店管理系统代码

酒店管理系统代码(C语言版)(总7页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除#include <stdio.h>#include <stdlib.h>#include <string.h>//房间信息结构体struct Node{int Count; //指示该房间有多少个房客char nameOne[20]; //房客1的名字char nameTwo[20]; //房客2的名字int sexOne; //房客1的性别 -1代表女,0代表没有,1代表男int sexTwo; //房客2的性别int roomNumber; //房间号}roomArray[5];//初始化房间数组void InitArray(){int i;for(i=0;i<5;i++){roomArray[i].roomNumber = 301+i;memset(roomArray[i].nameOne,0,20);memset(roomArray[i].nameTwo,0,20);roomArray[i].sexOne = 0;roomArray[i].sexTwo = 0;roomArray[i].Count = 0;}}void fun1() //旅客入住的操作{char name[20];int sex;int i;printf("\n输入入住旅客姓名和性别(空格隔开,1为男,-1为女):");scanf("%s %d",name,&sex);for(i=0;i<5;i++){if(roomArray[i].Count == 2){continue;}else if(roomArray[i].Count == 1){if(roomArray[i].sexOne != sex){continue;}strcpy(roomArray[i].nameTwo,name);roomArray[i].sexTwo = sex;roomArray[i].Count++;system("cls");printf("客人已经成功入住,在房间%d",roomArray[i].roomNumber);return;;}else{strcpy(roomArray[i].nameOne,name);roomArray[i].sexOne = sex;roomArray[i].Count++;system("cls");printf("客人已经成功入住,在房间%d",roomArray[i].roomNumber);return;;}}printf("无法入住,房间已经住满或者是没有适合的房间"); }void fun2() //退房操作{int i;char name[20];printf("请输入要退房旅客的姓名: ");scanf("%s",name);for(i=0;i<5;i++){if(strcmp(roomArray[i].nameOne,name) == 0){memset(roomArray[i].nameOne,0,20);roomArray[i].sexOne = 0;roomArray[i].Count--;system("cls");printf("%s客人已经成功退房\n",name);return;}if(strcmp(roomArray[i].nameTwo,name) == 0){memset(roomArray[i].nameTwo,0,20);roomArray[i].sexTwo = 0;roomArray[i].Count--;system("cls");printf("%s客人已经成功退房\n",name);return;}}system("cls");printf("没有名为%s的客人,请检查输入的正确性!\n",name);}void fun3() //查询操作{int index;int i;char name[20];int number;int j;system("cls");printf("***************请选择要查询的种类***************\n");printf(" 1.所有房间入住信息显示\n");printf(" 2.按照姓名查询\n");printf(" 3.按照房号查询\n");scanf("%d",&index);if(index == 1){for( i=0;i<5;i++){printf("房间%d:",roomArray[i].roomNumber);if(roomArray[i].Count == 0){printf("没有客人入住\n");}else if(roomArray[i].Count == 1){if(roomArray[i].sexTwo == 0){printf("当前有1位客人-> 姓名%s,",roomArray[i].nameOne);if(roomArray[i].sexOne == 1)printf("性别:男");else if(roomArray[i].sexOne == -1)printf("性别:女");printf("\n");}else if(roomArray[i].sexOne == 0){printf("当前有1位客人-> 姓名%s,",roomArray[i].nameTwo);if(roomArray[i].sexTwo == 1)printf("性别:男");else if(roomArray[i].sexTwo == -1)printf("性别:女");printf("\n");}}else{//printf("当前有两个客人客人1:姓名%s,性别%d 客人2:姓名%s,性别%d\n",roomArray[i].nameOne,roomArray[i].sexOne,roomArray[i].nameTwo,roo mArray[i].sexTwo);printf("当前有2位客人-> 姓名%s,",roomArray[i].nameOne);if(roomArray[i].sexOne == 1)printf("性别:男,");else if(roomArray[i].sexOne == -1)printf("性别:女,");printf("姓名:%s,",roomArray[i].nameTwo);if(roomArray[i].sexTwo == 1)printf("性别:男,");else if(roomArray[i].sexOne == -1)printf("性别:女,");printf("\n");}}}else if(index == 2){printf("请输入你要查询房客的姓名:");scanf("%s",name);for(i=0;i<5;i++){if(strcmp(roomArray[i].nameOne,name) == 0 || strcmp(roomArray[i].nameTwo,name) == 0){printf("%s房客入住在房间%d!\n",name,roomArray[i].roomNumber);return;}}printf("没有找到该旅客的信息!");}else if(index == 3){printf("请输入你要查询的房间号:");scanf("%d",&number);j = number - 301;if(roomArray[j].Count == 0){printf("没有客人入住\n");}else if(roomArray[j].Count == 1){printf("当前有1位客人-> 姓名%s,性别%d!",roomArray[j].nameOne,roomArray[j].sexOne);}else{printf("当前有两个客人入住姓名%s,性别%d 姓名%s,性别%d\n",roomArray[j].nameOne,roomArray[j].sexOne,roomArray[j].nameTwo,roo mArray[j].sexTwo);}}}void show(){system("color 9f");printf("*******************请选择操作************************\n");printf(" 1.旅客入住\n");printf(" 2.旅客退房\n");printf(" 3.信息查询\n");printf(" 4.退出 exit\n");printf("请输入你要选择的操作: ");}int main(){int i= 100;InitArray();printf("*******************宾馆信息管理软件*******************\n");while(i != 4){printf("\n");show();scanf("%d",&i);switch(i){case 1:fun1();break;case 2:fun2();break;case 3:fun3();break;}}system("pause");return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <windows.h>#include <dos.h>#include<stdio.h>#include<stdlib.h>#include<time.h>//--------------------------------------------------结构定义------------------------------------------ typedef struct CheckinInformation{char name[10]; //姓名int id; //证件号int roomType; //房型int countType; //计费方式}CheckinInfo;typedef struct HotelRoom{int roomType; //房型int roomNum; //房号int checked; //入住情况int price; //房价}Room;typedef struct RoomOrder{CheckinInfo *checkinInfo; //入住信息long date; //入住时间Room * room; //房间信息}Order;typedef struct HotelInfomation{int checkinAmount; //已入住房数int singleRemainAmount; //单人房剩余房数int doubleRemainAmount; //双人房剩余房数int bigRemainAmount; //大床房剩余房数}HotelInfo;//--------------------------------枚举类型---------------------------enum {MainUI,HotelInfoUI,CheckinUI,CheckinResultUI,OrderUI,CheckOutUI,Exit};//GUI enum {Single,Double,Big};//Room Typeenum {Hour,Day};//countType//--------------------------------全局变量--------------------------int GUI = MainUI;Order* orderList[100];//订单数组Room* roomList[100];//房间数组HotelInfo * hotelInfo = NULL;//酒店房间信息//-------------------------------函数声明---------------------------- void initiallizeRoomList();void insertToOrderList(Order * order);Room* getRoomByType(int roomType);Order* getOrderByRoomNum(int roomNum);void showMainUI();void showHotelInfoUI();void showCheckinUI();void showCheckinResultUI();void showOrderUI();void showCheckOutUI();//-------------------------------Main函数---------------------------- void main() //主函数{//初始化酒店房间信息hotelInfo = (HotelInfo *)malloc(sizeof(HotelInfo));hotelInfo -> singleRemainAmount = 20;hotelInfo -> doubleRemainAmount=40;hotelInfo -> bigRemainAmount=40;hotelInfo -> checkinAmount=0;//初始化房间列表initiallizeRoomList();//界面显示while(GUI != Exit){switch(GUI){case MainUI:showMainUI();break;case HotelInfoUI:showHotelInfoUI();break;case CheckinUI:showCheckinUI();break;case CheckinResultUI:showCheckinResultUI();break;case OrderUI:showOrderUI();break;case CheckOutUI:showCheckOutUI();break;default:break;}}}//-------------------------------函数定义----------------------------void initiallizeRoomList(){//房间数组初始化,初始化的结果是让roomList的数组有100个room指针,而且设置了相应的值int i;Room*newRoom=NULL;for(i=0;i<20;i++) //单人房房间信息初始化{newRoom = ( Room* )malloc(sizeof(Room));roomList[i] = newRoom;roomList[i]->checked=0;roomList[i]->price=110;roomList[i]->roomNum=i+1;roomList[i]->roomType=Single;}for(i=20;i<60;i++) //双人房房间信息初始化{newRoom = ( Room* )malloc(sizeof(Room));roomList[i] = newRoom;roomList[i]->checked=0;roomList[i]->price=180;roomList[i]->roomNum=i+1;roomList[i]->roomType=Double;}for(i=60;i<100;i++) //大床房房间信息初始化{newRoom = ( Room* )malloc(sizeof(Room));roomList[i] = newRoom;roomList[i]->checked=0;roomList[i]->price=180;roomList[i]->roomNum=i+1;roomList[i]->roomType=Big;}}//通过所选择的房型获取空房间,获取房间后将房间信息改为已入住,并减少相应房型的剩余房间数Room* getRoomByType(int roomType){int i;switch(roomType){case Single:for(i=0;i<20;i++){if( roomList[i]->checked == 0){roomList[i]->checked=1;hotelInfo->singleRemainAmount -- ;hotelInfo->checkinAmount++;return roomList[i];}}break;case Double:for(i=20;i<60;i++){if( roomList[i]->checked == 0){roomList[i]->checked=1;hotelInfo->doubleRemainAmount -- ;hotelInfo->checkinAmount++;return roomList[i];}}break;case Big:for(i=60;i<100;i++){if( roomList[i]->checked == 0){roomList[i]->checked=1;hotelInfo->bigRemainAmount --;hotelInfo->checkinAmount++;return roomList[i];}}break;}}//将订单放入订单列表void insertToOrderList(Order * order){int i;for( i = 0;i<100;i++){if( orderList[i] ==NULL ){orderList[i] = order;break;}}}//通过房号查询订单Order* getOrderByRoomNum(int roomNum){int i;for(i=0;i<100;i++){if( orderList[i]->room->roomNum == roomNum){return orderList[i];}}void showMainUI(){//显示主界面,并接受输入int chooseNum;system("cls");printf("\n\n==========================酒店房间登记与计费管理管理系统=======================\t\n\n\n");printf("*\t\t\t\t1. 入住登记\t\t\t\t*\n");printf("*\t\t\t\t2. 查询入住情况\t\t\t*\n");printf("*\t\t\t\t3. 查询当前费用\t\t\t*\n");printf("*\t\t\t\t4. 结账退房\t\t\t\t*\n");printf("*\t\t\t\t5. 退出程序\t\t\t\t*\n\n\n");printf("\n\n==========================酒店房间登记与计费管理管理系统=======================\t\n\n\n");printf("请输入相应编号进入菜单\t");//接受输入scanf("%d",&chooseNum);switch(chooseNum){case 1:GUI = HotelInfoUI;break;case 2:GUI = HotelInfoUI;break;case 3:GUI = OrderUI;break;case 4:GUI = OrderUI;break;case 5:Sleep(3000);GUI = Exit;break;default:break;}void showHotelInfoUI(){int chooseNum;system("cls");printf("\n\n=========================酒店入住情况查询菜单=======================\t\n\n\n\n");printf("*\t\t\t入住房间数: %d\t\t\t\t*\n", hotelInfo->checkinAmount);printf("*\t\t\t剩余房间数: \t");printf("单人房:%d\t\t*\n",hotelInfo->singleRemainAmount);printf("*\t\t\t\t\t双人房:%d\t\t*\n",hotelInfo->doubleRemainAmount);printf("*\t\t\t\t\t大床房:%d\t\t*\n\n",hotelInfo->bigRemainAmount);printf("\n\n=========================酒店入住情况查询菜单=======================\t\n\n\n");printf("按0 :返回\n");printf("按1 : 登记入住\n");scanf("%d",&chooseNum);switch(chooseNum){case 0:GUI = MainUI;break;case 1:GUI = CheckinUI;break;default:GUI = HotelInfoUI;break;}}void showCheckinUI(){Order * newOrder;Room* newRoom = NULL;//填写一个新的入住信息CheckinInfo * newCheckinInfo = NULL;int roomTypeNum;int countTypeNum;time_t timep;system("cls");printf("\n\n===========================酒店入住登记菜单=========================\t\n\n\n");newCheckinInfo = ( CheckinInfo * )malloc(sizeof(CheckinInfo));printf("*\t\t请输入姓名:");scanf("%s", &(newCheckinInfo->name) );printf("*\t\t请输入证件号:");scanf("%d", &(newCheckinInfo->id) );printf("*\t\t请选择入住房型:\n");printf("\t\t\t1.单人房\n\t\t\t2.双人房\n\t\t\t3.大床房\n");scanf("%d",&(roomTypeNum));switch(roomTypeNum) //通过输入的数字对应房型{case 1:newCheckinInfo->roomType = Single;break;case 2:newCheckinInfo->roomType = Double;break;case 3:newCheckinInfo->roomType = Big;break;default:newCheckinInfo->roomType = Single;break;}printf("*\t\t请选择计费方式:\n");printf("\t\t\t1.按小时计费; \n\t\t\t2.按天数计费\n"); //通过输入的数字对应计费方式scanf("%d",&countTypeNum);switch(countTypeNum){case 1:newCheckinInfo->countType = Hour;break;case 2:newCheckinInfo->countType = Day;break;}printf("\n\n===========================酒店入住登记菜单=========================\t\n\n\n");//生成一个新的订单newOrder = ( Order* )malloc(sizeof(Order));newOrder -> checkinInfo = newCheckinInfo;newOrder -> date = time(0);switch(newCheckinInfo->roomType) //通过房型获取房间{case Single:newRoom = getRoomByType(Single);break;case Double:newRoom=getRoomByType(Double);break;case Big :newRoom=getRoomByType(Big);break;}newOrder->room = newRoom;insertToOrderList(newOrder);printf("房间号为:%d\n",newOrder->room->roomNum);GUI = CheckinResultUI;}void showCheckinResultUI(){int chooseNum;printf("\n\n=========================酒店入住登记确认菜单=======================\t\n\n\n");printf("\t\t\t************\t\t\t\t\n");printf("\t\t\t* 登记成功*\t\t\t\t\n");printf("\t\t\t************\t\t\t\t\n\n");printf("\n\n=========================酒店入住登记确认菜单=======================\t\n\n\n");printf("按0 :返回\n");scanf("%d",&chooseNum);switch(chooseNum){case 0:GUI = MainUI;break;default:GUI = CheckinResultUI;break;}}void showOrderUI(){int roomNum;int chooseNum;int amount;Order * theOrder = NULL;system("cls");printf("\n\n=========================酒店房间信息查询菜单=======================\t\n\n\n");printf("请输入房间号:");scanf("%d",&roomNum);if (roomNum<0 || roomNum>100){printf("\n 输入有误请重新输入") ;GUI = OrderUI;}else{theOrder = getOrderByRoomNum(roomNum);printf("房型:");switch(theOrder->room->roomType){case Single:printf("单人房\n");break;case Double:printf("双人房\n");break;case Big:printf("大床房\n");break;}printf("计费方式:");switch(theOrder->checkinInfo->countType ){case Hour:printf("小时计费\n");amount = (time(0) - theOrder->date) / 3600 +1;printf("已入住时间:%d小时\n",amount);break;case Day:printf("天计费\n");amount = (time(0) - theOrder->date) / (3600*24) +1;printf("已入住时间:%d天\n",amount);break;}printf("房价:%d\n",theOrder->room->price);printf("应支付:%d\n\n",amount * theOrder->room->price);printf("\n\n=========================酒店房间信息查询菜单=======================\t\n\n\n");printf("按0:返回\n");printf("按1:结账退房\n");scanf("%d",&chooseNum);switch(chooseNum){case 0:GUI = MainUI;break;case 1:GUI = CheckOutUI;break;default:break;}}}void showCheckOutUI(){int chooseNum;printf("\n\n=========================酒店结账退房确认菜单=======================\t\n\n\n");printf("\t\t\t\t************\t\t\t\t\n");printf("\t\t\t\t* 结账成功*\t\t\t\t\n");printf("\t\t\t\t************\t\t\t\t\n\n");printf("\n\n=========================酒店结账退房确认菜单=======================\t\n\n\n");printf("按0:返回");scanf("%d",&chooseNum);switch(chooseNum) {case 0:GUI = MainUI;break;default:GUI = CheckOutUI;break;}}。