资源描述
成绩: __________
课程设计(数据结构)
学生姓名: 张 宇 星
学 号: 20141308055
院 系: 计算机与软件学院
专 业: 计算机科学与技术
指导教师: 顾 伟
二零一六 年 六 月十八日
目 录
内容摘要.....................................................................1
一、前言.....................................................................2
二、需求分析.................................................................2
2.1、功能分析..............................................................2
2. 2、方案分析.............................................................2
三、概要设计.................................................................2
3.1数据结构..............................................................26
3.2功能模块划分.........................................................26
3.2.1结构框图..........................................................26
3.2.2程序流图..........................................................26
四、系统的详细设计........................................................ 32
4.1用户登录模块.........................................................32
4.2经理登录界面.........................................................33
4.2.1客房管理...........................................................33
4.2.2 员工管理...........................................................33
4.2.3 退出系统.................................................... ......35
4.3员工登录界面............................................................33
4.3.1客房查询............................................................1
4.3.2客户入住............................................................1
4.3.3客房结算............................................................1
4.4.4修改密码............................................................1
4.4.5退出系统............................................................1
4.4部分核心代码附录.............................................................1
五、总结......................................................................36
参考文献......................................................................39
客房信息管理系统
张宇星
南京信息工程大学计算机与软件系
摘要:本文论述到了客房管理系统开发的背景、目标、意义和方法、并重点介绍了系统分析、数据库设计、系统概要设计、程序设计的全过程。本文所设计的系统是由Visual Studio2010和S ql server2008数据库开发而成的。该系统较完整的完成了酒店客房管理的各种功能,它包括前台服务和后台管理两大功能模块。在实现了不同权限用户登陆,用户的注册、查询,客房信息的维护,客房类型的设置及个人密码的修改,酒店房务的管理,收费等基本功能的同时,还对酒店的营业状况进行有条件的查询,为酒店高层决策提供数据支持。酒店管理者只需略懂电脑知识就可以建议的操作该酒店管理系统。使用酒店管理系统进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、储蓄量大、寿命长、成本低等。
关键字:Visual Studio 2010 管理 数据库
一、 前言
在信息高度发达的今天,酒店业务涉及的各个工作环节已不再仅仅是传统的住宿、结算业务,而是更广、更全面的服务性行业代表。酒店宾馆作为一个服务性行业,从客房的营销即客人的预定开始,到入住登记直到最后退房结账,整个过程应该能够体现以宾客为中心,提供快捷方便服务,给宾客感受一种顾客至上的享受,提高管理水平,简化各种复杂操作,在最短时间内完成酒店业务规范操作,这样才能令旅客舒适难忘。因此,采用全新的计算机管理系统,将成为提高酒店的管理效率,改善服务水准的手段之一。系统从满足客户的需求角度出发,实现了酒店管理的基本流程。系统的主要功能包括宾客结帐、客房预订、营业查询、客户管理、系统设置等等。用户入住酒店的时候所要等待的时间就会大大的减少,操作员能够很方便的对用户信息的登记和对房间状态的的管理,从而实现了酒店管理系统高效、准确的特点现代化的酒店,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。酒店管理系统正是为此而设计的。优秀的酒店客房管理系统操作方便,灵活性好,系统安全性高,运行稳定。提供快捷方便服务,给宾客感受一种顾客至上的享受,提高管理水平,简化各种复杂操作,在最短时间内完
成酒店业务操作,这样才能令旅客舒适难忘。
二、 需求分析
2.1功能分析
经过综合分析,确定了系统应该包含如下功能:
客房信息管理:
用户可对酒店的客房信息进行管理,包括对客房的基本信息(如客房编号、客房价格、客房类型及客房状态等)的增加、修改、删除和更新。
客房订房管理:
实现客户对酒店房间预订及入住的功能,客户未到达酒店之前可通过电话预订客房,用户可按客户的需求为客户找到合适的房间并进行记录,客户到达酒店后可直接在房间状态为空的客房里选择一间合适的房间入住,同时用户将客人信息及选择的房间信息添加到相应的表里。
客房结算管理:
当客户入住时间达到登记退房时间时可选择结算金额与续费两种方式,用户根据客户的选择修改相应登记表的内容并更新房间状态。
客户信息管理:
对入住酒店的客户进行信息登记,包括客户的姓名、联系方式、证件号码等个人信息,方便对客户进行管理。
2.2方案分析
该系统的用户一共有两类:经理和员工。经理可以对客房和员工进行管理,可以增加客房的信息和员工的信息,也可以增加系统的管理员。员工可以对客户入住信息进行管理,包括客户选择房间、客户结算和续费,还可以查看房间的状态和基本信息。客房管理系统将对这两种不同的用户设置权限,每种用户只能实现自己的功能,不能相互使用。
使用该系统时用户需要登录,登录的时候需要验证身份和用户名还有密码,如果三项不匹配则登录失败。
三、概要设计
3.1数据结构
该系统数据库的各表及数据项和数据类型说明:
管理员信息表:记录登入系统的用户的身份、用户名和密码,如下表所示:
数据项名称
类型
长度
主键
允许空值
用户身份
char
20
用户名
char
10
密码
varchar
50
客房信息记录表:记录酒店所有客房的基本信息
数据项名称
类型
长度
主键
允许空值
房间号
char
10
√
房间类型
char
10
√
房间价格
char
10
√
房间楼层
int
√
额定人数
int
√
实际人数
int
√
房间状态
char
10
√
备注
text
√
客人入住记录表:记录客户的入住信息,包括房间号,房间类型,入时间、退房时间及客户的个人信息等:
数据项名称
类型
长度
主键
允许空值
客人姓名
char
20
客房编号
char
10
√
入住时间
datetime
退房时间
datetime
结算金额
money
√
证件号码
varchar
50
入住人数
int
√
备注
text
√
客人信息表:记录入住客户的基本信息,包括姓名、性别、证件号、地址及联系方式
数据项名称
类型
长度
主键
允许空值
客人姓名
char
10
性别
char
10
联系方式
varchar
10
证件号码
varchar
10
√
员工信息表:记录酒店在职员工的基本信息,包括员工编号、员工姓名、员工职务、联系方式及住址等。
数据项名称
类型
长度
主键
允许空值
员工编号
char
10
√
员工姓名
char
10
性别
char
2
联系方式
varchar
50
所在省市
char
10
√
职务
char
10
√
客户姓名
客户E-R图:
性别
证件号
联系方式
客户
员工E-R图:
员工姓名
员工编号
性别
联系方式
员工
职务
所在省市
客房E-R图:
客房类型
客房价格
客房楼层
客房
客房编号
客房状态
额定人数
入住记录E-R图:
入住时间
退房时间
结算金额
入住记录
用户名
管理员E-R图:
用户身份
密码
管理员
整体E-R图:
结算金额
客房编号
客户姓名
性别
客房类型
客房价格
联系方式
客户
入住
客房楼层
客房
1 n
证件号
额定人数
n
客房状态
管理
管理
员工编号
员工姓名
职务
1
属于
管理员
员工
身份
联系方式
密码
用户名
住址
3.2功能模块划分
3.2.1结构框图
客房管理系统
员工
经理
退出系统
修改密码
客户结算
客户入住
客房查询
退出系统
修改密码
员工管理
客房管理
各功能模块介绍:
客房管理:
用户可对酒店的客房信息进行管理,包括对客房的基本信息(如客房编号、客房价格、客房类型及客房状态等)的增加、修改、删除和更新。
员工管理:
可以增加、删除、修改员工的基本信息,并可以将员工设为管理员。还可以查询员工的基本信息。
修改密码:
可以对管理员的密码进行修改。
退出系统:
直接结束本次系统的登录。
客房查询:
可以对所有的客房信息进行查询,按照不同的查询条件。
客户入住:
当有人入住的时候登记客户的信息及更新房间的信息。
客户结算:
当客户的住宿日期到了登记的退房日期时客户可以有两种选择:结账和续费。
3.2.2程序流程图
开始
选择身份
输入用户名和密码
选择功能
执行功能
退出系统
结束
四、 系统的详细设计
4.1用户登录界面
功能说明:
当用户打开该系统的时候首先出现的是这个界面,用户根据自己的身份选择经理或者员工,再输入自己的用户名和密码,当三项都填写正确的时候就会成功登录该系统,跳转到相应的功能界面。如果三项中有一项没有填写正确则会出现错误提示。如下图:
4.2经理登录界面
功能说明:
当用户身份为经理并且信息填写正确后登录系统就会跳出该界面,该界面有四个功能菜单按钮,分别为客房管理、员工管理、退出系统和修改密码。分别点击不同菜单项会出现相应的功能界面。
4.2.1客房管理
该页面可实现对客房信息的查找、增加、修改和删除的功能。分别点击不同的按钮会跳出相应的功能界面,当点击查找按钮时跳出如下界面:
管理员可以按不同的条件进行客房信息的查询,当选择按楼层查找时在房间信息后的文本框里输入要查找的楼层数,下图是按照楼层查询:
按照房间号查询:
按客房类型查询:
当点击“增加”按钮时跳出如下界面:
输入新增的房间信息点击确定按钮就会在数据库中相应的表上加入一行,并显示在下面的地方:
当点击“重置”按钮时所有的文本框会清零,方便管理员输入下一条客房信息:
点击“修改”按钮时会跳出如下界面:
先把要修改的房间信息填写到相应的文本框内点击“查看原信息”按钮就会将当前的房间信息显示在下面的控件框里,如图:
然后再下面的文本框里输入修改后的信息,点击“修改信息”按钮就会更新数据库里的信息并显示在下面的控件框里,如图所示:
当点击”删除“按钮时会跳出如下界面:
输入要删除的房间信息点击“查看”按钮会将当前房间信息显示在下面的控件框里,如图所示:
点击确定按钮就会将该房间信息从数据库的表里删除掉,如图所示:
4.2.2员工管理
在左边的文本框里输入要查找的员工编号和职务相应的员工信息就会显示在上面的控件框里,如图所示:
右边是对员工信息的管理界面,可以增加、删除和修改员工的相关信息,还可以将员工设为该系统的管理员。
删除信息,如图所示:
如果员工信息有变可以修改员工的信息:
当点击“设为管理员”按钮时会跳出另一个页面,如图所示:
输入要设为管理员的员工姓名和密码以及职位,点击”确定“按钮在数据库的相应表里会增加记录并显示在下面的控件框里,如图所示:
点击“修改密码”菜单项跳出相应的功能界面,如图所示:
输入要修改的用户名和他的原始密码以及新密码,点击“确定”按钮数据里的相关表就会更新记录,并显示在下面的控件框里,如图所示:
点击“重置”按钮文本框会清空,方便用户下一次输入,如图所示:
4.3员工登录界面
4.3.1客房查询
点击“客房查询”菜单项会跳出如下界面:
输入不同的查询条件会显示相应的查询结果,如图所示:
按房间号查询:
按房间类型查询:
按房间楼层查询:
按额定人数查询:
按房间价格查询:
还可以按照房间状态查询,方便客户快速知道哪些房间可以入住:如图所示:
有新的客户入住酒店时要登记信息,界面如下:
当客户到达记录表上的退房时间时有两种选择方式,结账或者续费,点击“客户结算”菜单项会出现如下界面:
查询当前客户的状态:
根据查出的房间信息将时间和房间价格填到右边的文本框里然后再点击结算,就会在应付金额的文本框里显示应付金额并更新数据库里的相关信息。
修改密码与用户身份为经理的界面相同,这里不再赘述。
4.5部分核心代码附录
private void queding_Click(object sender, EventArgs e)
{
string mystr;
string shenfen1,shenfen2;
shenfen1 = "经理”;
shenfen2 = "前台”;
SqlConnection conn = new SqlConnection();
mystr = "server=localhost;Initial Catalog=JDGL;User ID=sa;Password=123456";
conn.ConnectionString = mystr;
conn.Open();//连接到数据库
SqlCommand comm = new SqlCommand();//创建¨SqlCommand对象
comm.Connection = conn;//以上代码连接并打开数据库
comm.CommandText = "select * from 管理员信息表 where 用户名?='" + yonghuming.Text + "'";//根据登录界面输入的信息去查询数据库内容
SqlDataReader dr;
dr = comm.ExecuteReader(); //执行链接
if (dr.Read() == true)
{
if (dr["密ü码?"].ToString() == mima.Text )//密码正确进入以下判断
{
name = yonghuming.Text; //将登录用户名暂赋全局变量name
if (jingli.Checked && dr["用户身份"].ToString() == shenfen1) // 经理用户跳转
{
this.DialogResult = DialogResult.OK; //返回一个登录成功的对话框状态
this.Close(); //关闭登窗口
}
else if (yuangong.Checked && dr["用?户§身Θ?份"].ToString() == shenfen2)//员工用户跳转
{
this.DialogResult = DialogResult.No; //返回一个登录成功的对话框状态
this.Close(); //关闭登录窗口
}
else
MessageBox.Show("登录失败");
}
else //登录角色或密码错误报错
{
MessageBox.Show("登录名错误或密码错误!");
}
}
else //无法从数据库中调到用户资料,说明无此用户报错
{
MessageBox.Show("无此用户!");
}
}
private void tuichu_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
private void 住宿管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
groupBox1.Show();
string mysql;
mysql = "server=localhost;Initial Catalog=JDGL;User ID=sa;Password=123456";
conn.ConnectionString = mysql;
conn.Open();
}
private void quanbu_Click(object sender, EventArgs e)
{
dataGridView1.Show();
string mysql;
if (fangjianhao.Text != "")
{
mysql = "select * from 客房记录表 where 房间号='" + fangjianhao.Text + "'";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客房记录表");
dataGridView1.DataSource = myds.Tables["客房记录表"];
}
if (comboBox1.Text != "")
{
mysql = "select * from 客房记录表 where 房间类型='" + comboBox1.Text + "'";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客房记录表");
dataGridView1.DataSource = myds.Tables["客房记录表"];
}
if (fangjianlouceng.Text != "")
{
mysql = "select * from 客房记录表 where 房间楼层='" + fangjianlouceng.Text + "'";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客房记录表");
dataGridView1.DataSource = myds.Tables["客房记录表"];
}
if(edingrenshu .Text !="")
{
mysql = "select * from 客房记录表 where 额定人数='" + edingrenshu.Text + "'";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客房记录表");
dataGridView1.DataSource = myds.Tables["客房记录表"];
}
if (fangjianjiage.Text != "")
{
mysql = "select * from 客房记录表 where 房间价格='" + fangjianjiage.Text + "'";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客房记录表");
dataGridView1.DataSource = myds.Tables["客房记录表"];
}
}
private void kongfang_Click(object sender, EventArgs e)
{
dataGridView1.Show();
string mysql;
mysql = "select * from 客房记录表 where 房间状态='空房'";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客房记录表");
dataGridView1.DataSource = myds.Tables["客房记录表"];
}
private void weiman_Click(object sender, EventArgs e)
{
dataGridView1.Show();
string mysql;
mysql = "select a.* from 客房记录表 a,客人入住记录表 b where a.房间状态='未满' AND a.房间号=b.客房编号";
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
DataSet myds = new DataSet();
myda.Fill(myds, "客房记录表,客人入住记录表");
dataGridView1.DataSource = myds.Tables["客房记录表,客人入住记录表"];
}
private void qingkong_Click(object sender, EventArgs e)
{
fangjianhao.Text = "";
fangjianjiage.Text = "";
fangjianlouceng.Text = "";
edingrenshu.Text = "";
comboBox1.Text = "";
}
private void 客房管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
//this.Close();
kerenruzhu f = new kerenruzhu();
f.ShowDialog();
}
private void 挂账管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void 系统设置ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void 查询统计ToolStripMenuItem_Click(object sender, EventArgs e)
{
客户结算 f = new 客户结算();
f.ShowDialog();
}
private void 日结ToolStripMenuItem_Click(object sender, EventArgs e)
{
修改密码 f = new 修改密码();
f.ShowDialog();
}
private void 返回ToolStripMenuItem_Click(object sender, EventArgs e)
{
用户登录 f = new 用户登录();
f.ShowDialog();
//this.Close();
}
}
}
public partial class 客户结算 : Form
{
SqlCommand mycd = new SqlCommand();
SqlConnection conn = new SqlConnection("server=localhost;Initial Catalog=JDGL;User ID=sa;Password=123456");
public 客户结算()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
conn.Open();
dataGridView1.Show();
string mysql;
mysql = "select a.客人姓名,a.客房编号,a.入住时间,a.退房时间,a.结算金额,b.房间状态,b.房间价格 from 客人入住记录表 a,客房记录表 b where 客房编号='" + textBox2.Text + "'AND 客人姓名='" + textBox1.Text + "'AND a.客房编号=b.房间号";
DataSet myds = new DataSet();
SqlDataAdapter myda = new SqlDataAdapter(mysql, conn);
myda.Fill(myds, "客人入住记录表,客房记录表");
dataGridView1.DataSource = myds.Tables["客人入住记录表,客房记录表"];
conn.Close();
}
private void button2_Click(object sender, EventArgs e)
{
conn.Open();
dataGridView1.Show();
string mysql, mysql2;
DateTime ru = DateTime.Parse(ruzhushijian.Text);
DateTime tui = DateTime.Parse(tuifangshijian.Text);
TimeSpan ts = tui.Subtract(ru).Duration();
int price = Convert.ToInt32(fangjianjiage.Text);
if (fangjianjiage.Text == "")
MessageBox.Show ("请输入房间价格!");
yingfujine.Text = (price* ts.Days).ToString();
mysql = "update 客人入住记录表 set 结算金额='" + yingfujine.Text + "' where 客房编号='" + textBox2.Text + "'AND 客人姓名='"+textBox1 .Text +"'";
mysql2 = "update 客房记录表 set 房间状态='空房' where 客房编号='" + textBox2.Text + "'";
SqlCommand mycd1 = new SqlCommand(mysql, conn);
SqlCommand mycd2 = new SqlCommand(mysql2, conn);
mycd1.ExecuteNonQuery();
MessageBox.Show("修改数据成功!");
string mysql1 = "select a.客人姓名,a.客房编号,a.入住时间,a.退房时间,a.结算金额,b.房间状态 from 客人入住记录表 a,客房记录表 b where 客房编号='" + textBox2.Text + "'AND 客人姓名='"+textBox1 .Text +"'AND a.客房编号=b.房间号";
SqlDataAdapter myda = new SqlDataAdapter(mysql1, conn);
DataSet myds = new DataSet();
myda.Fill(myds, "客人入住记录表,客房记录表");
dataGridView1.DataSource = myds.Tables["客人入住记录表,客房记录表"];
conn.Close();
}
private void button3_Click(object sender, EventArgs e)
{
conn.Open();
dataGridView1.Show();
string mysql;
mysql = "update 客人入住记录表 set 退房时间='" + Convert.ToDateTime (tuifangshijian.Text) + "' where 客房编号='" + textBox2.Text + "' AND 客人姓名='"+textBox1 .Text +"'";
SqlCommand mycd1 = new SqlCommand(mysql, conn);
mycd1.ExecuteNonQuery();
MessageBox.Show("修改数据成功!");
string mysql1 = "select a.客人姓名,a.客房编号,a.入住时间,a.退房时间,a.结算金额,b.房间状态 from 客人入住记录表 a,客房记录表 b where 客房编号='" + textBox2.Text + "' AND 客人姓名='"+textBox1 .Text +"'";
SqlDataAdapter myda = new SqlDataAdapter(mysql1, conn);
DataSet myds = new DataSet();
myda.Fill(myds, "客人入住记录表,客房记录表");
dataGridVie
展开阅读全文