基于mvc的java图书馆管理系统的设计与实现_毕业论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

宛枫书社图书管理系统的设计与实现
河南职业技术师范学院信息工程与管理学院信息管理与信息系统专业99级
中国.河南.新乡2017-08-14
目录
一、序言 (4)
二、需求分析说明书 (4)
2.1系统介绍 (4)
2.2系统面向的用户群体 (4)
2.3系统的功能性需求 (4)
2.4系统的非功能性需求 (5)
2.4.1用户界面需求 (5)
2.4.2软硬件环境需求 (5)
2.4.3软件质量需求 (5)
三、可行性分析报告 (5)
3.1技术可行性 (5)
3.2人员可能性 (5)
3.3时间、设备可能性 (5)
3.4系统工作量 (5)
3.5代码工作量 (5)
3.6文档要求 (5)
四、开发环境与项目规划 (5)
4.1开发环境 (5)
4.2项目规划与管理 (5)
4.2.1开发人员安排 (5)
4.2.2开发进度安排 (6)
五、软件界面设计标准与规范 (6)
5.1编写目的 (6)
5.2界面设计思想 (6)
5.3界面设计原则 (6)
5.4界面设计样式 (6)
5.5常见提示信息样式 (6)
5.6常见错误信息样式 (7)
5.7其他界面约定 (7)
六、软件编码设计标准与规范 (7)
6.1对象命名约定 (7)
6.2常量和变量命名约定 (8)
6.3结构化编码约定 (8)
6.4数据源的约定 (9)
6.5数据库访问约定 (9)
6.6其他约定 (9)
七、数据库分析与设计 (10)
7.1数据库环境说明 (10)
7.2数据库命名标准与规范 (10)
7.3数据库逻辑设计 (10)
7.4数据库物理设计 (10)
7.4.1表、视图汇总 (10)
7.4.2各表、视图设计详解 (11)
八、软件体系结构设计说明书 (15)
8.1系统概述 (15)
8.2设计约束 (15)
8.3设计策略 (15)
8.4系统概要设计说明书 (16)
8.4.1图例说明 (16)
8.4.2系统总体结构图 (16)
8.4.3销售子系统流程图 (17)
8.4.4进货子系统流程图 (17)
8.4.5退货子系统流程图 (17)
8.5系统详细设计说明书 (17)
8.5.1系统模块汇总 (17)
8.5.2系统核心模块详解 (18)
8.5.3系统模块详解 (28)
九、用户界面设计报告 (42)
9.1界面设计规范 (42)
9.2系统窗体汇总 (42)
9.3主界面设计 (43)
9.4子界面设计 (43)
9.5界面资源设计 (44)
十、软件测试分析报告 (44)
10.1测试范围与主要内容 (44)
10.2测试方法 (44)
10.3测试报告 (44)
10.4改进建议与措施 (45)
十一、软件使用说明书 (45)
11.1软件概述 (45)
11.2系统安装 (45)
11.3使用说明 (45)
11.3.1系统登陆 (45)
11.3.2注销与退出 (46)
11.3.3办理进货登记 (46)
11.3.4办理退货登记 (48)
11.3.5销售图书 (48)
11.3.6会员管理 (49)
11.3.7员工管理 (49)
11.3.8书目检索 (50)
11.3.9查看统计信息 (50)
11.3.10修改密码 (50)
11.3.11关于/帮助 (50)
参考资料 (51)
一、序言
宛枫书社图书管理系统的设计与推出是多方面原因促成的,我有一位老乡名叫李明友,毕业后经营一家小书店:“考试通书店”,其日常管理工作都是人工操作,历史数据很难保存和利用,对于书店的经营非常不利。

而其他的中小型书店、个体书店大多如此。

针对这种状况,我计划开发一个面向中小型书店、个体书店的图书管理系统,实现对人员、物流的全面管理,以帮助这些书店早日实现书店管理信息化。

正在我考虑系统的规划的时候,我有幸得到王改性老师的指导,我的两位同学:蔡大臣、张航也加入了开发队伍,这更加坚定了我完成系统开发任务的决心。

为了系统的顺利开发和维护,特编制如下技术文档:
二、需求分析说明书
2.1系统介绍
本系统定位于中小型书店、个体书店,暂时考虑单机环境下的实现;操作系统选择目前常用的Windows 98/2000。

系统性质为MIS(管理信息系统)或财务软件。

