书店管理系统的设计与实现(初稿) - 图文

更新时间:2024-06-16 07:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

论 文 评 定

指 导 教 师 意 见:

原创性声明

本人郑重声明: 所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。

北京大学

2011届毕业论文

题目:书店管理系统的设计与实现

班 级: 姓 名: 刘洋 指导老师: 郝永胜

2011年2月28日

图书管理系统的设计与实现

文档信息 文件类型: 软件开发用技术文档 开发人员:刘洋 当前版本: V1.0 Beta 单位:xx班 作 者: 刘洋 完成日期: 软件信息 软件名称: 书店管理系统 版 本 号: V1.0 语言类型: 简体中文 授权类型: 测试版 运行环境: Windows XP/2003/Vista/7 等 软件大小: 3069 KB 指导老师: 软件作者: 刘洋 联系信箱: 版权所有: Copyright?2010-2011.Powered by 刘洋. 开发日期: 2010年10月-2011年2月 相关站点: CSDN,CNBLOG,MSDN 等 软件简介: 书店管理系统 V1.0 Beta 测试版 面向中小型书店、个体书店进行全面的人员、物流管理,旨在实现书店管理信息化。 本系统采用会员制管理,将人员分为经理、仓库管理员、售书员、会员、游客等,分别拥有不同的权限,各司其职,以便提高工作效率。 系统功能包括:供应商管理、进书管理、图书资料管理、售书管理、会员管理、员工管理、库存统计、售书统计、退货统计、基本统计分析等。

北京大学网络教育学院计算机科学与技术

2011-2-28

目录 一、序言 ···························· 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开发进度安排............................................5 五、软件界面设计标准与规范 ··················· 5

5.1编写目的 ..................................................5 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 九、用户界面设计报告 ······················ 32 9.1界面设计规范 ...............................................32 9.2系统窗体汇总 ...............................................32 9.3主界面设计 .................................................33 9.4子界面设计 .................................................33 9.5界面资源设计 ...............................................34 十、软件测试分析报告 ······················ 34 10.1测试范围与主要内容 ........................................34 10.2测试方法 ..................................................34 10.3测试报告 ..................................................34 10.4改进建议与措施 ............................................35 十一、软件使用说明书 ······················ 35

11.1软件概述 ..................................................35 11.3使用说明 ..................................................35 11.2.1系统登陆 ..............................................35 11.2.2注销与退出 ............................................35 11.2.3办理进货登记 ..........................................35 11.2.4关于/帮助 .............................................38 参考资料 ···························· 39

一、序言

本书店管理系统的设计与推出是多方面原因促成的。我在日常的生活中发现,许多中小型书店、个体书店其日常管理工作都是人工操作,历史数据很难保存和利用,对于书店的经营非常不利。针对这种状况,我计划开发一个面向中小型书店、个体书店的书店管理系统,实现对人员、物流的全面管理,以帮助这些书店早日实现书店管理信息化。

为了系统的顺利开发和维护,特编制如下技术文档:

二、需求分析说明书

2.1系统介绍

本系统定位于中小型书店、个体书店,暂时考虑单机环境下的实现;操作系统选择目前常用的Windows XP/2003。系统性质为MIS(管理信息系统)或财务软件。

本系统采用会员制管理,系统功能应包含进书管理、售书管理、退货管理、库存管理、统计分析、相关人员管理等。系统界面力求简洁、易用,在标准化的基础上考虑界面的美观和新颖。

系统计划2010年10月初开始,2011年2月初完成初步开发工作,其余工作根据时间安排进行。 2.2系统面向的用户群体

系统面向中小型书店、个体书店,用户群体为这些书店的经理、采购员/仓库管理员、图书销售人员、书店的会员/游客等。 2.3系统的功能性需求 功能序号 功能名称 功能说明 1 供应商管理 包含供应商信息的登记、修改等 2 图书种类管理 包含图书大类、小类的创建 3 图书资料管理 包含图书资料的添加、修改等 4 新书入库管理 登记新书的来源、数量、单价、折扣、金额等 5 库存统计 分门别类统计图书现有库存量、入库时间等 6 进货记录查询 查询历次进货记录 7 退货登记 登记供应商、图书种类、退货的数量、原因等 8 退货统计 按供应商统计退货记录 9 退货记录查询 查询历次退货记录 10 图书销售管理 登记销售的种类、数量、单价、折扣、顾客/会员等 11 会员管理 包含会员的创建、修改、删除等 12 优惠政策管理 包含优惠政策的制定与执行 13 本日售书统计 统计本日销售图书的数量、金额等 14 售书记录查询 查询历次售书记录 15 员工管理 包含员工帐号的创建、修改、删除等 16 统计分析 按年月日时段统计书店经营状况 17 图书检索 提供按图书的编号、书名、责任者、出版社等途径的检索 系统帐号管理 提供上级对下级的资料、密码管理, 个人资料、密码管提供修改个人资料、密码的工具 理 2.4系统的非功能性需求 2.4.1用户界面需求

简洁、易用、易懂,美观、大方、标准,具备一定的兼容性。 2.4.2软硬件环境需求

软件环境:兼容当前主流操作系统 Windows XP/2003/Vista/7 等。 硬件环境:当前主流计算机,打印机、扫描仪等。 2.4.3软件质量需求

易用、健壮、兼容性好、运行稳定、有一定安全保障。

三、可行性分析报告

3.1技术可行性

