1、 VB+图书管理系统的设计与实现(一)图书管理系统的设计与实现目录一、序言 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四、开发环境与项目规划 54.1 开发环境 54.2 项目规划与管理 54.2.1 开发人员安排 54.2.2 开发进度安排 6五、软件界面设计标准
2、与规范 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 数据库物理设计 107.4.1 表、视图汇总 107.4.2 各表、视图设计详解 11八、软件体系结构设计说明书
3、158.1 系统概述 158.2 设计约束 158.3 设计策略 158.4 系统概要设计说明书 168.4.1 图例说明 168.4.2 系统总体结构图 168.5 系统详细设计说明书 178.5.1 系统模块汇总 178.5.2 系统核心模块详解 188.5.3 系统模块详解 28九、用户界面设计报告 429.1 界面设计规范 429.2 系统窗体汇总 429.3 主界面设计 439.4 子界面设计 439.5 界面资源设计 44十、软件测试分析报告 4410.1 测试范围与主要内容 4410.2 测试方法 4410.3 测试报告 4410.4 改进建议与措施 45十一、软件使用说明书 4
4、511.1 软件概述 4511.2 使用说明 4511.2.1 系统登陆 4511.2.2 系统退出 4611.2.3 图书类别管理 4611.2.4 图书信息管理 4811.2.5 查询图书信息 4811.2.6 读者类别管理 4911.2.7 读者信息管理 4911.2.8 查询读者信息 5011.2.9 借书管理 5011.2.10 还书管理 50参考资料 51一、序言图书管理系统的设计与推出是多方面原因促成的,比如学校的图书管理,日常管理工作都是人工操作,历史数据很难保存和利用。而其他的小型图书馆大多如此。针对这种状况,我计划开发一个面向小型图书馆的图书管理系统,实现对人员、物流的全面
5、管理,以帮助这些图书馆早日实现书店管理信息化。为了系统的顺利开发和维护,特编制如下技术文档:二、需求分析说明书2.1 系统介绍本系统定位于小型图书馆,暂时考虑单机环境下的实现;操作系统选择目前常用的 IS 或财务软件,因而数据库的设计与操纵是系统设计的核心。我在 2005 年 6 月至 2005 年 7 月曾经成功完成了“图书管理系统“的开发,具备一定的系统分析与设计能力,熟悉数据库的设计与操纵;因而该系统的实现在技术上是可行的。3.2 时间、设备可能性系统设计与开发工作预计耗时一个星期。实验设备如:计算机。3.3代码工作量预计需 7 天左右。3.4 文档要求依据国家计算机软件产品开发文件编制
6、指南和管理信息系统基础与开发技术的理论与原则编制标准的软件技术文档。四、开发环境与项目规划4.1 开发环境前台开发环境:Microsoft Visual Basic 6.0后台数据库环境:Microsoft Access 2000/20024.2 项目规划与管理11 月 29 日至 11 月 30 日:系统分析,进行需求定义,定义系统概况11 月 1 日至 12 月 2 日:数据库分析与设计12 月 3 日至 12 月 4 日:软件体系结构设计12 月 5 日至 12 月 6 日:软件编码12 月 6 日至 12 月 6 日:系统测试五、软件界面设计标准与规范5.1 编写目的制定界面设计标准规
7、范的目的是为了规范和统一软件界面设计制定软件界面设计标准与规范。5.2 界面设计思想首先考虑标准化,在标准化的基础上进行界面的美工设计。5.3 界面设计原则简单易用、简洁明了、兼容性好、标准、规范。5.4 界面设计样式采用简单的界面.图 1.系统界面六、软件编码设计标准与规范6.1 对象命名约定对象名对象类型命名约定(前缀码)Form 窗体 FormCommand 按钮 CommandLabel 标签 LabelTextBox 文本框 TextBoxComboBox 组合框 ComboBoxListBox 列表框 ListBoxAdodb 数据库访问对象 AdodbDataGrid 数据表格显
8、示组件 DataGridFrame 框架 FrameOption 单选框 OptionCheckBox 复选框 CheckBoxCommonDialog 通用对话框组件 CommonDialogMenu 菜单 Menu6.2 结构化编码约定编码应清晰、可读性好,运用缩进、空行,结合大小写区别等方法保持程序结构良好。凡与数据库操作相关的模块一律加上容错代码,涉及多表操作的模块应运用“事务” 处理,以保持数据完整性。编码风格参照下例进行:Private Sub cmdCancel_Click()设置全局变量为 false不提示失败的登录LoginSucceeded = FalseMe.HideEn
9、d SubPrivate Sub cmdOK_Click()检查正确的密码If txtPass1.Shoe+End”End IfEnd Sub6.3 数据源的约定需用数据源的组件如:DataGrid 一律采用 Adodb 控件。有特殊需求的情况如:身份验证应引用 DAO(数据访问对象 )。6.4 数据库访问约定数据库引擎采用 Microsoft.Jet.OLEDB.4.0,由 Adodb 组件进行数据库的访问,并为其他组件提供数据源。特殊情况、身份验证等由 DAO 访问数据库。6.5 其他约定无需数据显示的情况由 DAO 提供数据库支持,有数据显示的情况由 ADODB 组件提供数据库支持。七、
10、数据库分析与设计7.1 数据库环境说明考虑该系统的定位与现有技术力量,决定采用 Microsoft Access 2000/2002 作为系统的后台数据库开发环境。7.2 数据库命名标准与规范说明:下表所列为数据库及各表的命名方法,具体信息请参阅 7.4.1表、视图汇总。名称类型命名办法约定Db1 系统数据库字母表基本表汉字或字母查询查询汉字字段字段汉字或字母7.3 数据库逻辑设计图 4.数据库逻辑结构图7.4 数据库物理设计7.4.1 表视图/表名类型说明dzlb 基本表读者类别信息dzxx 基本表读者信息jyxx 基本表借阅信息sjxx 基本表书籍信息tslb 基本表图书类别信息7.4.2
11、 各表设计详解说明 :空缺位置表示无要求,主键在约束栏注明。基本表:dzlb字段类型长度格式约束种类名称文本 50 主键借书数量数字长整型借书期限数字长整型有限期限备注基本表:dzxx字段类型长度格式约束读者姓名文本 50 主键读者编号文本 50 主键性别文本 2读者类别文本 50工作单位文本 50家庭住址文本 50电话号码文本 12登记日期日期/时间已借书数量数字长整型基本表:jyxx字段类型长度格式约束借阅编号自动编号长整型主键读者编号文本 50读者姓名文本 50书籍编号文本 50书籍名称文本 50出借日期日期/时间还书日期日期/时间基本表:sjxx字段类型长度格式约束图书编号文本 50
12、主键书名文本 50类别文本 50作者文本 250出版社文本出版日期日期/时间登记日期日期/时间是否被借出文本 2基本表:tslb字段类型长度格式约束类别名称文本 50 主键类别编号文本 50八、软件体系结构设计说明书8.1 系统概述在单机环境下进行系统安全的考虑,有必要进行用户权限的划分与控制,因而系统在总体上应包含安全子系统之下的各类用户工作环境。用户权限的合理划分与有效控制是本系统体系结构设计的核心。8.2 设计约束系统将实现人员、物流的全面管理,而物流管理是系统的核心部件,怎样实现二者的共存,互不干扰,是本系统设计的难点。本系统必须实现对用户权限的有效合理控制。8.3 系统概要设计说明书
13、8.3.1 图例说明1.处理过程:2.数据流:(单向)3.数据流:(双向)8.3.2 系统总体结构图图 10.系统总体结构图8.3.3 图书管理流程图图 11. 图书管理流程图8.3.4 读者管理流程图图 12. 读者管理流程图8.3.5 图书借阅流程图图 13. 图书借阅流程图8.4 系统详细设计说明书8.4.1 系统核心模块详解全局变量定义:Option ExplicitPublic conn As Neenu As StringPublic userID As StringPublic userpo As StringPrivate Sub cmdCancel_Click()设置全局变量
14、为 false不提示失败的登录LoginSucceeded = FalseMe.HideEnd SubPrivate Sub cmdOK_Click()检查正确的密码If txtPass1.ShosgBox “无效的密码,请重试!”, , “登录”txtPasse+End”End IfEnd Sub b窗体名:Form1代码:Private Sub A11_Click()Form2.Sho3.Sho4.Sho5.Sho6.Sho7.Sho4.Sho9.Sho10.Sho2代码:Private Sub Command1_Click()On Error GoTo command1errorComm
15、and2.Enabled = FalseCommand3.Enabled = FalseCommand1.Enabled = FalseCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomand1error:MsgBox Err.DescriptionEnd SubPrivate Sub Command2_Click()On Error GoTo Command2Command1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = FalseCommand1.E
16、nabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomand2:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command3_Click()Dim ansmand3erroransation, “DataGrid1.Allomand3error:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command4_Click()If
17、 Not IsNull(DataGrid1.Bookmark) ThenDataGrid1.RefreshEnd IfCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand5.Enabled = FalseCommand4.Enabled = FalseDataGrid1.Alloation, “End SubPrivate Sub Command5_Click()DataGrid1.RefreshDataGrid1.Allomand2.Enabled = TrueCommand1.Enabled
18、 = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseEnd SubPrivate Sub Form_Load()Command4.Enabled = FalseDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseIf userpoe2.Enabled = FalseEnd IfExit Subloaderror:MsgBox Err.DescriptionEnd SubP
19、rivate Sub Form_Unload(Cancel As Integer)Set DataGrid1.DataSource = NothingEnd Sub窗体名:Form3代码:Private Sub Command1_Click()Command1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomand1error:MsgBox Err.DescriptionEnd SubPrivat
20、e Sub Command2_Click()On errror GoTo Command2Command1.Enabled = FalseCommand3.Enabled = FalseCommand2.Enabled = FalseCommand1.Enabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomand2:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command3_Click()Dim ansmand
21、3erroransation, “DataGrid1.Allomand3error:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command4_Click()If Not IsNull(DataGrid1.Bookmark) ThenDataGrid1.RefreshEnd IfCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = Fa
22、lseDataGrid1.Alloation, “End SubPrivate Sub Command5_Click()DataGrid1.RefreshDataGrid1.Allomand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseEnd SubPrivate Sub Form_Load()Command4.Enabled = FalseDataGrid1.Alloe2.Enabled = FalseEnd IfExi
23、t Subloaderror:MsgBox Err.DescriptionEnd SubPrivate Sub Form_Unload(Cancel As Integer)Set DataGrid1.DataSource = NothingEnd Sub窗体名:Form4代码:Private Sub Command1_Click(Index As Integer)Dim sql As StringIf Check1.Value = vbChecked Thensql = “书名” Trim(Text1.Text “ “) “End IfIf Check2.Value = vbcheckde T
24、henIf Trim(sql) = “ Thensql = “类别=“ Trim(Combo1.Text “ “) “Elsesql = sql “and 书名=“ Trim(Combo1.Text “) “End IfEnd IfIf Check3.Value = vbcheckde ThenIf Trim(sql) = “ Thensql = “作者=“ Trim(Text2.Text “ “) “Elsesql = sql “and 作者=“ Trim(Text2.Text “ “) “End IfEnd IfIf Check4.Value = vbChecked ThenIf Trim
25、(sql) = “ Thensql = “出版社=“ Trim(Text3.Text “ “) “Elsesql = sql “and 出版社=“ Trim(Text3.Text “ “) “End IfEnd IfIf Check5.Value = vbChecked ThenIf Trim(sql) = “ Thensql = “书籍编号=“ Trim(Text4.Text “ “) “Elsesql = sql “and 书籍编号=“ Trim(Text4.Text “ “) “End IfEnd IfIf Trim(sql) = “ “ ThenMsgBox “请选择查询方式!”, v
26、bOKOnly + vbExclamationExit SubEnd IfAdodc1.RecordSource = “select * from sjxx p; sqlAdodc1.RefreshDataGrid1.Allomand2_Click()Unload MeEnd SubPrivate Sub Command3_Click()If Trim(book_num) = “ ThenMsgBox “请选择要借阅的图书!”, vbOKOnly + vbExclamationExit SubEnd IfIf panduan = “是” ThenMsgBox “此书已被借出!”, vbOKOn
27、ly + vbExclamationExit SubEnd IfForm9.Sho = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark)panduan = DataGrid1.Columns(7).CellValue(DataGrid1.Bookmark)End IfEnd SubPrivate Sub Form_Load()Dim i As IntegerDim sql As StringCombo1.ClearAdodc2.Recordset.MoveFirstFor i = 0 To Adodc2.Recordset.RecordCou
28、nt - 1Combo1.AddItem Adodc2.Recordset.Fields(0).ValueAdodc2.Recordset.MoveNextNextCombo1.ListIndex = 0End Sub窗体名:Form5代码:Private Sub Command1_Click()On Error GoTo command1errorCommand2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomanderror:MsgBox
29、 Err.DescriptionEnd SubPrivate Sub Command2_Click()On Error GoTo Command2Command1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomand2:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command3_Click()Dim an
30、smand3erroranssgBox(“确定要删除吗?”, vbYesNo, “)If ansoveNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd IfDataGrid1.RefreshMsgBox “成功删除!”, vbOKOnly + vbExclamation, “DataGrid1.Allomand3error:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command4_Click()If Not IsNu
31、ll(DataGrid1.BackColor) ThenDataGrid1.RefreshEnd IfCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseMsgBox “操作成功!”, vbOKOnly + vbExclamation, “End SubPrivate Sub Command5_Click()DataGrid1.RefreshDataGrid1.Allomand2.Enabled = TrueCom
32、mand1.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseEnd SubPrivate Sub Form_Load()Command4.Enabled = FalseDataGrid1.Alloe2.Enabled = FalseEnd IfExit Subloaderror:MsgBox Err.DescriptionEnd Sub窗体名:Form6代码:Private Sub Command1_Click()On Error GoTo commanderrorComm
33、and2.Enabled = FalseCommand3.Enabled = FalseCommand1.Enabled = FalseCommand4.Enabled = TrueCommand5.Enabled = TrueDataGrid1.Allomand1error:MsgBox Err.DescriptionEnd SubPrivate Sub Command2_Click()On Error GoTo Command2Command1.Enabled = FalseCommand3.Enabled = FalseCommand2.Enabled = FalseCommand4.E
34、nabled = TrueCommand5.Enabled = TrueCommand1.Enabled = TrueDataGrid1.Allomand2:If Error.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command3_Click()Dim ansmand3erroransation, “DataGrid1.Allomand3error:If Err.Number 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command4_Click()
35、If Not IsNull(DataGrid1.Bookmark) ThenDataGrid1.RefreshEnd IfCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseDataGrid1.Alloation, “End SubPrivate Sub Command5_Click()DataGrid1.Refre 唐任仲 编著. 化学工业出版社. 1999.5Visual Basic 6.0 中文版 参考详解 李怀明 等著. 清华大学出版社. 1999.11Visual Basic 6.0 高级编程技巧 李善茂 等著. 电子工业出版社. 1999.5Visual Basic 6.0 中文版 提高与应用 谭浩强 主编. 电子工业出版社. 1999.11