客房管理系统.docx

上传人:b****7 文档编号:25553532 上传时间:2023-06-09 格式:DOCX 页数:113 大小:431.64KB
下载 相关 举报
客房管理系统.docx_第1页
第1页 / 共113页
客房管理系统.docx_第2页
第2页 / 共113页
客房管理系统.docx_第3页
第3页 / 共113页
客房管理系统.docx_第4页
第4页 / 共113页
客房管理系统.docx_第5页
第5页 / 共113页
点击查看更多>>
下载资源
资源描述

客房管理系统.docx

《客房管理系统.docx》由会员分享,可在线阅读,更多相关《客房管理系统.docx(113页珍藏版)》请在冰豆网上搜索。

客房管理系统.docx

客房管理系统

 

兰州商学院陇桥学院

信息工程系课程设计报告

课程名称:

C#课程设计

设计题目:

客房管理系统

系别:

信息工程系

专业(方向):

计算机科学与技术(网络工程方向)

年级、班:

2012级本科班

学生姓名:

XXX

学生学号:

0000000000000

本组组员:

XXXXXXXXXXXXXXXX

指导教师:

杨光

2014年12月28日

目录

一、系统开发的背景1

二、系统分析与设计1

(一)系统功能要求1

(二)系统模块结构设计1

三、系统的设计与实现3

(一)入住登记:

CustormerCheckIn类3

(二)客房状态:

HouseCurrentType类5

(三)更换客房:

ChangeHouse类6

(四)结账退房:

LeaveHouse类9

(五)在住客人查询:

CustomIn类11

(六)历史客人查询:

CustomInOld类13

(七)修改房价:

ChangePrice类14

(八)用户注册:

Register类15

(九)修改密码:

ChangePassword类17

(十)删除用户:

DeleteUser类18

(十一)退出:

20

四、系统测试20

(一)测试CustormerCheckIn类20

(二)测试HouseCurrentType类21

(三)测试ChangeHouse类22

(四)测试LeaveHouse类22

(五)测试CustomIn类23

(六)测试CustomInOld类23

(七)测试ChangePrice类24

(八)测试Register类25

(九)测试ChangePassword类26

(十)测试DeleteUser类26

五、总结27

六、附件(代码、部分图表)28

 

客房管理系统

一、系统开发的背景

古有客栈,今有客房,随着时代发展,人流量增加,其地位俞显其重要。

传统的“账册”在快捷、安全方面已经不能适应时代的要求,因此为了迎合时代的需求,我们利用所学知识,设计出了客房管理系统,并应用数据库来进行数据存储。

使得对客房管理方面应用起来很方便。

二、系统分析与设计

(一)系统功能要求

可以录入客房各种信息,包括客房的类别、当前的状态、负责人等;实现的功能有:

客房信息的查询和修改,包括按房间号查询住宿情况、按客户信息查询房间状态等,以及退房、订房、换房等信息的修改。

主要模块有:

1.前台操作:

入住登记、客房状态、更换客房、结账退房;

2.信息查询:

在住客人查询、历史客人查询;

3.基本资料:

修改房价、用户注册、修改密码;

4.退出。

其中历史客人查询、修改房价、修改密码、用户注册只有管理员才有权限。

(二)系统模块结构设计

通过对系统功能的分析,客房管理系统功能如图1所示。

图1客房管理系统功能图

通过上图的功能分析,把整个系统划分为10个模块:

1、入住登记,该模块主要实现:

对客户基本资料和客房基本资料的存储。

借助CustormerCheckIn类来实现;

2、客房状态,该模块主要实现:

实现对客房编号、客房类型等状态的查询。

借助HouseCurrentType类来实现;

3、更换客房,该模块主要实现客房的更换。

借助ChangHouse类来实现。

借助ChangeHouse类来实现。

4、结账退房,该模块主要通过对在住客房的定位,实现结账退房。

借助LeaveHouse类来实现。