系统的性质为MIS或财务软件,因而数据库的设计与操纵是系统设计的核心。我在2009年11月至2009年12月曾经成功完成了“学生学籍管理系统”的开发任务,具备一定的系统分析与设计能力,熟悉数据库的设计与操纵,因而该系统的实现在技术上是可行的。 3.2时间、设备可能性

系统设计与开发工作预计耗时一个月。实验设备如:计算机、打印机、扫描仪等不足,上机任务可以完成,打印机、扫描仪的实验根据具体条件暂时延缓执行。

3.3系统工作量

该系统的工作量相对于我来说很大,必须保证按进度完成任务。实际工作量预计超过一个月(每天2-4小时)。如包含软件维护及技术文档的整理、制作,工作量将更大。 3.4代码工作量

预计需40天左右。 3.5文档要求

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

四、开发环境与项目规划

4.1开发环境

前台开发环境:Microsoft Visual Basic 6.0 后台数据库环境:Microsoft Access 2000/2002 4.2项目规划与管理

4.2.1开发进度安排

2010年10月1日至10月10日:系统分析,进行需求定义,定义系统概况 10月11日至10月20日:数据库分析与设计 10月21日至10月30日:软件体系结构设计 2011年1月1日至2月10日:软件编码 2月10日至3月1日:系统测试

18 19 五、软件界面设计标准与规范

5.1编写目的

制定界面设计标准规范的目的是为了规范和统一软件界面设计制定软件界面设计标准与规范。 5.2界面设计思想

首先考虑标准化,在标准化的基础上进行界面的美工设计。 5.3界面设计原则

简单易用、简洁明了、兼容性好、标准、规范。 5.4界面设计样式

采用标准Windows界面,自上至下依次为:标题栏、菜单栏、工具条、工作区、状态栏等。如下图示:

工具条 菜单栏 状态栏 图1.系统界面

工作区 5.5常见提示信息样式

提示信息按以下标准进行:采用标准Windows对话框样式,添加信息图标,后接提示信息文本和相应按钮。 如下图示:

提示文本 信息图标 按钮

图2.常见提示信息样式

5.6常见错误信息样式

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

提示文本 警告图标

图3.常见错误信息样式

5.7其他界面约定

除主界面外,所有子界面均采用模式窗体,即该窗体不消失,不可以在本程序内将焦点移出子窗体。

六、软件编码设计标准与规范

6.1对象命名约定 对象名 对象类型 命名约定(前缀码) Form 窗体 Frm Command 按钮 Cmd Label 标签 Lab TextBox 文本框 Txt ComboBox 组合框 ComB ListBox 列表框 LstB Adodb 数据库访问对象 Adodb DataGrid 数据表格显示组件 DataGrid Frame 框架 Fam Option 单选框 Opt CheckBox 复选框 Chk PictureBox 图象显示组件 PtB CommonDialog 通用对话框组件 ComDlg Timer 时间组件 Tim ToolBar 工具栏 TlBar Menu 菜单 Mnu SSTab 页框 SSTab ImageList 界面资源组件 ImgLst 6.2常量和变量命名约定

变量名 数据类型 变量类型 含义 UserShenFen String 全局变量 用户身份标志 LogOK Boolean 全局变量 登陆状态 UserName String 全局变量 用户名 GongYingShangID String 全局变量 供应商编号 GongYingShang String 全局变量 供应商名称 TuShuBianHao String 全局变量 图书编号 DingJia Single 全局变量 图书定价 ShuMing String 全局变量 书名 HuiYuanKaHao String 全局变量 会员卡号 HYXingMing String 全局变量 会员姓名 HYDengJi String 全局变量 会员等级 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) <> \、\、\dbName = dbName + \、WFSSDataBase.mdb\

STRSQL = \[用户身份] from [Admin] where [用户ID]=\& userID & \用户密码]=\

'打开数据库

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表、视图汇总。 名称 类型 命名办法约定 WFSSDataBase 系统数据库 字母 表 基本表 汉字或字母 查询 查询 汉字 字段 字段 汉字或字母 7.3数据库逻辑设计

员工表 会员表 会员政策 Admin 员工帐号 用户ID 会员级别 会员级别

? ? ? 会员卡号

?

图书分类

图书分类号 售书记录 Book

? 图书分类号 会员卡号

图书编号 图书编号

? ? 图书进价表

图书编号

供应商 进书记录 ?

供应商编号 图书编号 退货记录

? 图书编号 供应商编号

? 供应商编号

?

图4.数据库逻辑结构图

7.4数据库物理设计

7.4.1表、视图汇总 视图/表名 类型 说明 Admin 基本表 集中保存系统用户的帐号、密码 Book 基本表 集中存放书目信息 员工表 基本表 存放员工资料 供应商 基本表 供应商资料 会员表 基本表 会员资料 会员政策 基本表 会员标准及优惠政策 进书记录 基本表 进书历史记录 客户反馈 基本表 客户反馈信息 售书记录 基本表 售书历史记录 书店简介 基本表 书店简介 图书分类 基本表 图书类别 图书进价表 基本表 图书进价列表 退货记录 基本表 退货历史记录 读者查询 查询 提供给所有用户的书目查询界面 基本统计 查询 基本的统计分析 进书查询 查询 进书记录查询,含进书统计 售书查询 查询 图书销售记录查询 售书统计 查询 图书销售记录统计 退货查询 查询 退货记录查询 退货统计 查询 退货统计 员工信息 查询 员工信息查询 库存统计 查询 现有库存统计 反馈信息 查询 客户反馈信息查询

