第五组酒店客房预订管理系统的设计与实现源代码

合集下载

酒店管理系统代码(C语言版)

酒店管理系统代码(C语言版)

#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]。

酒店客房管理系统的设计与实现

酒店客房管理系统的设计与实现

酒店客房管理系统的设计与实现1. 引言酒店客房管理系统是一种帮助酒店管理客房信息并提供相关服务的软件系统。

该系统能够方便酒店管理人员对客房进行预订管理、入住登记、客房状态跟踪等操作,提高客房的利用率和服务质量。

本文将介绍酒店客房管理系统的设计与实现。

2. 功能需求分析酒店客房管理系统的功能主要包括以下几点:1.客房信息管理:包括客房类型、客房价格、客房状态等信息的录入和查询。

2.客房预订管理:支持客户对客房进行预订操作,同时能够进行客房的冲突检测,避免重复预订。

3.客房入住管理:记录客户的入住信息,包括入住登记、客房分配、押金收取等。

4.客房状态跟踪:及时更新客房的状态信息,包括客房是否已打扫、客房是否已空净等。

5.客房费用管理:包括客房的消费记录、押金退还、费用结算等功能。

6.统计报表生成:能够根据需求生成各类统计报表,如客房利用率、客房收入等。

3. 系统设计3.1 数据库设计酒店客房管理系统的数据库设计是系统设计的关键部分。

系统需要设计以下几个主要的数据表:•客房表:存储客房的基本信息,包括客房ID、客房类型、价格、状态等字段。

•客户表:存储客户的基本信息,包括客户ID、姓名、联系方式等字段。

•预订表:存储客户的预订信息,包括客户ID、客房ID、预订时间、预订状态等字段。

•入住表:存储客户的入住信息,包括客户ID、客房ID、入住时间、退房时间、押金等字段。

•消费表:存储客户的消费记录,包括客户ID、客房ID、消费金额、消费时间等字段。

3.2 系统架构设计酒店客房管理系统的架构设计应该采用分层结构,主要包括表示层、业务逻辑层和数据存储层。

•表示层:负责与用户交互,展示界面并接收用户输入,使用HTML、CSS和JavaScript等前端技术完成。

•业务逻辑层:负责处理用户请求、业务逻辑判断、调用数据存储层从数据库中读取或写入数据等,使用Java或其他后端语言实现。

•数据存储层:负责与数据库进行交互,读取或写入数据,可以使用关系数据库(SQL Server、MySQL)或非关系数据库(MongoDB、Redis)等进行存储。

酒店客房管理系统设计VB程序源代码

酒店客房管理系统设计VB程序源代码

酒店客房管理系统设计系统源代码酒店客房管理系统代码清单:frmAddlb窗体代码:Private Sub Command1_Click()Dim sql As StringDim conn As New adodb.ConnectionDim rs_fjstyle As New adodb.RecordsetIf Trim(Text1.Text) = "" ThenMsgBox "请输入房间类型", vbOKOnly + vbExclamation, ""Text1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = "" ThenMsgBox "请输入类型代号", vbOKOnly + vbExclamation, ""Text2.SetFocusExit SubEnd IfIf Trim(Text3.Text) = "" ThenMsgBox "请输入房间数量", vbOKOnly + vbExclamation, ""Text3.SetFocusExit SubEnd Ifconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"sql = "select * from 客房类别where 房间类型='" & Text1.Text & "'"rs_fjstyle.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_fjstyle.EOF Thenrs_fjstyle.AddNewrs_fjstyle.Fields(1) = Trim(Text1.Text)rs_fjstyle.Fields(2) = Trim(Text2.Text)rs_fjstyle.Fields(3) = Trim(Text3.Text)rs_fjstyle.UpdateMsgBox "添加成功", vbOKOnly + vbExclamation, ""Text1.Text = ""Text2.Text = ""Text3.Text = ""Text1.SetFocusrs_fjstyle.CloseElseMsgBox "你添加的类别已存在,请输入新类别", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = ""Text2.Text = ""rs_fjstyle.CloseExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload Mefrmlbinfo.ShowEnd SubfrmAdduser窗体代码:Private Sub Command1_Click()Dim sql As StringDim rs_add As New adodb.RecordsetDim conn As New adodb.Connectionconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"If Trim(Text1.Text) = "" ThenMsgBox "用户名不能为空,请输入!", vbOKOnly + vbExclamation, ""Text1.SetFocusElsesql = "select * from 用户信息"rs_add.Open sql, conn, adOpenKeyset, adLockPessimisticWhile (rs_add.EOF = False)If Trim(rs_add.Fields(1)) = Trim(Text1.Text) ThenMsgBox "已有这个用户", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = ""Text2.Text = ""Text3.Text = ""Exit SubElsers_add.MoveNextEnd IfWendIf Trim(Text2.Text) <> Trim(Text3.Text) ThenMsgBox "两次密码不一致", vbOKOnly + vbExclamation, ""Text2.SetFocusText2.Text = ""Text3.Text = ""Exit SubElsers_add.AddNewrs_add.Fields(1) = Text1.Textrs_add.Fields(2) = Text2.Textrs_add.UpdateMsgBox "添加用户成功!", vbOKOnly + vbExclamation, ""'Me.HideEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubfrmdfAdd窗体代码:Private Sub Command1_Click()Dim sql As StringDim conn As New adodb.ConnectionDim rs_fjstyle As New adodb.RecordsetIf Trim(Text1.Text) = "" ThenMsgBox "请输入姓名!", vbOKOnly + vbExclamation, ""Text1.SetFocusExit SubEnd If'If Trim(Text2.Text) = "" Then'MsgBox "日期不能为空!", vbOKOnly + vbExclamation, ""'Text2.SetFocus'Exit Sub'Else'If Not IsDate(Text2.Text) Then' MsgBox "请按照2006-12-30格式输入登记日期!", vbOKOnly + vbExclamation, "" ' Text2.Text = ""' Text2.SetFocus'Exit Sub'End If'End IfIf Trim(Text3.Text) = "" ThenMsgBox "请输入房间编号!", vbOKOnly + vbExclamation, ""Text2.SetFocusExit SubEnd IfIf Trim(Text4.Text) = "" ThenMsgBox "请选择房间类型!", vbOKOnly + vbExclamation, ""Text4.SetFocusExit SubEnd IfIf Trim(Text5.Text) = "" ThenMsgBox "请交定金!", vbOKOnly + vbExclamation, ""Text5.SetFocusExit SubEnd Ifconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"sql = "select * from 预订客房"rs_fjstyle.Open sql, conn, adOpenKeyset, adLockPessimistic'rs_fjstyle.EOFrs_fjstyle.AddNewrs_fjstyle.Fields(1) = Trim(Text1.Text)rs_fjstyle.Fields(4) = Trim(DTPicker1.Value)rs_fjstyle.Fields(5) = Trim(DTPicker2.Value)rs_fjstyle.Fields(2) = Trim(Text3.Text)rs_fjstyle.Fields(3) = Trim(Text4.Text)rs_fjstyle.Fields(6) = Val(Text5.Text)rs_fjstyle.UpdateMsgBox "添加成功", vbOKOnly + vbExclamation, ""rs_fjstyle.CloseCommand3.Enabled = TrueExit SubEnd SubPrivate Sub Command2_Click()Text1.Text = ""'Text2.Text = ""'Text3.Text = ""Text4.Text = ""Text5.Text = ""Text1.SetFocusEnd SubPrivate Sub Command3_Click()Dim conn As New adodb.ConnectionDim rs_fjstyle As New adodb.Recordsetconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"sql = "select 客人姓名,房间编号,房间类型,订房日期,订房时间,预交订金from 预订客房" rs_fjstyle.CursorLocation = adUseClientrs_fjstyle.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_fjstyleMsgBox "数据已更新!", vbOKOnly + vbExclamation, ""Exit SubEnd SubPrivate Sub Command4_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim sql As StringDim conn As New adodb.ConnectionDim rs_fjstyle As New adodb.Recordsetconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"sql = "select 客人姓名,房间编号,房间类型,订房日期,订房时间,预交订金from 预订客房" rs_fjstyle.CursorLocation = adUseClientrs_fjstyle.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_fjstyleExit SubSet DTPicker2.Value = TimeEnd SubfrmDfdy窗体代码:Private Sub Command1_Click()Dim conn As New adodb.ConnectionDim rs_dfdybb As New adodb.Recordsetconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"sql = "select 房间编号,房间类别,日住宿费,周住宿费,月住宿费,预订,空房from 客房信息"rs_dfdybb.Open sql, conn, adOpenKeyset, adLockPessimisticSet DataReport1.DataSource = rs_dfdybb.DataSourceDataReport1.DataMember = rs_dfdybb.DataMemberDataReport1.Show' Unload MeEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim sql As StringDim rs_dfdy As New RecordsetDim conn As New adodb.ConnectionOn Error GoTo loaderrorconn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"sql = "select 房间编号,房间类别,日住宿费,周住宿费,月住宿费,预订,空房from 客房信息" rs_dfdy.CursorLocation = adUseClientrs_dfdy.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_dfdyExit Subloaderror:MsgBox Err.DescriptionEnd SubfrmdfEdit窗体代码:Option ExplicitDim rs_xgkfinfo As New adodb.RecordsetPrivate Sub cmddel_Click()Dim answer As Stringanswer = MsgBox("确定要删除吗?", vbYesNo, "")If answer = vbYes ThenDataGrid1.AllowDelete = TrueDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = Falsers_xgkfinfo.Deleters_xgkfinfo.UpdateDataGrid1.RefreshElseExit SubEnd IfEnd SubPrivate Sub cmdEdit_Click()Dim answer As StringOn Error GoTo cmdEditcmddel.Enabled = FalsecmdEdit.Enabled = Falsecmdupdate.Enabled = TrueCommand4.Enabled = FalseDataGrid1.AllowUpdate = TrueExit SubcmdEdit:If Err.Number <> 0 ThenMsgBox Err.DescriptionEnd IfEnd Sub'-------------------------------------------------------Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)If ColIndex = 3 ThenIf Not IsDate(DataGrid1.Columns(3).Value) ThenCancel = TrueMsgBox "请输入一个日期型数据。

