数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
数据库课程设计
摘要
本系统的主要功能是客房信息的管理及对各种信息的查询,增加,修改,更新。
本系统的数据库是用SQLserver2000软件进行创建与设计,分别包括客房信息,客户信息,职工信息和系统信息四个表。
通过系统ODBC数据源管理工具把已创建的数据源与系统数据库相连。
利用VB软件对系统的窗口进行设计,包括欢迎界面、登陆界面、注册新用户界面、主菜单界面、浏览窗体和查询窗体等,可以通过这些窗体进行登陆操作,对输入的用户信息进行验证,和注册新用户操作,以及最重要的操作是对数据库中信息进行浏览与查询。
并可以对数据进行添加与删除,做到及时更新。
关键词:
客房信息管理SQLserver2000VB
目录
第1章系统功能概述2
1.1系统功能2
1.2系统结构总图3
第2章数据库设计3
2.1需求分析3
2.2E-R模型4
2.3关系模型6
2.4表结构设计6
第3章系统各功能模块的详细设计8
3.1封面8
3.2登录窗体9
3.3主菜单10
3.4注册新用户窗体12
3.5客户信息查询窗体14
3.6客房信息查询窗体16
3.7客户信息录入窗体16
3.8退房信息处理窗体19
3.9职工信息查询窗体21
总结24
参考文献25
第1章系统功能概述
1.1系统功能
(1).客户住宿记录的管理
(2).退房管理
(3).客户综合查询
(4).显示打印报表
1.2系统结构总图
图1.1 客房信息管理系统的总体结构
第2章数据库设计
2.1需求分析
建立一套功能完善的管理信息系统,既能满足业务人员日常处理的需要,增强企业经营全过程的数字化管理水平;又能满足管理人员决策分析的需要,提高公司管理层对公司经营反馈信息的响应速度。
从而大幅度提高工作效率,提高实施管理的准确性、科学性,使担负管理的工作人员从繁杂的手工劳作中解脱出来。
因而程序需要实现的功能有如下:
1.客房信息管理:
客房登记,入住情况查询,客房状态查看,退房处理。
2.客户信息管理:
客户信息登记,查询入住情况。
3.职工信息管理:
增加员工,删除员工。
4.系统管理:
注册用户信息。
2.2E-R模型
客户信息实体属性图2.1
客房信息实体属性图2.2
职工信息实体属性图2.3
系统信息实体属性图2.4
全局E-R图2.5
2.3关系模型
一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
根据E-R图向关系模型转换的原则,把E-R图转换为关系模型。
关系的码用下横线标出。
(1)客户信息(顾客编号、姓名、性别、年龄、国籍、身份证号、房号、住店天数、住店日期、离店日期)
(2)客房信息(房号、客房级别、可住人数、用房状态)
(3)职工信息(服务员编号,服务员姓名,性别,级别,工资,服务客房号,服务日期)
(4)系统信息(用户名、密码)
2.4表结构设计
本系统需在SQLServer中建立四个表,分别为客房信息,客户信息,职工信息和系统信息。
(1)客户信息表的建立与基本数据:
SQL语句如下:
createtable客户信息
(顾客信息varchar(50)primarykey,
姓名varchar(50),
性别varchar(50),
年龄varchar(50),
国籍varchar(50),
身份证号varchar(50),
房号varchar(50),
住店日期varchar(50),
离店日期varchar(50),
foreignkey(房号)references客房信息(房号)
);
客户信息表图2.6
(2)客房信息表的建立与基本数据:
SQL语句如下:
createtable客房信息
(房号varchar(50)primarykey,
客房级别varchar(50),
用房状态varchar(50),
国籍varchar(50),
可住人数varchar(50),
);
客房信息表图2.7
(3)职工信息表的建立与基本数据:
SQL语句如下:
createtable职工信息
(服务员编号varchar(50),
姓名varchar(50),
性别varchar(50),
级别varchar(50),
工资varchar(50),
服务客房号varchar(50),
服务日期varchar(50),
foreignkey(服务客房号)references客房信息(房号)
);
职工信息表图2.8
(4)系统信息表的建立与基本数据:
SQL语句如下:
Createtable系统信息
(用户名varchar(50),
密码varchar(50));
系统信息表图2.9
第3章系统各功能模块的详细设计
3.1各窗体的设计
本图书馆信息管理系统共包括11个窗体,分别为欢迎界面,登录,注册新用户,客户信息查询,客房信息查询,客户信息录入,职工基本信息,客户信息表格形式,客房信息表格形式,职工信息表格形式,MDI窗体。
其中主窗体为MDI窗体。
下面介绍各个窗体的设计语句及实现功能。
3.2封面
封面,如图3.1,标题为“客房管理系统”,为此标题添加一个Timer,编辑代码使其可以定时变色。
点击“点击进入系统”就可以关闭本窗体并打开登录窗体。
封面代码如下:
PrivateSubCommand1_Click()
Me.Hide
登录.Show
UnloadMe
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubTimer1_Timer()
StaticnAsInteger
n=n+1
Ifn>15Then
n=0
EndIf
Label1.ForeColor=QBColor(n)
EndSub
欢迎界面图3.1
3.3登录窗体
将打开“登录”对话框,用户输入用户名和密码,如图3.2,若正确则打开下面的主窗体,如图3.3。
登录代码如下:
DimmicountAsInteger'用于记录输入密码次数
PrivateSubCmdLand_Click()
DimstrAsString
str="select密码from系统信息where用户名='"&Text1.Text&"'"
Adodc1.RecordSource=str
Adodc1.Refresh
IfAdodc1.Recordset.EOF=TrueThen
MsgBox"用户名错误,请重新输入",vbExlamation,"警告"
Text1.Text=""
Text2.Text=""
Text1.SetFocus
Else
IfAdodc1.Recordset.Fields("密码")=Text2.TextThen
MDIForm1.Show
UnloadMe
Else
MsgBox"密码错误,请重新输入",vbExlamation,"警告"
Text2.Text=""
Text2.SetFocus
EndIf
EndIf
micount=micount+1
Ifmicount>=3ThenUnloadMe
EndSub
PrivateSubCmdCancel_Click()
UnloadMe
EndSub
登录图3.2
3.4主菜单
设计为MDI窗体如图3.3,含有主菜单:
[文件]、[数据管理]、[数据查询]。
[文件]菜单包含以下子菜单及其功能:
[注册新用户]菜单:
打开“注册新用户”窗体
[退出]:
回到程序最初状态即回到欢迎界面。
[数据管理]包含以下子菜单:
[客户信息登记]菜单:
显示客户信息录入窗体
[退房信息处理]菜单:
显示退房信息处理窗体
[数据查询]包含以下子菜单:
[查询客房信息]菜单:
显示客房信息查询窗体
[查询客户信息]菜单:
显示客户信息查询窗体
[查询职工信息]菜单:
显示职工基本信息窗体
代码如下:
PrivateSub查询职工信息_Click()
职工基本信息.Show
EndSub
PrivateSub客户信息_Click()
客户信息查询.Show
EndSub
PrivateSub客户登记_Click()
客户信息录入.Show
EndSub
PrivateSub浏览客房信息窗体_Click()
客房信息查询.Show
EndSub
PrivateSub退出_Click()
UnloadMe
欢迎界面.Show
EndSub
PrivateSub退房信息_Click()
退房信息处理.Show
EndSub
PrivateSub注册_Click()
注册新用户.Show
EndSub
主菜单图3.3
3.5注册新用户窗体
注册新用户窗体用于添加新的用户名和密码。
单击“注册新用户”菜单,打开对话框。
若输入正确,则将入的用户名保存到“系统信息”表,并提示“注册用户成功”,关闭本窗体,如图3.4,图3.5。
代码如下:
PrivateSubCommand1_Click()
DimsqlstrAsString
IfText1=""Then
MsgBox"请输入用户名!
",vbExclamation,"确认用户名"
Text1.SetFocus
ExitSub
Else
sqlstr="Select*from系统信息where用户名='"&Text1&"'"
Adodc1.RecordSource=sqlstr
Adodc1.Refresh
IfAdodc1.Recordset.EOF=FalseThen
MsgBox"用户名已存在,请重新输入!
",vbExclamation,"检验用户名"
Text1=""
Text1.SetFocus
ExitSub
EndIf
EndIf
IfText2<>Text3Then
MsgBox"二次输入的密码不一致,请重新输入",vbExclamation,"检验密码"
Text2="":
Text3=""
Text2.SetFocus
ExitSub
ElseIfText2=""Then
MsgBox"密码不能为空!
",vbExclamation,"检验密码"
Text2.SetFocus
Else
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("用户名")=Trim(Text1)
Adodc1.Recordset.Fields("密码")=Trim(Text2)
Adodc1.Recordset.Update
Me.Hide
MsgBox"成功注册新用户!
",vbInformation,"添加用户"
MDIForm1.Show
UnloadMe
EndIf
EndSub
PrivateSubCommand2_Click()'单击取消按钮
UnloadMe
MDIForm1.Show
EndSub
注册界面图3.4
注册成功图3.5
3.6客户信息查询窗体
可以按各种条件查找,且具有模糊查询功能,这些条件放在组合列表框Combo中,供用户选择。
在文本框中输入要查询的内容如图3.6所示,单击[查询]按钮,查询结果用网格控件显示如3.7所示。
代码如下:
PrivateSubCmd1_Click()
DimstrAsString
str="select*from客户信息"
str=str&"Where客户信息."&Combo1.Text&"Like'"&Text2&"%'"
Adodc1.RecordSource=str
Adodc1.Refresh
EndSub
PrivateSubCommand2_Click()
MDIForm1.Show
UnloadMe
EndSub
PrivateSubForm_Load()
Combo1.AddItem"顾客编号"'为组合列表框添加各选项
Combo1.AddItem"姓名"
Combo1.AddItem"性别"
Combo1.AddItem"年龄"
Combo1.AddItem"国籍"
Combo1.AddItem"身份证号"
Combo1.AddItem"房号"
Text2.Text=""'清空文本框
EndSub
客户查询界面图3.6
客户查询结果图3.7
3.7客房信息查询窗体
该窗体可以按各种条件查找,且具有模糊查询功能,这些条件放在组合列表框Combo中,供用户选择。
在文本框中输入要查询的内容如图3.8所示,单击[查询]按钮,查询结果用网格控件显示如图3.9所示。
代码如下:
客房查询窗体图3.8
客房查询结果图3.9
3.8客户信息录入窗体
客户信息录入窗体用于登记新的顾客及其基本信息。
单击“登记新用户”按钮,允许添加新的用户,,如图3.10,当单击确定时,同时更改住房状态,即打开客房信息表格形式窗体,首先要对所要登记的客房号进行查询,将“客房状态”查询结果显示在text文本框内,其次,单击登记按钮,即进行“客房状态”的修改,并将登记结果保存到“客户信息”及“客房信息”表,关闭窗体,图3.11.同时记录服务员服务日期,即打开服务时间信息录入窗体,同“客房状态”修改类似,如图3.12。
登记代码如下:
PrivateSubForm_Load()
CmdAdd.Enabled=True'[添加]按钮有效
CmdDel.Enabled=True'[删除]按钮有效
CmdOk.Enabled=False'[确定]按钮无效
CmdEsc.Enabled=False'[取消]按钮无效
Text1.Locked=True
Text2.Locked=True
Text3.Locked=True
Text4.Locked=True
Text5.Locked=True
Text6.Locked=True
Text8.Locked=True
Text9.Locked=True
Text10.Locked=True
Text11.Locked=True
EndSub
PrivateSubCmdAdd_Click()'[添加]按钮的单击事件
Text1.Locked=False
Text2.Locked=False
Text3.Locked=False
Text4.Locked=False
Text5.Locked=False
Text6.Locked=False
Text8.Locked=False
Text9.Locked=False
Text10.Locked=False
Text11.Locked=False
Adodc1.Recordset.AddNew
CmdAdd.Enabled=False
CmdDel.Enabled=False
CmdOk.Enabled=True
CmdEsc.Enabled=True
EndSub
PrivateSubCmdOk_Click()'单击[确认]按钮
Adodc1.Recordset.Update
CmdAdd.Enabled=True
CmdDel.Enabled=True
CmdOk.Enabled=False
CmdEsc.Enabled=False
客房信息表格形式.Show
EndSub
PrivateSubCmdDel_Click()'单击[删除]按钮
x=MsgBox("确实要删除当前记录吗?
",vbYesNo+vbQuestion,"确认")
Ifx=vbYesThen
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
IfAdodc1.Recordset.EOFThen
Adodc1.Recordset.MoveLast
EndIf
Else
Adodc1.Refresh
EndIf
EndSub
PrivateSubCmdEsc_Click()'取消按钮
Adodc1.Refresh
CmdAdd.Enabled=True
CmdDel.Enabled=True
CmdOk.Enabled=False
CmdEsc.Enabled=False
EndSub
客户登记图3.10
客房登记图3.11
服务信息登记图3.12
3.9退房信息处理窗体
退房信息处理窗体用于客户退房,当单击编辑按钮时,允许进行处理,首先查找将要退房的信息,当单击“查找房号”按钮时,将本房的“客房级别”“住房状态”显示如下图3.13所示,当单击“退房”按钮时,提示“确定要退房吗?
”,如确定,单击“确定”按钮时,将对“住房状态”进行修改,并保存到“客房信息”表,如图3.14,3.15所示。
退房查找图3.13
退房处理成功图3.14
退房处理窗体图3.15
3.10职工信息查询窗体
该窗体以文本框显示当前记录,用按钮[首记录]、[末记录]、[前移]、[后移],控制记录指针的移动;用一个标签Label显示:
当前记录号/记录总数;单击[返回]按钮,可以关闭本窗体,返回主窗体。
可以对记录进行添加、确认、删除、取消操作,具有职工信息表格显示功能的同时,也可在职工表格窗体中进行模糊查询。
如图3.16,3.17代码如下:
PrivateSubCmd1_Click()
职工信息表格形式.Show
UnloadMe
EndSub
PrivateSub职工信息_Load()
CmdFirst.Enabled=False
CmdPre.Enabled=False
CmdNext.Enble=True
CmdLast.Enabled=True
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
PrivateSubCmdFirst_Click()
Adodc1.Recordset.MoveFirst'记录指针移到首记录(显示首记录)
CmdFirst.Enabled=False'让[首记录]按钮无效
CmdPre.Enabled=False'让[前移]按钮无效
CmdNext.Enabled=True
CmdLast.Enabled=True'让[末记录]按钮有效
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdPre_Click()
Adodc1.Recordset.MovePrevious'记录指针移到前一条记录
CmdNext.Enabled=True
CmdLast.Enabled=True
IfAdodc1.Recordset.BOFThen
Adodc1.Recordset.MoveFirst'则记录指针移到首记录上
CmdFirst.Enabled=False
CmdPre.Enabled=False
EndIf
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdNext_Click()
Adodc1.Recordset.MoveNext'记录指针移到下一条记录
CmdFirst.Enabled=True
CmdPre.Enabled=True
IfAdodc1.Recordset.EOFThen'如果记录指针移到了末记录之后
Adodc1.Recordset.MoveLast'则记录指针移到末记录上
CmdNext.Enabled=False
CmdLast.Enabled=False
EndIf
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdLast_Click()
Adodc1.Recordset.MoveLast
CmdFirst.Enabled=True
CmdPre.Enabled=True
CmdNext.Enabled=False
CmdLast.Enabled=False
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdAdd_Click()
Adodc1.Recordset.AddNew
CmdAdd.Enabled=False
CmdDel.Enabled=False
CmdOk.Enabled=True
CmdEsc.Enabled=True
EndSub
PrivateSubCmdOk_Click()'单击[确认]按钮
Adodc1.Recordset.Update
CmdAdd.Enabled=True
CmdDel.Enabled=True
CmdOk.Enabled=False
CmdEsc.Enabled=False
EndSub
PrivateSubCmdDel_Click()'单击[删除]按钮
x=MsgBox("确实要删除当前记录吗?
",vbYesNo+vbQuestion,"确认")
Ifx=vbYesThen
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
IfAdodc1.Recordset.EOFThen
Adodc1.Recordset.MoveLast
E