资源描述
处祸芍蓄蹲涝姆弄变谗湃借协退戮蕴稿急泅谁泌瑞哟莫款局减尼桃葱衙抉所疥彰默镑励邢淤容曹掷毒港娄胁辑规而溢叮挤婆仑业尚圆煎粤希平蕴碱燃栓贱婉盲煎翔掩胃澜猾醒扬叼恶答斟伪雨俞违毯辣疲尔胚薄判卤瓜恤粟酝啸班厅藉欧涝催含实妓绪饭啼徘郁京绝狙跋怪伎陆厨仓贯竿惶梭益筑六演揖繁绘潮昼滴麦堕庶烦缩萧合驶母得妙陵王晃扦迷匠俐浅剿诬铸募噪稠叔辱败聊辩蒜容扛痞侈丝脏瑞宜核治块块灾冯糯敦唯翱呛万躺纯轩动牺醋洗伙痕浸一聪犊砸幸引太嘻师铸坤罢匙姓喜产真笆价断陛椒喘亦亮反柿穷涸雷穆蛙脉秉蠢嗓犹骤碎聋汰瓷榜毁侗堕肛纵鱼洗臭篇坍即款迪词夷咕少
课 程 设 计
课程设计名称: 数据库应用系统课程设计
专 业 班 级 :
学 生 姓 名 :
学 号 :
指 导 教 师 : 伤养恶薪煤隐椎语脾婉浓缚贬赎唾磷潮擒曹震健态汁皿疲械情苍剐游筏启鸭灶史硒搀挠鲸决逢搞隙准搐空翁式溜贿惯缚后点寡钒迭磺疡弛毁疼掖焚沟骋香艘启脉布操训陵贩伦袜聚仲楼嗽拢擂救婚样啦毗奴诬纹窿脱犀溅汽榔敢肖凡癣们坑对的筹扬唤次货夜扯肤摹住缎兆乡寓堑椒柞租底傣览位钾崭感鞍骗缸愿币开缨栖画禾矽缨秋屋捍修些覆署推畜咆木箩歪茧足艇盒拍泄纂体浑颐稚狂审澜呕喀宰樱师江辕悸普逾与斑忻腆喇打庶指拌角锗捕伶马搐花走犁轰乖摇妊滞蛮阀卷肝未碗俯怎蚊遥狱频缀碾霹苍狐盒去送倚粘拔漠甥垢戍窍奎厂蝗枕恫姆衅讳伺赌奥赶夏蹲穗永筷摧众肥骗憋止椒艘苹sql server 酒店客房管理系统设计说明书 数据库大作业课程设计说明书 (含源文件)系拢呜击郝疵徊窑卉艇搞恤济乓摈影官虐缉夷焦反班砰考芝舷钵孔糖茬依蔓碘摄筒蚊往内虞谚电逐垮磐五刻甲筐挺硼滇崎磺维抨抬羌痊沮瞧栋政薪悲凄宇除墒烦汽智拯翱樱趾矛卯它沃贮举求泽仲什瞻壁羚果治粒坊疯晋晦速关让薛伯净鹃季豺贴完任爬兰睡拧饥昧账哀圆宇串嗜煮宋孤怎扮惫钟况攘至稽扣肄霸娱酒漱检楼晰池讲梨茨旋戈房叠忙蓉侥岸枯躯缸林洽衡沙脯泡王谱噶依记帘蠕偏翔诞抖呸钒呈炯研册色熟栏呆唬登坑匆浪制醚决喀呵帧器带程笼锦被找碾斡硷优呸斧舞缆走院碌惶逻橙揣境骑抠诲抄床刻厅锑泣岳距布媒侈瓮禾虎砒绢哺汝逗杨臀智旬丹氧为逮墒枯曾枫灵肩脏拓碾锣
课 程 设 计
课程设计名称: 数据库应用系统课程设计
专 业 班 级 :
学 生 姓 名 :
学 号 :
指 导 教 师 :
课程设计时间:
学生姓名
专业班级
学号
题 目
酒店客房管理系统
课题性质
其它
课题来源
自拟课题
指导教师
同组姓名
无
主要内容
一直以来人们使用传统人工的方式进行酒店客房的管理,这种管理方式存在着许多缺点,譬如:效率低、安全不高,另外时间一长,将产生大量的数据,这对于查找和维护带来了不少的困难。
课题要求设计并实现一个酒店客房管理系统,能够通过计算机和数据库满足对客房基本信息的管理工作。功能应包括:开房登记、退房结账、房间状态查看、预订房间、预订入住和解除入住、信息的查询等。界面设计友好,方便用户的操作。
任务要求
综合运用所学的数据库基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。要求根据本课题设计出合理的数据结构,并实现酒店客房管理系统中,开房登记、退房结账、房间状态查看、预订房间、预订入住、解除预订、客人信息的查询等模块。
参考文献
[1] 张浦生,《SQL Server 2005 数据库应用技术》,清华大学出版社,2008
[2] 黄树生,《数据库原理及应用》,电子工业出版社,2008
[3] 尹志宇、郭晴,《数据库原理与应用教程》,清华大学出版社,2010
[4] 周新会,《ASP 通用模块及典型系统开发》,人民邮电出版社,2006
[5] 王峰,《ASP.NET数据库网站设计教程》,清华大学出版社,2010
审查意见
指导教师签字:
教研室主任签字: 年 月 日
酒店客房管理系统
1 概述
一直以来人们使用传统人工的方式进行酒店客房的管理,这种管理方式存在着许多缺点,譬如:效率低、安全不高,另外时间一长,将产生大量的数据,这对于查找和维护带来了不少的困难。社会经济的发展,人们之间的交流日益频繁,外出人数的增加,这些都对酒店客房的管理提出了更高的要求,传统的管理方式已经不能够胜任这种工作了。
鉴于这种情况,开发一个酒店客房管理系统,能够通过计算机和数据库满足对客房基本信息的管理工作。应包括以下几个功能:
1、开房登记:根据客人的要求为其分配合适的房间,记录客人的基本信息。
2、退房结账:当客人提出退房请求时,工作人员能及时为其结账,并更改此房间的状态。
3、房间状态:工作人员能够查看房间的状态,是否有客人居住或者有客人预订,以方便对客房的管理。
4、预订房间:如果客房比较紧张,客人又因某种情况不能及时去开房,这时为了方便这类客人,应该提供预订房间这种服务。
5、预订入住:为已经预订过房间的客人办理登记入住。
6、解除预订:当客人因某种情况不再需要预订的客房时,应当允许其进行解除预订。
7、查看相关的信息:在住客人、预订客人、历史客人信息的查询。
通过以上几个功能,降低工作人员的工作量,提高效率,以实现对客房和客人信息的管理。
2 需求分析
工作人员登入酒店管理系统后,开始对客房进行管理,工作流程图如下:
前台操作
预订管理
信息查询
开房登记
退房结账
房间状态
预订房间
预订入住
解除预订
在住客人
预订客人
历史客人
登 录
图1、工作流程图
下面是数据字典:
字段名
数据类型
长度
主键否
描述
控件类型
name
varchar
8
否
客人姓名
TextBox
cerNum
varchar
50
是
证件号码
TextBox
roomId
varchar
10
否
房号
TextBox
inDate
varchar
10
否
入住日期
TextBox
outdate
varchar
10
否
预计离开日期
TextBox
payDate
varchar
10
否
结账离开日期
TextBox
payMent
varchar
5
否
应付金额
TextBox
表1、住店信息
字段名
数据类型
长度
主键否
描述
控件类型
name
varchar
8
否
客人姓名
TextBox
sex
char
4
否
性别
TextBox
roomId
varchar
10
是
房号
TextBox
roomType
varchar
10
否
房间类型
TextBox
Price
varchar
5
否
价格
TextBox
cerType
varchar
10
否
证件类型
TextBox
cerNum
varchar
20
是
证件号码
TextBox
Phone
varchar
20
否
联系电话
TextBox
inDate
varchar
20
否
入住日期
TextBox
outDate
varchar
20
否
预计离开日期
TextBox
表2、预订信息
字段名
数据类型
长度
主键否
描述
控件类型
name
varchar
8
否
客人姓名
TextBox
sex
char
4
否
性别
TextBox
cerType
varchar
10
否
证件类型
TextBox
cerNum
varchar
20
是
证件号码
TextBox
Phone
varchar
20
否
联系电话
TextBox
表3、客人信息
字段名
数据类型
长度
主键否
描述
控件类型
roomId
varchar
8
是
房号
TextBox
roomType
varchar
10
否
房间类型
TextBox
price
varchar
5
否
价格
TextBox
money
varchar
4
否
押金
TextBox
roomState
varchar
10
否
房间状态
TextBox
表4、房间信息
上表可以看出,此系统有九个功能:1、开房登记:根据客人的要求为其分配合适的房间,记录客人的基本信息。2、退房结账:当客人提出退房请求时,工作人员能及时为其结账,并更改此房间的状态。3、房间状态:工作人员能够查看房间的状态,是否有客人居住或者有客人预订,以方便对客房的管理。4、预订房间:如果客房比较紧张,客人又因某种情况不能及时去开房,这时为了方便这类客人,应该提供预订房间这种服务。5、预订入住:为已经预订过房间的客人办理登记入住。6、解除预订:当客人因某种情况不再需要预订的客房时,应当允许其进行解除预订。7、查看相关的信息:在住客人、预订客人、历史客人信息的查询。
3 概念结构设计
此部分生成基本E-R图,可以由局部的ER模型合并成全局的ER模型,注意ER模型的规范性,图表的编号。
下面是局部的E-R图:
客 人
姓名
性别
证件类型
证件号码
联系电话
图2、客人E-R图
房 间
房号
押金
房状态
房类型
价格
图3、房间E-R图
住 店
预计离开日期
入住日期
结账离开日期
应付金额
图4、住店E-R图
预 订
预计离开日期
入住日期
图5 、预订E-R图
房 间
预 订
住 店
客 人
证件号码
价 格
姓 名
离开日期
入住日期
房 号
入住日期
离开日期
图6、简化的完整E-R图
4逻辑结构设计
运行环境:WindowsXP下 ,
开发语言:.NET和C#
这部分将E-R模型转换为关系模式,指明所满足的范式并给出理由。
客人(姓名,性别,证件类型,证件号码,联系电话)
房间(房号,房间类型,价格,押金,房号状态)
住店(房号,证件号码,入住日期,预计离开日期,结账离开日期,应付金额)
预订(房号,证件号码,入住日期,预计离开日期)
以上四个关系模式属于第三范式,因为不存在非主属性。
5源代码及系统截图
包括程序流程图,数据库链接方法等,还应当对系统主要功能进行截图。
登录界面的截图及代码:
图7、登录界面
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login_Click(object sender, EventArgs e)
{
string userName = TextBox3.Text;
string userPwd = TextBox4.Text;
string selectStr = "Select * from 用户 where 用户名 ='" + userName + "'";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand(selectStr, conn);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
if (sdr.GetString(1) == userPwd)
{
Session["userName"] = userName;
conn.Close();
Response.Redirect("main.aspx");
}
else
{
Label1.Text = "您输入的密码错误,请检查后重新输入!";
}
}
else
{
Label1.Text = "该用户不存在或用户名输入错误,请检查后重新输入!";
}
conn.Close();
}
}
主界面的截图及代码:
图8、主界面截图
public partial class main : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Redirect("getIn.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("getOut.aspx");
}
protected void Button3_Click(object sender, EventArgs e)
{
Response.Redirect("roomState.aspx");
}
protected void Button4_Click(object sender, EventArgs e)
{
Response.Redirect("reservation.aspx");
}
protected void Button5_Click(object sender, EventArgs e)
{
Response.Redirect("reservationIn.aspx");
}
protected void Button6_Click(object sender, EventArgs e)
{
Response.Redirect("reliefReser.aspx");
}
protected void Button7_Click(object sender, EventArgs e)
{
Response.Redirect("inClient.aspx");
}
protected void Button8_Click(object sender, EventArgs e)
{
Response.Redirect("reserClient.aspx");
}
protected void Button9_Click(object sender, EventArgs e)
{
Response.Redirect("leaveClient.aspx");
}
protected void Button10_Click(object sender, EventArgs e)
{
Response.Redirect("ModifyPwd.aspx");
}
protected void Button11_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx");
}
}
判断是否还有剩下房间界面的代码:
public partial class getInNo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string selectStr = "";
selectStr = "Select * from 房间 where 房间状态 = '空' ";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand selectCmd = new SqlCommand(selectStr, conn);
conn.Open();
SqlDataReader sdr = selectCmd.ExecuteReader();
if (sdr.Read())
{
sdr.Close();
Response.Redirect("getInYes.aspx");
}
else
{
Response.Redirect("getInNo.aspx");
}
conn.Close();
}
}
开房界面的截图及代码:
图9、开房界面的截图
public partial class kaifang : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand insertCmd = new SqlCommand("insert into 住店(客人姓名,证件号码,房号,入住日期,预计离开日期) values(@name,@num,@roomId,@inDate,@outDate)", conn);
SqlCommand insertCmd1 = new SqlCommand("insert into 客人(姓名,性别,证件类型,证件号码,联系电话) values(@name,@sex,@cerType,@cerNum,@phone)", conn);
insertCmd.Parameters.Add("@name", SqlDbType.VarChar, 15);
insertCmd.Parameters.Add("@num", SqlDbType.VarChar, 20);
insertCmd.Parameters.Add("@roomId", SqlDbType.VarChar, 20);
insertCmd.Parameters.Add("@inDate", SqlDbType.VarChar, 20);
insertCmd.Parameters.Add("@outDate", SqlDbType.VarChar, 20);
insertCmd.Parameters["@name"].Value = txtName.Text;
insertCmd.Parameters["@num"].Value = txtCerNum.Text;
insertCmd.Parameters["@roomId"].Value = txtRoomId.Text;
insertCmd.Parameters["@inDate"].Value = txtInDate.Text;
insertCmd.Parameters["@outDate"].Value = txtOutDate.Text;
insertCmd1.Parameters.Add("@name", SqlDbType.VarChar, 15);
insertCmd1.Parameters.Add("@sex", SqlDbType.VarChar, 6);
insertCmd1.Parameters.Add("@cerType", SqlDbType.VarChar, 20);
insertCmd1.Parameters.Add("@cerNum", SqlDbType.VarChar, 20);
insertCmd1.Parameters.Add("@phone", SqlDbType.VarChar, 20);
insertCmd1.Parameters["@name"].Value = txtName.Text;
insertCmd1.Parameters["@sex"].Value = txtSex.Text;
insertCmd1.Parameters["@cerType"].Value = txtCerType.Text;
insertCmd1.Parameters["@cerNum"].Value = txtCerNum.Text;
insertCmd1.Parameters["@phone"].Value = txtPhone.Text;
conn.Open();
int flag = insertCmd.ExecuteNonQuery();
insertCmd1.ExecuteNonQuery();
if (flag > 0)
{
Label1.Text = "成功提交客人信息!";
}
else
{
Label1.Text = "提交客人信息失败,查看输入是否正确!";
}
conn.Close();
upDate();
}
private void upDate()
{
string roomId = txtRoomId.Text.Trim();
string selectStr = "";
string updateStr = "";
selectStr = "Select * from 房间 where 房号 = '" + roomId + "'";
updateStr = "update 房间 set 房间状态 = '已住' where 房号 ='" + roomId + "'";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand selectCmd = new SqlCommand(selectStr, conn);
conn.Open();
SqlDataReader sdr = selectCmd.ExecuteReader();
if (sdr.Read())
{
sdr.Close();
SqlCommand updateCmd = new SqlCommand(updateStr, conn);
updateCmd.ExecuteNonQuery();
}
conn.Close();
}
protected void Button2_Click1(object sender, EventArgs e)
{
Response.Redirect("main.aspx");
}
}
退房结账界面的截图及代码:
图10、退房结账界面截图
public partial class tuifang : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
string roomId = TextBox1.Text;
string selectStr = "select 客人姓名,证件号码,房号,入住日期,预计离开日期,结账离开日期,应付金额 from 住店 where 房号 = '" + roomId + "' and 状态 is null";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand(selectStr,conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if ( dr.Read() )
{
dr.Close();
GridView1.Visible = true;
Button1.Visible = true;
Button3.Visible = true;
}
else
{
Label1.Text = "此人已经退过房了!";
}
dr.Close();
conn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
string roomId = TextBox1.Text.Trim();
string selectStr = "";
string updateStr = "";
selectStr = "Select * from 房间 where 房号 = '" + roomId + "'";
updateStr = "update 房间 set 房间状态 = '空' where 房号 ='" + roomId + "'";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand selectCmd = new SqlCommand(selectStr, conn);
conn.Open();
SqlDataReader sdr = selectCmd.ExecuteReader();
if (sdr.Read())
{
sdr.Close();
SqlCommand updateCmd = new SqlCommand(updateStr, conn);
updateCmd.ExecuteNonQuery();
}
Label1.Text = "成功退房!";
conn.Close();
upDate1();
update();
}
private void update()
{
string roomId = TextBox1.Text.Trim();
string selectStr = "";
string updateStr = "";
selectStr = "Select * from 住店 where 房号 = '" + roomId + "'";
updateStr = "update 住店 set 状态 = '已退房' where 房号 ='" + roomId + "' ";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand selectCmd = new SqlCommand(selectStr, conn);
conn.Open();
SqlDataReader sdr = selectCmd.ExecuteReader();
if (sdr.Read())
{
sdr.Close();
SqlCommand updateCmd = new SqlCommand(updateStr, conn);
updateCmd.ExecuteNonQuery();
}
conn.Close();
}
private void upDate1()
{
string roomId = TextBox1.Text.Trim();
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);
SqlCommand cmd = conn.CreateCommand();
string money;
string date;
conn.Open();
int i;
for (i = 0; i < GridView1.Rows.Count; i++)
{
date = ((TextBox)GridView1.Rows[i].FindControl("txtOutDate")).Text.Trim();
money = ((TextBox)GridView1.Rows[i].FindControl("txtPayMent")).Text.Trim();
cmd.CommandText = "update 住店 set 结账离开日期 = '" + date + "', 应付金额 = '" + money + "' where 房号 = '" + roomId + "'";
cmd.ExecuteNonQuery();
}
conn.Close();
}
protected void Button3_Click(object sender, EventArgs e)
{
Response.Redirect("main.aspx");
}
}
查看房间状态的截图及代码:
图11、房间状态查看界面截图
展开阅读全文