C语言程序设计客房管理系统源码和报告

C语言程序设计客房管理系统源码和报告

C语言程序设计客房管理系统源码和报告客房管理系统是一种常见的管理系统,它能够实现对酒店客房的预订、入住、退房等操作,有效地管理酒店的客房资源,提高管理效率。

本文将介绍一个简单的C语言程序设计,实现了基本的客房管理功能。

1.功能设计本客房管理系统主要包括以下功能:-显示房间列表:显示所有房间的编号、类型、价格等信息-入住房间:根据用户输入的房间号和入住人信息,将房间状态设置为“入住中”-退房:根据用户输入的房间号,将房间状态设置为“空闲”,并生成退房结算单-查询房间信息:根据用户输入的房间号,显示该房间的详细信息-按房间类型查询:根据用户输入的房间类型,显示该类型的所有房间信息2.数据结构设计为了实现上述功能,我们需要设计合适的数据结构。

-客房类型结构体:包括房间类型名称和价格等信息-客房结构体:包括房间号、类型、状态、入住人信息等信息具体的数据结构定义和全局变量声明如下:```c#define TYPE_NUM 3 // 客房类型数量typedef struct RoomTypechar typeName[20]; // 类型名称double price; // 价格} RoomType;typedef struct Roomint roomNum; // 房间号int type; // 房间类型,对应RoomType数组的下标int status; // 房间状态,0表示空闲,1表示入住中char name[20]; // 入住人姓名} Room;RoomType types[TYPE_NUM] = {{"单人间", 100.0}, {"标准间", 200.0}, {"豪华间", 300.0}}; // 房间类型数组,包含三种类型Room rooms[100]; // 客房数组,最多100个房间int roomNum = 0; // 当前客房数量```3.主程序设计主程序中包含下面几个函数:-显示房间列表:遍历客房数组,输出每个房间的编号、类型和状态-入住房间:根据用户输入的房间号和入住人信息,将房间状态设置为“入住中”-退房:根据用户输入的房间号,将房间状态设置为“空闲”,并生成退房结算单-查询房间信息:根据用户输入的房间号,显示该房间的详细信息-按房间类型查询:根据用户输入的房间类型,显示该类型的所有房间信息具体的主程序设计如下:```c#include <stdio.h>void showRoomLisprintf("房间号类型状态入住人姓名\n");for (int i = 0; i < roomNum; i++)printf("%-5d %-8s %-8s %s\n", rooms[i].roomNum,types[rooms[i].type].typeName,rooms[i].status == 0 ? "空闲" : "入住中", rooms[i].name);}void checkIint roomNum;printf("请输入房间号:");scanf("%d", &roomNum);//检查房间是否存在,并且是否空闲for (int i = 0; i < roomNum; i++)if (rooms[i].roomNum == roomNum)if (rooms[i].status == 0)printf("请输入入住人姓名:");scanf("%s", rooms[i].name);rooms[i].status = 1; // 设置房间状态为“入住中”printf("入住成功!\n");return;} elseprintf("该房间已被占用!\n");return;}}}printf("房间不存在!\n");void checkOuint roomNum;printf("请输入房间号:");scanf("%d", &roomNum);//检查房间是否存在,并且是否入住中for (int i = 0; i < roomNum; i++)if (rooms[i].roomNum == roomNum)if (rooms[i].status == 1)printf("请输入退房人姓名:");scanf("%s", rooms[i].name);rooms[i].status = 0; // 设置房间状态为“空闲”printf("退房成功!\n");//生成退房结算单printf("房间号:%d\n", rooms[i].roomNum);printf("入住人:%s\n", rooms[i].name);printf("房间类型:%s\n", types[rooms[i].type].typeName); printf("房费:%.2f元\n", types[rooms[i].type].price); return;} elseprintf("该房间未入住!\n");return;}}printf("房间不存在!\n");void queryRoomInfint roomNum;printf("请输入房间号:");scanf("%d", &roomNum);//检查房间是否存在for (int i = 0; i < roomNum; i++)if (rooms[i].roomNum == roomNum)printf("房间号:%d\n", rooms[i].roomNum);printf("房间类型:%s\n", types[rooms[i].type].typeName);printf("房费:%.2f元\n", types[rooms[i].type].price);printf("状态:%s\n", rooms[i].status == 0 ? "空闲" : "入住中");printf("入住人:%s\n", rooms[i].name);return;}printf("房间不存在!\n");void queryRoomByTypchar typeName[20];printf("请输入房间类型:");scanf("%s", typeName);int type;//获取房间类型对应的序号for (int i = 0; i < TYPE_NUM; i++)if (strcmp(types[i].typeName, typeName) == 0) type = i;break;}}//查找对应类型的房间int count = 0;for (int i = 0; i < roomNum; i++)if (rooms[i].type == type)count++;printf("房间号:%d\n", rooms[i].roomNum);printf("房间类型:%s\n", types[rooms[i].type].typeName);printf("房费:%.2f元\n", types[rooms[i].type].price);printf("状态:%s\n", rooms[i].status == 0 ? "空闲" : "入住中");printf("入住人:%s\n", rooms[i].name);}}if (count == 0)printf("该类型的房间不存在!\n");}int maiint choice;while (1)printf("\n--------欢迎使用客房管理系统--------\n");printf("1. 显示房间列表\n");printf("2. 入住房间\n");printf("3. 退房\n");printf("4. 查询房间信息\n");printf("5. 按房间类型查询\n"); printf("6. 退出\n");printf("请输入您的选择:"); scanf("%d", &choice);switch (choice)case 1:showRoomList(;break;case 2:checkIn(;break;case 3:checkOut(;break;case 4:queryRoomInfo(;break;case 5:queryRoomByType(;break;case 6:printf("感谢使用客房管理系统,再见!\n");return 0;default:printf("输入有误,请重新输入!\n");break;}}```以上就是一个简单的客房管理系统的C语言程序设计源码和报告,实现了基本的客房管理功能,能够实现客房的预订、入住、退房等操作。

(完整word版)酒店管理系统代码

(完整word版)酒店管理系统代码

#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。

客房管理系统源代码

客房管理系统源代码

#include<iostream>#include<string>#include<fstream>using namespace std;/*问题描述:该系统能简单实现对客栈的住宿情况进行管理。

至少包括以下信息:房号、房型、单价(每床)、已住人数;住客姓名、性别、年龄、身份、身份证号码,房号,床号,入住日期、入住时间、离店日期、离店时间。

这些信息应存放在两个文件中,分别是客房信息文件、住客信息文件。

"房型"可取值1-3,分别表示单人间、双人间、通铺(可以住很多人的房间)功能要求:1.具有建立数据文件(客房信息文件、住客信息文件)功能;2.具有数据输入功能;3.具有数据修改功能;4.具有数据删除功能;5.能查询(查找)一些基本信息(如按房号查询、按姓名查询、空余客房查询等);6.具有多种统计功能(要求有一定的实用性)(如某客房当前有那些空床、某住客应付多少费用、某天住店总人数和总收入等)说明:(1)功能各方面越完善越好(2)自定义的数据结构可以使用数组,链表,树等,可以使用多种数据结构来存放数据,然后在其上使用不同的排序算法。

