数据库系统课程设计.docx
《数据库系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库系统课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
数据库系统课程设计
数据库系统
课程设计说明书
题目:
客房管理系统
院系:
计算机科学与工程学院
专业班级:
计算机10-*班
学号:
学生姓名:
指导教师:
2012年5月16日
安徽理工大学课程设计(论文)任务书
计算机科学与工程学院
学号
学生姓名
专业(班级)
计10-*
设计题目
客房管理系统
设
计
技
术
参
数
系统平台:
Windows7
开发工具:
VC++
后台数据库:
SQLServer2005
应用程序与数据库的连接方式采用ODBC
设
计
要
求
主要完成数据库的设计部分,包括需求分析,概念结构设计,逻辑结构设计,物理结构设计,并对关系模式进行分析,最后用自己熟悉的开发工具连接数据库,实现基本的对数据库的操作。
工
作
量
课程设计报告要求不少于3000字。
源程序要求不少于300行
工
作
计
划
4月8日-4月15日查找相关资料
4月16日-4月25日设计数据库
4月26日-5月2日设计界面
5月3日-5月12日编写代码
5月13日-5月16日撰写课程设计报告
参
考
资
料
[1]王珊萨师煊.数据库系统概论.北京:
高等教育出版社,2011
[2]温秀梅丁学钧.VisualC++面向对象程序设计教程与实验.北京:
清华大学出版社,2011
[3]求是科技.VisualC++信息系统开发实例导航.北京:
人民邮电出版社,2005
指导教师签字
教研室主任签字
2012年5月16日
学生姓名:
学号:
专业班级:
课程设计题目:
客房管理系统
指导教师评语:
成绩:
指导教师:
年月日
安徽理工大学课程设计(论文)成绩评定表
目 录
1.基本设计-1-
1.1应用背景-1-
1.2需求分析-1-
1.3数据流-2-
1.4核心数据字典-3-
2.E-R图设计-4-
2.1局部E-R图-4-
2.2全局E-R图-5-
3.逻辑设计-6-
3.1开发环境-6-
3.2关系模式-6-
4.创建数据库-6-
4.1创建主数据库-6-
4.2创建Check_out表-6-
4.3创建Room表-7-
4.4创建r_client表-7-
4.5创建r_order表-7-
5.界面设计及调试-8-
5.1登陆界面-8-
5.2主界面-8-
5.3查看客房状态-9-
5.4入住登记和房间预订-10-
5.5查看客户信息-10-
5.6退房-11-
5.7负责人密码修改-11-
6.部分程序代码-12-
6.1登陆界面代码-12-
6.2房间信息代码-12-
6.3订房代码-13-
6.4退房代码-14-
6.5修改密码代码-16-
7.总结-17-
参考文献-17-
1.基本设计
1.1应用背景
应用经济的快速发展,人们生活水平和消费意识的提高,促进了旅游业的发展。
酒店行业将面临着机遇和挑战。
一直以来人们使用传统的人工方式管理酒店,这种管理方式存在着许多缺点,如:
效率低、保密性差且较为烦琐,另外随着客人数量的增加,其工作量也将大大增加,这必然增加客人管理者的工作量和劳动强度,这将给客人管理信息的查找、更新和维护都带来了很多困难。
在信息社会中,企业只有利用各种先进的管理方式和技术手段实现信息的高度集成,提高获取信息、分析、利用信息的能力,发展知识经济,才能在激烈的市场竞争中获取优势。
随着市场经济的发展,各行各业为加强信息管理,提高经济效益的日益要求,迫切需要把现代化信息处理技术应用到经济管理工作中去。
现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。
迅速发展起来的酒店行业,为了提高自身的管理水平,加强竞争能力,提高经济效率等,需要动态掌握酒店各个环节中信息的变更,必然离不开计算机的帮助。
酒店管理系统是在对酒店的日长运作进行综合调查的基础上开发出来的一套系统,有利于提高管理效率。
本系统完整的描述了一个酒店管理系统的设计与实现过程,以C++为基础,利用VC++6.0,结合SQLServer2005数据库进行,保证了数据处理、数据存取过程中的高效、安全,完成了酒店管理系统的主要模块功能。
1.2需求分析
本系统的最终用户为宾馆的管理员。
根据我们日常生活中的经验,结合对周围宾馆的管理人员的咨询和已经网上的调查,得出用户的下列实际要求:
1)操作员的基本信息
每个操作员分配一个自己的用户名和密码用于登录系统,保障系统的安全;
2)客人的基本信息
每个入住的客户都需要记录其信息,包括姓名、身份证号、性别;
3)房间信息
每个房间包括一个唯一的房间编号,描述其详细信息的房间描叙,已经房间的价格、房间是否已经住人。
4)订单信息
每笔订单应该被记录下来便于以后的查询,所以订单号包括唯一识别其信息的订单号,以及记录客人的姓名、身份证号、房间类型、房间编号、客人入住时间、入住天数、押金、操作员。
5)退房信息
每个客人退房后都应该记录其退房情况,每个退房记录有系统为其分配唯一的记录号。
还包括客人的姓名、身份证号、客人退房的房间号、退房的时间、找零情况。
1.3数据流
1)核心数据流图
2)部分数据流表
1.宾馆客房管理系统的数据流——客人信息表
数据流名称:
客人信息
来源:
客人
去向:
入住登记
包含的数据项:
姓名、身份证号、性别、入住房间、房间类型、房间价格等
2.宾馆客房管理系统的数据流——入住登记表
数据流名称:
入住登记
来源:
客人产生入住登记
去向:
入住
包含的数据项:
订单编号、姓名、性别、身份证号、客房类型、抵房时间、住几天、操作员
3.宾馆客房管理系统的数据流——客房信息表
数据流名称:
客房信息
来源:
客人产生入住登记
去向:
入住
包含的数据项:
客房编号、客房类型、客房价格、客房状态、客房的描述
4.宾馆客房管理系统的数据流——房间状态表
数据流名称:
房间状态
来源:
退房
去向:
房间
包含的数据项:
客房号码、房间状态
5.宾馆客房管理系统的数据流——退房信息
数据流名称:
退房信息
来源:
退房
去向:
退房记录表
包含的数据项:
帐单编号、姓名、身份证号、房间编号、退房时间、找零情况
1.4核心数据字典
[宾客入住信息表:
r_Client]
数据项名称(库中字段名)
数据类型及长度
说明
客人姓名(name)
Char(10)
Notnull
客人性别(sex)
Char
(2)
Notnull
客人身份证号(id)
Char(10)
Notnull,primarykey
[房间信息表:
Room]
数据项名称(库中字段名)
数据类型及长度
说明
房间编号(Rid)
Char(4)
Notnull,primarykey
房间名称(Rname)
Char(10)
Notnull
房间描述(Rdescribe)
Char(100)
Notnull
房间价格(Rprice)
int
Notnull
房间状态(Rstatue)
Char(4)
Notnull
负责人(Ruser)
Char(10)
Notnull
[管理员表:
r_user]
数据项名称(库中字段名)
数据类型及长度
说明
用户(ruser)
Char(10)
Notnull,primarykey
密码(pwd)
Char(10)
Notnull
[入住登记表:
r_order]
数据项名称(库中字段名)
数据类型及长度
说明
订单编号(Jkey)
Char(4)
Notnull,primarykey
姓名(name)
Char(10)
Notnull
身份证号(id)
Char(10)
Notnull
房间类型(Rname)
Char(10)
Notnull
房间编号(Rid)
Char(4)
Notnull
入住时间(Datatime)
date
Notnull
入住天数(Day)
int
Notnull
押金(money)
Int
Notnull
操作员(Ruser)
Char(10)
Notnull
[退房记录表:
Check_out]
数据项名称(库中字段名)
数据类型及长度
说明
账单编号(Tno)
Char(4)
Notnull,primarykey
姓名(name)
Char(10)
Notnull
身份证号(id)
Char(10)
Notnull
房间编号(Rid)
Char(4)
Notnull
退房时间(TDatatime)
data
Notnull
找零(smoney)
int
Notnull
2.E-R图设计
2.1局部E-R图
2.2全局E-R图
3.逻辑设计
3.1开发环境
开发语言:
C++
开发工具:
MicrosoftVisualC++6.0
SQLServer2005
3.2关系模式
r_Client(name,sex,id);
Check_out(Tno,name,id,Rid,smoney,TDatatime);
Room(Rid,Rname,Rdesecribe,Rprice,Rstatus,Ruser);
r_Order(Jkey,name,id,Rname,Rid,Datatime,Day,money,Ruser);
4.创建数据库
4.1创建主数据库
CREATEDATABASE[kefang]ONPRIMARY
(NAME=N'kefang',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\DATA\kefang.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N'kefang_log',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\DATA\kefang_log.ldf',SIZE=1024KB,MAXSIZE=2048GB,FILEGROWTH=10%)
COLLATEChinese_PRC_CI_AS
4.2创建Check_out表
CREATETABLECheck_out(
Tnochar(4)primarykey,
namechar(10)NOTNULL,
idchar(10)NOTNULL,
Ridchar(4)NOTNULL,
SmoneyintNOTNULL,
TdatatimedatetimeNOTNULL,
foreignkey(id)referencesr_client(id),
foreignkey(Rid)referencesRoom(Rid))
4.3创建Room表
CREATETABLERoom(
Ridchar(4)primarykey,
Rnamechar(10)NOTNULL,
Rdesecribenvarchar(50)SNULL,
RpriceintNULL,
Rstatusnchar(10)NULL,
Ruserchar(10)NULL)
4.4创建r_client表
CREATETABLEr_client(
Namechar(10)NOTNULL,
Sexchar
(2)NOTNULL,
idchar(10)primarykey)
4.5创建r_order表
CREATETABLEr_order(
Jkeychar(4)primarykey,
namechar(10)NOTNULL,
idchar(10)NOTNULL,
Rnamechar(10)NOTNULL,
Ridchar(4)NOTNULL,
DatatimedatetimeNOTNULL,
DayintNOTNULL,
moneyintNOTNULL,
Ruserchar(10)NOTNULL,
Foreignkey(id)referencesr_client(id),
Foreignkey(Rid)referencesRoom(Rid))
5.界面设计及调试
5.1登陆界面
进入登陆界面后,系统会自动连接数据库,等待用户输入用户名和密码,若输入正确则进行下一步操作,若连续三次输入的用户名和密码不匹配则系统会自动关闭对话框以保证数据库的安全性。
登录界面如下图1:
图1
5.2主界面
当用户名和密码输入正确后就进入了主界面,如下图2所示:
图2
5.3查看客房状态
在主面板上的快速入口上点击房间信息,在列表框内会显示全部房间的信息,以及可以添加删除房间信息;如图3所示:
图3
5.4入住登记和房间预订
点订房按钮,系统自动在Room表中Rstatue='空'的房间名字添加到定房对话框列表框中,供客户选择房间,用户可以查看房间的详细信息。
操作员输入好用户的登记信息后点击确定按钮就可以录入房间信息但当用户输入数据破坏完整性时,系统会发出警告,以保持数据库的完整性,界面如图4所示:
图4
5.5查看客户信息
当需要查看用户信息我们可以调用用户信息对话框查询信息,但为了安全性考虑需要同时输入用户的姓名和身份证号才能查看。
界面如图5所示:
图5
5.6退房
通过退房按钮入口可以打开退房对话框。
当客户需要退房时,点退房按钮后,系统会弹出一个对话框,当用户提供其姓名和身份证号或者其房间号,操作员可以查出其房间的信息。
选择目标房间后,系统自动加载房间信息。
操作员点击退房后,系统修改数据库:
原房间状态改为空,并自动读取订单的信息计算消费金额结算找零,并将退房信息自动录入到check_out表中。
界面设计如图6所示:
图6
5.7负责人密码修改
为了数据库的安全,需要负责人每隔一段时间修改一次登录密码,其中界面如图7所示:
图7
6.部分程序代码
6.1登陆界面代码
CDatabasem_database;
Cdengluset*m_recordset=newCdengluset(&m_database);
CStringstr;
str.Format("select*fromr_userwhereruser='%s'andpwd='%s'",m_user,m_password);
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,str);//打开数据库
if(m_recordset->GetRecordCount()==0){\\查看数据库中是否有符合条件的记录
if(count<3){
MessageBox("请确认您的用户名和密码是否匹配!
");
count++;
}
else{\\当输入错的次数超过超过三次时则会关闭登录对话框
MessageBox("您输入的错误次数太多,请稍后再试!
");
m_database.Close();
CDialog:
:
OnOK();
}
}
else{
m_database.Close();
CmainDlgmaindlg;
CDialog:
:
OnOK();
maindlg.DoModal();
}
}
6.2房间信息代码
UpdateData(TRUE);
if(m_fuzeren==""||m_fangjianhao==""||m_leixing=="")
{
MessageBox("填充的信息必须完整否则无法进行插入!
","提示",MB_ICONEXCLAMATION);
return;
}
else{
CDatabasedatabase;
Croomsetm_Roomset(&database);
CStringstr;
str.Format("select*fromRoom");
m_Roomset.Open(AFX_DB_USE_DEFAULT_TYPE,str);
if(m_leixing=="单人间"){
str.Format("insertintoRoomvalues('%s','%s','一间面积为16~20平方米的房间,内有卫生间和其他附属设备组成。
房内设一张单人床。
',100,'空','%s')",m_fangjianhao,m_leixing,m_fuzeren);}
if(m_leixing=="标准间"){
str.Format("insertintoRoomvalues('%s','%s','房内设两张单人床或一张双人床的叫标准间,这样的房间适合住两位客人或夫妻同住,适合旅游团体使用。
',150,'空','%s')",m_fangjianhao,m_leixing,m_fuzeren);}
if(m_leixing=="豪华间"){
str.Format("insertintoRoomvalues('%s','%s','房内设两张单人床或一张双人床,房间的装修,房内设施比标准间档次高,其价格也比标准间高。
',200,'空','%s')",m_fangjianhao,m_leixing,m_fuzeren);
}
database.ExecuteSQL(str);
database.Close();
Croomsetm_Roomset1(&database);
m_Room.DeleteAllItems();
inti=0;
str.Format("select*fromRoom");
m_Roomset1.Open(AFX_DB_USE_DEFAULT_TYPE,str);
6.3订房代码
CStringstr="",st;
intnId;
Cr_clientsetm_clientset(&database);
str.Format("select*fromr_Client");
m_clientset.Open(AFX_DB_USE_DEFAULT_TYPE,str);
str.Format("insertintor_Clientvalues('%s','%s','%s')",m_name,m_sex,m_id);
database.ExecuteSQL(str);
database.Close();
POSITIONpos=m_dingfang.GetFirstSelectedItemPosition();
if(pos==NULL)
{
MessageBox("请先选择房间!
","提示",MB_ICONEXCLAMATION);
return;
}
if(m_Day==""||m_id==""||m_key==""||m_money==0||m_name==""){
MessageBox("信息需填满","提示",MB_ICONEXCLAMATION);
return;
}
if(pos!
=NULL&&m_Day!
=""&&m_id!
=""&&m_key!
=""&&m_money!
=0&&m_name!
=""){
nId=(int)m_dingfang.GetNextSelectedItem(pos);
Cordersetm_orderset(&database);
str.Format("select*fromr_orderwhereJkey='%s'",m_key);
m_orderset.Open(AFX_DB_USE_DEFAULT_TYPE,str);
if(m_orderset.GetRecordCount()==0){
CTimeNow=CTime:
:
GetCurrentTime();
st=Now.Format("%Y-%m-%d%H:
%M:
%S");
str.Format("insertintor_ordervalues('%s','%s','%s','%s','%s','%s','%s','%d','%s')",m_key,m_name,m_id,m_dingfang.GetItemText(nId,1),m_dingfang.GetItemText(nId,0),st,m_Day,m_money,m_dingfang.GetItemText(nId,5));
database.ExecuteSQL(str);
database.Close();
Croomsetm_Roomset(&database);
str.Format("select*fromroom");
m_Roomset.Open(AFX_DB_USE_DEFAULT_TYPE,str);
str.Format("updateRoomsetRstatus='满'whereRid='%s'",m_dingfang.GetItemText(nId,0));
database.ExecuteSQL(str);
database.Close();
m_dingfang.DeleteAllItems();
MessageBox("订房成功!
");
6.4退房代码
CDatabasedatabase,database1;
CStringstr,st,st1,st2;
intnId,i=0,j;
POSITIONpos=m_tuifang.GetFirstSelectedItemPosition();
if(pos==NULL)
{
MessageBox("请先选择!
","提示",MB_ICONEXCLAMATION);
return;
}
nId=(int)m_tuifang.GetNextSelected