7.4.2各表、视图设计详解

[说明]:空缺位置表示无要求,主键在约束栏注明。 基本表:[Admin] 字段 类型 长度 格式 约束 用户ID 文本 250 主键 用户密码 文本 250 用户身份 文本 250 基本表:[Book] 字段 类型 长度 格式 约束 图书编号 文本 250 主键 图书分类号 文本 150 书名 文本 255 丛书 文本 150 作者 文本 255 出版社 文本 255 版次 文本 150 ISBN 文本 250 定价 货币 库存量 数字( 整型) 内容简介 备注 关键词 文本 255 出版日期 文本 150 入库时间 日期/时间 长日期 Now() 基本表:[供应商] 字段 类型 长度 供应商编号 文本 250 供应商 文本 255 地址 文本 255 网址 文本 255 联系人 文本 255 电话 文本 50 传真 文本 150 电子邮件 文本 150 单位简介 备注 基本表:[会员表] 字段 类型 长度 会员卡号 文本 50 会员等级 文本 50 姓名 文本 150 性别 文本 50 地址 文本 250 单位 文本 250 电话 文本 50 电子邮件 文本 150 人生格言 备注 注册日期 日期/时间 基本表:[会员政策] 字段 类型 长度 会员级别 文本 50 会员标准 数字(整型) 打折 文本 50 赠送礼品 文本 250 备注 备注 基本表:[进书记录] 字段 类型 长度 ID 自动编号(长整型) 供应商编文本 250 号 图书编号 文本 250 数量 数字(长整型) 单价 货币 折扣 数字(单精度型) 金额 货币 进书日期 日期/时间 备注 备注 格式 格式 长日期 格式 格式 长日期 约束 主键 约束 主键 约束 主键 约束 主键

基本表:[客户反馈] 字段 类型 长度 ID 自动编号(长整 型) 姓名 文本 150 身份 文本 50 性别 文本 50 单位 文本 255 地址 文本 255 电子邮件 文本 150 反馈信息 备注 反馈日期 日期/时间 基本表:[售书记录] 字段 类型 长度 ID 自动编号(长整 型) 图书编号 文本 250 数量 数字(整型) 会员卡号 文本 250 实际打折 数字(单精度型) 实收金额 货币 日期 文本 50 备注 备注 基本表:[书店简介] 字段 类型 长度 书店名称 文本 255 地址 文本 255 网址 文本 255 联系人 文本 150 电话 文本 50 手机 数字(长整型) 电子邮件 文本 150 书店简介 备注 备注 备注 基本表:[图书分类] 字段 类型 长度 图书分类号 文本 150 图书分类 文本 250 所属父类编号 文本 150 基本表:[图书进价表] 字段 类型 长度 图书编号 文本 150 格式 长日期 格式 长日期 格式 格式 格式 约束 主键 约束 主键 约束 主键 约束 主键 约束 主键 进价 货币 进书日期 日期/时间 基本表:[退货记录] 字段 类型 长度 ID 自动编号(长整 型) 供应商编号 文本 250 图书编号 文本 250 进价 货币 退货数量 数字(整型) 金额 货币 退货原因 备注 退货日期 日期/时间 备注 备注 基本表:[员工表] 字段 类型 长度 员工帐号 文本 250 姓名 文本 150 性别 文本 50 地址 文本 255 电话 文本 50 手机 文本 150 电子邮件 文本 150 人生格言 备注 创建日期 日期/时间 视图:[基本统计] 长日期 格式 长日期 格式 长日期 约束 主键 约束 主键 Now()

图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销售子系统流程图

售书员 选择图书 Book 选择会员 会员表 图书销售 优惠政策 售书记录 会员表 图11. 销售子系统流程图

8.4.4进货子系统流程图

仓管员 供应商 供应商登记 供应商 添加品种 Book Book 进货记录 图书进价表 修改资料 选择品种 添加类别 入库登记 图书分类 选择供应商 修改资料 供应商 图12.进货子系统流程图

8.4.5退货子系统流程图

仓管员 选择供应商

供应商 选择品种 Book 进货记录 退货登记 退货记录 图13.退货子系统流程图

8.5系统详细设计说明书

8.5.1系统模块汇总 模块名 类型 原型或声明 模块说明 CheckUser 子程Public Sub CheckUser(userID 用户帐号、序 As String, passwd As String) 密码验证和身份鉴别 LogOff 子程Public Sub LogOff() 注销模块 序 Sys_exit 子程Public Sub Sys_exit() 系统退出摸序 块 Form_Load 子程Private Sub Form_Load() 初始化模序 块,连接数据库 GetHYDaZhe 函数 Public Function 提取会员政GetHYDaZhe(bianHao As 策的会员优String) As String 惠办法 GetKuCun 函数 Public Function 获取、检验GetKuCun(bianHao As String) 图书现有库As String 存量 HYShengJi 函数 Public Function 会员升级维HYShengJi(HYKaHao As String) 护 As Boolean CmdSellBook_Click 子程Private Sub 图书销售模序 CmdSellBook_Click() 块 checkGYSID 函数 Public Function 检验数据表checkGYSID(UID As String) As 主键,避免Boolean 插入错误 checkFenLei 函数 Public Function 检测图书分checkFenLei(UID As String) As 类是否已经Boolean 存在 CmdNewFenLei_Click 子程Private Sub 创建类别 序 CmdNewFenLei_Click() checkUserID 函数 Public Function 检测用户帐checkUserID(UID As String) As 号是否存在 Boolean CmdChgPass_Click 子程Private Sub 修改密码 序 CmdChgPass_Click() CmdRegMe_Click 子程Private Sub CmdRegMe_Click() 创建员工、序 会员帐号 GetJinJia 函数 Public Function 提取图书进GetJinJia(bianHao As String) 价 As String CmdTH_Click 子程Private Sub CmdTH_Click() 退货模块 序 CmdSaveContinue_Click 子程Private Sub 供应商信息序 CmdSaveContinue_Click() 登记 注:其他模块(略) 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 HuiYuanKaHao 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) <> \dbName = dbName + \