本系统采用会员制管理,系统功能应包含进书管理、售书管理、退货管理、库存管理、统计分析、相关人员管理等。

系统界面力求简洁、易用,在标准化的基础上考虑界面的美观和新颖。

系统计划2003年3月初开始,4月初完成初步开发工作,其余工作根据时间安排进行。

2.2系统面向的用户群体
系统面向中小型书店、个体书店,用户群体为这些书店的经理、采购员/仓库管理员、图书销售人员、书店的会员/游客等。

2.3系统的功能性需求
2.4系统的非功能性需求
2.4.1用户界面需求
简洁、易用、易懂,美观、大方、标准,具备一定的兼容性。

2.4.2软硬件环境需求
软件环境:兼容当前主流操作系统Windows 95/98/NT/Me/2000/XP 等。

硬件环境:386以上计算机,打印机、扫描仪等。

2.4.3软件质量需求
易用、健壮、兼容性好、运行稳定、有一定安全保障。

三、可行性分析报告
3.1技术可行性
系统的性质为MIS或财务软件,因而数据库的设计与操纵是系统设计的核心。

我在2002年11月至2003年3月曾经成功完成了“蓝色梦幻留言板”的开发与维护任务,具备一定的系统分析与设计能力,熟悉数据库的设计与操纵;指导老师王改性多年从事数据库的教学与研究工作,因而该系统的实现在技术上是可行的。

3.2人员可能性
我有“蓝色梦幻留言板”的开发经验,目前时间充足,可以完成开发任务。

蔡大臣的计算机功底很深,可以参与系统的数据库设计与开发。

张航有深厚的文字功底,可以参与用户文档的制作、内部文档整理、后期测试等任务。

所有人员均可立即投入开发工作。

3.3时间、设备可能性
系统设计与开发工作预计耗时一个月,所有参与开发的人员均能够保证按时完成任务。

实验设备如:计算机、打印机、扫描仪等不足,上机任务可以完成,打印机、扫描仪的实验根据具体条件暂时延缓执行。

3.4系统工作量
该系统的工作量相对于我们的开发小组来说很大,必须保证按进度完成任务。

实际工作量预计超过一个月(每天4-8小时)。

如包含软件维护及技术文档的整理、制作,工作量将更大。

3.5代码工作量
预计需25天左右。

3.6文档要求
依据国家《计算机软件产品开发文件编制指南》和《现代软件工程》的理论与原则编制标准的软件技术文档。

四、开发环境与项目规划
4.1开发环境
前台开发环境:Microsoft V isual Basic 6.0
后台数据库环境:Microsoft Access 2000/2002
4.2项目规划与管理
4.2.1开发人员安排
系统分析与设计:胡孟杰 程序编制:胡孟杰
数据库设计:胡孟杰、蔡大臣 文档整理与制作:蔡大臣、张航
系统测试:胡孟杰、蔡大臣、张航、考试通书店(李明友) 等 4.2.2开发进度安排
3月1日至3月5日:系统分析,进行需求定义,定义系统概况 3月6日至3月7日:数据库分析与设计 3月8日至3月9日:软件体系结构设计 3月10日至3月31日:软件编码 4月1日至4月2日:系统测试
五、软件界面设计标准与规范
5.1编写目的
制定界面设计标准规范的目的是为了规范和统一软件界面设计制定软件界面设计标准与规范。

5.2界面设计思想
首先考虑标准化,在标准化的基础上进行界面的美工设计。

5.3界面设计原则
简单易用、简洁明了、兼容性好、标准、规范。

5.4界面设计样式
采用标准Windows 界面,自上至下依次为:标题栏、菜单栏、工具条、工作区、状态栏等。

如下图示:
图1.系统界面
5.5常见提示信息样式
提示信息按以下标准进行:采用标准Windows 对话框样式,添加信息图标,后接提示信息文本和相应按钮。

如下图示:
图2.常见提示信息样式
5.6常见错误信息样式
错误信息依据提示信息样式设计,将信息图标更改为警告图标。

如下图示:
图3.常见错误信息样式
5.7其他界面约定
除主界面外,所有子界面均采用模式窗体,即该窗体不消失,不可以在本程序内将焦点移出子窗体。

六、软件编码设计标准与规范
6.1对象命名约定
6.2常量和变量命名约定
6.3结构化编码约定
编码应清晰、可读性好,运用缩进、空行,结合大小写区别等方法保持程序结构良好。

