第9章 项目开发案例.docx
- 文档编号:16018928
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:18
- 大小:18.76KB
第9章 项目开发案例.docx
《第9章 项目开发案例.docx》由会员分享,可在线阅读,更多相关《第9章 项目开发案例.docx(18页珍藏版)》请在冰点文库上搜索。
第9章项目开发案例
9.3公共模块设计
公共模块的功能主要是存贮在整个项目的各个模块中通用的全局变量和全局函数。
在该模块中定义了全局变量intRole、strUname等,分别用于表示操作员的权限和姓名,并定义了全局函数connect()和全局函数subQuit(),分别用于创建连接(数据源)和关闭连接并退出应用程序。
具体代码如下:
Modulepub
PubliccnAsData.OleDb.OleDbConnection’定义全局连接对象
PublicintRoleAsInteger’登录操作员权限
PublicstrUnameAsString’登录操作员姓名
PublicstrFind(9)AsString’查询档案维护条件
PublicstrFindnameAsString’查询成绩档案的学生姓名
PublicstrFindIDAsString’查询成绩档案的学生ID
PublicSubconnect()
cn=NewData.OleDb.OleDbConnection
cn.ConnectionString="DataSource="&Application.StartupPath&"\students.mdb;Provider=Microsoft.Jet.OLEDB.4.0"
EndSub
’下面定义函数subQuit()用于处理在系统退出前关闭数据源,并退出整个应用程序。
PublicSubsubQuit()
Ifcn.State=ConnectionState.OpenThen’此处的条件也可以写成cn.State=1
cn.Close()
Application.Exit()
EndSub
EndModule
9.4.2欢迎窗体代码设计
该窗体的主要功能是显示欢迎信息,调用连接函数创建连接,并检测数据源连接的正确性。
具体代码如下:
PublicClassWelcome
PrivateSubWelcome_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.Click
Callconnect()
Try
cn.Open()
CatchexAsData.OleDb.OleDbException
MessageBox.Show(ex.Message&"连接错误,程序将退出!
","数据库连接错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
Application.Exit()
EndTry
DimfrmLoginAsNewFrmLogin
frmLogin.ShowDialog()
EndSub
EndClass
9.4.4“操作员登录”代码设计
整个模块结构编程如下:
PublicClassfrmLogin
DimdtbLoginAsNewDataTable
PrivateSubTxtUID_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyPressEventArgs)HandlesTxtUID.KeyPress
IfAsc(e.KeyChar)=Windows.Forms.Keys.EnterThen
TxtUPWD.Focus()
EndIf
EndSub
PrivateSubTxtUPWD_TextChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTxtUPWD.TextChanged()
ButLogin.Enable=True
EndSub
PrivateSubTxtUPWD_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyPressEventArgs)HandlesTxtUPWD.KeyPress
IfAsc(e.KeyChar)=Windows.Forms.Keys.EnterThen
ButLogin.Focus()
EndIf
EndSub
PrivateSubButLogin_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButLogin.Click
IftxtUID.Text=""Then
MessageBox.Show("请输入操作员!
","错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
txtUID.Focus()
ExitSub
EndIf
IftxtUPWD.Text=""Then
MessageBox.Show("请输入密码!
","错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
txtUPWD.Focus()
ExitSub
EndIf
Try
DimadpLoginAsNewOleDb.OleDbDataAdapter("select*fromuserwhereuid='"&txtUID.Text&"'andupwd='"&txtUPWD.Text&"'",cn)
dtbLogin.Clear()
adpLogin.Fill(dtbLogin)
CatchexAsOleDb.OleDbException
MessageBox.Show(ex.Message,"查询错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
ExitSub
EndTry
IfdtbLogin.Rows.Count=1Then
strUname=dtbLogin.Rows(0).Item("Uname")
intRole=dtbLogin.Rows(0).Item("Urole")
DimfrmMainAsNewFrmMain
Me.Dispose()
aa=frmMain
frmMain.ShowDialog()
Else
MessageBox.Show("操作员或密码错误!
","登录失败",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUID.SelectAll()
txtUID.Focus()
ExitSub
EndIf
EndSub
PrivateSubButQuit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButQuit.Click
CallsubQuit()
EndSub
EndClass
9.5主界面设计
2.代码设计
这里的代码设计主要有两部分,一是当主窗体初次显示时,应处理状态栏中的显示信息。
二是对各菜单项的单击事件的处理。
除“退出系统”项外,各子菜单项的处理基本一致。
这里给出“添加操作员”和“档案录入”两项,其余可参照编写。
具体代码如下:
PublicClassFrmMain
‘主窗体初次显示时,应处理状态栏中的显示信息
PrivateSubFrmMain_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
ToolStrip2.Text="操作员:
"&strUname&""
ToolStrip3.Text=Now
EndSub
‘“添加操作员”菜单项处理
PrivateSubmnuAdduser_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesmnuAdduser.Click
DimaaAsForm
ForEachaaInMe.MdiChildren
IfLCase(aa.Name)="frmUserAdd"Then
ExitSub
EndIf
Next
DimfrmUserAddAsNewFrmUserAdd
frmUserAdd.MdiParent=Me
frmUserAdd.Show()
EndSub
‘“修改操作员信息”菜单项处理
PrivateSubmnuEditUser_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesmnuEditUser.Click
DimaaAsForm
ForEachaaInMe.MdiChildren
IfLCase(aa.Name)="frmEditUser"Then
ExitSub
EndIf
Next
DimfrmEditUserAsNewFrmDaAdd
frmEditUser.MdiParent=Me
frmEditUser.Show()
EndSub
‘“删除操作员”菜单项处理
PrivateSubmnuDelUser_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesmnuDelUser.Click
DimaaAsForm
ForEachaaInMe.MdiChildren
IfLCase(aa.Name)="frmDelUser"Then
ExitSub
EndIf
Next
DimfrmDelUserAsNewFrmDaAdd
frmDelUser.MdiParent=Me
frmDelUser.Show()
EndSub
‘“档案录入”菜单项处理
PrivateSubmnuDaadd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesmnuDaadd.Click
DimaaAsForm
ForEachaaInMe.MdiChildren
IfLCase(aa.Name)="frmDaadd"Then
ExitSub
EndIf
Next
DimfrmDaAddAsNewFrmDaAdd
frmDaAdd.MdiParent=Me
frmDaAdd.Show()
EndSub
‘退出菜单项处理
PrivateSubmnuQuit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesmnuQuit.Click
subQuit()
EndSub
EndClass
9.6增加操作员模块设计
9.6.2代码设计
这里要处理的事件较多,包括各个文本框的KeyPress事件,按钮ButAdd和ButRet的Click事件。
这里只给出两个按钮的Click事件,各文本框的KeyPress事件请参看9.4节的有关内容。
(1)“添加”按钮ButAdd是最主要的要处理的控件,当鼠标单击时,应检查操作员ID、姓名、密码及确认密码的输入情况,并作出相应处理。
如果一切正常,应将记录写入数据源表中。
(2)对于“返回”按钮ButRet,当鼠标单击时,关闭并释放本窗体。
具体编程如下:
InheritsSystem.Windows.Forms.Form
DimadpAdduserAsOleDb.OleDbDataAdapter
DimdtbAdduserAsNewDataTable
PrivateSubButAdd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButAdd.Click
IftxtUid.Text=""Then
MessageBox.Show("请输入操作员ID!
","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUid.Focus()
ExitSub
EndIf
IftxtUname.Text=""Then
MessageBox.Show("请输入操作员姓名!
","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUname.Focus()
ExitSub
EndIf
IftxtUpwd.Text=""Then
MessageBox.Show("请输入密码!
","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUpwd.Focus()
ExitSub
EndIf
IftxtUpwd1.Text=""Then
MessageBox.Show("请输入确认密码!
","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUpwd1.Focus()
ExitSub
EndIf
IftxtUpwd.Text<>txtUpwd1.TextThen
MessageBox.Show("两次输入的密码不一致,请确认!
","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUpwd1.SelectAll()
txtUpwd1.Focus()
ExitSub
EndIf
adpAdduser=NewOleDb.OleDbDataAdapter("select*fromuserwhereuid='"&Trim(txtUid.Text)&"'",cn)
dtbAdduser.Clear()
adpAdduser.Fill(dtbAdduser)
IfdtbAdduser.Rows.Count>=1Then
MessageBox.Show("该操作员已存在,请更换ID!
","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
txtUid.SelectAll()
txtUid.Focus()
ExitSub
EndIf
'开始保存用户记录
dtbAdduser.Clear()
DimSqlAsString="INSERTINTOuser(uid,upwd,uname,urole)VALUES('"&Trim(txtUid.Text)&"','"&Trim(txtUpwd.Text)&"','"&Trim(txtUname.Text)&"',"&IIf(RadioButtonl.Checked=True,1,2)&")"
adpAdduser=NewOleDb.OleDbDataAdapter(Sql,cn)
adpAdduser.Update(dtbAdduser)
txtUid.Text=""
txtUpwd.Text=""
txtUpwd1.Text=""
txtUname.Text=""
txtUid.Focus()
MessageBox.Show("用户记录保存完毕!
","添加成功",MessageBoxButtons.OK,MessageBoxIcon.Information)
EndSub
PrivateSubButRet_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButRet.Click
Me.Close()
Me.Dispose()
EndSub
9.7修改操作员信息模块设计
9.7.2代码设计
该窗体要处理的事件如下:
(1)窗体的Load事件。
应处理的问题包括连接数据源、读取数据库中“操作员”表的信息并将其列入列表框中。
(2)列表框“lsbUid”的SelectedIndexChanged事件。
当列表框的选中项发生变化时,相应的操作员ID、姓名、密码、确认密码及权限等相关信息应随之变化。
(3)对于“修改”按钮ButEditUser,当鼠标单击时,应将修改后的信息写入到数据库的User表中。
(4)对于“返回”按钮ButRet,当鼠标单击时,关闭并释放本窗体。
具体编程如下:
PublicClassFrmEditUser
InheritsSystem.Windows.Forms.Form
DimadpEdituserAsOleDb.OleDbDataAdapter
DimdtbEdituserAsNewDataTable
PrivateSubFrmEditUser_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
connect()
Me.Location=NewPoint(0,0)
adpEdituser=NewOleDb.OleDbDataAdapter("SELECTuid,unameFROMStudents.user",cn)
adpEdituser.Fill(dtbEdituser)
DimiAsInteger
Fori=0TodtbEdituser.Rows.Count-1
lsbUid.Items.Add(""&dtbEdituser.Rows(i).Item(0))
Nexti
EndSub
PrivateSublsbUid_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandleslsbUid.SelectedIndexChanged
dtbEdituser.Clear()
adpEdituser=NewOleDb.OleDbDataAdapter("SELECT*FROMstudents.userWHEREUid='"&Trim(lsbUid.SelectedItem)&"'",cn)
adpEdituser.Fill(dtbEdituser)
IfdtbEdituser.Rows.Count>0Then
txtUid.Text=dtbEdituser.Rows(0).Item("uid")
txtUname.Text=dtbEdituser.Rows(0).Item("uname")
txtUpwd.Text=dtbEdituser.Rows(0).Item("upwd")
txtUpwd1.Text=dtbEdituser.Rows(0).Item("upwd")
IfdtbEdituser.Rows(0).Item("urole")=1Then
rdbNormal.Checked=True
Else
rdbSuper.Checked=True
EndIf
Else
MessageBox.Show("没有找到相关记录!
","查询提示",MessageBoxButtons.AbortRetryIgnore,MessageBoxIcon.Information)
ExitSub
EndIf
EndSub
PrivateSubButEdit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButEdit.Click
dtbEdituser.Clear()
adpEdituser=NewOleDb.OleDbDataAdapter("UPDATEstudents.userSETUname='"&Trim(txtUname.Text)&"',Upwd='"&_
Trim(txtUpwd.Text)&"',Urole="&IIf(rdbNormal.Checked=True,1,2)&"WHEREUid='"&Trim(lsbUid.SelectedItem)&"'",cn)
adpEdituser.Fill(dtbEdituser)
MessageBox.Show("用户记录修改完毕!
","保存完毕",MessageBoxButtons.OK,MessageBoxIcon.Information)
EndSub
PrivateSubButQuit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButQuit.Click
Me.Close()
Me.Dispose()
EndSub
EndClass
9.8档案录入模块设计
9.8.2代码设计
本窗体需要处理的事件共有四个,即窗体自身的Load事件、下拉列表框控件TxtMonth的SelectedIndexChanged事件、按钮ButSave和ButRet的Click事件。
(1)当窗体调入时,应填充各下拉列表框控件。
其中的“民族”下拉框的填充使用了数据源中的nation表中的数据。
(2)由于不同月份对应的天数不同,所以当所选择的月份发生变化时,应重新填充日期下拉框。
(3)对于“保存”按钮ButSave,当鼠标单击时,应检查各控件的输入或选择情况,并作出相应处理。
(5)对于“返回”按钮ButRet,当鼠标单击时,应关闭并释放窗体。
整个模块结构编程如下:
PublicClassFrmDaAdd
InheritsSystem.Windows.Forms.Form
DimadpDaAddAsOleDb.OleDbDataAdapter
DimdtbDaAddAsNewDataTable
DimcmdInsertAsOleDb.OleDbCommand
PrivateSubFrmDaAdd_Load(ByVal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 项目开发案例 项目 开发 案例