“读者编号”字段作为关键字用来惟一标志一个读者,“未还书数”字段确定该读者是否还可以继续借书,如果未还书数等于可借书数,则不允许继续借书,“借书日期”和“还书日期”字段与借出图书表中的该读者最近借书日期和还书日期是相同的,这里为了方便查找,设计了一些冗余的字段。
用户表的设计视图如表2.3所示:
表2.3 用户表
用户 |
密码 |
权限 |
李艳东 |
04 |
系统管理员 |
董晓飞 |
05 |
普通管理员 |
吴建平 |
06 |
普通管理员 |
于文源 |
07 |
普通管理员 |
借出图书表的设计视图如表2.4所示:
表2.4 借出图书表
书号 |
读者号 |
借书日期 |
还书日期 |
在馆 |
0001 |
200501 |
2007-2-5 |
2007-3-1 |
是 |
0002 |
200502 |
2007-6-2 |
2007-6-9 |
是 |
0003 |
200503 |
2007-6-6 |
2007-7-1 |
是 |
0004 |
200504 |
2007-6-1 |
2007-7-9 |
是 |
这张表是图书表和读者表的关联表,“在馆”字段值为“是”,表明读者已经还了所借的图书,“在馆”字段值为“否”,表明读者读者还未归还所借的图书。
借书模块管理读者的借书操作,首先在“读者编号”文本框输入读者编号,按下回车键,调出读者资料和该读者已经借过的图书信息,然后“图书编号”文本框获得焦点,接着在“图书编号”文本框输入图书编号,按下回车键,这将使“还书”按钮变为有效,单击“还书”按钮,需要修改读者表、图书表和借出图书表的一些字段,因此设置了3个表的数据集和3个表的查询字串。还书日期固定为系统的当前日期。
登录模块首先从当前路径找到数据库文件,然后从“管理员”表中检测输入的用户名和密码是否存在。如果登录成功,显示主窗体模块,否则,关闭系统。登录模块的设计界面如图3.1所示。
单击“登录”按钮,首先获得应用程序当前所在目录,找到数据库文件,连接数据库,用输入的用户名作为条件进行查询,如果找到记录,验证输入的密码和管理员表的logpwd字段是否一致,如果一致,则登录成功,若为其他情况,则登录失败。运行界面
如图3.2所示:
图3.2 登录失败界面
登陆模块代码如下:
Imports System.Data.OleDb
Public Class frmLogin
Inherits System.Windows.Forms.Form
Dim DataReader As System.Data.OleDb.OleDbDataReader
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
Me.Close()
End Sub
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
若图片无法显示请联系QQ752018766,本论文免费,转发请注明源于www.751com.cn
If OleConn.AccessConnection(filename, "", "") Then '连接数据库成功
str = "select logpwd from 管理员 where logname='" & txtUserName.Text & "'" '构造查询字串
If OleConn.SelectQuery(str, DataReader) Then '执行查询成功
If DataReader.HasRows Then '如果找到
While DataReader.Read
If DataReader.Item(0) = txtPassword.Text Then '如果密码正确
UserName = txtUserName.Text
Password = txtPassword.Text
btnOK.PerformClick() '回到主界面
Else '密码不正确
MsgBox("密码不正确,请检查密码")
End If
End While
Else '没有找到记录
MsgBox("找不到此用户,请检查用户名")
End If
Else '执行查询失败
MsgBox("查询数据库失败")
End If
Else '连接数据库失败
MsgBox("连接数据库失败")
End If
Catch ex As Exception
OleConn.DisplayError(ex)
Finally
DataReader.Close()
End Try
End Sub
Private Sub txtUserName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtUserName.TextChanged
End Sub
End Class
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页