酒店管理系统代码
酒店管理系统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;}。
酒店管理系统源代码
西彼科技有限责任公司参考源码酒店管理系统彼岸2011-03-31本段源代码,参考与阳光酒店管理系统编写的系统包Sunsdk包1)System包CsHashtable.java/** @(#)CsHashtable.java 1.24 03/12/19** public class** Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.system;import java.util.*;/*** <code> CsHashtable </code>* <p>* 该类的作用是封装哈希表* <p>* <strong>注意: </strong> 本类使用的哈希表方法put, 可能存在不安全因素* <p>* 相关类:Hashtable** @author 鲜强* @version 2006.3.28 22:18* @see java.util.Hashtable* @since CAZOSOFT 1.0*/public class CsHashtable {/*** 静态变量功能: 构造一个hashtable 供其他函数使用*/private static Hashtable hTable = new Hashtable();/*** 构造函数功能: 构造函数为静态的不能创建对象*/private CsHashtable() {}/*** 放入对象函数功能: 把对象放入哈希表,对象为Object类型** @param key :* 键值, Object 对象* @param value :* 对象, Object 对象*/public static void put(Object key, Object value) {hTable.put(key, value);}/*** 返回对象函数功能: 从哈希表中取出对象,返回为Object类型** @param key :* 键值* @return : 一个Object 对象*/public static Object get(Object key) {return hTable.get(key);}/*** 返回大小函数功能: 返回哈希表的大小** @return : 一个int 哈希表长度值*/public static int size() {return hTable.size();}/*** 移除一个对象** @param key : 接受一个要移除的键值*/public static Object remove(Object key) {return hTable.remove(key);}}/**Sunini.java*############################################################################## ** [ 项目名] :* [ 公司名] : SunshineSOFT* [ 模块名] : 对于INI文件的相关操作* [ 文件名] : sunini.java* [ 相关文件] : config.ini* [ 文件实现功能] : 读取和保存INI文件* [ 作者] : 顾俊* [ 版本] : 1.1* ----------------------------------------------------------------------------* [ 备注] :* ----------------------------------------------------------------------------* [ 修改记录] :** [ 日期] [版本] [修改人] [修改内容]* 2006/03/31 1.0 顾俊创建* 2006/04/06 1.1 顾俊修改读取函数* ##--------------------------------------------------------------------------* 版权所有(c) 2006-2007, SunshineSOFT Corporation* --------------------------------------------------------------------------##** [ 函数说明] :** [## private sunini() {} ]:* 功能: 构造函数** [## public static String getIniKey (String k) {} ]:* 功能: 获得INI文件中的指定键的键值** [## public static void setIniKey (String k, String v) {} ]:* 功能: 设置k键的键值为v对象** [## public static void saveIni (String k[]) {} ]:* 功能: 将k字符数组中所有键所对应的键值保存到INI文件中** [ 遗留问题] : setIniKey ()方法不能处理键值中的转义字符**############################################################################## */package com.sunshine.sunsdk.system;import java.util.*;import java.io.*;public class sunini {private static Properties ini = null;static {try {ini = new Properties ();ini.load (new FileInputStream ("config.ini"));}catch (Exception ex) {System.out.println ("Load CONFIG.INI is false!!");}//End try}/**=======================================================================* ** [## private sunini() {} ]: 构造函数* 参数:无* 返回值:无* 修饰符:private* 功能:防止实例化sunini对象**=======================================================================** */private sunini() {}/**=======================================================================* ** [## public static String getIniKey (String k) {} ]:* 参数:String对象表示键* 返回值:String对象表示k键所对应的键值,如果失败则返回空串* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:获得INI文件中的指定键的键值**=======================================================================** */public static String getIniKey (String k) {if(!ini.containsKey (k)) { //是否有k 这个键System.out.println ("The [ " + k + " ] Key is not exist!!");return "";}//End if(!ini.containsKey (k))return ini.get (k).toString ();}/**=======================================================================* ** [## public static void setIniKey (String k, String v) {} ]:* 参数:String k对象表示键,String v对象表示键值* 返回值:无* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:设置k键的键值为v对象**=======================================================================** */public static void setIniKey (String k, String v) {if(!ini.containsKey (k)) { //是否有k 这个键System.out.println ("The [ " + k + " ] Key is not exist!!");return;}//End if(!ini.containsKey (k))ini.put (k, v);}/**=======================================================================* ** [## public static void saveIni (String k[]) {} ]:* 参数:String k[]字符串数组表示要保存的所有键* 返回值:无* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:将k字符数组中所有键所对应的键值保存到INI文件中**=======================================================================** */public static void saveIni (String k[]) {try {FileWriter fw = new FileWriter ("config.ini");BufferedWriter bw = new BufferedWriter ( fw );//循环变量i是k字符串数组的下标for (int i = 0; i < k.length; i++) {bw.write (k[i] + "=" + getIniKey (k[i]));bw.newLine ();}//End forbw.close ();fw.close ();}catch (Exception ex) {System.out.println ("Save CONFIG.INI is false.");}//End try}}Suntools.java/***############################################################################## ** [ 项目名] :* [ 公司名] : SunshineSOFT* [ 模块名] : 工具函数* [ 文件名] : suntools.java* [ 相关文件] :* [ 文件实现功能] : 测试数据是否合法及流水号自动分配* [ 作者] : 顾俊* [ 版本] : 1.2* ----------------------------------------------------------------------------* [ 备注] :* ----------------------------------------------------------------------------* [ 修改记录] :** [ 日期] [版本] [修改人] [修改内容]* 2006/04/07 1.0 顾俊建立isDate()函数* 2006/04/08 1.1 顾俊添加函数#A, #B, #C, #D* 2006/04/08 1.2 顾俊添加函数#E, #F, #G* ##--------------------------------------------------------------------------* 版权所有(c) 2006-2007, SunshineSOFT Corporation* --------------------------------------------------------------------------##** [ 函数说明] :** [## private suntools () {} ] :* 功能: 防止实例化suntools对象** [## public static boolean isDate (String date) {} ]:* 功能: 判断日期字符串是否合法函数** [## public static boolean isNum (String in) {} ]: #A* 功能: 测试字符串是否由数字(0-9)组成** [## public static boolean isNum (String in, int length, double min, double max) {} ]: #B* 功能: 测试字符串表示的数值及范围,且字符串只能是数字组成** [## public static String getNumber (int type) {} ]: #C* 功能: 自动分配单据编号, 自动递增** [## public static void savNumber (String num, int type) {} ]: #D* 功能: 将已用编号保存到INI文件** [## public static double getConsumeFactor(String sDate, String eDate) {} ]: #E* 功能: 计算酒店计费天数按INI文件中设置的** [## public static double getClockFactor(String sDate, String eDate) {} ]: #F* 功能: 计算酒店钟点房计费系数按INI文件中设置的** [## public static String getConsumeHour(String sDate, String eDate) {} ]: #G* 功能: 计算两个时间之间有几小时几分*** [ 遗留问题] :***############################################################################## */package com.sunshine.sunsdk.system;import java.util.*;import java.text.*;import java.sql.*;import com.sunshine.sunsdk.sql.*;public class suntools {public static final int Number_RZ = 0; //表示销售单号public static final int Number_YD = 1; //表示进货单号public static final int Number_JS = 1; //表示进货单号/**=======================================================================* ** [## private suntools () {} ]: 构造函数* 参数:无* 返回值:无* 修饰符:private* 功能:防止实例化suntools对象**=======================================================================** */private suntools () {}/**=======================================================================* ** [## public static boolean isDate (String date) {} ]:* 参数:String对象表示日期的字符串* 返回值:boolean 合法返回true* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:判断日期字符串是否合法函数**=======================================================================** */public static boolean isDate (String date) {SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");String isdate = date;if(date.length() == 10) //如果只有日期,函数自动加上00:00:00 isdate = date + " 00:00:00";try {sdf.parse (isdate);return true;}catch (Exception ex) {System.out.println ("feetools.isDate(): The DATE format is error .");return false;}}/**=======================================================================* ** [## public static boolean isNum (String in) {} ]:* 参数:String对象表示被测字符串* 返回值:boolean 合法返回true* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:测试字符串是否由数字(0-9)组成**=======================================================================** */public static boolean isNum (String in) {return isNum (in, 0, 0, 0);}/**=======================================================================* ** [## public static boolean isNum (String in, int length, double min, double max) {} ]:* 参数:String对象表示被测字符串* length变量表示字符串最大长度,取值0,表示没有长度限定* min,max变量限定了String对象表示的数值范围,当(length > 0)时* 返回值:boolean 合法返回true* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:测试字符串表示的数值及范围,且字符串只能是数字组成**=======================================================================** */public static boolean isNum (String in, int length, double min, double max) {String num = in;int point = 0; //'.'的个数int len = num.length ();if(length > 0) {if(len > length || len == 0) { //判断字符串长度,不合法空返回falseSystem.out.println ("suntools.isNum(): Length error.");return false;}//Endif}//End if(length > 0)elseif(len == 0) { //判断字符串是否为空,空返回falseSystem.out.println ("suntools.isNum(): String is NULL");return false;}//End if(len == 0)for (int i = len - 1; i >=0; i--) { //判断字符串只能是数字char ac = num.charAt (i);if(ac == '.' && point == 0 && i!= 0) { //如果是'.'字符,且是第一次出现,且不是只有一个点if(i > len - 4) { //判断小数位只能是两位point++;continue;}//Endif}//Endifif(ac < '0' || ac > '9' ) {System.out.println ("suntools.isNum(): Character isn't ( '0' - '9' )");return false;}//Endif}//Endforif(length !=0) {double s = Double.parseDouble (num); //现在len为字符串表示的数值if(s < min || s >max) { //限制范围min-max之间System.out.println ("suntools.isNum(): Amount limit error. ");return false;}//Endif}//End if(length != 0)return true;}/**=======================================================================* ** [## public static String getNumber (int type) {} ]:* 参数:int变量表示要获得什么类型的单号(见类头常量)* 返回值:String对象: 单号;* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:自动分配单据编号, 自动递增**=======================================================================** */public static String getNumber (int type) {GregorianCalendar gc = new GregorianCalendar();String tp, number, month, day; //单号标头, 单号记数位, 为月份, 为天int numLen = 0; //单号的默认位数if(type == Number_RZ) { //要获取销售单号tp = sunini.getIniKey ("LodgName");number = sunini.getIniKey ("LodgNumber");}else if(type == Number_YD){ //要获取进货单号tp = sunini.getIniKey ("EngaName");number = sunini.getIniKey ("EngaNumber");}else {tp = sunini.getIniKey ("ChouName");number = sunini.getIniKey ("ChouNumber");}numLen = number.length (); //得到单号的默认位数number = Integer.parseInt (number) + 1 + ""; //将单号增1,再转成字符串//判断记数号是否超位(超出要求长度)if(number.equals ((int)Math.pow (10, numLen - 1) + "") && number.length() > 1)number = number.substring(1); //单号记数位清零//for循环,用'0'为number补位(i = 当前号码位数, i < numLen)for (int i = number.length (); i < numLen; i++) {number = "0" + number;}//Endfor//为月份补'0'month = gc.get (GregorianCalendar.MONTH) + 1 + "";if( month.length() == 1)month = "0" + month;//为天补'0'day = gc.get (GregorianCalendar.DAY_OF_MONTH) + "";if( day.length () == 1)day = "0" + day;//连接单号标头,日期,记数位;组成单据号码tp = tp + gc.get (GregorianCalendar.YEAR) + month + day + number;return tp; //返回单号}/**=======================================================================* ** [## public static void savNumber (String num, int type) {} ]:* 参数:String对象表示要保存的单号* int变量表示要保存什么类型的单号(见类头常量)* 返回值:无* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:将已用编号保存到INI文件**=======================================================================** */public static void savNumber (String num, int type) {//INI文件中的键名String ini[] = { "[SOFTINFO]", "UserName", "CompName", "[CONFIG]", "Soft_First","Default_Link" , "Default_Page", "Sys_style", "[NUMBER]","LodgName", "LodgNumber", "EngaName", "EngaNumber", "ChouName","ChouNumber", "[HABITUS]", "Ck_Habitus", "Ck_Minute", "[PARTTIME]","In_Room", "Out_Room1", "Out_Room2", "InsuDay", "ClockRoom1","ClockRoom2", "InsuHour1", "InsuHour2", "[JDBC]", "DBFname","UserID", "Password", "IP", "Access", "[ODBC]", "LinkName" };String bt;if(type == Number_RZ) {bt = sunini.getIniKey ("LodgName");sunini.setIniKey ("LodgNumber", num.substring (bt.length () + 8));}else if(type == Number_YD){bt = sunini.getIniKey ("EngaName");sunini.setIniKey ("EngaNumber", num.substring (bt.length () + 8));} else{bt = sunini.getIniKey ("ChouName");sunini.setIniKey ("ChouNumber", num.substring (bt.length () + 8));}//保存到INI文件sunini.saveIni (ini);}/**=======================================================================* ** [## public static double getConsumeFactor(String sDate, String eDate) {} ]:* 参数:String sDate对象表示开始时间* String eDate变量表示结束时间* 返回值:double* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:计算酒店计费天数按INI文件中设置的**=======================================================================** *///获得消费系数public static double getConsumeFactor(String sDate, String eDate) {//获得开始日期时间的--年--月--日--时--分--秒String syh [] = sDate.trim ().split(" ");String symd[] = syh[0].trim().split("-");String shms[] = syh[1].trim().split(":");int sy = Integer.parseInt(symd[0]);int sM = Integer.parseInt(symd[1]);int sd = Integer.parseInt(symd[2]);int sh = Integer.parseInt(shms[0]);int sm = Integer.parseInt(shms[1]);int ss = Integer.parseInt(shms[2]);//获得结束日期时间的--年--月--日--时--分--秒String eyh [] = eDate.trim ().split(" ");String eymd[] = eyh[0].trim().split("-");String ehms[] = eyh[1].trim().split(":");int ey = Integer.parseInt(eymd[0]);int eM = Integer.parseInt(eymd[1]);int ed = Integer.parseInt(eymd[2]);int eh = Integer.parseInt(ehms[0]);int em = Integer.parseInt(ehms[1]);int es = Integer.parseInt(ehms[2]);//获得sDate的long值long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//获得eDate的long值long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();double db = 0;if(sdt > edt) { //不合法开始日期一定要小于结束日期db = -1;return db;}//Endifif(sdt == edt) { //无时间差db = 0;return db;}//Endifint insuDay = (int)(edt - sdt)/3600000;if(insuDay < 24) { //入住不到一天if(Integer.parseInt(sunini.getIniKey("InsuDay")) == 1)db = 1; //按全天计费else {if(insuDay > 1 && insuDay < 12)db = 0.5; //如果不按全天计费,则大于1小时按半天计费elsedb = 1; //如果不按全天计费,则大于12小时按全天计费}//Endifreturn db;}//Endif//几点之后按新的一天计费int inRoom = Integer.parseInt(sunini.getIniKey("In_Room"));if(sh < inRoom) {db = 0.5;}//Endifsh = inRoom; //多的时间已经加了系数,去掉多余的//几点之后按半天计费int outRoom1 = Integer.parseInt(sunini.getIniKey("Out_Room1"));int outRoom2 = Integer.parseInt(sunini.getIniKey("Out_Room2"));if(eh > outRoom1 && eh < outRoom2) {db = db + 0.5;eh = outRoom1; //多的时间已经加了系数,去掉多余的}else if(eh >= outRoom2) {db = db + 1;eh = outRoom2;}//Endif//计算入住时间sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();db = db + (edt - sdt)/86400000;return db;}/**=======================================================================* ** [## public static double getClockFactor(String sDate, String eDate) {} ]:* 参数:String sDate对象表示开始时间* String eDate变量表示结束时间* 返回值:double* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:计算酒店钟点房计费系数按INI文件中设置的**=======================================================================** */public static double getClockFactor(String sDate, String eDate) {//获得开始日期时间的--年--月--日--时--分--秒String syh [] = sDate.trim ().split(" ");String symd[] = syh[0].trim().split("-");String shms[] = syh[1].trim().split(":");int sy = Integer.parseInt(symd[0]);int sM = Integer.parseInt(symd[1]);int sd = Integer.parseInt(symd[2]);int sh = Integer.parseInt(shms[0]);int sm = Integer.parseInt(shms[1]);int ss = Integer.parseInt(shms[2]);//获得结束日期时间的--年--月--日--时--分--秒String eyh [] = eDate.trim ().split(" ");String eymd[] = eyh[0].trim().split("-");String ehms[] = eyh[1].trim().split(":");int ey = Integer.parseInt(eymd[0]);int eM = Integer.parseInt(eymd[1]);int ed = Integer.parseInt(eymd[2]);int eh = Integer.parseInt(ehms[0]);int em = Integer.parseInt(ehms[1]);int es = Integer.parseInt(ehms[2]);//获得sDate的long值long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//获得eDate的long值long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();//获得时间差double db = 0;if(sdt > edt) { //不合法开始日期一定要小于结束日期db = -1;return db;}//Endif//获得两个时间之间有多少秒edt = (edt - sdt) / 1000;//--------------------------------------------------------------------//if(edt <= 60 * Integer.parseInt(sunini.getIniKey("ClockRoom1"))) { db = 0; //开房后几分钟开始计费,读INI文件设置return db;}//Endif//--------------------------------------------------------------------//if(edt / 60 < 60 * Integer.parseInt(sunini.getIniKey("ClockRoom2"))) { db = 1; //不足几小时按一个单位计费return db;}//Endif//--------------------------------------------------------------------////除以上可能的正常计费公式如下db = edt / 3600; //获得过去的小时数edt = edt % 3600 / 60; //获得多余的分钟数if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2")) && edt <= Integer.parseInt(sunini.getIniKey("InsuHour1"))) {db = db + 0.5; //超过多少分,但小于多少分部分,收半价}else if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2"))) {db = db + 1; //超过多少分的,收全价}//Endif//--------------------------------------------------------------------//return db;}/**=======================================================================* ** [## public static String getConsumeHour(String sDate, String eDate) {} ]:* 参数:String sDate对象表示开始时间* String eDate变量表示结束时间* 返回值:String* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:计算两个时间之间有几小时几分**=======================================================================** */public static String getConsumeHour(String sDate, String eDate) {//获得开始日期时间的--年--月--日--时--分--秒String syh [] = sDate.trim ().split(" ");String symd[] = syh[0].trim().split("-");String shms[] = syh[1].trim().split(":");int sy = Integer.parseInt(symd[0]);int sM = Integer.parseInt(symd[1]);int sd = Integer.parseInt(symd[2]);int sh = Integer.parseInt(shms[0]);int sm = Integer.parseInt(shms[1]);int ss = Integer.parseInt(shms[2]);//获得结束日期时间的--年--月--日--时--分--秒String eyh [] = eDate.trim ().split(" ");String eymd[] = eyh[0].trim().split("-");String ehms[] = eyh[1].trim().split(":");int ey = Integer.parseInt(eymd[0]);int eM = Integer.parseInt(eymd[1]);int ed = Integer.parseInt(eymd[2]);int eh = Integer.parseInt(ehms[0]);int em = Integer.parseInt(ehms[1]);int es = Integer.parseInt(ehms[2]);//获得sDate的long值long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//获得eDate的long值long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();//获得时间差sdt = edt - sdt;//生成过去多少时间的字符串String t = sdt / 3600000 + "小时" + sdt % 3600000 / 60000 + "分";return t;}}ToCap.java/** @(#)ToCap.java 1.24 03/12/19** Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.system;/*** <code> ToCap </code>* <p>* 本类用于转化中文大写人民币** @author 鲜强* @version 22.14, 04/05/06* @since CAZOSOFT 1.0*/public class ToCap {/*** 用户设置大写钱数(100,000,000 (一亿)以内).** @param money :* String 接收用户的正实数.* @return : String 包括圆整或角分的中文大写人民币,如果不合法,将返回空(null) */public String setMoney(String money) {String re = null;double num;//测试数据是否合法try {num = Double.parseDouble(money.trim());if (num < 100000000 && num >= 0) {//合法, 使用字符串开始转换re = this.mySetMoney(money);}//end if} catch (Exception ex) {}//end try//返回值return re;}/*** 大写转换函数. 功能: 转换数字为中文大写** @param num :* int 接受整数* @return : String 大写数字零到玖.*/private String setDaXie(int num) {String re = null;switch (num) {case 0:re = "零";break;case 1:re = "壹";break;case 2:re = "贰";break;case 3:re = "叁";break;case 4:re = "肆";break;case 5:re = "伍";break;case 6:re = "陆";break;case 7:re = "柒";break;case 8:re = "捌";break;case 9:re = "玖";break;default:break;}return re;}/*** 处理大写人民币** @param num :* String 接收处理过的字符串(实为数字). * @return : 返回处理过的大写人民币.*/private String mySetMoney(String num) throws Exception {//要返回的字符串String re = "";//转换过程String setNum = null;int index = num.indexOf(".");//处理整数if (index == -1) {setNum = num;} else {setNum = num.substring(0, index);}int weiShu = setNum.length();if (weiShu > 0) {int leng = setNum.length();int numYuan = Integer.parseInt("" + setNum.charAt(weiShu - 1));String zhuanYuan = setDaXie(numYuan);re = zhuanYuan;//个位if (weiShu > 1) {int numShi = Integer.parseInt("" + setNum.charAt(weiShu - 2));String zhuanShi = setDaXie(numShi);//十位re = zhuanShi + "拾" + re;if (weiShu > 2) {int numBai = Integer.parseInt(""+ setNum.charAt(weiShu - 3));String zhuanBai = setDaXie(numBai);//百位re = zhuanBai + "佰" + re;if (weiShu > 3) {int numQian = Integer.parseInt(""+ setNum.charAt(weiShu - 4));String zhuanQian = setDaXie(numQian);//千位re = zhuanQian + "仟" + re;if (weiShu > 4) {int numWan = Integer.parseInt(""+ setNum.charAt(weiShu - 5));String zhuanWan = setDaXie(numWan);//万位re = zhuanWan + "万" + re;if (weiShu > 5) {int numShiWan = Integer.parseInt(""+ setNum.charAt(weiShu - 6));String zhuanShiWan = setDaXie(numShiWan);//十万位re = zhuanShiWan + "拾" + re;if (weiShu > 6) {int numBaiWan = Integer.parseInt(""+ setNum.charAt(weiShu - 7));String zhuanBaiWan = setDaXie(numBaiWan);//百万位re = zhuanBaiWan + "佰" + re;if (weiShu > 7) {int numQianWan = Integer.parseInt(""+ setNum.charAt(weiShu - 8));String zhuanQianWan = setDaXie(numQianWan);//千万位re = zhuanQianWan + "仟" + re;}//end qianwan}//end baiwan}//end shiwan}//end wan}//end qian}//end bai}//end shi}//end yuan//处理小数if (index != -1) {String xiaoShu = num.substring(index + 1, num.length());int leng = xiaoShu.length();int numJiao = Integer.parseInt("" + xiaoShu.charAt(0));String zhuanJiao = setDaXie(numJiao);int numFen;if (leng == 1) {numFen = 0;}//end ifnumFen = Integer.parseInt("" + xiaoShu.charAt(1));String zhuanFen = setDaXie(numFen);//十分位+百分位if (numJiao == 0 && numFen != 0 || numJiao != 0 && numFen != 0) {re = re + "圆" + zhuanJiao + "角" + zhuanFen + "分";} else {re = re + "圆整";}//end if} else {re = re + "圆整";}//end indexreturn re;}}2)swing包CsUIManager.java/** @(#)CsUIManager.java 2006-4-13** public class** Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.swing;import java.awt.*;import javax.swing.*;import javax.swing.plaf.metal.*;/*** <code> CsUIManager </code>* <p>* 说明:本类为外观管理器* <p>* <strong>警告:</strong>* 使用金属(BOLD)外观时,输入中文会有异常,但不影响系统运行* <p>* 相关库文件:o.jar** @author 鲜强* @version 2006-4-13 23:05:39* @since CAZOSOFT 1.0*/public class CsUIManager {//Windows 外观public static final int WINDOWS = 0;//Java 默认外观public static final int METAL = 1;//Linux 外观public static final int MOTIF = 2;//WindowsClassic 外观public static final int WINDOWSCLASSIC = 3;//Alloy 外观public static final int ALLOY = 4;//Alloy 玻璃外观public static final int GLASSTHEMEALLOY = 5;//Alloy 迷幻外观public static final int ACIDTHEMEALLOY = 6;//Alloy 贝多因外观public static final int BEDOUIDTHEMEALLOY = 7;//Alloy 默认外观public static final int DEAFULTTHEMEALLOY = 8;//Bold 外观public static final int BOLD = 9;/*** 界面风格选择器** @param cp* 接受要改变的控件* @param style* 接受界面下标* @return 返回成功设置与否*/public static boolean setUI(Component cp, int style) {try {switch (style) {case 0:UIManager.setLookAndFeel("com.sun.java.swing.plaf."+ "windows.WindowsLookAndFeel");break;case 1:UIManager.setLookAndFeel("javax.swing.plaf."+ "metal.MetalLookAndFeel");break;case 2:UIManager.setLookAndFeel("com.sun.java.swing.plaf."+ "motif.MotifLookAndFeel");break;case 3:UIManager.setLookAndFeel("com.sun.java.swing.plaf."+"windows.WindowsClassicLookAndFeel");break;case 4:UIManager.setLookAndFeel("com.incors.plaf."+ "alloy.AlloyLookAndFeel");break;case 5:UIManager.setLookAndFeel("soft.wes.feels."+ "GlassThemeAlloyLookAndFeel");break;case 6:UIManager.setLookAndFeel("soft.wes.feels."+ "AcidThemeAlloyLookAndFeel");break;case 7:UIManager.setLookAndFeel("soft.wes.feels."+ "BedouinThemeAlloyLookAndFeel");break;case 8:UIManager.setLookAndFeel("soft.wes.feels."+ "DefaultThemeAlloyLookAndFeel");break;case 9:UIManager.put("swing.boldMetal", Boolean.FALSE);//可设置对话框外观JDialog.setDefaultLookAndFeelDecorated(true);//可设置设置窗口外观JFrame.setDefaultLookAndFeelDecorated(true);Toolkit.getDefaultToolkit().setDynamicLayout(true);System.setProperty("sun.awt.noerasebackground","true");UIManager.setLookAndFeel(new MetalLookAndFeel());break;}} catch (Exception ex) {JOptionPane.showMessageDialog(null, "更换风格失败,以原风格显。
C#WinForm酒店管理系统
酒店管理系统
一.数据库设计:HotelManager
客房类型表:RoomType
TypeID:类型编号,主键且自动增长
TypeName:类型名称,唯一
TypePrice:房间价格
AddBedPrice:加床价格
IsAddBed:是否允许加床,只能写“是”或“否”
Remark:备注
二.程序设计
1.主窗体:
1)MDI父窗体
2)单击“客房类型设置"打开客房类型设置窗体
3)单击“退出系统”,退出应用程序
2.客房类型设置
1)窗体加载,显示所有客房类型信息到到DataGridView控件
2)实现按类型名称进行模糊查询的功能。
3)实现添加客房类型功能,左边DataGridView及时刷新,提示添加成功
4)单击某行记录时,在下面的文本框中显示选中这行记录的详细信息
5)点击“保存修改”按钮,实现修改功能,使用SqlCommand修改数据到数据库,并刷新DataGridView控件信息
6)提示修改成功
7)增加右键删除功能,要求删除完后及时刷新
8)提示删除成功。
简易酒店管理系统代码
简易酒店管理系统代码#include#include#include#include//时间函数的定义structtm*localtime(consttime_t*timep);//时间的初始化char*wday[]={\星期天\星期一\星期二\星期三\星期四\星期五\星期六\time_ttimep;structtm*now;structtm*after;//time(&timep);//酒店房间的定义structhouse{charhouse_number[10];charhouse_shape[2];floathouse_price;intsum_pe rson;//structhouse*next;}h[10]={{\{\{\{\{\{\{\{\{\{\};structguest{//住客姓名、性别、年龄、身份、身份证号码,房号,床号,留宿日期、留宿时间、离店日期、离店时间。
charname[10];charsex[6];intage;charidentify[18];charidentify_number[18];charro om[10];charbed[10];//dateguest_in;//dateguest_out;structtm*p;structtm*q;struct guest*next;};voidfirst_inquiry(){inti=0;intn=0;charch[2]=\for(i=0;i<10;i++){if((strcmp(h[i].house_shape,ch)==0)){if(h[i].sum_person==0){printf(\}}}}voidsecond_inquiry(){{inti=0;intn=0;charch[2]=\for(i=0;i<10;i++){if((strcmp(h[i].house_shape,ch)==0)){if(h[i].sum_person==0){ printf(\}}}}}voidthird_inquiry(){inti=0;intn=0;charch[2]=\for(i=0;i<10;i++){if((strcmp(h[i].house_shape,ch)==0)){if(h[i].sum_person==0){printf(\}}}}voidlookfor_house_is_null(){intyour_choice;do{printf(\你要查询:1.单人间2.双人间3.多人间4.退出:\\n\printf(\输入你的选择:\\t\scanf(\switch(your_choice){case1:printf(\单人间的空余房间:\\t\first_inquiry();printf(\break;case2:printf(\双人房的空余房间:\\t\second_inquiry();printf(\break;case3:printf(\多人间的空余房间:\\t\third_inquiry();printf(\break;case4://exit(1);break;}}while(your_choice !=4);printf(\printf(\}voidadd_house_sum_number(charstr[10]){inti=0;for(i=0;i<10;i++){if((strcmp(h[i] .house_number,str)==0)){h[i].sum_person=1;}else{continue;}}}typedefstructguest*link_guest;//建立link_guestcreate_guest(void){link_guesthead=(link_guest)malloc(sizeof(structgu est));if(head!=null){head->next=null;}else{printf(\}returnhead;}boolis_null_guest(link_guesthead){if(head->next==null){returntrue;}returnfalse;}//写个函数判断一下当输入住客的房号时,是否还有个这个房间boolis_null_this_house(charstr[10]){inti=0;。
C#酒店管理系统完整版
∙所属分类:C#源码| 数据库应用
∙运行环境:C#+MSSQL
∙软件大小:6.43M
∙软件属性:共享版| 简体中文
∙软件评级:
∙收录更新:2008-12-24 | 2008-12-24
∙软件标签:酒店管理系统
∙相关链接:暂无演示
∙所属分类:C#源码| 数据库应用
∙运行环境:C#+MSSQL
∙软件大小:6.43M
∙软件属性:共享版| 简体中文
∙软件评级:
∙收录更新:2008-12-24 | 2008-12-24
∙软件标签:酒店管理系统
∙相关链接:暂无演示
代码完整的C#宾馆酒店管理系统源代码,你甚至可以把它作为真正的酒店系统来使用,单从界面来说已经很不错了, 截图如上,而且它的功能也很完善,大家可以看运行截图,开单结账、收银、客户管理等做的都不错。
酒店管理系统实现代码【范本模板】
//入住import java。
awt。
*;import java.awt。
event.*;import javax。
swing。
*;import javax。
swing。
border。
Border;import javax.swing.text.*;public class A1 extends JFrame implements WindowListener {//定义各个组件JFrame frame = new JFrame ("入住系统”);JLabel nameLabel = new JLabel(”客户姓名”);JLabel idtifyLabel = new JLabel(”身份证号”);JLabel roomLabel = new JLabel("入住房号”);JLabel moneyLabel = new JLabel(”应付金额");JTextField nameField = new JTextField();JTextField idtifyField= new JTextField();JTextField roomField= new JTextField();JTextField moneyField= new JTextField();JButton button1,button2;/*public static void main(String args[]){A1 a1 = new A1();a1.go();}*/public void go(){UpperCaseDocument ucDocument = new UpperCaseDocument();nameField.setDocument(ucDocument);nameField.setForeground(Color。
black);//frame。
addWindowListener(this);nameField。
C++版酒店管理程序代码
程序代码N:最终改进版代码(利用结构体储存多种类型的数据)好处:比数组能储存更多类型的数据!#include<iostream>#include<string>#include<cstdlib> // 常用函数库using namespace std;/*在C++中struct和类的区别在于struct不能有方法,所有成员是public的*/ struct Room {int Number;int Price;int State;int days;string Name;string Phone;string ID;};//room;可以在声明struct的时候声明一个struct实例Room room[80];class BookRoom //定义预定房间类{private:string cName; //顾客姓名int stayTime; //预定天数int roomType; //房间类型(1.标准单人间2.大床房3.标准双人间4. 套房)string phoneNum; // 预留手机号public:void setData(){string name;int time;int type;string num;coutvv"您好,请输入您的姓名:"vvendl;cin>>name; cName=name;coutvv"预定天数为:"vvendl; cin>>time; stayTime=time;coutvv"想要预定的房间类型:1■标准单人间100/天2.大床房200/天3标准双人间300/天4■套房400/天"vvendl;cin»type; roomType=type;coutvv"预留手机号:"vvendl;cin>>num; phoneNum=num;};void Book(){coutvv"正在预定…"vvendl;switch(this->roomType){case 1:for(int i=0;iv20;i++){if (room[i].State==0) //房间无人占用且无人预定{room[i].days=this->stayTime; room[i].Name=this->cName;room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime;coutvv"预定成功!房间号:"vvroom[i].Numbervvendlvvendl;room[i].State=1;break; //已被预订}else coutvvroom[i].Numbervv'号房间已有人"vvendl;}break;case 2:for(int i=20;iv40;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime;coutvv"预定成功!房间号:"vvroom[i].Numbervvendlvvendl;room[i].State=1; break;}else coutvvroom[i].Numbervv'号房间已有人"vvendl;}break;case 3:for(int i=40;iv60;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime;coutvv"预定成功!房间号:"vvroom[i].Numbervvendlvvendl;room[i].State=1; break;}else coutvvroom[i].Numbervv'号房间已有人"vvendl;}break;case 4:for(int i=60;iv80;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime;coutvv"预定成功!房间号:"vvroom[i].Numbervvendlvvendl;room[i].State=1; break;}else coutvvroom[i].Numbervv'号房间已有人"vvendl;}break;default:coutvv"您输入的房间类型有误!"vvendl;}};};class CheckIn //定义办理入住类{private:string cName;string cSex;string idNum; //身份证号int check_inDate; //入住日期int stayTime;int roomType;string phoneNum;public:void unbooked(){string name;string sex;string idnum;int date;int time;int type;string num;coutvv"客户姓名:"vvendl; cin>>name; cName=name;coutvv"客户性别:"vvendl; cin>>sex; cSex=sex;coutvv"客户身份证号:"vvendl; cin>>idnum; idNum=idnum;coutvv"入住日期:"vvendl; cin>>date; check_inDate=date;coutvv"占用天数:"vvendl; cin>>time;stayTime=time;coutvv"房间类型:1■标准单人间100/天2■大床房200/天3■标准双人间300/天4.套房400/天"vvendl; cin»type;roomType=type;coutvv"客户手机号:"vvendl; cin>>num; phoneNum=num;switch(this->roomType){case 1:for(int i=0;iv20;i++){if(room[i].State==0){ room[i].days=this->stayTime;room[i].Name=this->cName; room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime; room[i].ID=this->idNum;coutvv"入住成功!房间号:"vvroom[i].Numbervvendlvvendl;coutvv"请支付200 元押金"vvendlvvendl;room[i].State=1;break;}else coutvv'抱歉,该房间类型没有了"vvendl;}break;case 2:for(int i=20;iv40;i++){if(room[i].State==0){ room[i].days=this->stayTime;room[i].Name=this->cName; room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime; room[i].ID=this->idNum;coutvv"入住成功!房间号:"vvroom[i].Numbervvendlvvendl;coutvv"请支付400 元押金"vvendlvvendl;room[i].State=1;break;}else coutvv"抱歉,该房间类型没有了"vvendl;}break;case 3:for(int i=40;i<60;i++){if(room[i].State==0){room[i].days=this->stayTime; room[i].Name=this->cName;room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime; room[i].ID=this->idNum;coutvv"入住成功!房间号:"vvroomliJ.Numbervvendlvvendl;coutvv"请支付600 元押金"vvendlvvendl;room[i].State=1;break;}else coutvv'抱歉,该房间类型没有了"vvendl;}break;case 4:for(int i=60;iv80;i++){if(room[i].State==0){ room[i].days=this->stayTime;room[i].Name=this->cName; room[i].Phone=this->phoneNum;room[i].Price*=this->stayTime; room[i].ID=this->idNum;coutvv"入住成功!房间号:"vvroom[i].Numbervvendlvvendl;coutvv"请支付800 元押金"vvendlvvendl;room[i].State=1;break;}else coutvv"抱歉,该房间类型没有了"vvendl;}break;default:coutvv"您输入的房间类型有误!"vvendl;}}void booked(){string compareItem;string id_num;coutvv"请输入您的姓名或者手机号:"vvendl;cin>>compareItem;for(int i=0;iv80;i++){if(room[i].Name==compareItem||room[i].Phone==compareItem){coutvv" 验证成功!请支付:"vv(room[i].Price*2)vv" 元押金"vvendl;coutvv" 请登记客户的身份证号:"vvendl;cin>>id_num;idNum=id_num;room[i].ID=idNum;coutvv" 房间号为:"vvroom[i].Numbervvendlvv" 欢迎入住!"vvendlvvendl;break;}}}};class checkOut{private:string name;int number;int days;int price;public:void checkout(){int expense;coutvv"请输入房间号:"vvendl; cin>>number;coutvv"请输入姓名:"vvendl; cin>>name;coutvv"请输入实际住宿天数:"vvendl; cin>>days;for(int i=0;iv80;i++){if((room[i].Name==name) && (room[i].Number==number)){expense=days*(room[i].Number/100*100);coutvv" 房间号为"vvroom[i].Numbervv" 的房间实际消费为"vvexpensevv"元"vvendl;coutvv"押金为:"vvroom[i].Pricevvendl;if(expense>room[i].Price) coutvv" 请补交"vv(expense-room[i].Price)vv"元"vvendl;else coutvv" 退回:"vv(room[i].Price-expense)vv" 元"vvendl; break;}else coutvvroom[i].Numbervv'号房不符合"vvendl;}coutvv"房费核算清后请安任意键继续"vvendlvvendl;system("pause");co utvv "感谢入住本酒店,欢迎下次光临!"vvendlvvendl;}};void menu(){coutvv"欢迎使用酒店管理系统!"vvendl;coutvv"请选择:"vvendl;coutvv"1.预定房间"vvendl;coutvv"2.办理入住"vvendl;coutvv"3.退房结账"vvendl;coutvv"4.退出系统"vvendl;}void init(){int n=101;for(int i=0;iv20;i++){room[i].Number=n++;room[i].Price=100;room[i].State=0;}n=201;for(int i=20;iv40;i++){room[i].Number=n++; room[i].Price=200; room[i].State=0;}n=301;for(int i=40;iv60;i++){room[i].Number=n++; room[i].Price=300; room[i].State=0;}n=401;for(int i=60;iv80;i++){room[i].Number=n++; room[i].Price=400; room[i].State=0;}}int main(void){init();int flag=1;while(flag){menu();int c;cin>>c;switch(c){case 1:{BookRoom*a=new BookRoom;a->setData();a->Book();break;}case 2:{CheckIn*b=new CheckIn;coutvv"您有预定吗? 1.已预定2■未预定"vvendl;int c;cin>>c;switch(c){case 1:{b->booked();break;}case 2:{b->unbooked();break;}default:coutvv"输入有误!"vvendl;}break;}case 3:{checkOut *c=new checkOut;c->checkout();break;}case 4:{coutvv"谢谢使用,再见!"vvendl; flag=0;break;}default:coutvv"输入有误!"vvendl;}}return 0;}O :最初废除版(利用数组)因为数组只能简单的储存一种类型的数据,例如字符和数字。
酒店管理系统的设计与实现(正文+部分源代码)_毕业设计
酒店管理系统的设计与实现(正文+部分源代码)目录摘要........................................................ I II Abstract ...................................................... I V 引言. (1)第一章绪论 (2)1.1 系统开发背景 (2)1.2 课题研究目的及意义 (2)1.3 国内外现状及发展动态 (3)1.4 系统开发工具及相关技术 (4)1.4.1 系统开发工具 (4)1.4.2 数据库开发工具 (4)1.4.3 C#开发语言介绍 (5)第二章系统分析 (8)2.1 需求分析 (8)2.1.1 系统的主要功能 (8)2.1.2 系统的实现目标 (8)2.1.3 系统的性能需求 (9)2.1.4 运行环境 (10)2.2 可行性分析 (11)2.3 数据需求分析 (12)2.4 数据字典 (14)2.5 数据流图 (15)第三章系统设计 (16)3.1 系统功能结构设计 (16)3.2 数据库设计 (17)3.3 系统流程图 (20)第四章系统详细设计与实现 (22)4.1 用户登录 (22)4.3客房管理 (25)4.3.1客房信息修改 (25)4.3.2 入住管理 (29)4.3.3 退租管理 (33)4.3.4 客房类型管理 (35)4.4 员工管理 (38)4.5财务管理 (44)4.6 酒店初始化 (46)4.7用户密码更改 (48)第五章系统测试 (52)5.1测试的作用和意义 (52)5.2测试方法 (52)5.3系统测试 (53)结束语 (57)参考文献 (58)致谢 (59)附录 (60)摘要该软件采用应用开发技术,具有一些客房查询、入住、退房等功能,尤其依靠的优点来为酒店更好的进行管理,稳定性,可扩展性,安全性,健壮性,都是该酒店管理的优势所在。
啄木鸟酒店管理系统编码
啄木鸟酒店管理系统编码
摘要:
1.啄木鸟酒店管理系统的概述
2.编码的必要性和重要性
3.编码的具体实施步骤
4.编码的优点和可能的问题
5.结论
正文:
1.啄木鸟酒店管理系统的概述
啄木鸟酒店管理系统是一款全面、高效的酒店管理软件,它能够满足酒店在客房预订、客户管理、财务统计等方面的需求。
该系统的使用,能够大大提升酒店的管理效率,降低管理成本,提升酒店的竞争力。
2.编码的必要性和重要性
在信息化时代,任何一项工作的进行都离不开编码。
编码是计算机语言的基础,是实现计算机功能的基础。
对于啄木鸟酒店管理系统来说,编码的重要性不言而喻。
只有通过编码,才能让系统具有实际的功能,才能满足用户的需求。
3.编码的具体实施步骤
编码的实施步骤主要包括:需求分析、设计、编写代码、测试和调试。
需求分析是理解用户需求的过程,设计是根据需求分析的结果,设计出系统的框架和功能。
编写代码是将设计好的系统框架和功能用编程语言实现。
测试和调
试是检查代码的运行效果,发现并解决代码中的问题。
4.编码的优点和可能的问题
编码的优点在于,它能够让系统具有实际的功能,满足用户的需求。
同时,编码也能够提高工作效率,降低工作成本。
然而,编码也可能存在问题,比如代码的编写可能存在错误,可能会导致系统运行出现问题。
此外,编码也需要专业的技术支持,这也是一笔不小的成本。
5.结论
总的来说,编码是实现啄木鸟酒店管理系统功能的关键步骤。
基于python的酒店管理系统的用户功能模版代码
基于python的酒店管理系统的用户功能模版代码以下是基于Python的酒店管理系统的用户功能模板代码:```pythonclass User:def __init__(self, name, email, password): = nameself.email = emailself.password = passworddef login(self, email, password):if email == self.email and password == self.password: print("登录成功!")else:def book_room(self, room_type, start_date, end_date):#根据房间类型和日期预定房间#实现逻辑...def cancel_booking(self, booking_id):#取消已预定的房间#实现逻辑...def modify_booking(self, booking_id, new_start_date, new_end_date):#修改已预定的房间日期#实现逻辑...def view_booking(self):#查看当前用户预定的房间#实现逻辑...def view_available_rooms(self, start_date, end_date): #查看指定日期范围内可用的房间#实现逻辑...def make_payment(self, booking_id, payment_info):#根据预定的房间和支付信息进行支付#实现逻辑...def view_payment_history(self):#查看支付历史记录#实现逻辑...#使用示例user.book_room("Standard", "12-01-2022", "12-03-2022") user.view_booking。
资料酒店管理范文星级酒店管理系统代码
#i n c l u d e<>#include <>#include<>#include<>#include<>入住登记\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");人房\n\t\t\t2.双人房\n\t\t\t3.大床房\n");scanf("%d",&(roomTypeNum));switch(roomTypeNum) 小时计费; \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;}}。
- 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;}}。