1、河南职业技术师范学院毕业论文题目:宛枫书社图书管理系统的设计与实现班 级: 信管 姓 名: 指导老师: 信 息 工 程 与 管 理 学 院1宛枫书社图书管理系统的设计与实现文档信息文件类型: 软件开发用技术文档当前版本: V1.0 Beta作 者: 开发小组:组长:胡孟杰成员:蔡大臣、张航单位:信管 993/992 班 完成日期: 2019 年 3 月 17 日软件信息软件名称: 宛枫书社图书管理系统版 本 号: V1.0 Beta语言类型: 简体中文软件主页: http:/ 授权类型: 免费软件/测试版运行环境: Windows 95/98/NT/Me/2000/XP 等下载地址: http
2、:/ 软件大小: 3069 KB指导老师: 软件作者: 参与开发: 参与测试: 开发人员、考试通书店(李明友) 、张科伟 等联系信箱: 版权所有: Copyright2013-2014.Powered by 胡孟杰.开发日期: 2013 年 3 月-2013 年 5 月相关站点: 华军软件园、PChome、21CN、经典下载 等软件简介: 宛枫书社图书管理系统 V1.0 Beta 测试版 面向中小型书店、个体书店进行全面的人员、物流管理,旨在实现书店管理信息化。本系统采用会员制管理,将人员分为经理、仓库管理员、售书员、会员、游客等,分别拥有不同的权限,各司其职,以便提高工作效率。系统功能包括
3、:供应商管理、进书管理、图书资料管理、售书管理、会员管理、员工管理、库存统计、售书统计、退货统计、基本统计分析等。河南职业技术师范学院信息工程与管理学院信息管理与信息系统专业 中国.河南.新乡 2019-03-172目录一、序言 4二、需求分析说明书 42.1 系统介绍42.2 系统面向的用户群体42.3 系统的功能性需求42.4 系统的非功能性需求52.4.1 用户界面需求.52.4.2 软硬件环境需求.52.4.3 软件质量需求.5三、可行性分析报告 53.1 技术可行性53.2 人员可能性53.3 时间、设备可能性53.4 系统工作量53.5 代码工作量53.6 文档要求5四、开发环境与
4、项目规划 54.1 开发环境54.2 项目规划与管理54.2.1 开发人员安排.54.2.2 开发进度安排.6五、软件界面设计标准与规范 65.1 编写目的65.2 界面设计思想65.3 界面设计原则65.4 界面设计样式65.5 常见提示信息样式65.6 常见错误信息样式75.7 其他界面约定7六、软件编码设计标准与规范 76.1 对象命名约定76.2 常量和变量命名约定86.3 结构化编码约定86.4 数据源的约定96.5 数据库访问约定96.6 其他约定9七、数据库分析与设计 107.1 数据库环境说明 .107.2 数据库命名标准与规范 .107.3 数据库逻辑设计 .107.4 数据
5、库物理设计 .107.4.1 表、视图汇总.1037.4.2 各表、视图设计详解.11八、软件体系结构设计说明书 158.1 系统概述158.2 设计约束158.3 设计策略158.4 系统概要设计说明书168.4.1 图例说明.168.4.2 系统总体结构图.168.4.3 销售子系统流程图.178.4.4 进货子系统流程图.178.4.5 退货子系统流程图.178.5 系统详细设计说明书178.5.1 系统模块汇总.178.5.2 系统核心模块详解.188.5.3 系统模块详解.28九、用户界面设计报告 429.1 界面设计规范429.2 系统窗体汇总429.3 主界面设计439.4 子界
6、面设计439.5 界面资源设计44十、软件测试分析报告 4410.1 测试范围与主要内容4410.2 测试方法4410.3 测试报告4410.4 改进建议与措施45十一、软件使用说明书 4511.1 软件概述 .4511.2 系统安装 .4511.3 使用说明 .4511.3.1 系统登陆 4511.3.2 注销与退出 4611.3.3 办理进货登记 4611.3.4 办理退货登记 4811.3.5 销售图书 4811.3.6 会员管理 4911.3.7 员工管理 4911.3.8 书目检索 5011.3.9 查看统计信息 5011.3.10 修改密码 5011.3.11 关于/帮助 .50参
7、考资料 514一、序言宛枫书社图书管理系统的设计与推出是多方面原因促成的,我有一位老乡名叫李明友,毕业后经营一家小书店:“考试通书店” ,其日常管理工作都是人工操作,历史数据很难保存和利用,对于书店的经营非常不利。而其他的中小型书店、个体书店大多如此。针对这种状况,我计划开发一个面向中小型书店、个体书店的图书管理系统,实现对人员、物流的全面管理,以帮助这些书店早日实现书店管理信息化。正在我考虑系统的规划的时候,我有幸得到王改性老师的指导,我的两位同学:蔡大臣、张航也加入了开发队伍,这更加坚定了我完成系统开发任务的决心。为了系统的顺利开发和维护,特编制如下技术文档:二、需求分析说明书2.1 系统
8、介绍本系统定位于中小型书店、个体书店,暂时考虑单机环境下的实现;操作系统选择目前常用的 Windows 98/2000。系统性质为 MIS(管理信息系统)或财务软件。本系统采用会员制管理,系统功能应包含进书管理、售书管理、退货管理、库存管理、统计分析、相关人员管理等。系统界面力求简洁、易用,在标准化的基础上考虑界面的美观和新颖。系统计划 2003 年 3 月初开始,4 月初完成初步开发工作,其余工作根据时间安排进行。2.2 系统面向的用户群体系统面向中小型书店、个体书店,用户群体为这些书店的经理、采购员仓库管理员、图书销售人员、书店的会员游客等。2.3 系统的功能性需求功能序号 功能名称 功能
9、说明1 供应商管理 包含供应商信息的登记、修改等2 图书种类管理 包含图书大类、小类的创建3 图书资料管理 包含图书资料的添加、修改等4 新书入库管理 登记新书的来源、数量、单价、折扣、金额等5 库存统计 分门别类统计图书现有库存量、入库时间等6 进货记录查询 查询历次进货记录7 退货登记 登记供应商、图书种类、退货的数量、原因等8 退货统计 按供应商统计退货记录9 退货记录查询 查询历次退货记录10 图书销售管理 登记销售的种类、数量、单价、折扣、顾客/会员等11 会员管理 包含会员的创建、修改、删除等12 优惠政策管理 包含优惠政策的制定与执行13 本日售书统计 统计本日销售图书的数量、金
10、额等14 售书记录查询 查询历次售书记录15 员工管理 包含员工帐号的创建、修改、删除等16 统计分析 按年月日时段统计书店经营状况17 图书检索 提供按图书的编号、书名、责任者、出版社等途径的检索18 系统帐号管理 提供上级对下级的资料、密码管理,519 个人资料、密码管理 提供修改个人资料、密码的工具2.4 系统的非功能性需求2.4.1 用户界面需求简洁、易用、易懂,美观、大方、标准,具备一定的兼容性。2.4.2 软硬件环境需求软件环境:兼容当前主流操作系统 Windows 95/98/NT/Me/2000/XP 等。硬件环境:386 以上计算机,打印机、扫描仪等。2.4.3 软件质量需求
11、易用、健壮、兼容性好、运行稳定、有一定安全保障。三、可行性分析报告3.1 技术可行性系统的性质为 MIS 或财务软件,因而数据库的设计与操纵是系统设计的核心。我在2002 年 11 月至 2003 年 3 月曾经成功完成了“蓝色梦幻留言板 ”的开发与维护任务,具备一定的系统分析与设计能力,熟悉数据库的设计与操纵;指导老师王改性多年从事数据库的教学与研究工作,因而该系统的实现在技术上是可行的。3.2 人员可能性我有“蓝色梦幻留言板”的开发经验,目前时间充足,可以完成开发任务。蔡大臣的计算机功底很深,可以参与系统的数据库设计与开发。张航有深厚的文字功底,可以参与用户文档的制作、内部文档整理、后期测
12、试等任务。所有人员均可立即投入开发工作。3.3 时间、设备可能性系统设计与开发工作预计耗时一个月,所有参与开发的人员均能够保证按时完成任务。实验设备如:计算机、打印机、扫描仪等不足,上机任务可以完成,打印机、扫描仪的实验根据具体条件暂时延缓执行。3.4 系统工作量该系统的工作量相对于我们的开发小组来说很大,必须保证按进度完成任务。实际工作量预计超过一个月(每天 4-8 小时) 。如包含软件维护及技术文档的整理、制作,工作量将更大。3.5 代码工作量预计需 25 天左右。3.6 文档要求依据国家计算机软件产品开发文件编制指南和现代软件工程的理论与原则编制标准的软件技术文档。四、开发环境与项目规划
13、4.1 开发环境前台开发环境:Microsoft Visual Basic 6.0后台数据库环境:Microsoft Access 2000/20024.2 项目规划与管理4.2.1 开发人员安排6系统分析与设计:胡孟杰程序编制:胡孟杰数据库设计:胡孟杰、蔡大臣文档整理与制作:蔡大臣、张航系统测试:胡孟杰、蔡大臣、张航、考试通书店(李明友) 等4.2.2 开发进度安排3 月 1 日至 3 月 5 日:系统分析,进行需求定义,定义系统概况3 月 6 日至 3 月 7 日:数据库分析与设计3 月 8 日至 3 月 9 日:软件体系结构设计3 月 10 日至 3 月 31 日:软件编码4 月 1 日
14、至 4 月 2 日:系统测试五、软件界面设计标准与规范5.1 编写目的制定界面设计标准规范的目的是为了规范和统一软件界面设计制定软件界面设计标准与规范。5.2 界面设计思想首先考虑标准化,在标准化的基础上进行界面的美工设计。5.3 界面设计原则简单易用、简洁明了、兼容性好、标准、规范。5.4 界面设计样式采用标准 Windows 界面,自上至下依次为:标题栏、菜单栏、工具条、工作区、状态栏等。如下图示:图 1.系统界面5.5 常见提示信息样式菜单栏 工具条状态栏 工作区7提示信息按以下标准进行:采用标准 Windows 对话框样式,添加信息图标,后接提示信息文本和相应按钮。如下图示:图 2.常
15、见提示信息样式5.6 常见错误信息样式错误信息依据提示信息样式设计,将信息图标更改为警告图标。如下图示:图 3.常见错误信息样式5.7 其他界面约定除主界面外,所有子界面均采用模式窗体,即该窗体不消失,不可以在本程序内将焦点移出子窗体。六、软件编码设计标准与规范6.1 对象命名约定对象名 对象类型 命名约定(前缀码)Form 窗体 FrmCommand 按钮 CmdLabel 标签 LabTextBox 文本框 TxtComboBox 组合框 ComBListBox 列表框 LstBAdodb 数据库访问对象 AdodbDataGrid 数据表格显示组件 DataGridFrame 框架 Fa
16、mOption 单选框 OptCheckBox 复选框 ChkPictureBox 图象显示组件 PtBCommonDialog 通用对话框组件 ComDlgTimer 时间组件 TimToolBar 工具栏 TlBar信息图标提示文本按钮警告图标提示文本8Menu 菜单 MnuSSTab 页框 SSTabImageList 界面资源组件 ImgLst6.2 常量和变量命名约定变量名 数据类型 变量类型 含义UserShenFen String 全局变量 用户身份标志LogOK Boolean 全局变量 登陆状态UserName String 全局变量 用户名GongYingShangID S
17、tring 全局变量 供应商编号GongYingShang String 全局变量 供应商名称TuShuBianHao String 全局变量 图书编号DingJia Single 全局变量 图书定价ShuMing String 全局变量 书名HuiYuanKaHao String 全局变量 会员卡号HYXingMing String 全局变量 会员姓名HYDengJi String 全局变量 会员等级6.3 结构化编码约定编码应清晰、可读性好,运用缩进、空行,结合大小写区别等方法保持程序结构良好。凡与数据库操作相关的模块一律加上容错代码,涉及多表操作的模块应运用“事务”处理,以保持数据完整性
18、。编码风格参照下例进行:Public Sub CheckUser(userID As String, passwd As String)Dim userDB As DatabaseDim userRD As RecordsetDim dbName As StringDim STRSQL As StringScreen.MousePointer = 11On Error GoTo errEnddbName = App.PathIf Right(dbName, 1) 0 ThenAdodc1.Recordset.MoveFirstGetHYDaZhe = Adodc1.Recordset!打折El
19、seMsgBox “会员政策数据丢失,请与经理联系!“, vbOKOnly + vbExclamation, “检索错误“GetHYDaZhe = “1“End If23Exit FunctionerrEnd:MsgBox “检索数据库出错!“, vbOKOnly + vbExclamation, “检索错误 “GetDingJia = “未知“End Function模块名:GetKuCun模块原型:Public Function GetKuCun(bianHao As String) As String代码:Public Function GetKuCun(bianHao As Strin
20、g) As StringOn Error GoTo errEndAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select 库存量 from Book where 图书编号=“ & bianHao & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstGetKuCun = Adodc1.Recordset!库存量ElseMsgBox “图书资料数据丢失,请与经理联系!“, vbOKOnly + vbExclamation, “检
21、索错误“GetKuCun = “0“End IfExit FunctionerrEnd:MsgBox “检索数据库出错!“, vbOKOnly + vbExclamation, “检索错误 “GetDingJia = “未知“End Function模块名:HYShengJi模块原型:Public Function HYShengJi(HYKaHao As String) As Boolean代码:Public Function HYShengJi(HYKaHao As String) As BooleanOn Error GoTo errEndDim BiaoZhun As IntegerD
22、im SUMBook As IntegerIf HYKaHao = “Guest“ ThenHYShengJi = FalseExit FunctionEnd IfBeginTrans24Adodc1.CommandType = adCmdTextAdodc1.RecordSource = “select sum(实收金额) as 总金额 from 售书记录 where 会员卡号=“ & HYKaHao & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstSUMBook = CInt(
23、Adodc1.Recordset!总金额)ElseSUMBook = 0End IfAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select 会员标准 from 会员政策 where 会员级别 =“Adodc1.RefreshAdodc1.Recordset.MoveFirstBiaoZhun = CInt(Adodc1.Recordset!会员标准)If SUMBook = BiaoZhun ThenAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select * from
24、 会员表 where 会员卡号 =“ & HYKaHao & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset!会员等级 = “Adodc1.Recordset.UpdateEnd IfEnd IfAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select 会员标准 from 会员政策 where 会员级别 =“Adodc1.RefreshAdodc1.Recordset.MoveFirstBi
25、aoZhun = CInt(Adodc1.Recordset!会员标准)If SUMBook = BiaoZhun ThenAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select * from 会员表 where 会员卡号 =“ & HYKaHao & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset!会员等级 = “Adodc1.Recordset.UpdateEnd If25End If
26、Adodc1.CommandType = adCmdTextAdodc1.RecordSource = “select 会员标准 from 会员政策 where 会员级别 =“Adodc1.RefreshAdodc1.Recordset.MoveFirstBiaoZhun = CInt(Adodc1.Recordset!会员标准)If SUMBook = BiaoZhun ThenAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select * from 会员表 where 会员卡号 =“ & HYKaHao & “Adodc1.Ref
27、reshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset!会员等级 = “Adodc1.Recordset.UpdateEnd IfEnd IfAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select 会员标准 from 会员政策 where 会员级别 =“Adodc1.RefreshAdodc1.Recordset.MoveFirstBiaoZhun = CInt(Adodc1.Recordset!会员标准)If SUM
28、Book = BiaoZhun ThenAdodc1.CommandType = adCmdTextAdodc1.RecordSource = “select * from 会员表 where 会员卡号 =“ & HYKaHao & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset!会员等级 = “Adodc1.Recordset.UpdateEnd IfEnd IfAdodc1.CommandType = adCmdTextAdodc1.RecordS
29、ource = “select 会员标准 from 会员政策 where 会员级别 =“Adodc1.RefreshAdodc1.Recordset.MoveFirstBiaoZhun = CInt(Adodc1.Recordset!会员标准)If SUMBook = BiaoZhun ThenAdodc1.CommandType = adCmdText26Adodc1.RecordSource = “select * from 会员表 where 会员卡号 =“ & HYKaHao & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 Then
30、Adodc1.Recordset.MoveFirstAdodc1.Recordset!会员等级 = “Adodc1.Recordset.UpdateEnd IfEnd IfCommitTransHYShengJi = FalseExit FunctionerrEnd:RollbackHYShengJi = TrueScreen.MousePointer = vbDefaultMsgBox “检查会员是否应升级时操作失败!“, vbOKOnly + vbExclamation, “图书销售“CmdOK.Enabled = TrueEnd Function模块名:CmdSellBook_Click
31、模块原型:Private Sub CmdSellBook_Click()代码:Private Sub CmdSellBook_Click()On Error GoTo errEndDim QD As IntegerCmdSellBook.Enabled = FalseIf TxtShuLiang.Text = “ ThenMsgBox “请输入交易的数量!“, vbOKOnly + vbExclamation, “填写数量 “TxtShuLiang.SetFocusCmdSellBook.Enabled = TrueExit SubEnd IfIf GetKuCun(TuShuBianHao)
32、 1 ThenMsgBox “实际折扣率填写错误!请在 0 与 1 之间选择.“, vbOKOnly + vbExclamation, “填写折扣“TxtZheKou.SetFocusCmdSellBook.Enabled = TrueExit SubEnd IfIf TxtSJJinE.Text = “ ThenMsgBox “请输入交易的实际金额!“, vbOKOnly + vbExclamation, “填写金额“TxtSJJinE.SetFocusCmdSellBook.Enabled = TrueExit SubEnd IfIf TxtMemo.Text = “ Then TxtMe
33、mo.Text = “无“QD = MsgBox(“确定入帐吗?“, vbOKCancel + vbQuestion, “确认入帐“)If QD = vbCancel ThenCmdSellBook.Enabled = TrueExit SubEnd If售书入帐Screen.MousePointer = 11BeginTransAdodc1.CommandType = adCmdTableAdodc1.RecordSource = “售书记录“Adodc1.RefreshAdodc1.Recordset.AddNewAdodc1.Recordset!图书编号 = TuShuBianHaoAd
34、odc1.Recordset!数量 = TxtShuLiang.TextAdodc1.Recordset!会员卡号 = HuiYuanKaHaoAdodc1.Recordset!实际打折 = TxtZheKou.TextAdodc1.Recordset!实收金额 = TxtSJJinE.TextAdodc1.Recordset!日期 = Year(Now) & “-“ & Month(Now) & “-“ & Day(Now) & “.“Adodc1.Recordset!备注 = TxtMemo.TextAdodc1.Recordset.UpdateAdodc1.CommandType = a
35、dCmdTextAdodc1.RecordSource = “select * from Book where 图书编号=“ & TuShuBianHao & “Adodc1.Refresh28If Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset!库存量 = Adodc1.Recordset!库存量 - TxtShuLiang.TextAdodc1.Recordset.UpdateElseRollbackScreen.MousePointer = vbDefaultMsgBox “图书资
36、料丢失,请与仓库管理员联系!“, vbOKOnly + vbExclamation, “交易失败“CmdSellBook.Enabled = TrueExit SubEnd IfIf HYShengJi(HuiYuanKaHao) Then RollbackCommitTransScreen.MousePointer = vbDefaultMsgBox “恭喜您,交易成功!“, vbOKOnly + vbInformation, “交易成功“Unload MeExit SuberrEnd:RollbackScreen.MousePointer = vbDefaultMsgBox Err.Des
37、cription, vbOKOnly + vbExclamation, “操作数据库出错 交易失败“CmdSellBook.Enabled = TrueEnd Sub8.5.3 系统模块详解模块名:checkGYSID模块原型:Public Function checkGYSID(UID As String) As Boolean代码:Public Function checkGYSID(UID As String) As BooleanDim userDB As DatabaseDim userRD As RecordsetDim dbName As StringDim STRSQL As
38、StringScreen.MousePointer = 11On Error GoTo errEnd29dbName = App.PathIf Right(dbName, 1) 0 Then关闭数据库userRD.CloseSet userRD = NothinguserDB.CloseSet userDB = NothingcheckGYSID = TrueScreen.MousePointer = vbDefaultElse关闭数据库userRD.CloseSet userRD = NothinguserDB.CloseSet userDB = NothingScreen.MousePoi
39、nter = vbDefaultcheckGYSID = FalseEnd IfExit FunctionerrEnd:Screen.MousePointer = vbDefaultMsgBox Err.Description, vbOKOnly + vbExclamation, “创建类别“Err.Clear关闭数据库userRD.CloseSet userRD = NothinguserDB.CloseSet userDB = NothingEnd Function模块名:checkFenLei模块原型:Public Function checkFenLei(UID As String) As Boolean