STRSQL = \[用户身份] from [Admin] where [用户ID]=\& userID & \用户密码]=\

'打开数据库

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(\你确定要注销吗?\注销当前用户\

If retVal = vbCancel Then Exit Sub Load FrmLogIn FrmLogIn.Show

If UserShenFen = \经理\ Unload FrmAdminMain

ElseIf UserShenFen = \仓库管理员\ Unload FrmCangGuanMain

ElseIf UserShenFen = \售书员\ Unload FrmBookSellerMain ElseIf UserShenFen = \会员\ 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(\你确定要退出吗?\退出系统\

If retVal = vbCancel Then Exit Sub

If UserShenFen = \经理\ Unload FrmAdminMain

ElseIf UserShenFen = \仓库管理员\ Unload FrmCangGuanMain

ElseIf UserShenFen = \售书员\ Unload FrmBookSellerMain ElseIf UserShenFen = \会员\ 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) <> \dbName = dbName + \

connSTR = \& \

Adodc1.ConnectionString = connSTR

Exit Sub

errEnd:

MsgBox \连接数据库失败!\打开数据库出错\

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 = \☆☆☆☆☆\ GetHYDaZhe = \ Exit Function End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \打折] from [会员政策] where [会员级别]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

GetHYDaZhe = Adodc1.Recordset!打折 Else

MsgBox \会员政策数据丢失,请与经理联系!\vbExclamation, \检索错误\

GetHYDaZhe = \End If

Exit Function errEnd:

MsgBox \检索数据库出错!\检索错误\ GetDingJia = \未知\End Function

模块名:GetKuCun

模块原型:Public Function GetKuCun(bianHao As String) As String 代码:

Public Function GetKuCun(bianHao As String) As String On Error GoTo errEnd

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \库存量] from [Book] where [图书编号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

GetKuCun = Adodc1.Recordset!库存量 Else

MsgBox \图书资料数据丢失,请与经理联系!\vbExclamation, \检索错误\

GetKuCun = \End If

Exit Function errEnd:

MsgBox \检索数据库出错!\检索错误\ 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 = \ HYShengJi = False Exit Function End If

BeginTrans

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \实收金额]) as [总金额] from [售书记录] where [会员卡号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

SUMBook = CInt(Adodc1.Recordset!总金额) Else

SUMBook = 0 End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员标准] from [会员政策] where [会员级别]='★☆☆☆☆'\

Adodc1.Refresh

Adodc1.Recordset.MoveFirst

BiaoZhun = CInt(Adodc1.Recordset!会员标准)

If SUMBook >= BiaoZhun Then

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员表] where [会员卡号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

Adodc1.Recordset!会员等级 = \★☆☆☆☆\ Adodc1.Recordset.Update End If End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员标准] from [会员政策] where [会员级别]='★★☆☆☆'\

Adodc1.Refresh

Adodc1.Recordset.MoveFirst

BiaoZhun = CInt(Adodc1.Recordset!会员标准)

If SUMBook >= BiaoZhun Then

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员表] where [会员卡号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

Adodc1.Recordset!会员等级 = \★★☆☆☆\ Adodc1.Recordset.Update End If End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员标准] from [会员政策] where [会员级别]='★★★☆☆'\

Adodc1.Refresh

Adodc1.Recordset.MoveFirst

BiaoZhun = CInt(Adodc1.Recordset!会员标准)

If SUMBook >= BiaoZhun Then

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员表] where [会员卡号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

Adodc1.Recordset!会员等级 = \★★★☆☆\ Adodc1.Recordset.Update End If End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员标准] from [会员政策] where [会员级别]='★★★★☆'\

Adodc1.Refresh

Adodc1.Recordset.MoveFirst

BiaoZhun = CInt(Adodc1.Recordset!会员标准)

If SUMBook >= BiaoZhun Then

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员表] where [会员卡号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

Adodc1.Recordset!会员等级 = \★★★★☆\ Adodc1.Recordset.Update End If End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员标准] from [会员政策] where [会员级别]='★★★★★'\

Adodc1.Refresh

Adodc1.Recordset.MoveFirst

BiaoZhun = CInt(Adodc1.Recordset!会员标准)

If SUMBook >= BiaoZhun Then

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \会员表] where [会员卡号]=\

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 \检查会员是否应升级时操作失败!\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 = \

MsgBox \请输入交易的数量!\填写数量\

TxtShuLiang.SetFocus

CmdSellBook.Enabled = True Exit Sub End If

If GetKuCun(TuShuBianHao) <= 0 Or GetKuCun(TuShuBianHao) < TxtShuLiang.Text Then