(3)若用数组,必须动态分配空间(文本文件中最好有一行来表示数组应该有多大,这样便于动态分配空间)*///*************************************************类定义class Customer //住客信息类{public:string name; //姓名string id; //身份证号string sex;//性别int age; //年龄int roomnum; //入住房号string ruzhum; //入住日期string ruzhut;//入住时间string lidianm;//离店日期string lidiant;//离店时间int staytime; //入住天数Customer(){name="无";id="0";sex="0";age= -1;roomnum=0;ruzhum="0";ruzhut="0";lidianm="0";lidiant="0";staytime=0;};~Customer(){};};class Room //客房类{public:int num;//房号int price; //价格string type; //类型int renshu; //入住人数int yajin; //客房押金Room(){num=0;price=0;type=50;renshu=0;yajin=0;};~Room(){};};//******************************************************************** ******************客房信息录入功能void room_luru(Room *room);void room_luru2(Room *room);void room_luru(Room *room)//无房,添房函数{if(room[0].num==0){int size;static int Number=300;cout<<"目前暂无房间信息,请添加!"<<endl<<endl;cout<<"请输入要添加的房间数:";cin>>size;for(int i=0;i<size;i++){room[i].num=Number++;cout<<"房间号码:"<<room[i].num;cout<<endl;cout<<"房间类型:";cin>>room[i].type;cout<<"房间价格:";cin>>room[i].price;cout<<endl<<endl;};cout<<"客房信息录入成功!"<<endl<<endl;}else{string P;cout<<"客房信息已有,是否还要添加房间?(Y/N)";cin>>P;if(P=="Y")room_luru2(room);else if(P=="N")cout<<"已取消房间添加."<<endl<<endl;else cout<<"此操作非法!"<<endl<<endl;};system("pause");system("cls");};//******************************************************************** ********void room_luru2(Room *room)//有房,添加房间函数{static int Number=300;string P;do{// int Number=300;for(int i=0;i<30;i++){if(room[i].num==0){room[i].num=Number++;cout<<"房间号码:"<<room[i].num;cout<<endl;cout<<"房间类型:";cin>>room[i].type;cout<<endl;cout<<"房间价格:";cin>>room[i].price;cout<<endl<<endl;cout<<"房间添加成功,是否继续添加?(Y/N):";cin>>P;break;}else Number++;};}while(P=="Y");if(P=="N")cout<<"已取消添加。

酒店管理系统的设计与实现(正文+部分源代码)_毕业设计

酒店管理系统的设计与实现(正文+部分源代码)_毕业设计

酒店管理系统的设计与实现(正文+部分源代码)目录摘要........................................................ 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)摘要该软件采用应用开发技术,具有一些客房查询、入住、退房等功能,尤其依靠的优点来为酒店更好的进行管理,稳定性,可扩展性,安全性,健壮性,都是该酒店管理的优势所在。

宾馆客房系统代码

宾馆客房系统代码

