Visual Basic桌游计费与管理系统设计报告Word文档格式.docx
《Visual Basic桌游计费与管理系统设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《Visual Basic桌游计费与管理系统设计报告Word文档格式.docx(44页珍藏版)》请在冰豆网上搜索。
但这并不意味着不能同时一起使用它们,而是恰恰相反。
当你要使用的数据跨越了数据库中的两个或更多的表时,可以使用关联来访问这些数据。
关联是一种定义两表之间相互联系的正式方式。
当定义关联时,必须指明两个相联的表中哪两个字段是连接起来的。
一个为主表的关键字称为主关键字(key),一个是相关表的关键字称为外部关键字(foreignkey)。
本案例的一个重点就是在SQL查询中连接相关的表,实现从多个表中检索相关的信息。
本系统中的数据库文件为桌游管理.mdb,其中包含如下数据表,大家可借助于MicrosoftAccess来创建数据库和数据表。
4.1.1账号表
该表用于存放系统用户的信息,包括用户名和密码,其结构如表12-1所示。
表12-1账号表结构
字段名称
字段类型
字段大小
允许空
用户名
文本
20
否
密码
4.1.2餐单表
该表用于存放餐单信息,其结构如表12-2所示。
表12-2餐单表结构
类型
50
名称
价格
货币
默认
为了调试程序方便,可在各数据表中先输入一些记录。
4.2各功能模块详细设计
本工程中使用了一些ActiveX控件,在设计时选择“工程”菜单中的“部件”选项,从控件列表中选中如图3所示的选项。
图3系统中使用的ActiveX控件
本工程中要使用ADO数据对象模型,在设计时选择“工程”菜单中的“引用”选项,从引用列表中选中如图4所示的选项。
大家注意,一般前四项是默认选中,而第五项引用ADO数据对象模型库,必须自己选中引用,否则就不能使用ADO数据对象模型。
图4系统中使用的引用
4.2.1Module1.Bas公共标准模块
本工程中包含一个公共标准模块Module1.Bas,其中包含一些全局变量,可被本工程中的多个窗体所调用,代码如下:
PublicbhAsInteger‘用于分辨用户名点餐的台号
PubliczhAsVariant‘用于保存登录系统的用户信息
Publicj(9)AsVariant‘用于保存每张台用户的点餐清单
Publiccym(9)AsCurrency‘用于保存每张台用户点餐的每项价格
Publiccyn(9)AsString‘用于保存每张台用户点餐的每项餐名
Publicxg(9)AsString‘用于保存每张台用户的修改备注
4.2.2登录窗体
登录窗体用于接受用户的用户名和密码输入,并判断是否为合法用户。
如果是合法用户,释放该窗体并启动主界面窗体,否则允许重新登录。
登录窗体的设计界面如图12-5所示,窗体中包含的主要对象及其属性如表12-7所示。
图12-5登录窗体设计界面
表12-7登录窗体中包含的主要对象及其属性
对象
属性
属性取值
登录窗体
Caption
“桌游计费与管理系统”
MaxButton
0‘false
MinButton
StartUpPosition
2‘屏幕中心
Image2
Mousepointer
99-Custom
MouseIcon
hand.cur
Image3
99-Custom
Text12
Password
“*”
Adodc1
ConnectString
“Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=桌游管理.mdb;
PersistSecurityInfo=False”
CommandType
2‘adCmdTable
RecordSource
“账号”
Visible
false
在该窗体上设计如下事件过程
PrivateSubImage2_Click()‘确定按钮
Adodc1.Refresh
DoWhileAdodc1.Recordset.EOF=False
IfText1=Adodc1.Recordset("
账号"
)AndText2=Adodc1.Recordset("
密码"
)Then
zh=Adodc1.Recordset.Bookmark’zh保存登录的用户名的信息
Form2.Adodc2.Recordset.Bookmark=zh
Form2.Show
UnloadMe
ExitSub
Else
Adodc1.Recordset.MoveNext
EndIf
Loop
IfText1="
"
OrText2="
Then
MsgBox"
请输入用户名和密码!
,"
提示"
用户名或密码错误,不能进入,请重新输入!
Text1.SelStart=0
Text1.SelLength=Len(Text1)
Text1.SetFocus
Text2="
EndSub
PrivateSubImage3_Click()‘退出按钮
End
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=vbKeyReturnThenText2.SetFocus
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=vbKeyReturnThenImage2_Click
EndSub
4.2.3主界面窗体
在该窗体上设计有一个菜单,关于如何制作菜单请参看第9章介绍。
主界面窗体的设计界面如图12-8所示,窗体中包含的主要对象及其属性如表12-8所示。
图12-8主界面窗体设计界面
表12-8主界面窗体中包含的主要对象及其属性
菜单
mnu_l
“查看(&
L)”
…mnu_look
“餐单列表”
mnu_g
“管理(&
G)”
…mnu_z
“账号管理”
…mnu_x
“餐单管理”
mnu_xt
“系统(&
E)”
…mnu_gh
“更换用户”
…mnu_e
“退出”
MMControl1
False
Adodc1(和3-11)
adCmdTable
“餐单”
Adodc2
Timer(1-11)
Enable
Interval
1000
Timer(12-21)
500
Text4(0-9)
DataSource
DataField
“价格”
Text7
DimlSec(9)AsInteger,lMin(9)AsInteger,lHour(9)AsInteger'
用于保存时间
Dima(9)AsInteger,b(9)AsInteger,c(9)AsInteger'
a保存用户定台的时间b,c存储vbyes
DimxAsInteger
PrivateSubCommand1_Click(IndexAsInteger)'
修改按钮
SelectCaseIndex
Case0
x=0
Calls_f(x)
Case1
x=1
Case2
x=2
Case3
x=3
Case4
x=4
Case5
x=5
Case6
x=6
Case7
x=7
Case8
x=8
CaseElse
x=9
EndSelect
PrivateSubCommand13_Click(IndexAsInteger)'
开台按钮
IfCommand13(0).Caption="
停止"
b(0)=MsgBox("
是否确定停止?
vbYesNo,"
结束"
)
Ifb(0)=vbYesThen
Timer1.Enabled=False'
控制显示用户所用时间
Timer12.Enabled=False'
控制显示用户剩余可用时间
Calls_d(x)
ElseIfCommand13(0).Caption="
开台"
a(0)=Val(InputBox("
请输入结束时间(小时)"
"
))
Ifa(0)<
>
0Then
Timer1.Enabled=True
Timer12.Enabled=True
Calls_e(x)
IfCommand13
(1).Caption="
b
(1)=MsgBox("
Ifb
(1)=vbYesThen
Timer3.Enabled=False
Timer13.Enabled=False
ElseIfCommand13
(1).Caption="
a
(1)=Val(InputBox("
Ifa
(1)<
Timer3.Enabled=True
Timer13.Enabled=True
IfCommand13
(2).Caption="
b
(2)=MsgBox("
Ifb
(2)=vbYesThen
Timer4.Enabled=False
Timer14.Enabled=False
ElseIfCommand13
(2).Caption="
a
(2)=Val(InputBox("
Ifa
(2)<
Timer4.Enabled=True
Timer14.Enabled=True
IfCommand13(3).Caption="
b(3)=MsgBox("
Ifb(3)=vbYesThen
Timer5.Enabled=False
Timer15.Enabled=False
ElseIfCommand13(3).Caption="
a(3)=Val(InputBox("
Ifa(3)<
Timer5.Enabled=True
Timer15.Enabled=True
IfCommand13(4).Caption="
b(4)=MsgBox("
Ifb(4)=vbYesThen
Timer6.Enabled=False
Timer16.Enabled=False
ElseIfCommand13(4).Caption="
a(4)=Val(InputBox("
Ifa(4)<
Timer6.Enabled=True
Timer16.Enabled=True
IfCommand13(5).Caption="
b(5)=MsgBox("
Ifb(5)=vbYesThen
Timer7.Enabled=False
Timer17.Enabled=False
ElseIfCommand13(5).Caption="
a(5)=Val(InputBox("
Ifa(5)<
Timer7.Enabled=True
Timer17.Enabled=True
IfCommand13(6).Caption="
b(6)=MsgBox("
Ifb(6)=vbYesThen
Timer8.Enabled=False
Timer18.Enabled=False
ElseIfCommand13(6).Caption="
a(6)=Val(InputBox("
Ifa(6)<
Timer8.Enabled=True
Timer18.Enabled=True
IfCommand13(7).Caption="
b(7)=MsgBox("
Ifb(7)=vbYesThen
Timer9.Enabled=False
Timer19.Enabled=False
ElseIfCommand13(7).Caption="
a(7)=Val(InputBox("
Ifa(7)<
Timer9.Enabled=True
Timer19.Enabled=True
IfCommand13(8).Caption="
b(8)=MsgBox("
Ifb(8)=vbYesThen
Timer10.Enabled=False
Timer20.Enabled=False
ElseIfCommand13(8).Caption="
a(8)=Val(InputBox("
Ifa(8)<
Timer10.Enabled=True
Timer20.Enabled=True
IfCommand13(9).Caption="
b(9)=MsgBox("
Ifb(9)=vbYesThen
Timer11.Enabled=False
Timer21.Enabled=False
ElseIfCommand13(9).Caption="
a(9)=Val(InputBox("
Ifa(9)<
Timer11.Enabled=True
Timer21.Enabled=True
PrivateSubCommand14_Click(IndexAsInteger)'
点餐按钮
bh=0
Form4.Show'
显示餐饮购买窗体
bh=1
Form4.Show
bh=2
bh=3
bh=4
bh=5
bh=6
bh=7
bh=8
bh=9
PrivateSubCommand2_Click(IndexAsInteger)'
点餐清单按钮
Form8.Show'
显示点餐清单窗体
Form8.Show
PrivateSubForm_Load()
Adodc1.Recordset.Move-1'
在窗体加载时,将记录指针移到文件首,则窗体不会显示数据
Adodc3.Recordset.Move-1
Adodc4.Recordset.Move-1
Adodc5.Recordset