MsgBox \该类图书库存量不足,请与仓库管理员联系!\vbExclamation, \库存不足\

TxtShuLiang.SetFocus

CmdSellBook.Enabled = True Exit Sub End If

If TxtZheKou.Text = \

MsgBox \请输入交易的实际折扣率!\填写折扣\

TxtZheKou.SetFocus

CmdSellBook.Enabled = True Exit Sub End If

If TxtZheKou.Text <= 0 Or TxtZheKou.Text > 1 Then

MsgBox \实际折扣率填写错误!请在 0 与 1 之间选择.\vbExclamation, \填写折扣\

TxtZheKou.SetFocus

CmdSellBook.Enabled = True Exit Sub End If

If TxtSJJinE.Text = \

MsgBox \请输入交易的实际金额!\填写金额\

TxtSJJinE.SetFocus

CmdSellBook.Enabled = True Exit Sub End If

If TxtMemo.Text = \无\

QD = MsgBox(\确定入帐吗?\确认入帐\If QD = vbCancel Then

CmdSellBook.Enabled = True Exit Sub End If '售书入帐

Screen.MousePointer = 11 BeginTrans

Adodc1.CommandType = 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

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \图书编号]=\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 \图书资料丢失,请与仓库管理员联系!\vbExclamation, \交易失败\

CmdSellBook.Enabled = True Exit Sub End If

If HYShengJi(HuiYuanKaHao) Then Rollback

CommitTrans

Screen.MousePointer = vbDefault

MsgBox \恭喜您,交易成功!\交易成功\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) <> \dbName = dbName + \

STRSQL = \图书分类] 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) <> \dbName = dbName + \

STRSQL = \图书分类] 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 = \

MsgBox \请填写图书分类号!\创建分

类\

TxtBianHao.SetFocus Exit Sub End If

If TxtLeiBie.Text = \

MsgBox \请填写图书分类名称!\创建分类\

TxtLeiBie.SetFocus Exit Sub End If

If checkFenLei(TxtLeiBie.Text) Then

MsgBox \图书分类名称不唯一,请另选一个!\vbExclamation, \创建分类\

TxtLeiBie.SetFocus TxtLeiBie.SelStart = 0

TxtLeiBie.SelLength = Len(TxtLeiBie.Text) Exit Sub End If

If ComboFuLei.Text <> \选择父类\ If Not checkFenLei(ComboFuLei.Text) Then MsgBox \所选父类不存在!请重试!\vbOKOnly + vbExclamation, \选择父类\

ComboFuLei.SetFocus Exit Sub End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \[图书分类号] from [图书分类] where [图书分类号]=[所属父类编号] and [图书分类]=\& ComboFuLei.Text & \

Adodc1.Refresh

Adodc1.Recordset.MoveFirst

FuLeiBianHao = Adodc1.Recordset!图书分类号 End If

If checkGYSID(TxtBianHao.Text) Then

MsgBox \图书分类编号不唯一,请另选一个!\vbExclamation, \创建分类\

TxtBianHao.SetFocus

TxtBianHao.SelStart = 0

TxtBianHao.SelLength = Len(TxtBianHao.Text) Exit Sub End If

If FuLeiBianHao = \

Adodc1.CommandType = adCmdTable Adodc1.RecordSource = \图书分类\Adodc1.Refresh

Adodc1.Recordset.AddNew

Adodc1.Recordset!图书分类号 = TxtBianHao.Text Adodc1.Recordset!图书分类 = TxtLeiBie.Text Adodc1.Recordset!所属父类编号 = FuLeiBianHao Adodc1.Recordset.Update

MsgBox \创建分类成功!\创建分类\TxtBianHao.Text = \TxtLeiBie.Text = \

ComboFuLei.Text = \选择父类\FuLeiBianHao = \TxtFuLei.Text = \TxtBianHao.SetFocus

Exit Sub errEnd:

MsgBox \更新数据库失败!\数据库出错\

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) <> \dbName = dbName + \

STRSQL = \用户身份] from [Admin] where [用户ID]=\\

'打开数据库

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 = \

MsgBox \请输入你的帐号!\更改密码\

TxtUserID.SetFocus Exit Sub End If

If TxtPasswd.Text = \

MsgBox \请输入你的旧密码!\更改密码\

TxtPasswd.SetFocus Exit Sub End If

If TxtNewPasswd.Text = \

MsgBox \请输入你的新密码!\更改密码\

TxtNewPasswd.SetFocus Exit Sub End If

If TxtNewPasswd.Text <> TxtNewPasswdC.Text Then

MsgBox \密码输入不一致,请重试!\更改密码\

TxtPasswd.Text = \ TxtNewPasswd.Text = \ TxtNewPasswdC.Text = \ TxtPasswd.SetFocus

Exit Sub End If

If checkUserID(TxtUserID.Text) Then

Adodc1.CommandType = adCmdText Adodc1.RecordSource = \* from [Admin] where [用户密码]=\& TxtPasswd.Text & \用户ID]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

Adodc1.Recordset!用户密码 = TxtNewPasswd.Text Adodc1.Recordset.Update Else

MsgBox \用户密码验证错误!你无权修改密码!\vbExclamation, \密码错误\

TxtPasswd.Text = \ TxtNewPasswd.Text = \ TxtNewPasswdC.Text = \ Exit Sub End If

MsgBox \用户密码修改成功!请牢记!\\更改密码\

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 & \更改密码失败!\vbExclamation, \操作数据库出错\End Sub