凡与数据库操作相关的模块一律加上容错代码,涉及多表操作的模块应运用“事务”处理,以保持数据完整性。

编码风格参照下例进行:
Public Sub CheckUser(userID As String, passwd As String)
Dim userDB As Database
Dim userRD As Recordset
Dim dbName As String
Dim STRSQL As String
Screen.MousePointer = 11
On Error GoTo errEnd
dbName = App.Path
If Right(dbName, 1) <> "、" Then dbName = dbName + "、"
dbName = dbName + "DataBase、WFSSDataBase.mdb"
STRSQL = "select [用户身份] from [Admin] where [用户ID]=""" & userID & """ and [用户密码]=""" & passwd & """"
'打开数据库
Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True)
'检索用户,验证密码
Set userRD = userDB.OpenRecordset(STRSQL, dbOpenSnapshot)
If userRD.RecordCount > 0 Then
'设置用户身份
UserShenFen = userRD![用户身份]
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
'进入用户环境
Load FrmMain
FrmMain.Show
Unload FrmLogIn
logOK = True
userName = userID
Screen.MousePointer = vbDefault
Else
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
logOK = False
Screen.MousePointer = vbDefault
MsgBox "用户名或密码错误!请重新输入!", vbOKOnly + vbExclamation, "登陆失败"
End If
Exit Sub
errEnd:
Screen.MousePointer = vbDefault
MsgBox Err.Description, vbOKOnly + vbExclamation, "登陆错误"
logOK = False
Err.Clear
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
Exit Sub
End Sub
6.4数据源的约定
需用数据源的组件如:DataGrid一律采用Adodb控件。

有特殊需求的情况如:身份验证应引用DAO(数据访问对象)。

6.5数据库访问约定
数据库引擎采用Microsoft.Jet.OLEDB.4.0,由Adodb组件进行数据库的访问,并为其
他组件提供数据源。

特殊情况、身份验证等由 DAO访问数据库。

6.6其他约定
无需数据显示的情况由DAO提供数据库支持,有数据显示的情况由ADODB组件提供数据库支持。

七、数据库分析与设计
7.1数据库环境说明
考虑该系统的定位与现有技术力量,决定采用Microsoft Access 2000/2002作为系统的后台数据库开发环境。

7.2数据库命名标准与规范
说明:下表所列为数据库及各表、视图的命名方法,具体信息请参阅7.4.1表、视图汇
图4.数据库逻辑结构图
7.4数据库物理设计
7.4.1表、视图汇总
[说明]:空缺位置表示无要求,主键在约束栏注明。

基本表:[Book]
基本表:[供应商]
基本表:[会员表]
基本表:[会员政策]
基本表:[进书记录]
基本表:[客户反馈]
基本表:[售书记录]
基本表:[书店简介]
基本表:[图书分类]
基本表:[图书进价表]
基本表:[退货记录]
基本表:[员工表]
视图:[基本统计]
图5.基本统计视图结构视图:[读者查询]
图6.读者查询视图结构视图:[退货统计]
图7.退货统计视图结构
视图:[售书统计]
图8.售书统计视图结构
视图:[售书查询]
图9.售书查询视图结构
注:其他视图结构:[略]。

八、软件体系结构设计说明书
8.1系统概述
在单机环境下进行系统安全的考虑,有必要进行用户权限的划分与控制,因而系统在总体上应包含安全子系统之下的各类用户工作环境。

用户权限的合理划分与有效控制是本系统体系结构设计的核心。

8.2设计约束
系统将实现人员、物流的全面管理,而物流管理是系统的核心部件,怎样实现二者的共存,互不干扰,是本系统设计的难点。

本系统必须实现对用户权限的有效合理控制。

8.3设计策略
由于所有的物流都需要有人员的活动才能够发生,因此,我决定采用一种“人员活动带动物流”的策略来解决人员管理与物流管理的统一管理问题。

这个想法是模拟现实而来的,比如说,只有采购人员进行了“采购”或“进书”活动,
才会引起“入库登记”或“新书入库”这个物流。

8.4系统概要设计说明书
8.4.1图例说明 1.处理过程:
2.数据存储:
3.条件判断:
4.数据流:(单向)
5.数据流:(双向)
6.外部实体:
7.带有变动历史的数据存储:
8.4.2系统总体结构图
图10.系统总体结构图
8.4.3销售子系统流程图
图11. 销售子系统流程图
8.4.4进货子系统流程图
图12.进货子系统流程图
8.4.5退货子系统流程图
图13.退货子系统流程图8.5系统详细设计说明书
8.5.1系统模块汇总
8.5.2系统核心模块详解
全局变量定义:
'用户身份标志
Public UserShenFen As String
'登陆状态
Public logOK As Boolean
'用户名
Public userName As String
'供应商编号
Public GongYingShangID As String
'供应商
Public GongYingShang As String
'图书编号
Public TuShuBianHao As String
'定价
Public DingJia As String
'书名
Public ShuMing As String
'会员卡号
Public HuiY uanKaHao As String
'会员姓名
Public HYXingMing As String
'会员等级
Public HYDengJi As String
模块名:CheckUser
原型:Public Sub CheckUser(userID As String, passwd As String)
代码:
Public Sub CheckUser(userID As String, passwd As String)
Dim userDB As Database
Dim userRD As Recordset
Dim dbName As String
Dim STRSQL As String
Screen.MousePointer = 11
On Error GoTo errEnd
dbName = App.Path
If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
dbName = dbName + "DataBase\WFSSDataBase.mdb"
STRSQL = "select [用户身份] from [Admin] where [用户ID]=""" & userID & """ and [用户密码]=""" & passwd & """"
'打开数据库
Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True)
'检索用户,验证密码
Set userRD = userDB.OpenRecordset(STRSQL, dbOpenSnapshot)
If userRD.RecordCount > 0 Then
'设置用户身份
UserShenFen = userRD![用户身份]
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
'进入用户环境
Load FrmMain
FrmMain.Show
Unload FrmLogIn
logOK = True
userName = userID
Screen.MousePointer = vbDefault
Else
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
logOK = False
Screen.MousePointer = vbDefault
MsgBox "用户名或密码错误!请重新输入!", vbOKOnly + vbExclamation, "登陆失败"
End If
Exit Sub
errEnd:
Screen.MousePointer = vbDefault
MsgBox Err.Description, vbOKOnly + vbExclamation, "登陆错误"
logOK = False
Err.Clear
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
Exit Sub
End Sub
模块名:LogOff
模块原型:Public Sub LogOff()
代码:
Public Sub LogOff()
Dim retVal As Integer
retVal = MsgBox("你确定要注销吗?", vbOKCancel + vbQuestion, "注销当前用户")
If retVal = vbCancel Then Exit Sub
Load FrmLogIn
FrmLogIn.Show
If UserShenFen = "经理" Then
Unload FrmAdminMain
ElseIf UserShenFen = "仓库管理员" Then
Unload FrmCangGuanMain
ElseIf UserShenFen = "售书员" Then
Unload FrmBookSellerMain
ElseIf UserShenFen = "会员" Then
Unload FrmMemberMain
Else
Unload FrmGuestMain
End If
Unload FrmMain
UserShenFen = ""
logOK = False
End Sub
模块名:Sys_exit
模块原型:Public Sub Sys_exit()
代码:
Public Sub Sys_exit()
Dim retVal As Integer
retVal = MsgBox("你确定要退出吗?", vbOKCancel + vbQuestion, "退出系统") If retVal = vbCancel Then Exit Sub
If UserShenFen = "经理" Then
Unload FrmAdminMain
ElseIf UserShenFen = "仓库管理员" Then
Unload FrmCangGuanMain
ElseIf UserShenFen = "售书员" Then
Unload FrmBookSellerMain
ElseIf UserShenFen = "会员" Then
Unload FrmMemberMain
Else
Unload FrmGuestMain
End If
Unload FrmMain
End
End Sub
模块名:Form_Load
模块原型:Private Sub Form_Load()
代码:
Private Sub Form_Load()
Dim dbName As String
Dim connSTR As String
On Error GoTo errEnd
ChDir App.Path
dbName = App.Path
If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
dbName = dbName + "DataBase\WFSSDataBase.mdb"
connSTR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbName & ";Persist Security Info=False"
Adodc1.ConnectionString = connSTR
Exit Sub
errEnd:
MsgBox "连接数据库失败!", vbOKOnly + vbExclamation, "打开数据库出错"
End
End Sub
模块名:GetHYDaZhe
模块原型:Public Function GetHYDaZhe(bianHao As String) As String
代码:
Public Function GetHYDaZhe(bianHao As String) As String
On Error GoTo errEnd
If bianHao = "☆☆☆☆☆" Then
GetHYDaZhe = "1"
Exit Function
End If
mandType = adCmdText
Adodc1.RecordSource = "select [打折] from [会员政策] where [会员级别]=""" & bianHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
GetHYDaZhe = Adodc1.Recordset!打折
Else
MsgBox "会员政策数据丢失,请与经理联系!", vbOKOnly + vbExclamation, "检索错误"
GetHYDaZhe = "1"
End If
Exit Function
errEnd:
MsgBox "检索数据库出错!", vbOKOnly + vbExclamation, "检索错误"
GetDingJia = "未知"
End Function
模块名:GetKuCun
模块原型:Public Function GetKuCun(bianHao As String) As String
代码:
Public Function GetKuCun(bianHao As String) As String
On Error GoTo errEnd
mandType = adCmdText
Adodc1.RecordSource = "select [库存量] from [Book] where [图书编号]=""" & bianHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
GetKuCun = Adodc1.Recordset!库存量
Else
MsgBox "图书资料数据丢失,请与经理联系!", vbOKOnly + vbExclamation, "检索错误"
GetKuCun = "0"
End If
Exit Function
errEnd:
MsgBox "检索数据库出错!", vbOKOnly + vbExclamation, "检索错误"
GetDingJia = "未知"
End Function
模块名:HYShengJi
模块原型:Public Function HYShengJi(HYKaHao As String) As Boolean
代码:
Public Function HYShengJi(HYKaHao As String) As Boolean
On Error GoTo errEnd
Dim BiaoZhun As Integer
Dim SUMBook As Integer
If HYKaHao = "Guest" Then
HYShengJi = False
Exit Function
End If
BeginTrans
mandType = adCmdText
Adodc1.RecordSource = "select sum([实收金额]) as [总金额] from [售书记录] where [会员卡号]=""" & HYKaHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
SUMBook = CInt(Adodc1.Recordset!总金额)
Else
SUMBook = 0
End If
mandType = adCmdText
Adodc1.RecordSource = "select [会员标准] from [会员政策] where [会员级别]='★☆☆☆☆'"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
BiaoZhun = CInt(Adodc1.Recordset!会员标准)
If SUMBook >= BiaoZhun Then
mandType = adCmdText
Adodc1.RecordSource = "select * from [会员表] where [会员卡号]=""" & HYKaHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!会员等级= "★☆☆☆☆"
Adodc1.Recordset.Update
End If
End If
mandType = adCmdText
Adodc1.RecordSource = "select [会员标准] from [会员政策] where [会员级别]='★★☆☆☆'"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
BiaoZhun = CInt(Adodc1.Recordset!会员标准)
If SUMBook >= BiaoZhun Then
mandType = adCmdText
Adodc1.RecordSource = "select * from [会员表] where [会员卡号]=""" & HYKaHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!会员等级= "★★☆☆☆"
Adodc1.Recordset.Update
End If
End If
mandType = adCmdText
Adodc1.RecordSource = "select [会员标准] from [会员政策] where [会员级别]='★★★☆☆'" Adodc1.Refresh
Adodc1.Recordset.MoveFirst
BiaoZhun = CInt(Adodc1.Recordset!会员标准)
If SUMBook >= BiaoZhun Then
mandType = adCmdText
Adodc1.RecordSource = "select * from [会员表] where [会员卡号]=""" & HYKaHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!会员等级= "★★★☆☆"
Adodc1.Recordset.Update
End If
End If
mandType = adCmdText
Adodc1.RecordSource = "select [会员标准] from [会员政策] where [会员级别]='★★★★☆'" Adodc1.Refresh
Adodc1.Recordset.MoveFirst
BiaoZhun = CInt(Adodc1.Recordset!会员标准)
If SUMBook >= BiaoZhun Then
mandType = adCmdText
Adodc1.RecordSource = "select * from [会员表] where [会员卡号]=""" & HYKaHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!会员等级= "★★★★☆"
Adodc1.Recordset.Update
End If
End If
mandType = adCmdText
Adodc1.RecordSource = "select [会员标准] from [会员政策] where [会员级别]='★★★★★'" Adodc1.Refresh
Adodc1.Recordset.MoveFirst
BiaoZhun = CInt(Adodc1.Recordset!会员标准)
If SUMBook >= BiaoZhun Then
mandType = adCmdText
Adodc1.RecordSource = "select * from [会员表] where [会员卡号]=""" & HYKaHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!会员等级= "★★★★★"
Adodc1.Recordset.Update
End If
End If
CommitTrans
HYShengJi = False
Exit Function
errEnd:
Rollback
HYShengJi = True
Screen.MousePointer = vbDefault
MsgBox "检查会员是否应升级时操作失败!", vbOKOnly + vbExclamation, "图书销售"
CmdOK.Enabled = True
End Function
模块名:CmdSellBook_Click
模块原型:Private Sub CmdSellBook_Click()
代码:
Private Sub CmdSellBook_Click()
On Error GoTo errEnd
Dim QD As Integer
CmdSellBook.Enabled = False
If TxtShuLiang.Text = "" Then
MsgBox "请输入交易的数量!", vbOKOnly + vbExclamation, "填写数量"
TxtShuLiang.SetFocus
CmdSellBook.Enabled = True
Exit Sub
End If
If GetKuCun(TuShuBianHao) <= 0 Or GetKuCun(TuShuBianHao) < TxtShuLiang.Text Then MsgBox "该类图书库存量不足,请与仓库管理员联系!", vbOKOnly + vbExclamation, "库存不足"
TxtShuLiang.SetFocus
CmdSellBook.Enabled = True
Exit Sub
End If
If TxtZheKou.Text = "" Then
MsgBox "请输入交易的实际折扣率!", vbOKOnly + vbExclamation, "填写折扣"
TxtZheKou.SetFocus
CmdSellBook.Enabled = True
Exit Sub
End If
If TxtZheKou.Text <= 0 Or TxtZheKou.Text > 1 Then
MsgBox "实际折扣率填写错误!请在0 与1 之间选择.", vbOKOnly + vbExclamation, "填写折扣"
TxtZheKou.SetFocus
CmdSellBook.Enabled = True
Exit Sub
End If
If TxtSJJinE.Text = "" Then
MsgBox "请输入交易的实际金额!", vbOKOnly + vbExclamation, "填写金额"
TxtSJJinE.SetFocus
CmdSellBook.Enabled = True
Exit Sub
End If
If TxtMemo.Text = "" Then TxtMemo.Text = "无"
QD = MsgBox("确定入帐吗?", vbOKCancel + vbQuestion, "确认入帐")
If QD = vbCancel Then
CmdSellBook.Enabled = True
Exit Sub
End If
'售书入帐
Screen.MousePointer = 11
BeginTrans
mandType = adCmdTable
Adodc1.RecordSource = "售书记录"
Adodc1.Refresh
Adodc1.Recordset.AddNew
Adodc1.Recordset!图书编号= TuShuBianHao
Adodc1.Recordset!数量= TxtShuLiang.Text
Adodc1.Recordset!会员卡号= HuiYuanKaHao
Adodc1.Recordset!实际打折= TxtZheKou.Text
Adodc1.Recordset!实收金额= TxtSJJinE.Text
Adodc1.Recordset!日期= Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "."
Adodc1.Recordset!备注= TxtMemo.Text
Adodc1.Recordset.Update
mandType = adCmdText
Adodc1.RecordSource = "select * from [Book] where [图书编号]=""" & TuShuBianHao & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!库存量= Adodc1.Recordset!库存量- TxtShuLiang.Text
Adodc1.Recordset.Update
Else
Rollback
Screen.MousePointer = vbDefault
MsgBox "图书资料丢失,请与仓库管理员联系!", vbOKOnly + vbExclamation, "交易失败"
CmdSellBook.Enabled = True
Exit Sub
End If
If HYShengJi(HuiYuanKaHao) Then Rollback
CommitTrans
Screen.MousePointer = vbDefault
MsgBox "恭喜您,交易成功!", vbOKOnly + vbInformation, "交易成功"
Unload Me
Exit Sub
errEnd:
Rollback
Screen.MousePointer = vbDefault
MsgBox Err.Description, vbOKOnly + vbExclamation, "操作数据库出错交易失败"
CmdSellBook.Enabled = True
End Sub
8.5.3系统模块详解
模块名:checkGYSID
模块原型:Public Function checkGYSID(UID As String) As Boolean
代码:
Public Function checkGYSID(UID As String) As Boolean
Dim userDB As Database
Dim userRD As Recordset
Dim dbName As String
Dim STRSQL As String
Screen.MousePointer = 11
On Error GoTo errEnd
dbName = App.Path
If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
dbName = dbName + "DataBase\WFSSDataBase.mdb"
STRSQL = "select [图书分类] from [图书分类] where [图书分类号]=""" & UID & """"
'打开数据库
Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True)
'检索用户,验证密码
Set userRD = userDB.OpenRecordset(STRSQL, dbOpenSnapshot)
If userRD.RecordCount > 0 Then
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
checkGYSID = True
Screen.MousePointer = vbDefault
Else
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
Screen.MousePointer = vbDefault
checkGYSID = False
End If
Exit Function
errEnd:
Screen.MousePointer = vbDefault
MsgBox Err.Description, vbOKOnly + vbExclamation, "创建类别"
Err.Clear
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
End Function
模块名:checkFenLei
模块原型:Public Function checkFenLei(UID As String) As Boolean
代码:
Public Function checkFenLei(UID As String) As Boolean
Dim userDB As Database
Dim userRD As Recordset
Dim dbName As String
Dim STRSQL As String
Screen.MousePointer = 11
On Error GoTo errEnd
dbName = App.Path
If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
dbName = dbName + "DataBase\WFSSDataBase.mdb"
STRSQL = "select [图书分类] from [图书分类] where [图书分类]=""" & UID & """"
'打开数据库
Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True)
'检索用户,验证密码
Set userRD = userDB.OpenRecordset(STRSQL, dbOpenSnapshot)
If userRD.RecordCount > 0 Then
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
checkFenLei = True
Screen.MousePointer = vbDefault
Else
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
Screen.MousePointer = vbDefault
checkFenLei = False
End If
Exit Function
errEnd:
Screen.MousePointer = vbDefault
MsgBox Err.Description, vbOKOnly + vbExclamation, "创建类别"
Err.Clear
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
End Function
模块名:CmdNewFenLei_Click
模块原型:Private Sub CmdNewFenLei_Click()
代码:
Private Sub CmdNewFenLei_Click()
On Error GoTo errEnd
If TxtBianHao.Text = "" Then
MsgBox "请填写图书分类号!", vbOKOnly + vbExclamation, "创建分类"
TxtBianHao.SetFocus
Exit Sub
End If
If TxtLeiBie.Text = "" Then
MsgBox "请填写图书分类名称!", vbOKOnly + vbExclamation, "创建分类"
TxtLeiBie.SetFocus
Exit Sub
End If
If checkFenLei(TxtLeiBie.Text) Then
MsgBox "图书分类名称不唯一,请另选一个!", vbOKOnly + vbExclamation, "创建分类"
TxtLeiBie.SetFocus
TxtLeiBie.SelStart = 0
TxtLeiBie.SelLength = Len(TxtLeiBie.Text)
Exit Sub
End If
If ComboFuLei.Text <> "" And ComboFuLei.Text <> "选择父类" Then
If Not checkFenLei(ComboFuLei.Text) Then
MsgBox "所选父类不存在!请重试!", vbOKOnly + vbExclamation, "选择父类"
ComboFuLei.SetFocus
Exit Sub
End If
mandType = adCmdText
Adodc1.RecordSource = "select [图书分类号] from [图书分类] where [图书分类号]=[所属父类编号] and [图书分类]=""" & ComboFuLei.Text & """"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
FuLeiBianHao = Adodc1.Recordset!图书分类号
End If
If checkGYSID(TxtBianHao.Text) Then
MsgBox "图书分类编号不唯一,请另选一个!", vbOKOnly + vbExclamation, "创建分类"
TxtBianHao.SetFocus
TxtBianHao.SelStart = 0
TxtBianHao.SelLength = Len(TxtBianHao.Text)
Exit Sub
End If
If FuLeiBianHao = "" Then FuLeiBianHao = TxtBianHao.Text
mandType = adCmdTable
Adodc1.RecordSource = "图书分类"
Adodc1.Refresh
Adodc1.Recordset.AddNew
Adodc1.Recordset!图书分类号= TxtBianHao.Text
Adodc1.Recordset!图书分类= TxtLeiBie.Text
Adodc1.Recordset!所属父类编号= FuLeiBianHao
Adodc1.Recordset.Update
MsgBox "创建分类成功!", vbOKOnly + vbInformation, "创建分类"
TxtBianHao.Text = ""
TxtLeiBie.Text = ""
ComboFuLei.Text = "选择父类"
FuLeiBianHao = ""
TxtFuLei.Text = ""
TxtBianHao.SetFocus
Exit Sub
errEnd:
MsgBox "更新数据库失败!", vbOKOnly + vbExclamation, "数据库出错"
End Sub
模块名:checkUserID
模块原型:Public Function checkUserID(UID As String) As Boolean
代码:
Public Function checkUserID(UID As String) As Boolean
Dim userDB As Database
Dim userRD As Recordset
Dim dbName As String
Dim STRSQL As String
Screen.MousePointer = 11
On Error GoTo errEnd
dbName = App.Path
If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
dbName = dbName + "DataBase\WFSSDataBase.mdb"
STRSQL = "select [用户身份] from [Admin] where [用户ID]=""" & UID & """"
'打开数据库
Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True) '检索用户,验证密码
Set userRD = userDB.OpenRecordset(STRSQL, dbOpenSnapshot)
If userRD.RecordCount > 0 Then
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
checkUserID = True
Screen.MousePointer = vbDefault
Else
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
Screen.MousePointer = vbDefault
checkUserID = False
End If
Exit Function
errEnd:
Screen.MousePointer = vbDefault
MsgBox Err.Description, vbOKOnly + vbExclamation, "修改密码"
Err.Clear
'关闭数据库
userRD.Close
Set userRD = Nothing
userDB.Close
Set userDB = Nothing
End Function
模块名:CmdChgPass_Click
模块原型:Private Sub CmdChgPass_Click()
代码:
Private Sub CmdChgPass_Click()
On Error GoTo errEnd
If TxtUserID.Text = "" Then
MsgBox "请输入你的帐号!", vbOKOnly + vbExclamation, "更改密码"
TxtUserID.SetFocus
Exit Sub
End If
If TxtPasswd.Text = "" Then
MsgBox "请输入你的旧密码!", vbOKOnly + vbExclamation, "更改密码"
TxtPasswd.SetFocus
Exit Sub
End If
If TxtNewPasswd.Text = "" Then
MsgBox "请输入你的新密码!", vbOKOnly + vbExclamation, "更改密码"
TxtNewPasswd.SetFocus
Exit Sub
End If
If TxtNewPasswd.Text <> TxtNewPasswdC.Text Then
MsgBox "密码输入不一致,请重试!", vbOKOnly + vbExclamation, "更改密码"
TxtPasswd.Text = ""
TxtNewPasswd.Text = ""
TxtNewPasswdC.Text = ""
TxtPasswd.SetFocus
Exit Sub
End If
If checkUserID(TxtUserID.Text) Then
mandType = adCmdText
Adodc1.RecordSource = "select * from [Admin] where [用户密码]=""" & TxtPasswd.Text & """ and [用户ID]=""" & TxtUserID.Text & """"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset!用户密码= TxtNewPasswd.Text
Adodc1.Recordset.Update
Else
MsgBox "用户密码验证错误!你无权修改密码!", vbOKOnly + vbExclamation, "密码错误"
TxtPasswd.Text = ""
TxtNewPasswd.Text = ""
TxtNewPasswdC.Text = ""
Exit Sub
End If
MsgBox "用户密码修改成功!请牢记!", vbOKOnly + vbInformation, "更改密码"
TxtPasswd.Text = ""
TxtNewPasswd.Text = ""
TxtNewPasswdC.Text = ""
Else
MsgBox "该用户不存在!无法修改密码!", vbOKOnly + vbExclamation, "更改密码"
TxtPasswd.Text = ""
TxtNewPasswd.Text = ""
TxtNewPasswdC.Text = ""
End If
Exit Sub
errEnd:
MsgBox Err.Description & vbCrLf & "更改密码失败!", vbOKOnly + vbExclamation, "操作数据库出错"
End Sub
模块名:CmdRegMe_Click
模块原型:Private Sub CmdRegMe_Click()
代码:
Private Sub CmdRegMe_Click()
On Error GoTo errEnd
If TxtCard.Text = "" Then
MsgBox "请填写员工帐号!", vbOKOnly + vbExclamation, "创建员工帐号"
TxtCard.SetFocus
Exit Sub
End If
If TxtUName.Text = "" Then
MsgBox "请填写员工的姓名!", vbOKOnly + vbExclamation, "创建员工帐号"
TxtUName.SetFocus
Exit Sub
End If
If ComboShenFen.Text = "" Or ComboShenFen.Text = "请选择员工身份" Then
MsgBox "请选择员工的身份!", vbOKOnly + vbExclamation, "创建员工帐号"
ComboShenFen.SetFocus
Exit Sub
End If
If TxtUDanWei.Text = "" Then TxtUDanWei.Text = "无"。

相关文档
最新文档