5、在住客人查询,该模块主要通过选择查询方式,输入正确信息,对客人基本信息查询。

借助CustomIn类来实现。

6、历史客人查询,该功能只能在管理员状态下使用,主要实现对历史客人的查询。

借助CustomInOld类来实现。

7、修改房价,该功能只能在管理员状态下使用,主要实现对房价的修改。

借助ChangePrice类来实现。

8、用户注册,此功能只能在管理员状态下使用,主要实现新用户注册。

借助Register类来实现。

9、修改密码,此功能只能在管理员状态下使用,主要实现对旧密码的修改。

借助ChangePassword类来实现。

10、删除用户,功能主要实现对用户的删除。

借助DeleteUser类来实现。

11、退出,该模块主要实现安全退出客房管理系统。

三、系统的设计与实现

(一)入住登记:

CustormerCheckIn类

分析:

首先输入完整的客户信息和客房信息,然后判断是否所有信息完整,如果完整则进行保存,否则重新进行信息输入。

流程图如图2所示。

图2:

CustormerCheckIn类流程图

该模块的具体代码如下所示。

privatevoidbtnSave_Click(objectsender,EventArgse)

{

if(txtName.Text.Trim()==""||Convert.ToString(boxIdType.SelectedItem)==""||txtIdNumber.Text.Trim()==""||txtLocation.Text.Trim()==""||txtTel.Text.Trim()==""||txtPrice.Text.Trim()==""||Convert.ToString(boxHouseNumber.SelectedItem)==""||txtAdvance.Text.Trim()==""||Convert.ToString(boxPayType.SelectedItem)==""||txtPrincipal.Text.Trim()==""||txtCheckInTime.Text.Trim()=="")

{

MessageBox.Show("请?

将?

客¨ª户¡ì信?

息¡é填¬?

写¡ä完ª¨º整?

ê?

","提¬¨¢示º?

");

txtName.Focus();

}

else

{

stringCustomerName=txtName.Text.Trim();

stringcustomerSex=null;

if(radioButtonMale.Checked==true)

{

customerSex="男D";

}

else

{

customerSex="女?

";

}

stringIdType=Convert.ToString(boxIdType.SelectedItem);

stringIdNumber=txtIdNumber.Text.Trim();

stringCustomerLocation=txtLocation.Text.Trim();

stringTel=txtTel.Text.Trim();

stringInType=Convert.ToString(boxInType.SelectedItem);

stringHouseType=Convert.ToString(boxHouseType.SelectedItem);

floatPrice=Convert.ToSingle(txtPrice.Text.Trim());

stringHouseNumber=Convert.ToString(boxHouseNumber.SelectedItem);

floatAdvance=Convert.ToSingle(txtAdvance.Text.Trim());

stringPayType=Convert.ToString(boxPayType.SelectedItem);

DateTimeRegistrationTime=Convert.ToDateTime(txtRegistrationTime.Text.Trim());

DateTimeLeaveTime=Convert.ToDateTime(dateTimePickerLeaveTime.Text.Trim());

stringLeaveType="False";

stringCurrentState=null;

if(index-1>0)

{

CurrentState="True";

}

else

{

CurrentState="False";

}

stringPrincipal=txtPrincipal.Text.Trim();

intCheckInTime=Convert.ToInt32(txtCheckInTime.Text.Trim());

stringRemark=txtRemark.Text.Trim();

floatcountPrice=Price*CheckInTime;

stringsqlInsert=String.Format("insertintoTb_InInformation(CustomerName,CustomerSex,InType,PayType,Advance,IdType,IdNumber,CustomerLocation,RegistrationTime,LeaveType,LeaveTime,CheckInTime,Tel,HouseType,HouseNumber,Principal,Price,CountPrice,Unit)values('{0}','{1}','{2}','{3}',{4},'{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}',{17},'{18}')",CustomerName,customerSex,InType,PayType,Advance,IdType,IdNumber,CustomerLocation,RegistrationTime,LeaveType,LeaveTime,CheckInTime,Tel,HouseType,HouseNumber,Principal,Price,countPrice,lblOk.Text.Trim());

stringsqlUpdate=String.Format("updateTb_HouseNumberInformationsetFewNumbers={0},CurrentState='{1}'whereId={2}",index-1,CurrentState,id);

using(conn=SqlConnUtils.getConnection())

using(comm=newSqlCommand())

{

conn.Open();

comm.Connection=conn;

comm.CommandText=sqlInsert;

intk=comm.ExecuteNonQuery();

if(k>0)

{

comm.CommandText=sqlUpdate;

comm.ExecuteNonQuery();

MessageBox.Show("客¨ª户¡ì登Ì?

记?

成¨¦功|!

ê?

");

conn.Close();

init();

}

else

{

MessageBox.Show("客¨ª户¡ì登Ì?

记?

失º¡ì败㨹!

ê?

");

}

}

}

}

(二)客房状态:

HouseCurrentType类

分析:

首先选择正确的客房类型,然后判断是否选择,如果选择则显

示所选类型客房的基本状态,否则提示请选择客房类型,进行重新选择。

流程图如图3所示:

图3:

HouseCurrentType类流程图

该模块的具体代码如下所示:

privatevoidbtnOk_Click(objectsender,EventArgse)

{

if(boxHouseType.Text=="")

{

MessageBox.Show("请?

选?

择?

房¤?

间?

类¤¨¤型¨ª","信?

息¡é提¬¨¢示º?

");

}

else

{

stringvalue=boxHouseType.SelectedItem.ToString();

stringsqlselect=String.Format("selectIdas编À¨¤号?

HouseTypeas客¨ª房¤?

类¤¨¤型¨ª,CurrentStateas当Ì¡À前¡ã状Á¡ä态¬?

Principalas房¤?

间?

负o责e人¨?

Numbersas房¤?

间?

编À¨¤号?

Priceas房¤?

价?

fromTb_HouseNumberInformationwhereCurrentState='True'andHouseType='{0}'",value);

sda=newSqlDataAdapter(sqlselect,conn);

{

tableFind=newDataTable();

sda.Fill(tableFind);

dataGridView1.DataSource=tableFind;

toolStripStatusLabelShow.Text=String.Format("共2有®D空?

房¤?

{0}个?

ê?

",dataGridView1.Rows.Count);

}

btnShow.Visible=true;

}

}

(三)更换客房:

ChangeHouse类

分析:

首先输入原来客房和新客房,然后根据对应关系进行换房

操作。

基本流程图如图4所示:

图4:

ChangeHouse类流程图

该模块的具体代码如下所示:

privatevoidbtnOk_Click(objectsender,EventArgse)

{

stringsqlfind=String.Format("selectFewNumbers,CountfromTb_HouseNumberInformationwhereNumbers={0}",Convert.ToInt32(txtOld.Text.Trim()));

using(conn=SqlConnUtils.getConnection())

using(comm=newSqlCommand())

{

comm.Connection=conn;

comm.CommandText=sqlfind;

conn.Open();

reader=comm.ExecuteReader();

if(reader.HasRows)

{

while(reader.Read())

{

fewNumbersOld=Convert.ToInt32(reader[0].ToString());

countOld=Convert.ToInt32(reader[1].ToString());

}

}

if(fewNumbersOld+1

{

currentStateOld="True";

}

else

{

currentStateOld="False";

}

reader.Close();

sqlfind=String.Format("selectFewNumbers,CountfromTb_HouseNumberInformationwhereNumbers={0}",Convert.ToInt32(txtNew.Text.Trim()));

using(comm=newSqlCommand())

{

comm.Connection=conn;

comm.CommandText=sqlfind;

reader=comm.ExecuteReader();

if(reader.HasRows)

{

while(reader.Read())

{

fewNumbersNew=Convert.ToInt32(reader[0].ToString());

countNew=Convert.ToInt32(reader[1].ToString());

}

}

if(fewNumbersNew-1>=0)

{

currentStateNew="True";

}

else

{

currentStateNew="False";

}

reader.Close();

}

using(comm=newSqlCommand())

{

sqlupdate=String.Format("updateTb_HouseNumberInformationsetCurrentState='{0}',FewNumbers={1}whereNumbers={2}",currentStateNew,fewNumbersOld+1,Convert.ToInt32(txtOld.Text.Trim()));

comm.Connection=conn;

comm.CommandText=sqlupdate;

comm.ExecuteNonQuery();

}

using(comm=newSqlCommand())

{

sqlupdate=String.Format("updateTb_HouseNumberInformationsetCurrentState='{0}',FewNumbers={1}whereNumbers={2}",currentStateOld,fewNumbersNew-1,Convert.ToInt32(txtNew.Text.Trim()));

comm.Connection=conn;

comm.CommandText=sqlupdate;

comm.ExecuteNonQuery();

}

using(comm=newSqlCommand())

{

sqlupdate=String.Format("updateTb_InInformationsetHouseNumber={0},Price={1}whereCustomerName='{2}'",Convert.ToInt32(txtNew.Text.Trim()),newPrice,nameOld);

comm.Connection=conn;

comm.CommandText=sqlupdate;

inth=comm.ExecuteNonQuery();

if(h>0)

{

MessageBox.Show("换?

房¤?

成¨¦功|!

","换?

房¤?

信?

息¡é提¬¨¢示º?

");

conn.Close();

init();

}

else

{

MessageBox.Show("换?

房¤?

失º¡ì败㨹!

","换?

房¤?

信?

息¡é提¬¨¢示º?

");

}

}

}

}

(四)结账退房:

LeaveHouse类

分析:

首先输入在住客房,如果存在该客房,则进行退房,否则提示

没有改客房。

流程图如图5所示:

图5:

LeaveHouse类流程图

该模块具体代码如下:

privatevoidbtnOk_Click(objectsender,EventArgse)

{

if(lblId.Visible==false)

{

MessageBox.Show("请?

选?

择?

要°a退ª?

房¤?

的Ì?

客¨ª户¡ì!

ê?

","信?

息¡é提¬¨¢示º?

");

}

else

{

inti=0,j=0;

realLeaveTime=Convert.ToDateTime(string.Format("{0:

yyyy-MM-ddHH:

mm:

ss}",DateTime.Now));

realCheckInTime=Convert.ToInt32(txtNumbers.Text.Trim());

realCountPrice=Convert.ToSingle(txtCountPrice.Text.Trim());

sqlUpdate=String.Format("updateTb_InInformationsetCheckInTime={0},CountPrice={1},RealLeaveTime='{2}',LeaveType='{3}'whereIdNumber='{4}'",realCheckInTime,realCountPrice,realLeaveTime,"True",idNumbers);

sqlFind=String.Format("selectFewNumbersfromTb_HouseNumberInformationwhereNumbers={0}",Convert.ToInt32(txtHouseNumbers.Text.Trim()));

conn=SqlConnUtils.getConnection();

comm=newSqlCommand();

{

comm.Connection=conn;

conn.Open();

comm.CommandText=sqlFind;

reader=comm.ExecuteReader();

if(reader.HasRows)

{

while(reader.Read())

{

FewNumber=Convert.ToInt32(reader[0].ToString());

}

}

reader.Dispose();

comm.CommandText=sqlUpdate;

i=comm.ExecuteNonQuery();

sqlUpdate=String.Format("updateTb_HouseNumberInformationsetCurrentState='{0}',FewNumbers={1}whereNumbers={2}","True",FewNumber+1,Convert.ToInt32(txtHouseNumbers.Text.Trim()));

comm.CommandText=sqlUpdate;

j=comm.ExecuteNonQuery();

if(i>0&&j>0)

{

M

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1