模块名:CmdRegMe_Click

模块原型:Private Sub CmdRegMe_Click() 代码:

Private Sub CmdRegMe_Click() On Error GoTo errEnd

If TxtCard.Text = \

MsgBox \请填写员工帐号!\创建员工帐号\

TxtCard.SetFocus Exit Sub End If

If TxtUName.Text = \

MsgBox \请填写员工的姓名!\创建员工帐号\

TxtUName.SetFocus Exit Sub End If

If ComboShenFen.Text = \请选择员工身份\Then

MsgBox \请选择员工的身份!\创建员工帐号\

ComboShenFen.SetFocus Exit Sub End If

If TxtUDanWei.Text = \无\

If TxtUDiZhi.Text = \

MsgBox \请填写员工的地址!\创建员工帐号\

TxtUDiZhi.SetFocus Exit Sub End If

If TxtUMail.Text = \无\

If TxtUDianHua.Text = \无\

If TxtUMemo.Text = \无\

If checkUserID(TxtCard.Text) Then

MsgBox \这个员工帐号已经被注册!请另选一个!\vbExclamation, \创建员工帐号\

TxtCard.SelStart = 0

TxtCard.SelLength = Len(TxtCard.Text) TxtCard.SetFocus Exit Sub End If

CmdRegMe.Enabled = False ‘开始一个事务 BeginTrans

Adodc1.CommandType = adCmdTable Adodc1.RecordSource = \员工表\Adodc1.Refresh

Adodc1.Recordset.AddNew

Adodc1.Recordset!员工帐号 = TxtCard.Text Adodc1.Recordset!姓名 = TxtUName.Text If OptionMan.Value Then

Adodc1.Recordset!性别 = \男\Else

Adodc1.Recordset!性别 = \女\End If

Adodc1.Recordset!地址 = TxtUDiZhi.Text Adodc1.Recordset!手机 = TxtUDanWei.Text Adodc1.Recordset!电子邮件 = TxtUMail.Text Adodc1.Recordset!电话 = TxtUDianHua.Text Adodc1.Recordset!人生格言 = TxtUMemo.Text Adodc1.Recordset!创建日期 = Now() Adodc1.Recordset.Update

Adodc1.CommandType = adCmdTable Adodc1.RecordSource = \Adodc1.Refresh

Adodc1.Recordset.AddNew

Adodc1.Recordset!用户ID = TxtCard.Text Adodc1.Recordset!用户密码 = TxtCard.Text

Adodc1.Recordset!用户身份 = ComboShenFen.Text Adodc1.Recordset.Update

CommitTrans

MsgBox \恭喜你,注册成功!\员工的帐号和密码就是你填写的员工帐号!\& vbCrLf & \请员工自行修改密码或立即修改密码。\vbOKOnly + vbQuestion, \注册成功\

TxtCard.Text = \TxtUName.Text = \TxtUDanWei.Text = \TxtUDiZhi.Text = \TxtUMail.Text = \TxtUDianHua.Text = \TxtUMemo.Text = \

CmdRegMe.Enabled = True

Exit Sub

errEnd:

Rollback MsgBox \注册失败,操作数据库发生错误!\vbOKOnly + vbExclamation, \注册失败\

CmdRegMe.Enabled = True End Sub

模块名:GetJinJia

模块原型:Public Function GetJinJia(bianHao As String) As String 代码:

Public Function GetJinJia(bianHao As String) As String On Error GoTo errEnd

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \单价] from [进书记录] where [图书编号]=\

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst

GetJinJia = Adodc1.Recordset!单价 & \Else

MsgBox \数据丢失,清重试!\办理退货\

GetJinJia = \ Exit Function End If

Exit Function errEnd:

MsgBox \找不到该品种的进价!\检索数据库出错\

GetJinJia = \End Function

模块名:CmdTH_Click

模块原型:Private Sub CmdTH_Click() 代码:

Private Sub CmdTH_Click() On Error GoTo errEnd Dim QD As Integer

If TxtShuLiang.Text = \

MsgBox \请填写退货的数量.\办理退货\

TxtShuLiang.SetFocus Exit Sub End If

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \图书编号]=\TuShuBianHao & \

Adodc1.Refresh

If Adodc1.Recordset.RecordCount = 0 Then

MsgBox \数据丢失,清重试!\办理退货\

Exit Sub End If

Adodc1.Recordset.MoveFirst

If Adodc1.Recordset!库存量 - CInt(TxtShuLiang.Text) < 0 Then MsgBox \库存不足,没有足够的图书可以退回!\vbExclamation, \库存不足\

TxtShuLiang.SetFocus

TxtShuLiang.SelStart = 0

TxtShuLiang.SelLength = Len(TxtShuLiang.Text) Exit Sub End If

If TxtJinJia.Text = \

MsgBox \图书进价信息丢失,无法完成退货操作!\vbExclamation, \办理退货\

TxtShuLiang.SetFocus Exit Sub End If

If TxtJinE.Text = \

MsgBox \请填写退货金额.\办理退货\ TxtJinE.SetFocus Exit Sub End If

If TxtYuanYin.Text = \

MsgBox \请填写退货原因.\办理退货\ TxtYuanYin.SetFocus Exit Sub End If

If TxtMemo.Text = \无\