宾馆客房系统代码第一页面中标签控件属性如下: Object Label1: Tlabel Left=57 Top=78Width=36Height=12Caption='房间号'Object Label1: Tlabel Left=57Top=110Width=48Height=12Caption='客户姓名'Object Label1: Tlabel Left=57Top=142Width=48Height=12Caption='身份证号码'Object Label1: Tlabel Left=57Top=174Width=48Height=12Caption='入住时间'Object Label1: Tlabel Left=57Top=214Width=48Height=12Caption='入住理由'Object Label1: Tlabel Left=312 Top=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=Datasource1Taborder=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=Datasource1 Taborder=5Object DBEdit1: TDBEdit Left=382Top=111Width=121Height=20DataField='入住天数' DataSource=Datasource1 Taborder=6Object DBEdit1: TDBEdit Left=382Top=143Width=121Height=20DataField='值班人员' DataSource=Datasource1 Taborder=7Object DBEdit1: TDBEdit Left=382Top=175Width=121Height=20DataField='电话号码' DataSource=Datasource1 Taborder=8Object DBEdit1: TDBEdit Left=382Top=207Width=121Height=20DataField='结算费用' DataSource=Datasource1 Taborder=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 begin Messagebeep(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: Tlabel Left=24Top=200Width=60Height=12Caption=按姓名查询Object Labell4: Tlabel Left=24Top=224Width=60Height=19Caption=按房号查询Object Labell5: Tlabel Left=23Top=246Width=60Height=12Caption=按时期查询endObject DBFrid1: TDBGrid Left=8Top=40Width=553Height=140DataSource=DataSource1 TitleFont.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 do BeginSum1:=sum1+table1.fieldbyname('结算费用')。

酒店管理系统实现代码

酒店管理系统实现代码

;import .;import class A1 extends JFrame implements WindowListener {;import .;import class A2 extends JFrame {;import .;import class A3 extends JFrame {;import .;import class A4 extends JFrame {;import .;import class A5 extends JFrame {;import .;import class F{private JFrame frame;private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13;JTextArea ta = new JTextArea20,20;JTextArea tb = new JTextArea20,20;public static void mainString args{F that=new F;;}void go{frame=new JFrame"客房检查";Container contentPane=;JPanel P1=new JPanel;new GridLayout;b1=new JButton"101 \n单人间";b2=new JButton"102 \n单人间";b3=new JButton"103 \n单人间";b4=new JButton"104 \n单人间 ";b5=new JButton"105 \n单人间";b6=new JButton"201 \n双人间";b7=new JButton"202 \n双人间";b8=new JButton"203 \n双人间";b9=new JButton"204 \n双人间";b10=new JButton"205 \n双人间"; b11=new JButton"301 \n总统套房"; b12=new JButton"302 \n总统套房"; b13=new JButton"303 \n总统套房"; ;;;;;;;;;;;;;b1;b2;b3;b4;b5;b6;b7;b8;b9;b10;b11;b12;b13;"房间总数:13";"\n当前占用:";"\n当前可供:";tb;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{ if=="101 \n单人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n101房间是否打扫: ";"\n101房间里是否有家具损坏: ";"\n101房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="102 \n单人间"{JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n102房间是否打扫: ";"\n102房间里是否有家具损坏: ";"\n102房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;p2;;true;}else if=="103 \n单人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n103房间是否打扫: ";"\n103房间里是否有家具损坏: ";"\n103房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="104 \n单人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n104房间是否打扫: ";"\n104房间里是否有家具损坏: ";"\n104房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=newActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="105 \n单人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n105房间是否打扫: ";"\n105房间里是否有家具损坏: ";"\n105房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="201 \n双人间"{"";JFrame frame1=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n201房间是否打扫: ";"\n201房间里是否有家具损坏: ";"\n201房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="202 \n双人间"{"";JFrame frame2=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n202房间是否打扫: ";"\n202房间里是否有家具损坏: ";"\n202房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="203 \n双人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n203房间是否打扫: ";"\n203房间里是否有家具损坏: ";"\n203房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="204 \n双人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n204房间是否打扫: ";"\n204房间里是否有家具损坏: ";"\n204房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="205 \n双人间"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n205房间是否打扫: ";"\n205房间里是否有家具损坏: ";"\n205房间是否交足余额:";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}else if=="301 \n总统套房"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n301房间是否打扫: ";"\n301房间里是否有家具损坏: ";"\n301房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public voidactionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;;ta;p2;;true;}else if=="302 \n总统套房"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n302房间是否打扫: ";"\n302房间里是否有家具损坏: ";"\n302房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;;ta;p2;;true;}else if=="303 \n总统套房"{"";JFrame frame=new JFrame"检查信息";JPanel p2=new JPanel;Container cp=;"\n303房间是否打扫: ";"\n303房间里是否有家具损坏: ";"\n303房间是否交足余额: ";JButton a=new JButton"提交";a;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{if=="提交"{ta,"提交成功 ",null,;}}};al;ta;;p2;;true;}}};al;al;al;al;al;al;al;al;al;al;al;al;al;P1,;10000,300;true;}}第七个:import .;import .;import class GridLayoutDemo {private JFrame frame;private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13;JTextArea ta = new JTextArea20,20;JTextArea tb = new JTextArea20,20;/public static void mainString args{GridLayoutDemo b1 = new GridLayoutDemo;;}/public void go{frame=new JFrame"房态图";Container contentPane=;JPanel P1=new JPanel;new GridLayout3,5;b1=new JButton"101 \n单人间";b2=new JButton"102 \n单人间";b3=new JButton"103 \n单人间";b4=new JButton"104 \n单人间 "; b5=new JButton"105 \n单人间";b6=new JButton"201 \n双人间";b7=new JButton"202 \n双人间";b8=new JButton"203 \n双人间";b9=new JButton"204 \n双人间";b10=new JButton"205 \n双人间"; b11=new JButton"301 \n总统套房"; b12=new JButton"302 \n总统套房"; b13=new JButton"303 \n总统套房"; ;;;;;;;;;;;;;b1; b2; b3; b4; b5; b6; b7; b8; b9; b10; b11; b12;b13;"房间总数:13";"\n当前占用:";"\n当前可供:";tb;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{ if=="101 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n101客户名 : ";"\n101房间单价 :150元/天 ";"\n101入住时间 : ";"\n101入住天数 : ";"\n101离开时间 : ";"\n101总金额 : ";ta;;p2;;true;}else if=="102 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n102客户名 : ";"\n102房间单价 :150元/天 ";"\n102入住时间 : ";"\n102入住天数 : ";"\n102离开时间 : ";"\n102总金额 : ";ta;;p2;;true;}else if=="103 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n103客户名 : ";"\n103房间单价 :150元/天 ";"\n103入住时间 : ";"\n103入住天数 : ";"\n103离开时间 : ";"\n103总金额 : ";ta;;p2;;true;}else if=="104 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n104客户名 : ";"\n104房间单价 :150元/天 ";"\n104入住时间 : ";"\n104入住天数 : ";"\n104离开时间 : ";"\n104总金额 : ";ta;;p2;;true;}else if=="105 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n105客户名 : ";"\n105房间单价 :150元/天 ";"\n105入住时间 : ";"\n105入住天数 : ";"\n105离开时间 : ";"\n105总金额 : ";ta;;p2;;true;}else if=="201 \n双人间"{"";JFrame frame1=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n201客户名 : ";"\n201房间单价 :260元/天 ";"\n201入住时间 : ";"\n201入住天数 : ";"\n201离开时间 : ";"\n201总金额 : ";ta;;p2;;true;}else if=="202 \n双人间"{"";JFrame frame2=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n202客户名 : ";"\n202房间单价 :260元/天 ";"\n202入住时间 : ";"\n202入住天数 : ";"\n202离开时间 : ";"\n202总金额 : ";;ta;;p2;;true;}else if=="203 \n双人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n203客户名 : ";"\n203房间单价 :260元/天 ";"\n203入住时间 : ";"\n203入住天数 : ";"\n203离开时间 : ";"\n203总金额 : ";ta;;p2;;true;}else if=="204 \n双人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n204客户名 : ";"\n204房间单价 :260元/天 ";"\n204入住时间 : ";"\n204入住天数 : ";"\n204离开时间 : ";"\n204总金额 : ";ta;;p2;;true;}else if=="205 \n双人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n205客户名 : ";"\n205房间单价 :260元/天 ";"\n205入住时间 : ";"\n205入住天数 : ";"\n205离开时间 : ";"\n205总金额 : ";ta;;p2;true;}else if=="301 \n总统套房"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n301客户名 : ";"\n301房间单价 :800元/天 ";"\n301入住时间 : ";"\n301入住天数 : ";"\n301离开时间 : ";"\n301总金额 : ";;ta;p2;;true;}else if=="302 \n总统套房"{JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n302客户名 : ";"\n302房间单价 :800元/天 ";"\n302入住时间 : ";"\n302入住天数 : ";"\n302离开时间 : ";"\n302总金额 : ";;ta;p2;;true;}else if=="303 \n总统套房"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n303客户名 : ";"\n303房间单价 :800元/天 ";"\n303入住时间 : ";"\n303入住天数 : ";"\n303离开时间 : ";"\n303总金额 : ";ta;;p2;;true;}}};al;al;al;al;al;al;al;al;al;al;al;al;al;P1,;1000,500;true;}}第八个:import .;import .;import .;public class jd extends JFrame implements ActionListener{JFrame frame;JPanel panel;public static void mainString args{ jd a1=new jd;;}public void go{frame=new JFrame"酒店客户管理系统"; JPanel panel=new JPanel;JMenuBar menubar=new JMenuBar;menubar;JMenu menu;JMenuItem menuitem;menu=new JMenu"前台管理";menu;menuitem=new JMenuItem"房态图"; this;menuitem;menuitem=new JMenuItem"客户维护"; menuitem;this;menuitem=new JMenuItem"前台接待";menuitem;this;menuitem=new JMenuItem"前台问讯";menuitem;this;;import .;import class L {private JFrame frame;private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13;JTextArea ta = new JTextArea20,20;JTextArea tb = new JTextArea20,20;/public static void mainString args{L b1 = new L;;}/public void go{frame=new JFrame"房态图";Container contentPane=;JPanel P1=new JPanel;new GridLayout3,5;b1=new JButton"101 \n单人间";b2=new JButton"102 \n单人间";b3=new JButton"103 \n单人间";b4=new JButton"104 \n单人间 "; b5=new JButton"105 \n单人间";b6=new JButton"201 \n双人间";b7=new JButton"202 \n双人间";b8=new JButton"203 \n双人间";b9=new JButton"204 \n双人间";b10=new JButton"205 \n双人间"; b11=new JButton"301 \n总统套房"; b12=new JButton"302 \n总统套房"; b13=new JButton"303 \n总统套房"; ;;;;;;;;;;;;;b1;b2;b3;b4;b5;b6;b7;b8;b9;b10;b11;b12;b13;"房间总数:13"; "\n当前占用:";"\n当前可供:";tb;ActionListener al=new ActionListener{public void actionPerformedActionEvent e{ if=="101 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n101客户名 : ";"\n101房间单价 : ";"\n101入住时间 : ";"\n101入住天数 : ";"\n101离开时间 : ";"\n101总金额 : ";ta;;p2;;true;}else if=="102 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n102客户名 : ";"\n102房间单价 : ";"\n102入住时间 : ";"\n102入住天数 : ";"\n102离开时间 : ";"\n102总金额 : ";ta;;p2;;true;}else if=="103 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n103客户名 : ";"\n103房间单价 : ";"\n103入住时间 : ";"\n103入住天数 : ";"\n103离开时间 : ";"\n103总金额 : ";ta;;p2;;true;}else if=="104 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n104客户名 : ";"\n104房间单价 : ";"\n104入住时间 : ";"\n104入住天数 : ";"\n104离开时间 : ";"\n104总金额 : ";ta;;p2;;true;}else if=="105 \n单人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n105客户名 : ";"\n105房间单价 : ";"\n105入住时间 : ";"\n105入住天数 : ";"\n105离开时间 : ";"\n105总金额 : ";ta;;p2;;true;}else if=="201 \n双人间"{"";JFrame frame1=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n201客户名 : ";"\n201房间单价 : ";"\n201入住时间 : ";"\n201入住天数 : ";"\n201离开时间 : ";"\n201总金额 : ";ta;;p2;;true;}else if=="202 \n双人间"{"";JFrame frame2=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n202客户名 : ";"\n202房间单价 : ";"\n202入住时间 : ";"\n202入住天数 : ";"\n202离开时间 : ";"\n202总金额 : ";;ta;;p2;;true;}else if=="203 \n双人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n203客户名 : ";"\n203房间单价 : ";"\n203入住时间 : ";"\n203入住天数 : ";"\n203离开时间 : ";"\n203总金额 : ";ta;;p2;;true;}else if=="204 \n双人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n204客户名 : ";"\n204房间单价 : ";"\n204入住时间 : ";"\n204入住天数 : ";"\n204离开时间 : ";"\n204总金额 : ";ta;;p2;;true;}else if=="205 \n双人间"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n205客户名 : ";"\n205房间单价 : ";"\n205入住时间 : ";"\n205入住天数 : ";"\n205离开时间 : ";"\n205总金额 : ";ta;;p2;;true;}else if=="301 \n总统套房"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n301客户名 : ";"\n301房间单价 : ";"\n301入住时间 : ";"\n301入住天数 : ";"\n301离开时间 : ";"\n301总金额 : ";;ta;p2;;true;}else if=="302 \n总统套房"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n302客户名 : ";"\n302房间单价 : ";"\n302入住时间 : ";"\n302入住天数 : ";"\n302离开时间 : ";"\n302总金额 : ";;ta;p2;;true;}else if=="303 \n总统套房"{"";JFrame frame=new JFrame"宾客信息";JPanel p2=new JPanel;Container cp=;"\n303客户名 : ";"\n303房间单价 : ";"\n303入住时间 : ";"\n303入住天数 : ";"\n303离开时间 : ";。

C语言程序设计客房管理系统源码和报告精编版

C语言程序设计客房管理系统源码和报告精编版

C语言程序设计客房管理系统源码和报告公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-《C语言程序设计》综合实验报告一、需求分析编写一个客房管理系统,提供键盘式菜单实现功能选择,功能包括:用户登记、统计、查询和用户信息修改。

软件平台:CODEBLOCKS二、整体设计整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块。

数据以TXT格式存储,支持保存信息。

三、详细设计(1通过函数添加信息到txt。

是(2)统计模块读取txt信息到结构体数组room,提示用户选择统计方式,设置计数器,顺序遍历Room数组,1、计数器记录数组数,即总客房数2、判断每一个数组中的结构体的时间是否和需要查询的日期相同,若相同,计数器加一(3)查询模块调用readfile 函数,将信息读入room结构体数组中,提示用户选择查询方式,通过基本查找算法查找Room 数组。

可以按房间号、价格、房间标记、用户姓名、居民身份证查询。

(4)修改模块调用readfile 函数,读取信息到room 结构体数组,提示用户输入需要修改的房间号,采用基本查找算法在数组中找到要修改的数据,提示用户重新更改房间信息,最后将结构体数组重新写入文件保存。

四、源代码#include <stdio.h>#include <stdlib.h>#include <string.h>选择统计方式 2、按时间统计 1、统计总客房数 遍历每一个结构判断是否和要调用打印函数,是 遍历每一个结构调用readfile (读取文件函判断是否是用户输入需要查询的房修改结构体j 调用saveall 函调用readfile 函数,读读取信息#define M 80//客户结构体typedef struct client{char name[12]; //姓名int sex; //性别int age; //年龄char id[20]; //身份证号int year; //入住时间int month;int date;}CLIENT;//客房结构体struct Hotel{int roomid;int tel; //用户的话int price; //价格int sign; //默认标记为空房间 CLIENT client_list; //客户信息}room[M];void Menu(); //目录界面void dengji(struct Hotel room[]);void savefile(struct Hotel room[],int i);int readfile(struct Hotel room[]);void tongji(struct Hotel room[]);void chaxun(struct Hotel room[]);void printmessage(struct Hotel room[],int n); void xiugai(struct Hotel room[]);//主函数int main(){int n;char reply;Menu();do{printf("请输入选项对应的数字:\n");scanf("%d",&n);while(n!=1&&n!=2&&n!=3&&n!=4){printf("请输入各选项对应的数字!\n"); scanf("%d",&n);}switch (n){case 1:dengji(room);break;case 2:tongji(room);break;case 3:chaxun(room);break;case 4:xiugai(room);break;}printf("是否还要进入其它选项(回复Y或y继续)\n"); scanf(" %c",&reply);}while (reply=='y'||reply=='Y');return 0;}//系统目录void Menu(){printf("************************客房管理系统***************************\n");printf( "\t\t\t 1————登记\n" );printf( "\t\t\t 2————统计\n" );printf( "\t\t\t 3————查询\n" );printf( "\t\t\t 4————修改\n" );printf("******************************************************* ********\n");}//登记客户信息void dengji(struct Hotel room[]){int x,j,i,flag;char answer;do{i=readfile(room);do{flag=0;printf("输入您想入住的房间号:(三位数)\n"); scanf("%3d",&x);for(j=0;j<i;j++){if(room[j].roomid==x){printf("该房间已经被占用!\n");flag=1;}}}while(flag>0);room[i+1].roomid=x;printf("请输入您的电话:(仅支持六位数号码~)\n"); scanf("%d",&room[i+1].tel);printf("入住价格\n");scanf("%d",&room[i+1].price);printf("请输入您的名字\n");scanf("%s",room[i+1].client_);printf("性别:(1表示女,0表示男)\n");scanf("%d",&room[i+1].client_list.sex);printf("您的年龄:\n");scanf("%d",&room[i+1].client_list.age);printf("您的id:\n");scanf("%s",room[i+1].client_list.id);printf( "请输入入住年月日(格式:2015 11 11)\n");scanf("%4d%2d%2d",&room[i+1].client_list.year,&room[i+1].client _list.month,&room[i+1].client_list.date);savefile(room,i+1);printf("是否还要继续登记(回复Y或y继续)\n");scanf(" %c",&answer);}while(answer=='Y'||answer=='y');}//读取txt中的信息int readfile(struct Hotel room[]){FILE *fp;int i;if((fp=fopen("room.txt","r"))==NULL){printf("Failure to open score.txt!\n");exit(0);}for (i=0;!feof(fp);i++){fscanf(fp,"%5d",&room[i].roomid);fscanf(fp,"%6d",&room[i].price);fscanf(fp,"%15d",&room[i].tel);fscanf(fp,"%12s",room[i].client_); fscanf(fp,"%4d",&room[i].client_list.sex); fscanf(fp,"%6d",&room[i].client_list.age); fscanf(fp,"%20s",room[i].client_list.id);fscanf(fp,"%7d",&room[i].client_list.year); fscanf(fp,"%5d",&room[i].client_list.month); fscanf(fp,"%5d",&room[i].client_list.date); }fclose(fp);return i;}//保存结构体数组信息到文件void savefile(struct Hotel room[],int i){FILE *fp;if((fp = fopen("room.txt","a"))==NULL){printf("Failure to open score.txt!\n");exit(0);}fprintf(fp,"%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d",room[i].roomid,room[i].price,room[i].tel,room[i].client_,room[i].client_list.sex,room[i].client_list.age,room[i].client_list.id,room[i].client_list.year,room[i].client_list.month,room[i].client_list.date);fclose(fp);}//统计模块void tongji(struct Hotel room[]){int n,x;int year,month,day,j,count=0;x=readfile(room);printf("请选择统计方式:1>统计房客数,2>统计某一天的房客数\n");scanf("%d",&n);switch (n){case 1:printf("客房总数为:%d\n",x);break;case 2:printf("请输入具体时间:\n");scanf("%d%d%d",&year,&month,&day);for(j=0;j<x;j++){if(room[j].client_list.year==year&&room[j].client_list.month==m onth&&room[j].client_list.date==day){count++;}}printf("%d年%d月%d号的房客数为%d",year,month,day,count);}}//查询模块void chaxun(struct Hotel room[]){int n,x,roomid,price,j;char name[12],id[20];x=readfile(room);printf("按房间号查询请按1;按价格查询请按2;按用户姓名查询请按3;按身份证号码查询请按4\n");scanf("%d",&n);switch(n){case 1:printf("请输入房间号:\n");scanf("%d",&roomid);for(j=0;j<x;j++){if(room[j].roomid==roomid){print(room,j);}}break;case 2:printf("请输入价格:\n");scanf("%d",&price);for(j=0;j<x;j++){if(room[j].price==price){print(room,j);}}break;case 3:printf("请输入客户姓名:\n");scanf("%s",name);for(j=0;j<x;j++){if(strcmp(room[j].client_,name)==0) {print(room,j);}}break;case 4:printf("请输入身份证号码:\n");scanf("%s",id);for(j=0;j<x;j++){if(strcmp(room[j].client_list.id,id)==0) {print(room,j);}}}}//打印void print(struct Hotel room[],int j){printf("%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n",room[j].roomid,room[j].price,room[j].tel,room[j].client_,room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}void printmessage(struct Hotel room[],int n){int j;for(j=0;j<n;j++){printf("%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n", room[j].roomid,room[j].price,room[j].tel,room[j].client_,room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}}//修改模块void xiugai(struct Hotel room[]){int i, m, roomid;m = readfile(room);printf("请选择房间号:\n");scanf("%d",&roomid);for(i=0;i<m;i++){if(room[i].roomid==roomid){printf("请输入您的电话:\n");scanf("%d",&room[i].tel);printf("入住价格\n");scanf("%d",&room[i].price);printf("请输入您的名字\n");scanf("%s",room[i].client_);printf("性别:\n");scanf("%d",&room[i].client_list.sex);printf("您的年龄:\n");scanf("%d",&room[i].client_list.age);printf("您的id:\n");scanf("%s",room[i].client_list.id);scanf("%4d%2d%2d",&room[i].client_list.year,&room[i].client_lis t.month,&room[i].client_list.date);}}saveall(room,m);}//保存所有信息到txt文件void saveall(struct Hotel room[],int m){int j;FILE *fp;if((fp = fopen("room.txt","w"))==NULL){printf("Failure to open score.txt!\n");exit(0);}for(j=0;j<m;j++){fprintf(fp,"%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d",room[j].roomid,room[j].price,room[j].tel,room[j].client_,Room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}fclose(fp);}五、调试与测试主界面:1、登记功能测试:情况1:客户需要入住的房间号被占用,提示已经被占用,重新选择情况2:选择的房间没有被占用,提示用户输入登记信息,登记完成后系统后台执行保存,弹出窗口询问是否继续登记下一个顾客2、统计功能测试:情况1:选择统计客房总数,系统返回总客房数情况2:选择按日期统计,系统返回具体某天的客房总数3、查询功能测试:情况1:按房间号查询情况2:按价格查询情况3:按用户名查询情况4:按身份证号查询4、修改功能测试:输入需要修改的房间后,系统提示用户重新写入房间信息六、总结本程序可通过键盘选择目录对应的功能,提供登记、查询、统计、修改四大功能。

java酒店管理系统毕业设计项目源代码

java酒店管理系统毕业设计项目源代码

一、引言在当今数字化的时代,各行业都在不断实施信息化管理系统,以提高工作效率和服务质量。

酒店行业作为服务业的一部分,也在加快信息化的步伐,以满足客户需求和提升竞争力。

而酒店管理系统作为酒店信息化管理的核心工具,起着至关重要的作用。

本文将介绍一个基于Java语言开发的酒店管理系统毕业设计项目源代码,以及其相关功能和特点。

二、Java酒店管理系统项目源代码介绍1. 项目背景酒店管理系统作为酒店信息化管理的核心工具,可以帮助酒店实现人力资源、客房管理、财务管理等各个方面的信息化管理。

基于这一需求,本项目选择了Java作为开发语言,旨在为酒店提供一个高效、可靠的管理系统。

2. 项目功能该酒店管理系统项目源代码主要包括以下功能:- 客房管理:包括客房信息录入、修改、删除和查询等功能,方便酒店管理人员对客房的管理和调度。

- 订单管理:包括客户下单、订单信息管理等功能,以实现对订单的跟踪和管理。

- 财务管理:包括财务报表生成、财务信息管理等功能,帮助酒店管理人员对财务情况进行分析和监控。

- 员工管理:包括员工信息录入、修改、删除和查询等功能,便于酒店管理人员对员工进行管理和调度。

3. 项目特点这个酒店管理系统项目源代码具有以下特点:- 基于Java语言开发,具有良好的跨评台性和可移植性。

- 使用MVC设计模式,使得系统的各个部分之间更加清晰明了,易于维护和扩展。

- 采用了数据库技术,能够实现数据的持久化存储和高效检索。

- 采用了面向对象的设计思想,使得系统具有良好的可扩展性和可维护性。

三、项目源代码实例介绍以下代码片段展示了该酒店管理系统项目源代码中的一个功能模块-客房管理的部分代码:```javapublic class Room {private String roomId;private String roomType;private int capacity;private boolean available;public Room(String roomId, String roomType, int capacity, boolean available) {this.roomId = roomId;this.roomType = roomType;this.capacity = capacity;this.available = available;}// Getter and Setter methodspublic String getRoomId() {return roomId;}public void setRoomId(String roomId) {this.roomId = roomId;}public String getRoomType() {return roomType;}public void setRoomType(String roomType) {this.roomType = roomType;}public int getCapacity() {return capacity;}public void setCapacity(int capacity) {this.capacity = capacity;}public boolean isAvailable() {return available;}public void setAvailable(boolean available) { this.available = available;}// Other methodspublic void bookRoom() {this.available = false;}public void releaseRoom() {this.available = true;}}```以上代码片段展示了一个客房管理模块的实体类Room,包括了客房的基本信息和相关操作。

酒店客房预订管理系统的设计与实现

酒店客房预订管理系统的设计与实现
2.3数据库技术
MySQL是一个可移植的数据库,几乎在现在好多系统上都可以运行,尽管每个平台在实现方面都有所不同,但是在各平台上的物理体系是一致的。在MySQL数据库中,实例与数据库的关系是一一对应的,即一个实例对应一个数据库,一个数据库也对应一个实例[6]。MySQL是一个单进程多线程的数据库,MySQL数据库的实例表现的就是一个进程,MySQL数据库即是一个数据库,又是一个数据库实例,数据库实例是用来操作数据库文件的。MySQL数据库具有开源特性,由后台线程以及一个共享内存区组成,它有自己特有的插件式存储引擎架构[7]。
1.4论文结构
本论文共分为六章:
第二章开发工具及关键技术。分别详细介绍开发平台、服务器、数据库和系统结构。
第三章系统需求分析。详细介绍酒店客房预订管理系统的功能需求、数据需求、硬件和软件的环境需求。
第四章系统设计。详细介绍酒店客房预订管理系统的总体设计、数据库设计和主要功能的实现。
第五章系统测试。对酒店客房预订管理系统的主要功能模块进行测试。
酒店客房预订管理系统应该实现以下主要功能:
(1)注册的用户可以修改自己的基本信息,查看客房信息,预定客房,评论客房以及留言等。
(2)管理员可以对已注册的用户信息,客房信息,客房预订信息,留言信息,公告信息进行管理。
(3)系统可以根据需要删除和修改客房以及客房信息。
(4)系统界面美观,操作简单合理,可以稳定的运行。
第六章结束语。总体概括酒店客房预订管理系统,对优点和缺点归纳总结。
2.1开发工具
本系统采用MyEclipse平台作为编程环境并在其环境下完成该系统的编码工作。Eclipse可以很容的将其它组件的很多优秀功能集成到Eclipse开发环境中,从而在很大程度上增强了集成开发环境的功能,这也是它成为现在最受欢迎的IDE开发环境之一[5]。Eclipse可以很容易的安装在计算机上,它和大多数软件的的安装方法不同,只需要把它的整个文件夹移动到计算机的相应位置中就可以了。

酒店管理系统源代码

酒店管理系统源代码

西彼科技有限责任公司参考源码酒店管理系统彼岸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, "更换风格失败,以原风格显。

(完整版)第五组酒店客房预订管理系统的设计与实现源代码

(完整版)第五组酒店客房预订管理系统的设计与实现源代码

#include <iostream>#include <iomanip>#include <string>#include <fstream>#include"conio.h"//输入/输出文件流类using namespace std;const int Maxr=100; const int Maxb=100; const int Maxbor=10; //person 类class person{public:char name[20];char ID[18]; //最多的客户//最多的客房//每位客户最多预订十间客房char *getname() {return name;}// 获取姓名char *getID() {return ID;} void setID(char I[]){strcpy(ID,I);}void setname(char na[]){strcpy(name,na); //获取身份证号//设置身份证号//设置姓名};//客户类公有继承了person 类,实现对客户的信息的描述int num;int tag;int borbook[Maxbor]; public://客户编号//删除标记1:已删0:未删//所订房间customer() {}int gettag() {return tag;} void delbook(){ tag=1;int getnum() {return num;}//获取删除标记} // 设置删除标记1:已删0:未删//获取客户编号class customer:public person{private:void addcustomer(int n,char *na,char *I) // 增加客户{tag=0;num=n;strcpy(name,na);strcpy(ID,I);for(int i=0;i<Maxbor;i++) borbook[i]=0;}void borrowbook(int bookid) // 预订操作{for(int i=0;i<Maxbor;i++){if (borbook[i]==0){ borbook[i]=bookid; return;}}}int retbook(int bookid) // 退订操作{for(int i=0;i<Maxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return 1;}}return 0;}void display() // 读出客户信息{cout <<" 客户编号:" << num <<setw(15)<< " 姓名:" << name <<setw(15)<< " 身份证号:" << ID<<setw(15)<<" 客房编号:[";for(int i=0;i<Maxbor;i++) if(borbook[i]!=0) cout <<"#"<< borbook[i]<<" ";cout << "]"<<endl;}};//客户库类,实现建立客户的个人资料class RDatabase{private:int top; //客户记录指针customer read[Maxr]; //客户记录public:RDatabase() //构造函数,将customer.txt 读到read[] 中{customer s;top=-1;fstream file("customer.txt",ios::in); //打开一个输入文件while (1){file.read((char *)&s,sizeof(s));if (!file)break;top++; read[top]=s;}file.close(); //关闭customer.txt}void clear() // 删除所有客户信息{top=-1;}int addcustomer(int n,char *na,char *I) // 添加客户时先查找是否存在{customer *p=query(n);if (p==NULL){top++; read[top].addcustomer(n,na,I);return 1;}return 0;}customer *query(int customerid) //按编号查找{for (int i=0;i<=top;i++)if (read[i].getnum()==customerid&&read[i].gettag()==0){return &read[i];}return NULL;}customer *query(string name) //按name 查找{for (int i=0;i<=top;i++)if (read[i].getname()==name&&read[i].gettag()==0)return &read[i];{}return NULL;}void display(){for(inti=0;i<=top;i++)if(read[i].gettag()==0) read[i].display();}void customerdata(); ~RDatabase(){fstreamfile("customer.txt",ios::out);for (int i=0;i<=top;i++)if (read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();}};void RDatabase::customerdata(){char choice; char rsex[10]; char rname[20]; int customerid; char rID[18];customer *r; system("cls"); while (choice!='0'){cout<<endl<<setw(40)<<" 客 户信息"<<e ndl; cout<<endl<<setw(28)<<"1 "<<" 新 增"<<endl; cout<<endl<<setw(28)<<"2 "<<" 更 改"<<e ndl; cout<<endl<<setw(28)<<"3 "<<" 删 除"<<e ndl; cout<<endl<<setw(28)<<"4 "<<" 查 找"<<e ndl; cout<<endl<<setw(28)<<"5 "<<" 显 示"<<e ndl; cout<<endl<<setw(28)<<"6 "<<" 全 删"<<e ndl; cout<<endl<<setw(28)<<"0"<<" 返回"<<e ndl;cin>>choice;system("cls");switch (choice){ case '1': cout <<" 请输入客户信息 :"<<endl;//输出所有客户信息//客户库维护//析构函数,将 read[] 写到 customer.txt 文件中cout << "输入客户编号:";cin >> customerid;cout << " 输入客户姓名:";cin >> rname;cout << " 输入客户身份证号:";cin >> rID;addcustomer (customerid,rname,rID);break;case '2':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout << " 该客户不存在"<<endl; break;}cout << "输入新的客户姓名:";cin >> rname;r->setname(rname);cout<<" 输入新的身份证号码:"; cin>>rID;r->setID (rID);break;case '3':cout << "输入客户编号:";cin >> customerid; r=query(customerid); if (r==NULL){cout <<" 该客户不存在" << endl; break;}r->delbook(); cout<<" 删除成功!"<<endl; break; case '4':char cho;cout<<" 请选择查找方式:"<<endl;cout<<"1. 按客户编号查找,2.按客户姓名查找cin>>cho;system("cls");switch (cho){case '1':cout << "输入客户编号:"; cin >> customerid; r=query(customerid); if(r==NULL){cout <<" 该客户不存在"<< endl; break;}break;case'2':cout<<" 输入客户名字:"; cin >> rname; r=query(rname);if (r==NULL){cout<<" 该客户不存在"<<endl; break;}}r->display();break;case '5': display(); break;case '6':clear();cout<<" 删除成功!"<<endl;break;default:cout<<" 正在返回主界面...";system("cls");break; }}}//客房类,实现对客房的描述class Book{private:int tag;int no;char name[20];int onshelf; public:Book(){}// 删除标记1:已删0:未删//客房编号//客房描述// 是否预订1:空房2:已预订{char *getname() { return name; } // 获取姓名 int getno(){ return no; } int gettag(){ return tag; } void setname(char na[]) {strcpy(name,na);}void delbook(){ tag=1;} void addbook(int n,char *na) {tag=0;no=n; strcpy(name,na); onshelf=1;}int borrowbook(){if (onshelf==1){onshelf=0; return 1;}return 0;}void retbook(){onshelf=1;}void disp()//获取客房编号 //获取删除标记//设置客房描述//删除客房 //增加客房//预订操作//退订操作//输出客房 { cout <<" 客 房 编 <<setw(15)<<(onshelf==1? " 空 号 :"<< no <<setw(15)<< 房 ":" 已预订 ") <<endl; " 客 房 描 述 :"<<name}; //客房库类,实现对客房的管理,如查找、删除等 class BDatabase { private: int top; Book book[Maxb]; public: BDatabase() //客房记录指针 //客房记录//构造函数,将 book.txt 读到 book[] 中Book b;top=-1;fstream file("book.txt",ios::in);while (1){ file.read((char *)&b,sizeof(b)); if (!file) break;top++; book[top]=b;}file.close();}void clear() // 全删{top=-1;}int addbook(int n,char *na) // 增加客房{Book *p=query(n);if (NULL==p){top++;book[top].addbook(n,na);return 1;}return 0;}Book *query(int bookid) // 查找客房{for (int i=0;i<=top;i++)if (book[i].getno()==bookid &&book[i].gettag()==0){return &book[i];}return NULL;}Book *query(string bname){for (int i=0;i<=top;i++)if (book[i].getname()==bname&&book[i].gettag()==0){return &book[i];}return NULL;}void bookdata(); // 客房库维护void disp(){for (int i=0;i<=top;i++)if (book[i].gettag()==0)book[i].disp();}~BDatabase() //析构函数,将book[] 写到book.txt 文件中{fstream file("book.txt",ios::out);for (int i=0;i<=top;i++)if (book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i])); file.close();}};void BDatabase::bookdata(){char choice;char bname[40];int bookid;Book *b;system("cls");while (choice!='0'){cout<<endl<<setw(40)<<" 客房信息"<<e ndl;cout<<endl<<setw(28)<<"1 "<<" 新增"<<endl;cout<<endl<<setw(28)<<"2 "<<" 更改"<<endl;cout<<endl<<setw(28)<<"3 "<<" 删除"<<endl;cout<<endl<<setw(28)<<"4 "<<" 查找"<<endl;cout<<endl<<setw(28)<<"5 "<<" 显示"<<endl;cout<<endl<<setw(28)<<"6 "<<" 全删"<<endl;cout<<endl<<setw(28)<<"0 "<<" 返回"<<endl;cin >> choice;system("cls");switch (choice){case '1':cout <<" 请输入客房信息:"<<endl;cout << "输入客房编号:";cin >> bookid;cout << "输入客房描述:";cin >> bname;addbook(bookid,bname);break;case '2':cout << "输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在"<<endl; break;}cout << " 输入新的客房描述:";cin >> bname;b->setname(bname);break;case '3':cout <<" 输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在" << endl; break;}b->delbook();cout<<" 删除成功!"<<endl;break;case '4':char bb;2.按客房描述查找";cout << "请选择查找方式: 1.按客房编号查找cin >> bb;switch(bb){case'1':cout<<" 请输入客房编号:"; cin>>bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在"<< endl; break;}break;case'2':cout<<" 请输入客房描述:";cin>>bname;b=query(bname);if (b==NULL){cout <<" 该客房不存在"<< endl;break;}}b->disp();break;case '5':disp();break;case '6':clear();cout<<" 删除成功!"<<endl;break;default:cout<<" 正在返回主界面...";system("cls");}}}int main(){char choice;int bookid,customerid;RDatabase customerDB;customer *r;BDatabase BookDB;Book *b;while(choice!='0'){cout <<setw(39)<<" 欢迎使用"<<endl;cout <<endl<<setw(55)<<" 酒店客房预订管理系"<<endl<<endl;cout <<" ooooooooooooooooooooooooooooooooOOOO "<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"1"<<setw(15)<<" 客户信"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"2"<<setw(15)<<""<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"3"<<setw(15)<<" 订"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"4"<<setw(15)<<" 退"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"0"<<setw(15)<<" 退"<<setw(31)<<"I"<<endl;cout <<" ooooooooooooooooooooooooooooooooOOOO "<<endl;cin >> choice; switch (choice) {case '1':customerDB.customerdata();break;case '2':BookDB.bookdata(); break;case '3':cout <<" 输入客户编号:";cin >>customerid;cout <<" 输入客房编号:";cin >>bookid;r=customerDB.query(customerid);// 按编号查找if (r==NULL){cout <<" 不存在的客户,不能预订"<< endl; break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在的客房,不能预订"<< endl; break;}if (b->borrowbook()==0){cout << " 该客房已预订,不能预订"<< endl; break;}r->borrowbook(b->getno());}cout<<" 预订成功! "<<endl; break;case '4': cout<<" 输入客户编号 :"; cin >>customerid; cout << "输入客房编号 :"; cin >>bookid; r=customerDB.query(customerid); if (r==NULL) {cout <<" 不存在的客户,不能退订 break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不存在的客房,不能退订 break; } b->retbook(); r->retbook(b->getno()); cout<<" 退订成功!"<<endl; break; default:cout<<" 正在写入数据库 .. 谢谢使用! } }return 0;" << endl; " <<endl;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <iostream>#include <iomanip>#include <string>#include <fstream>#include"conio.h" //输入/输出文件流类using namespace std;const int Maxr=100; //最多的客户const int Maxb=100; //最多的客房const int Maxbor=10; //每位客户最多预订十间客房//person类class person{public:char name[20];char ID[18];char *getname() {return name;}//获取姓名char *getID() {return ID;} //获取身份证号void setID(char I[]) //设置身份证号{strcpy(ID,I);}void setname(char na[]) //设置姓名{strcpy(name,na);}};//客户类公有继承了person类,实现对客户的信息的描述class customer:public person{private:int num; //客户编号int tag; //删除标记1:已删0:未删int borbook[Maxbor]; //所订房间public:customer() {}int gettag() {return tag;} //获取删除标记void delbook(){ tag=1; } //设置删除标记1:已删0:未删int getnum() {return num;} //获取客户编号void addcustomer(int n,char *na,char *I) //增加客户{tag=0;num=n;strcpy(name,na);strcpy(ID,I);for(int i=0;i<Maxbor;i++)borbook[i]=0;}void borrowbook(int bookid) //预订操作{for(int i=0;i<Maxbor;i++){if (borbook[i]==0){borbook[i]=bookid;return;}}}int retbook(int bookid) //退订操作{for(int i=0;i<Maxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return 1;}}return 0;}void display() //读出客户信息{cout <<"客户编号:" << num <<setw(15)<< "姓名:" << name <<setw(15)<< "身份证号:" << ID<<setw(15)<<"客房编号:[";for(int i=0;i<Maxbor;i++)if(borbook[i]!=0)cout <<"#"<< borbook[i]<<" ";cout << "]"<<endl;}};//客户库类,实现建立客户的个人资料class RDatabase{private:int top; //客户记录指针customer read[Maxr]; //客户记录public:RDatabase() //构造函数,将customer.txt读到read[]中{customer s;top=-1;fstream file("customer.txt",ios::in); //打开一个输入文件while (1){file.read((char *)&s,sizeof(s));if (!file)break;top++;read[top]=s;}file.close(); //关闭customer.txt}void clear() //删除所有客户信息{top=-1;}int addcustomer(int n,char *na,char *I) //添加客户时先查找是否存在{customer *p=query(n);if (p==NULL){top++;read[top].addcustomer(n,na,I);return 1;}return 0;}customer *query(int customerid) //按编号查找{for (int i=0;i<=top;i++)if (read[i].getnum()==customerid&&read[i].gettag()==0){return &read[i];}return NULL;}customer *query(string name) //按name查找{for (int i=0;i<=top;i++)if (read[i].getname()==name&&read[i].gettag()==0){return &read[i];}return NULL;}void display() //输出所有客户信息{for (int i=0;i<=top;i++)if(read[i].gettag()==0)read[i].display();}void customerdata(); //客户库维护~RDatabase() //析构函数,将read[]写到customer.txt文件中{fstream file("customer.txt",ios::out);for (int i=0;i<=top;i++)if (read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();}};void RDatabase::customerdata(){char choice;char rsex[10];char rname[20];int customerid;char rID[18];customer *r;system("cls");while (choice!='0'){cout<<endl<<setw(40)<<"客户信息"<<endl;cout<<endl<<setw(28)<<"1 "<<"新增"<<endl;cout<<endl<<setw(28)<<"2 "<<"更改"<<endl;cout<<endl<<setw(28)<<"3 "<<"删除"<<endl;cout<<endl<<setw(28)<<"4 "<<"查找"<<endl;cout<<endl<<setw(28)<<"5 "<<"显示"<<endl;cout<<endl<<setw(28)<<"6 "<<"全删"<<endl;cout<<endl<<setw(28)<<"0 "<<"返回"<<endl;cin>>choice;system("cls");switch (choice){case '1':cout <<"请输入客户信息:"<<endl;cout << "输入客户编号:";cin >> customerid;cout << "输入客户姓名:";cin >> rname;cout << "输入客户身份证号:";cin >> rID;addcustomer (customerid,rname,rID);break;case '2':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout << " 该客户不存在"<<endl;break;}cout << "输入新的客户姓名:";cin >> rname;r->setname(rname);cout<<"输入新的身份证号码:";cin>>rID;r->setID (rID);break;case '3':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout <<" 该客户不存在" << endl;break;}r->delbook();cout<<"删除成功!"<<endl;break;case '4':char cho;cout<<"请选择查找方式:"<<endl;cout<<"1.按客户编号查找,2.按客户姓名查找";cin>>cho;system("cls");switch (cho){case '1':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout <<" 该客户不存在"<< endl;break;}break;case'2':cout<<"输入客户名字:";cin >> rname;r=query(rname);if (r==NULL){cout<<"该客户不存在"<<endl;break;}}r->display();break;case '5':display();break;case '6':clear();cout<<"删除成功!"<<endl;break;default:cout<<"正在返回主界面...";system("cls");break;}}}//客房类,实现对客房的描述class Book{private:int tag; //删除标记1:已删0:未删int no; //客房编号char name[20]; //客房描述int onshelf; //是否预订1:空房2:已预订public:Book(){}char *getname() { return name; } //获取姓名int getno(){ return no; } //获取客房编号int gettag(){ return tag; } //获取删除标记void setname(char na[]) //设置客房描述{strcpy(name,na);}void delbook(){ tag=1;} //删除客房void addbook(int n,char *na) //增加客房{tag=0;no=n;strcpy(name,na);onshelf=1;}int borrowbook() //预订操作{if (onshelf==1){onshelf=0;return 1;}return 0;}void retbook() //退订操作{onshelf=1;}void disp() //输出客房{cout <<"客房编号:"<< no <<setw(15)<< "客房描述:"<< name <<setw(15)<<(onshelf==1? "空房":"已预订") <<endl;}};//客房库类,实现对客房的管理,如查找、删除等class BDatabase{private:int top; //客房记录指针Book book[Maxb]; //客房记录public:BDatabase() //构造函数,将book.txt读到book[]中{Book b;top=-1;fstream file("book.txt",ios::in);while (1){file.read((char *)&b,sizeof(b));if (!file) break;top++;book[top]=b;}file.close();}void clear() //全删{top=-1;}int addbook(int n,char *na) //增加客房{Book *p=query(n);if (NULL==p){top++;book[top].addbook(n,na);return 1;}return 0;}Book *query(int bookid) //查找客房{for (int i=0;i<=top;i++)if (book[i].getno()==bookid &&book[i].gettag()==0){return &book[i];}return NULL;}Book *query(string bname){for (int i=0;i<=top;i++)if (book[i].getname()==bname&&book[i].gettag()==0){return &book[i];}return NULL;}void bookdata(); //客房库维护void disp(){for (int i=0;i<=top;i++)if (book[i].gettag()==0)book[i].disp();}~BDatabase() //析构函数,将book[]写到book.txt文件中{fstream file("book.txt",ios::out);for (int i=0;i<=top;i++)if (book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();}};void BDatabase::bookdata(){char choice;char bname[40];int bookid;Book *b;system("cls");while (choice!='0'){cout<<endl<<setw(40)<<"客房信息"<<endl;cout<<endl<<setw(28)<<"1 "<<"新增"<<endl;cout<<endl<<setw(28)<<"2 "<<"更改"<<endl;cout<<endl<<setw(28)<<"3 "<<"删除"<<endl;cout<<endl<<setw(28)<<"4 "<<"查找"<<endl;cout<<endl<<setw(28)<<"5 "<<"显示"<<endl;cout<<endl<<setw(28)<<"6 "<<"全删"<<endl;cout<<endl<<setw(28)<<"0 "<<"返回"<<endl;cin >> choice;system("cls");switch (choice){case '1':cout <<"请输入客房信息:"<<endl;cout << "输入客房编号:";cin >> bookid;cout << "输入客房描述:";cin >> bname;addbook(bookid,bname);break;case '2':cout << "输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在"<<endl;break;}cout << "输入新的客房描述:";cin >> bname;b->setname(bname);break;case '3':cout <<"输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在" << endl;break;}b->delbook();cout<<"删除成功!"<<endl;break;case '4':char bb;cout << "请选择查找方式:1.按客房编号查找2.按客房描述查找";cin >> bb;switch(bb){case'1':cout<<"请输入客房编号:";cin>>bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在"<< endl;break;}break;case'2':cout<<"请输入客房描述:";cin>>bname;b=query(bname);if (b==NULL){cout <<" 该客房不存在"<< endl;break;}}b->disp();break;case '5':disp();break;case '6':clear();cout<<"删除成功!"<<endl;break;default:cout<<"正在返回主界面...";system("cls");}}}int main(){char choice;int bookid,customerid;RDatabase customerDB;customer *r;BDatabase BookDB;Book *b;while(choice!='0'){cout <<setw(39)<<"欢迎使用"<<endl;cout <<endl<<setw(55)<<"酒店客房预订管理系统"<<endl<<endl;cout <<"のののののののののののののののののののののののののののののののののののの"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"1"<<setw(15)<<"客户信息"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"2"<<setw(15)<<"客房信息"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"3"<<setw(15)<<"订房"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"4"<<setw(15)<<"退房"<<setw(31)<<"I"<<endl;cout <<"I"<<setw(71)<<"I";cout <<endl<<"I"<<setw(25)<<"0"<<setw(15)<<"退出"<<setw(31)<<"I"<<endl;cout <<"のののののののののののののののののののののののののののののののののののの"<<endl;cin >> choice;switch (choice){case '1':customerDB.customerdata();break;case '2':BookDB.bookdata();break;case '3':cout <<"输入客户编号:";cin >>customerid;cout <<"输入客房编号:";cin >>bookid;r=customerDB.query(customerid);//按编号查找if (r==NULL){cout <<" 不存在的客户,不能预订"<< endl;break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在的客房,不能预订"<< endl;break;}if (b->borrowbook()==0){cout << " 该客房已预订,不能预订"<< endl;break;}r->borrowbook(b->getno());cout<<"预订成功!"<<endl;break;case '4':cout<<"输入客户编号:";cin >>customerid;cout << "输入客房编号:";cin >>bookid;r=customerDB.query(customerid);if (r==NULL){cout <<" 不存在的客户,不能退订" << endl;break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在的客房,不能退订" <<endl;break;}b->retbook();r->retbook(b->getno());cout<<"退订成功!"<<endl;break;default:cout<<"正在写入数据库......谢谢使用!";}}return 0;}。

相关文档
最新文档