《VB设计说明书》doc版.doc_第1页
《VB设计说明书》doc版.doc_第2页
《VB设计说明书》doc版.doc_第3页
《VB设计说明书》doc版.doc_第4页
《VB设计说明书》doc版.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要本文档介绍了基于VB6.0+ADO+ACCESS的图书信息管理系统的实现方法。该系统针对目前一些中小型图书馆采用手工的方式管理,劳动强度大、图书资源不能充分发挥作用的问题而设计。通过合理地使用本系统,用户可以轻松地完成图书信息的入库、更正、读者的录入、注销和修改,并能处理书籍出借、归还等操作,用户还能对图书信息、读者信息、图书出借情况等进行查询。该系统的开发及应用为图书管理提供了灵活、方便、安全的管理工具。关键词:VB6.0,数据库,信息管理一、选题背景1.1、图书馆信息化管理的必要性1.1.1、学校中小型图书馆普及的需要:随着学校基本硬件条件的提高,现在绝大多数中小学校都有了自己的图书馆。图书馆管理的信息化可以减少人力资源的浪费,可以使少量的人员就可以承担好图书馆的日常工作的任务。1.1.2、进一步提高图书馆工作服务质量,充分发挥图书资源优势的需要:目前,一些中小规模的图书馆还是继续采用借书证图书卡片手工登记操作的方式进行管理。工作人员在日常工作中要面对图书、读者等枯燥资料的大量重复操作,并且靠手工进行有关数据的统计很困难,而且在实际工作中会由于人工处理的疏漏、不慎造成一定的问题,整体上讲,原始的图书管理方法一定程度上导致了工作效率无法进一步提高。为了能更好的为教育服务,把握好学生们的需求,做好服务工作,图书管理的信息化是一条切实可行的改革之路。1.1.3、数据可维护性、安全性的需要:原始的手工管理图书馆的方式,要整理图书馆的图书、读者、进出库信息都相当困难,而且手写的数据一旦被毁,要重新整理就相当不容易。图书管理的信息化,可以使有关数据的统计可以轻松、精确实现,而且数据的备份、恢复也很容易,只要有良好的操作习惯,遇到怎样的数据灾难都可以从容应对。1.2、图书馆信息化管理技术上的可行性1.2.1、硬件平台的条件容易被满足:计算机硬件技术的飞速发展使计算机的硬件不再昂贵,即使是大部分乡下的普通中小学也同样可以承担这项费用。1.2.2、图书信息简易管理的软件编制难度也降低:随着编程工具不断的推陈出新、更新换代,利用新的编程语言,借助于可视化编程技术、高效的数据库处理工具,编制信息管理系统的难度也有所降低,再也不会像以前DOS下编程那么艰难,而且软件的调试、维护的成本也会同样降低下来。所以,管理的信息化应该进一步地普及开来,充分地发挥好它的作用,特别是在图书馆这样的信息“中心”。1.3、图书馆信息化管理系统应实现的几个目标:1.3.1、方便信息管理:要让信息能方便地输入系统、更正容易,且易于维护,也要实现信息检索查询方便,基本报表能够提供,提高管理效能的目的。1.3.2、保证数据的有效性:由于图书信息管理系统包含了图书馆的比较重要的信息,因此,在系统设计时除了满足用户需求的同时,也要保证系统数据的有效性:(1)安全性:通过密码的身份验证后才能访问系统的数据,否则就不能进入系统;(2)一致性:系统的数据要保证一致性、准确性,当某一数据库中记录改变,与之相关联的数据库也随之变化。(3)可靠性:由于实际工作中数据量大,必须能对数据快速的进行备份与恢复。二、方案论述2.1、方案选择:从系统开发规模、方向的选择上,图书信息管理系统有分为大型的图书管理系统和小型图书管理系统,前者的特点是支持网络环境,有分服务器、客户端,能够支持海量的数据存储、处理的信息管理系统;后者的特点是单机的,数据量不太大的信息管理系统。考虑到这个程序是提供给中小型的图书馆进行信息管理用的,并没有要求网络环境,所以我选择编制小型的图书信息管理系统。2.2、数据库格式的选择:我们最熟悉的是应用非常广泛的DBF数据库,使用相当简单,性能还可以,但是每个Table或Index都是一个独立的文件,数据库变大、Table表多了后,管理上就不太方便,最关键的是其安全性较差。而微软的Access数据库则不同了,所有的表、文件都被整合在一个.mdb文件中,这样就有利于管理。同时它还提供密码保护功能,安全性比DBF数据库要好得多。Access数据库还擅长于对多媒体数据的支持,在对图像、声音等对象进行处理时,比DBF数据库强很多。综上考虑,为了有利于管理、提高数据安全性、我在数据库格式上选择了Access(选用这个格式也有利于将来程序的进一步开发,因为程序最好也能处理一些多媒体信息,主要是图片,如读者照片、图书封面等。)2.3、编程语言的选择:数据库支持是VB6.0的强项之一,VB6.0支持BDE、ADO、InterBase等多种数据库访问方式,并提供有丰富的数据库操作控件。尤其是它对微软的ADO技术支持得非常好,并将其封装成ADO控件集,同时也提高了开发ADO数据库应用程序的效率。另外,VB6.0还封装了可视化控件库,使得程序界面可以轻松维护,VB6.0的编译器的速度很快,在日常编程效率上会较有优势,所以我选用VB6.0语言这个工具来进行这个毕业设计。2.4、本方案的特点:本管理系统是采用VB6.0编程语言,基于Access数据库的一个小型的信息管理系统,该系统可以基本满足中小型图书馆的信息管理工作要求。2.5、运行环境:硬件环境:CPU:400M PentiumII以上。内存:128M以上。硬盘可用空间:2G以上。软件环境:操作系统:win98/me/2000/xp三、过程论述:3.1、程序模块、功能分析: 3.1.1、功能模块分析:本课题设计在进行用户需求分析的基础上把系统划分为三大模块(五小模块):信息管理模块(图书管理模块、读者管理模块、借阅管理模块)、信息查询模块,以及数据维护模块。这几个模块之间,紧密结合,共享信息资源,形成一种简洁明了的图书馆信息管理的解决方案。系统功能模块设计的关系结构图:3.1.2、功能描述:本系统具有以下几个功能: 1、信息管理模块包括三个子模块:a:图书管理模块:包括新书入库登记、图书管理 ;b:读者管理模块:包括读者管理(新读者登记、信息更正、读者身份注销);c:借阅管理模块:包括图书出借管理、图书续借管理、图书归还管理、提示超期缴纳罚款的功能;2、信息查询模块:图书信息查询、读者信息查询、借阅信息查询; 3、数据维护模块:数据备份、数据恢复;4、退出系统。在本系统中:一个本借书证最多只能同时借2本书;借书未按期30天归还就算是“超期”,就要罚款,;如果某读者有图书超期未归还,则不能继续借任何书籍。3.2、数据流图:借阅者信息借 书 证借书证档案库图书名/号图书档案库借书证图书名/号图书名/号借书证登记 查 询 借 书 还 书表格打印 学 生图书管理图书名/号图书名/号图书名/号3.2.1、顶层数据流图图书名/号还书库记载还书情况有图书名/号借书证无效、图书名/号记载借书情况有 是否持有借书证?可借书借书库申请借书证 可还书3.2.2、0层数据流图3.3、数据库结构:3.3.1、各表的结构:读者基本信息表:readerinfo字段类型说明关键字读者编号文本读者编号是读者姓名文本读者姓名否读者性别文本读者性别否办证日期日期/时间办证日期否联系电话文本联系电话否工作单位文本工作单位否家庭地址文本家庭地址否图书基本信息表:bookinfo字段类型说明关键字书籍编号文本书籍编号是书籍名称文本书籍名称否类别代码文本类别代码否出版社文本出版社否作者姓名文本作者姓名否书籍价格数字书籍价格否书籍页码文本书籍页码否登记日期日期/时间登记日期否是否借出是/否是否借出否基本设置表:basicset字段类型说明关键字借出册数数字借出册数否罚款数字罚款否图书类型表:booktype字段类型说明关键字类别代码文本类别代码是书籍类别文本书籍类别否借出天数数字借出天数否借阅信息表:lentinfo字段类型说明关键字读者编号文本读者编号是书籍编号文本书籍编号是借书日期日期/时间借书日期是还书日期日期/时间还书日期否超出天数数字超出天数否罚款金额数字罚款金额否3.3.3、数据连接方式:Vb6.0提供了很多的连接数据库的方法,为了方便程序的安装、降低对运行软件环境的要求,考虑到Windows2000开始的Microsoft操作系统都已经封装了ADO,我选择了ADO来连接Access数据库。3.4、程序运行的整体流程图如下: 3.5、模块功能、实现过程说明:3.5.1、新书入库登记模块功能介绍:图书馆的所有新书都在本模块进行登记。登记时,管理人员先给图书编上书号,然后在本模块中按照界面提示依次输入:书号、书名、作者、出版社、价格、备注等信息,点击入库就可以实现新书在的登记功能。新书在入库过程中自动检测图书编号是否重复,并能给予提示,避免了生成重复书号的错误。新书入库流程图如右图所示:新书“保存”按钮的代码如下:Private Sub cmdSave_Click()Set g_rs = g_db.OpenRecordset(SELECT * FROM bookInfo, dbOpenDynaset)添加记录 g_rs.AddNew 设置记录的字段值 g_rs!书籍编号 = txtBookID.Text g_rs!书籍名称 = txtBookName.Text g_rs!类别代码 = Mid(cboType.Text, 1, 1) g_rs!出版社 = txtBookConcern.Text g_rs!作者姓名 = txtWriter.Text g_rs!书籍价格 = txtBookPrice.Text g_rs!书籍页码 = txtPage.Text g_rs!登记日期 = dtpRigDate.Value g_rs!是否借出 = False 保存修改! g_rs.Update Set g_rs = Nothing MsgBox 新书添加完毕, vbOKOnly, 提示End Sub窗体加载时的代码如下:Private Sub Form_Load()dtpRigDate.Value = Date Set g_rs = g_db.OpenRecordset(bookType, dbOpenTable) cboType.Clear If g_rs.RecordCount 0 Then g_rs.MoveFirst Do While Not g_rs.EOF cboType.AddItem g_rs!类别代码 + - + g_rs!书籍类别 g_rs.MoveNext Loop End If Set g_rs = NothingEnd Sub3.5.2、图书管理模块图书馆的所有书籍都在本模块进行管理。在本模块,管理人员可以对书籍的书名、作者、出版社、价格、备注等信息进行维护,保存就可以将信息登记入库,从而实现库存书目的维护功能。代码部分:Private Sub cmdAdd_Click() FrmAddnew.ShowEnd SubPrivate Sub cmdClose_Click()Unload MeEnd SubPrivate Sub cmdDel_Click()Dim strBookID As StringDim intResponse As IntegerDataGrid1.Col = 0strBookID = DataGrid1.TextintResponse = MsgBox(是否真的要删除编号为 + strBookID + 的书籍信息?, vbOKCancel, 提示)If intResponse = vbOK Then g_strSql = select * from bookInfo where 书籍编号= & strBookID & Set g_rs = g_db.OpenRecordset(g_strSql) g_rs.Delete Set g_rs = Nothing Adodc1.Refresh Call Form_Load MsgBox 删除完毕!, vbOKOnly, 提示End If End SubPrivate Sub cmdModify_Click()FrmUpdateBook.ShowEnd SubPrivate Sub Form_Load()strDataSource = select bookInfo.书籍编号,bookInfo.书籍名称,bookType.书籍类别,bookInfo.出版社, _ & bookInfo.作者姓名,bookInfo.书籍价格,bookInfo.书籍页码,bookInfo.登记日期,bookInfo.是否借出 _ & from bookInfo,bookType where bookType.类别代码=bookInfo.类别代码Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & 图书馆查询管理系统.mdb;Persist Security Info=FalseAdodc1.CursorLocation = adUseClientAdodc1.CommandType = adCmdTextAdodc1.RecordSource = strDataSourceAdodc1.RefreshEnd Sub3.5.3、读者管理模块:因为时间关系,为了简单,读者的基本信息在后台数据库中添加、修改和删除。这个模块的实现就不在前台实现了。3.5.4、出借归还管理模块:分为三个部分,借,续借和归还。实现的代码分别如下:1、 正常借书“借出当前图书” 按钮代码Private Sub cmdLendBook_Click()If txtReaderID.Text Then If lblRemain.Caption 0 Then 判断是否已经借满 Set g_rs = g_db.OpenRecordset(lentInfo, dbOpenTable) With g_rs .AddNew .Fields(读者编号) = txtReaderID.Text .Fields(书籍编号) = txtBookID.Text .Fields(借书日期) = dtpLendDate.Value .Update End With Set g_rs = Nothing 更新bookInfo表,设置该书是否借出属性为借出 g_strSql = select * from bookInfo where 书籍编号= & txtBookID.Text & Set g_rs = g_db.OpenRecordset(g_strSql) g_rs.Edit g_rs.Fields(是否借出).Value = True g_rs.Update Set g_rs = Nothing MsgBox 借出完毕!, vbOKOnly, 提示 txtBookID.Text = txtBookName.Text = txtBookPrice.Text = txtBookLeibie.Text = txtBookConcern.Text = txtBookPage.Text = InitDataGrid (False) Else MsgBox 您的书已经借满,不能再借!, vbOKOnly, 提示 End IfElse MsgBox 请先输入读者编号!, vbOKOnly, 提示End IfEnd Sub正常借书时按回车读出读者信息代码:Private Sub txtReaderID_KeyPress(KeyAscii As Integer)判断用户按下回车键并且是否输入读者编号If KeyAscii = 13 And txtReaderID.Text Then 根据输入的读者编号,查找读者姓名 g_strSql = select * from readerInfo where 读者编号= & txtReaderID.Text & Set g_rs = g_db.OpenRecordset(g_strSql) 进行数据库的查询 判断是否找到 If Not g_rs.EOF Then txtReaderName.Text = g_rs!读者姓名 InitDataGrid (False) 初始化DataGrid控件信息 Else MsgBox 没有该读者信息!, vbOKOnly, 提示 txtReaderName.Text = End If Set g_rs = NothingElseIf KeyAscii = 13 And txtReaderID.Text = Then MsgBox 请先输入读者编号, vbOKOnly, 提示End IfEnd Sub2、 续借图书“确 定”按钮代码Private Sub cmdOK_Click() g_strSql = select * from lentInfo where 书籍编号= & txtBookIDRenew.Text & and 读者编号= & txtReaderIDRenew.Text & and 借书日期=# & txtLendDate.Text & # Set g_rs = g_db.OpenRecordset(g_strSql) g_rs.Edit g_rs.Fields(借书日期).Value = dtpLendDateChange.Value g_rs.Update Set g_rs = Nothing Adodc1.Recordset.Update MsgBox 续借完毕!, vbOKOnly, 提示End Sub续借时按回车读出读者信息的代码:Private Sub txtReaderIDRenew_KeyPress(KeyAscii As Integer)判断用户按下回车键并且是否输入读者编号If KeyAscii = 13 And txtReaderIDRenew.Text Then 根据输入的读者编号,查找读者姓名 g_strSql = select * from readerInfo where 读者编号= & txtReaderIDRenew.Text & Set g_rs = g_db.OpenRecordset(g_strSql) 进行数据库的查询 判断是否找到 If Not g_rs.EOF Then txtReaderNameRenew.Text = g_rs!读者姓名 InitDataGrid (True) 初始化DataGrid控件信息 cmdOK.Enabled = True Else MsgBox 没有该读者信息!, vbOKOnly, 提示 txtReaderNameRenew.Text = cmdOK.Enabled = False End If Set g_rs = NothingElseIf KeyAscii = 13 And txtReaderIDRenew.Text = Then MsgBox 请先输入读者编号, vbOKOnly, 提示 cmdOK.Enabled = FalseEnd IfEnd Sub3、 还书“归还图书”按钮代码Private Sub cmdReturn_Click() g_strSql = select * from lentInfo where 书籍编号= & txtBookIDReturn.Text & and 读者编号= & txtReadIDReturn.Text & and 借书日期=# & txtLendDateReturn.Text & # Set g_rs = g_db.OpenRecordset(g_strSql) g_rs.Edit g_rs.Fields(还书日期).Value = txtReturnDate.Text g_rs.Fields(超出天数).Value = txtDayCount.Text g_rs.Fields(罚款金额).Value = txtFakuan.Text g_rs.Update Set g_rs = Nothing g_strSql = select * from bookInfo where 书籍编号= & txtBookIDReturn.Text & Set g_rs = g_db.OpenRecordset(g_strSql) g_rs.Edit g_rs.Fields(是否借出).Value = False g_rs.Update Set g_rs = Nothing txtBookIDReturn.Text = txtBookNameReturn.Text = txtBookPriceReturn.Text = txtBookLeibieReturn.Text = txtBookPageReturn.Text = txtReadIDReturn.Text = txtReaderNameReturn.Text = txtLendDateReturn.Text = txtDay.Text = txtReturnDate.Text = txtFactDay.Text = txtDayCount.Text = cmdReturn.Enabled = False MsgBox 归还完毕!, vbOKOnly, 提示End Sub还书时按回车读出书籍信息的代码:Private Sub txtBookIDReturn_KeyPress(KeyAscii As Integer)Dim strSQL As String判断用户按下回车键并且是否输入读者编号和书籍编号 If KeyAscii = 13 And txtBookIDReturn.Text Then strSQL = select lentInfo.读者编号,readerInfo.读者姓名,lentInfo.书籍编号,bookInfo.书籍价格, _ & bookInfo.书籍名称,bookInfo.书籍页码,lentInfo.借书日期,bookType.书籍类别,bookType.借出天数 _ & from readerInfo,bookInfo,lentInfo,bookType where readerInfo.读者编号=lentInfo.读者编号 _ & and bookInfo.书籍编号=lentInfo.书籍编号 and bookInfo.书籍编号= & txtBookIDReturn.Text & _ & and bookInfo.类别代码=bookType.类别代码 g_strSql = strSQL Set g_rs = g_db.OpenRecordset(g_strSql) If Not g_rs.EOF Then cmdLendBook.Enabled = True txtBookNameReturn.Text = g_rs!书籍名称 txtBookPriceReturn.Text = g_rs!书籍价格 txtBookLeibieReturn.Text = g_rs!书籍类别 txtBookPageReturn.Text = g_rs!书籍页码 txtReadIDReturn.Text = g_rs!读者编号 txtReaderNameReturn.Text = g_rs!读者姓名 txtLendDateReturn.Text = g_rs!借书日期 txtDay.Text = g_rs!借出天数 txtReturnDate.Text = Date txtFactDay.Text = CStr(Date - g_rs!借书日期) If CInt(txtFactDay.Text) - CInt(txtDay.Text) 0 Then txtDayCount.Text = CStr(CInt(txtFactDay.Text) - CInt(txtReturnDate.Text) Else txtDayCount.Text = 0 End If Set g_rs = Nothing g_strSql = strSQL Set g_rs = g_db.OpenRecordset(select * from basicSet) txtFakuan.Text = g_rs!罚款 * CInt(txtDayCount.Text) Set g_rs = Nothing cmdReturn.Enabled = True Else Set g_rs = Nothing MsgBox 没有该书信息!, vbOKOnly, 提示 txtBookNameReturn.Text = txtBookPriceReturn.Text = txtBookLeibieReturn.Text = txtBookPageReturn.Text = txtReadIDReturn.Text = txtReaderNameReturn.Text = txtLendDateReturn.Text = txtDay.Text = txtReturnDate.Text = txtFactDay.Text = txtDayCount.Text = cmdReturn.Enabled = False End If ElseIf KeyAscii = 13 And txtBookIDReturn.Text = Then MsgBox 请先输入书籍编号, vbOKOnly, 提示End IfEnd Sub其他还有一些小的模块及功能,在这里就不一一列举了。四、结果分析通过对本系统的测试,本系统能够提供基本信息的输入、输出、查询以及协助图书出借、归还等各项服务,基本能满足小型图书馆图书信息管理的工作需要。在图书数量在千级别的情况下,系统运行速度是可以接受的。五、结论总结通过努力学习、实践,在多方的支持

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论