QD = MsgBox(\确定入帐吗?\确认入帐\If QD = vbCancel Then 'Unload Me Exit Sub End If

CmdTH.Enabled = False

Screen.MousePointer = 11

BeginTrans

Adodc1.CommandType = adCmdTable Adodc1.RecordSource = \退货记录\Adodc1.Refresh

Adodc1.Recordset.AddNew

Adodc1.Recordset!供应商编号 = GongYingShangID Adodc1.Recordset!图书编号 = TuShuBianHao Adodc1.Recordset!进价 = TxtJinJia.Text

Adodc1.Recordset!退货数量 = CInt(TxtShuLiang.Text) Adodc1.Recordset!金额 = TxtJinE.Text

Adodc1.Recordset!退货原因 = TxtYuanYin.Text Adodc1.Recordset!退货日期 = Now() Adodc1.Recordset!备注 = TxtMemo.Text Adodc1.Recordset.Update

Adodc1.CommandType = adCmdText

Adodc1.RecordSource = \图书编号]=\TuShuBianHao & \

Adodc1.Refresh

If Adodc1.Recordset.RecordCount = 0 Then Rollback

Screen.MousePointer = vbDefault

MsgBox \数据丢失,清重试!\办理退货\

CmdTH.Enabled = True Exit Sub End If

Adodc1.Recordset.MoveFirst

Adodc1.Recordset!库存量 = Adodc1.Recordset!库存量 - CInt(TxtShuLiang.Text)

Adodc1.Recordset.Update

CommitTrans

Screen.MousePointer = vbDefault

MsgBox \本次退货操作成功!\操作成功\Unload Me

Exit Sub errEnd:

Rollback

Screen.MousePointer = vbDefault

MsgBox \更新数据库失败!无法完成退货操作!\vbExclamation, \更新失败\

CmdTH.Enabled = True End Sub

模块名:CmdSaveContinue_Click

模块原型:Private Sub CmdSaveContinue_Click() 代码:

Private Sub CmdSaveContinue_Click() On Error GoTo errEnd

If TxtBianHao.Text = \

MsgBox \请输入供应商编号!\供应商登记\

TxtBianHao.SetFocus Exit Sub End If

If TxtDanWei.Text = \

MsgBox \请输入单位名称!\供应商登记\

TxtDanWei.SetFocus Exit Sub End If

If TxtDiZhi.Text = \

MsgBox \请输入供应商联系地址!\供应商登记\

TxtDiZhi.SetFocus Exit Sub End If

If TxtDianHua.Text = \

MsgBox \请输入供应商联系电话!\供应商登记\

TxtDianHua.SetFocus Exit Sub End If

If TxtChuanZhen.Text = \未知\If TxtMail.Text = \无\If TxtLianXiRen.Text = \

MsgBox \请输入联系人姓名!\供应商登记\

TxtLianXiRen.SetFocus Exit Sub End If

If TxtWeb.Text = \无\

If TxtJianJie.Text = \无\

If checkGYSID(TxtBianHao.Text) Then MsgBox \供应商编号不唯一,请另选一个!\vbOKOnly + vbExclamation, \供应商登记\

TxtBianHao.SetFocus

TxtBianHao.SelStart = 0

TxtBianHao.SelLength = Len(TxtBianHao.Text) Exit Sub End If

Adodc1.Recordset.AddNew

Adodc1.Recordset!供应商编号 = TxtBianHao.Text Adodc1.Recordset!供应商 = TxtDanWei.Text Adodc1.Recordset!地址 = TxtDiZhi.Text Adodc1.Recordset!网址 = TxtWeb.Text

Adodc1.Recordset!联系人 = TxtLianXiRen.Text Adodc1.Recordset!电话 = TxtDianHua.Text Adodc1.Recordset!传真 = TxtChuanZhen.Text Adodc1.Recordset!电子邮件 = TxtMail.Text Adodc1.Recordset!单位简介 = TxtJianJie.Text Adodc1.Recordset.Update

MsgBox \供应商情况登记成功!\登记成功\

TxtBianHao.Text = \TxtDanWei.Text = \TxtDiZhi.Text = \TxtWeb.Text = \

TxtLianXiRen.Text = \TxtChuanZhen.Text = \TxtDianHua.Text = \TxtMail.Text = \TxtJianJie.Text = \TxtBianHao.SetFocus Exit Sub

errEnd:

MsgBox \更新数据库失败!\数据库出错\

End Sub

注:其他模块(略)。

九、用户界面设计报告

9.1界面设计规范

主界面:菜单栏、工具条、工作区(本系统采用SSTab页框)、状态栏等。 界面资源:由ImageList控件提供界面资源。 9.2系统窗体汇总 窗体名称 窗体类型 简要说明 FrmLogIn 启动窗体 系统登陆 FrmMain MDI主窗体 系统主窗体 FrmAbout 模式窗体 “关于?”窗体 FrmAdminMain MDI子窗体 经理主界面 FrmAdminMemo FrmBook FrmBookDengJi FrmBookMemo FrmBookSell FrmBookSellerMain FrmCangGuanMain FrmChgHYMemo FrmChgHYPasswd FrmChgPasswd FrmChgUserMemo 模式窗体 模式窗体 模式窗体 模式窗体 模式窗体 MDI子窗体 MDI子窗体 模式窗体 模式窗体 模式窗体 模式窗体 FrmChgUserPasswd 模式窗体 FrmDJGYS 模式窗体 FrmGuestMain MDI子窗体 FrmGYS 模式窗体 FrmHelp 模式窗体 FrmHuiYuan 模式窗体 FrmHYmemo 模式窗体 FrmInfo 模式窗体 FrmKuCun 模式窗体 FrmMemberMain MDI子窗体 FrmNewBook 模式窗体 FrmNewLei 模式窗体 FrmNewUser 模式窗体 FrmRegMe 模式窗体 FrmSell 模式窗体 FrmSellBook 模式窗体 FrmTHBook 模式窗体 FrmTHGYS 模式窗体 FrnTHTJ 模式窗体 FrmToday 模式窗体 FrmTongJi 模式窗体 FrmTuiHuo 模式窗体 FrmUserAdmin 模式窗体 FrmUserInfo 模式窗体 FrmUserMemo 模式窗体 9.3主界面设计 主界面的设计采用标准Windows主窗口样式,自上而下依次为:菜单栏、工具条、工作区(本系统采用SSTab页框)、状态栏等。所有系统用户拥有相似的主界面。主界面包含基本的或共享的功能,如书目浏览与检索,基本统计等。

主界面如下图所示:

经理个人资料维护 新书入库、选择品种 新书入库登记 图书资料更正 图书销售、选择图书 售书员主界面 仓库管理员主界面 修改会员资料 修改会员密码 修改密码,适用于所有用户 修改用户资料,适用于会员以上级别用户 强制修改用户密码,适用于经理 登记供应商信息 游客级用户主界面 新书入库、选择供应商 系统帮助 图书销售、选择会员或游客 会员资料统一管理 客户反馈信息统一管理 库存统计 会员级用户主界面 新书入库、添加品种 创建图书分类 创建员工帐号,适用于经理 创建会员帐号 图书销售 图书销售统计 办理退货、选择品种 办理退货 退货统计 本日销售统计 按时段的详细统计分析 办理退货、选择供应商 员工帐号、资料集中、统一管理 反馈信息管理,适用于仓库管理员 会员资料维护

图14.系统主界面设计样式

9.4子界面设计

除系统中主要的、基本的功能之外,子系统或非共享功能的实现均采用子界面的设计来实现,如图书销售、退货、进货管理、会员管理、员工管理、统计分析等。

子界面设计样式如下图所示:

图15.系统子界面设计样式

9.5界面资源设计

系统图标:

工具栏图标:

帮助、关于对话框显示的图片:

十、软件测试分析报告

10.1测试范围与主要内容 测试范围 主要内容 简要说明 系统登陆验证 验证用户身份,进行权限控功能性测试 制 信息检索功能测试 测试数据库检索代码的健功能性测试 壮性 图书销售管理功能测试 测试系统实用性、方便性 功能性测试 统计分析测试 测试按时段统计的准确性 功能性测试 数据完整性测试 测试登记失败时的数据完功能性测试 整性控制 核心代码复检 检验核心代码的质量 逻辑检错性测试 10.2测试方法 功能性测试:黑盒测试 逻辑检错性测试:白盒测试 10.3测试报告 测试项目 测试目的 测试数据 测试结果 改进意见 修改状态 书目检索 信息检索功能‘ SQL语法错误 暂无 尚未修的准确性和健正 壮性 登陆验证 系统安全和权用户系统响应正--- --- 限控制 名:admin 常,权限控制密码:admin 正常 图书销售 入帐操作的完--- 数据类型控制增强对用户尚未修整性 出错,事务处输入数据的正 理成功 控制 统计分析 按时段统计功2009-3 响应正常 --- --- 能的实现 核心代码检验核心代码--- 编码风格良--- --- 复检 的质量与效率 好,内部注释不足。 10.4改进建议与措施 修正建议 添加报表打印功能 说明、意义 增加售书、统计等报表打印功能可以增加系统实用性。 方便图书销售人员 考虑书店实际销售情况,有利于书店拓展业务。 分布式系统是软件发展的方向 方便销售管理 十一、软件使用说明书 措施 下一版本实施 增加给钱、找余计算 增加对批发业务的支持 进行联机版的开发 添加扫描仪输入支持 下一版本实施 下一版本实施 下一版本实施 下一版本实施 11.1软件概述

本书店书管理系统 V1.0 测试版 面向中小型书店、个体书店进行全面的人员、物流管理,旨在实现书店管理信息化。

本系统采用会员制管理,将人员分为经理、仓库管理员、售书员、会员、游客等,分别拥有不同的权限,各司其职,以便提高工作效率。系统功能包括:供应商管理、进书管理、图书资料管理、售书管理、员工管理、会员管理、库存统计、售书统计、退货统计、基本统计分析等。

用户权限:

(一)经理权限:主要包括各种统计分析、员工管理、制定会员政策等等。 (二)仓库管理员权限:包含进书管理、供应商管理、库存管理、退货管理等。

(三)售书员权限:包含售书管理、会员管理等。 11.2使用说明

11.2.1系统登陆

安装成功后,请依次点击“开始”->“程序”->“书店管理系统 V1.0 测试版”->“书店管理系统 V1.0 测试版”,启动画面如下图所示:

图16.系统登陆界面

依据提示在文本框中分别输入“用户帐号”和“用户密码”,然后点击“登陆”按钮。如需查看帮助信息请点“帮助”。系统初始帐号、密码为: 经理级帐号:admin 密码:admin

仓库管理员级帐号:仓库管理员 密码:admin 售书员级帐号:售书员 密码:admin

11.2.2注销与退出

本文来源:https://www.bwwdw.com/article/ybz3.html

Top