首页 计算机毕业论文

计算机毕业论文

举报
开通vip

计算机毕业论文计算机毕业论文 随着人类社会的发展,人类对知识的需求也不断地增长。在这种 形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书 馆就自然而然地在人们的生活中占据了一定的位置,这次毕业设计, 我以我所在的学校图书馆为开发背景,设计这个图书管理系统,从图 书的入库登记到查询浏览,从借书证发放到图书的借阅,形成了一个 整体自动化管理模式,改善了我校图书馆的管理。本文介绍了在Visual Basic6.0环境下采用“自上而下地总体规划,自下而上地应用开发”的策 略开发本系统的详细过程,提出实现图书馆信息管理、资...

计算机毕业论文
计算机毕业 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 随着人类社会的发展,人类对知识的需求也不断地增长。在这种 形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书 馆就自然而然地在人们的生活中占据了一定的位置,这次毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 , 我以我所在的学校图书馆为开发背景,设计这个图书管理系统,从图 书的入库登记到查询浏览,从借书证发放到图书的借阅,形成了一个 整体自动化管理模式,改善了我校图书馆的管理。本文介绍了在Visual Basic6.0环境下采用“自上而下地总体规划,自下而上地应用开发”的策 略开发本系统的详细过程,提出实现图书馆信息管理、资源共享的基 本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和 功能设计,从图书的入库登记到查询浏览,从借书证发放到图书的借 阅,形成了一个整体自动化管理模式,从软件工程的角度进行了科学 而严谨的阐述。 【关键词】图书管理、借阅、浏览、Visual Basic I 燕山大学本科生毕业设计(论文) 前 言 ............................................ 1 第1章 绪论 ...................................... 2 第1.1节 MIS系统开发简介及开发过程 ............... 2 第1.2节 图书管理系统 ............................. 4 第2章 应用系统开发工具........................... 6 第2.1节 VB语言的特点 ............................ 6 第2.2节VB中的基本概念........................... 6 第3章 数据库理论基础 ........................... 11 第3.1节 ACCESS简介 .............................. 11 第3.2节 数据库组件及连接介绍 .................... 14 第4章 图书管理系统设计分析 ...................... 14 第4.1节 应用需求分析 ............................ 14 第4.2节 系统各功能模块设计 ...................... 16 第4.3节 数据流图 ................................ 17 第5章 数据库设计 ............................... 21 第5.1节 数据库需求分析 .......................... 21 第5.2节 数据库逻辑结构设计 ...................... 22 第6章 图书管理系统应用程序设计 .................. 27 第6.1节 窗体的结构 .............................. 27 第6.2节 用户登录窗体的实现 ...................... 27 第6.3节 图书查询功能的实现 ...................... 30 第6.4节 借阅者服务模块的实现 .................... 35 II 燕山大学本科生毕业设计(论文) 第6.5节 借阅者登录功能的实现 .................... 36 第6.6节 借阅者借阅情况功能的实现 ................ 40 第6.7节 工作人员图书借阅、归还模块的实现 ........ 41 第6.8节 管理员服务模块的实现 .................... 51 第6.9节 图书馆管理员管理工作人员和借阅者管理功能的 实现 ............................................ 56 第6.10节 图书馆管理员修改图书管理功能的实现 ..... 59 第6.11节 图书馆身份维护功能的实现 ............... 64 结论 ............................................ 69 参考文献 ........................................ 70 致 谢 .......................................... 71 III 燕山大学本科生毕业设计(论文) 随着社会的发展,人们对知识的需求也不断地增长。在这种形势 下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就 自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书 馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此, 开发一套完善的图书馆管理系统就成不可少了。 管理信息系统(简称MIS)是介于信息论,经济管理理论,统计学 与运筹学及计算机科学之间的一门边缘性,综合性,系统性的交叉科 学,它是随着管理科学,信息技术,计算机技术等的发展而产生和发 展起来的。 图书馆管理系统是典型的信息管理系统,其开发主要包括后台数 据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要 求建立数据的一致性和完整性,对于后者则要求应用程序功能的完备, 易用等的特点。基于上述考虑本系统主要利用Visual Basic作前端的应用开发工具 ,利用ACCESS 2000 作为后台的数据库,利用WINDOWS作为系统平台开发的图书管理系统。 1 燕山大学本科生毕业设计(论文) 管理信息系统的开发方法有生命周期法、原型法和面向对象的开 发方法等: 生命周期法(Life Cycle Method)是20世纪60年代发展起来的一种应用广泛且比较成熟的管理系统开发方法,它的基本思想是将系统 的开发工作从开始到结束划分为若干个阶段,每个阶段都有明确的任 务,而系统开发出来后,并不意味着生命周期的结束,而意味着根据 组织的需要对系统的修改和重建的开始。 原型法(Prototyping Method)是20世纪80年代发展起来的,旨在改变生命周期法的缺点的一种系统开发方法,该法的开发思路是首先 根据用户的要求,由用户和开发者共同确定系统的基本要求和主要功 能,利用系统快速生成工具,建立一个系统模型,再在此基础上与用 户交流,将模型不断补充、修改、完善,如此反复,最终直至用户和 开发者都比较满意为止,从而形成一个相对稳定、较为理想的管理信 息系统。 面向对象(Object Oriented)的开发方法于20世纪80年代开始兴 起的,是一种基于问题对象的自底向上的一种系统开发方法,这种方 法的特点是以对象为基础,对象是分析问题和解决问题的核心。 一个MIS系统的开发过程一般包括如下几个步骤: (1)需求分析:需求分析主要是了解用户的需求。需求了解得越 详细,程序的后期开发与维护费用就会越少。一般的开发团队中,需 2 燕山大学本科生毕业设计(论文) 求分析都是由资历较深的系统分析员或项目经理担当,可见它的重要 性。需求分析制订好后,需要反复修改。将最后的结果交给用户审定, 确认无误后,由系统分析员完成需求分析文档,再开始下一步工作。 (2)概要设计:概要设计紧跟在需求分析之后。用户需求明确后, 将得到的数据分析后,开始构建数据库的逻辑结构。此时,数据库中 的表格还未成形,通过各种分析工具画出数据流图,最后就可抽象出 数据库的具体表结构。这时由系统分析人员反复审核,确认所有的需 求都考虑在内,没有遗漏后,就可以开始制订概要设计文档。概要设 计文档形成后,整个程序的逻辑框架也就形成了。 (3)详细设计:概要设计完成后,根据设计中制订的业务模块。 就可以进行详细分析设计了。详细设计就是将各个业务模块的窗口全 部建好,各个窗口控件的处理代码全部用语言表达出。所以详细设计 是整个系统中最繁琐的环节。详细设计完成后,整个程序就确定了, 再由编程人员根据详细设计文档将代码完成。整个开发工作就宣告结 束。 程序编码相对于其他环节来说比较简单,程序员只需要根据详细 分析文档写程序编码,保证代码没有错误即可。程序编码需要注意的 是整个程序书写中命名的 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 化与编程风格的规范化,这需要较长时 间的培养来形成。需要在不断的实践中形成自己独特的风格。总的来 说,不要过分地追求复杂的算法,因为那可能会导致后期维护人员无 法读懂你的代码而造成维护的困难。 (4)测试:程序编码完成后,就需要测试。测试有几种类型,主 要是测试代码有无逻辑错误以及在加载数据环境下程序的稳定性问 题。测试工作中发现的错误应及时改正,然后将它记录到测试文档中。 (5)打包:测试完成,确认无误后。程序就可以打包发行了。 3 燕山大学本科生毕业设计(论文) 以上是一个完整的MIS系统开发过程,其实不仅MIS系统,其他 类型的程序开发也基本相同。 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理, 这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处 在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高 了工作效率,而且大大的提高了其安全性。 尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计 算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系 统管理的前提。本系统就是为了管理好图书馆信息而设计的。 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多, 包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使 用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对 信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图 书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实 等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借 阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错; 由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范 的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理, 没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发 的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图 4 燕山大学本科生毕业设计(论文) 书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多, 图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书 证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员 也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多 的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前 的图书进行更改就更加困难了。 基于这此问题,有必要建立一个图书管理系统,使图书管理工作 规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的 速度和准确性,能够及时、准确、有效的查询和修改图书情况。 如果要完成一个完整的图书管理系统,需要的相关信息很多。由 于种种条件的限制,同时考虑到开发成本,所以本系统仅实现基本的 管理功能。并不能完全满足上面例子所描述的图书馆,使用前应进行 二次开发。 绪论部分对MIS应用系统的结构、开发进行了简要介绍,分析了 图书管理信息系统设计的特点和任务。 第三章介绍了数据库的设计,并系统介绍了ACCESS语言。 第四章对系统介绍了Visual Basic编程技术、ACCESS语言在Visual Basic 6.0中的应用。 第五章分析了图书管理系统的应用需求,设计了系统的数据库结 构,并根据需求对系统功能进行了划分和细化。 第六章根据以上的设计介绍利用ACCESS数据库和Visual Basic 5 燕山大学本科生毕业设计(论文) 6.0进行了具体的应用程序设计。 总结部分介绍了设计体会和编程的感想,并指出了系统设计中的 不足和需改进的方向。 VB VB提供了可视化的编程工具。利用VB的工具箱,可以在窗体上像画图一样“画”出各种对象,而不用编写任何代码。这其实是VB 最显著的特点。而且程序采用“事件驱动”方式,即程序的执行是由 [1]事件来驱动的,执行的顺序由用户决定。这样,对于程序员来说,只需要分别编写出在某个对象上发生的某一事件时要执行的代码即 可。VB的数据访问特性允许对包括Microsoft sql server和其他企业数据库在内的大部分数据库格式建立数据库和前端应用程序另外通过 ActiveX技术可以使用其他应用程序提供的功能[2]。 2.2.1窗体 也即是未来应用程序的窗体。指VB为程序设计人员提供的可供设 计应用程序的界面或各种对话框的窗口。 6 燕山大学本科生毕业设计(论文) 2.2.2控件 可放置在窗体上的对象,也就是应用程序运行时出现在窗口中的内 容。 2.2.3对象 对象是VB程序设计中最基本、最重要的概念,是程序设计的核心。一般情况下,对象是指程序设计人员在编程时可以访问的元素。 在VB中,对象是用来描述组成一个应用程序的所用窗体和控件的一 个通用术语。 所有对象都有两个共同点:一是自己的状态或外观,如果用数据 来表示,这些数据就称为对象的“属性”;二是自己所具有的行为,可 以用代码来实现,这些代码称为对象的“方法”。所以对象是数据和代 码的集合。即对象是既包含数据又包含处理该数据的代码的独立的个 体,是类的实体化。 2.2.4类 类是为描述具有相同特征的对象而引入的。类是用来创建对象的 样板,它包含所创建对象的状态描述和方法定义,而对象只是类的一 个实例。 2.2.5属性 属性是对象的一个基本要素,是用来描述对象的外观特性和所具 有的状态;不同的对象具有不同的属性,当然有时也会出现一些相同 的情况。属性一般用数据来表示。通过修改对象的属性值,就可以控 制对象的外观和状态。 有些属性只在设计时提供,有些属性只在运行时提供。如文本框 控件的MutiLine属性只能在设计时设置,不能在运行时改变;而列表框的ListCount属性只能在运行时提供,属于只读属性。 7 燕山大学本科生毕业设计(论文) 几个常用的属性: Name:设置控件的名称,在程序代码中用来访问控件的属性和方 法。 Appearance:用来表示对象的外观,0表示平面外观,1表示三维外观。 BackColor:设置显示文字或绘制图形时的背景颜色。 ForeColor:设置前景色(画笔的颜色或文本的颜色)。 Font:设置控件上文本的字体、字形和字号。 Caption:在许多不接受输入的控件上设置所显示的文本,如命令 按钮控件的标题和复选框与单选按钮控件旁边显示的字符串。 Text:在接受输入的控件上设置显示的文本,如文本框控件。 Width、Height:设置控件的尺寸。 Left、Top:设置控件左上角的坐标。 Enabled:缺省情况下,这个属性值为True,表示控件可以变为焦点;设置为False则关闭控件。关闭的控件显示为灰色,无法接受用户 的输入。 Visible:将这个属性设置为False时,控件不可见。有时用不可见 的控件保存应用程序内部使用的信息,使用户无法见到该控件或不能 对该控件进行操作。 2.2.6事件 事件就是对象上所发生的事情。在VB中,事件是指由系统预先定义 好的、能够被对象(窗体或控件)识别和响应的动作。不同类型的对 象所能识别的事件是不同的。每个对象的事件是固定的,不能建立新 的事件。 事件可分为“用户事件”和“系统事件”两种类型。所谓用户事 8 燕山大学本科生毕业设计(论文) 件是指由用户通过按键盘上的键或鼠标操作而产生的事件;而系统事 件是指由系统本身产生的事件。如定时器控件的Timer()事件就是典 [3]型的系统事件。 两种最常见的事件是鼠标事件和键盘事件。 常用的鼠标事件有以下几种: Click、DblClick:Click事件在用户单击鼠标按键按下时发生,而 DblClick事件在用户双击鼠标左键时发生。 MouseUp、MouseDown:MouseDown 事件在鼠标键按下时发生, 而MouseUp事件在释放鼠标键时发生。 MouseMove:这个事件在鼠标经过控件时连续发生。 鼠标事件发生的顺序如下: 1.鼠标移动时,连续触发MouseMove事件。 2.用户按下鼠标时,触发MouseDown事件。 3.用户按下鼠标键连续移动时,程序不断收到MouseMove事件。 4.用户放开鼠标键时,触发MouseUp事件。 5.如果按住鼠标左键,则Click事件在MouseUp事件之后立即触发。 6.双击鼠标时,发生下列事件:MouseDown、MouseUp、Click、DblClick和MouseUp。 常用的键盘事件有: KeyDown、KeyUp、KeyDown事件在按键按下时触发,KeyUp事件在键弹起时触发。 KeyPress:实际中,程序并不关心KeyDown和KeyUp事件,而要用KeyPress事件确定按下的是哪个键。KeyPress事件常用于编写文本框的事件处理器,因为这个事件发生在字符键按下和显示在文本框 9 燕山大学本科生毕业设计(论文) 中之前。用这个事件可以抑制某些字母或数字的输入。 Change:Change事件在各种控件的内容改变时触发。Change事件当在文本框控件中输入或删除新字符时产生,当在复选框控件中用户 单击改变其状态时也可产生。 2.2.7事件过程 对象可以接受事件,并对接受的事件做出反应。当事件由用户触 发(如单击鼠标)或由系统触发(如装载窗体)时,对象就会对该事 件做出响应,响应某个事件后所执行的程序代码就是“事件过程”。 在“事件过程”中必须编程控制这些事件的响应方法。因为应用 程序并不决定程序的流程,而是由用户确定的事件决定应用程序的流 程。事件过程只有在事件发生时,系统才会访问它,并且执行事件过 程中的程序代码。没有事件时,整个事件过程处于“停滞”状态,所 以事件过程又可称为“事件驱动程序”。 2.2.8方法 方法就是针对每个控件事先设计好的,不需要编程人员帮助即可 完成的操作。方法隐藏了控件特性的实现细节,是VB提供的专门子程序,用户能做的工作就是按照约定直接调用它们。如在程序中调用 窗体的Cls方法就可以清除窗体,调用它的Hide方法就可以隐藏窗体 常用的方法如下: Clear:告诉控件要放弃它的内容。如果对象是列表框,则Clear方法删除控件中的所有项目。Clear方法也可以用于清除剪切板中的内 容。 Move:所有运行时可见的控件都有Move方法,用于在应用程序代码中调整控件的大小和位置。 AddItem、RemoveItem:这些方法用于操作列表框和组合框控件中 10 燕山大学本科生毕业设计(论文) 的项目。应用程序不必知道项目在控件中如何存放,只要发出AddItem方法,控件就会负责向表中添加插入新项目,这就是使用方法的原因 [4]。 Access Microsoft Access 2000是一种关系型数据库管理系统(RDBMS)。 Access数据库是Microsoft Office 2000套件的Professional版和Developer版的一个组件,不需要单独安装。 与其他关系型数据库一样,MS Access充当“后端”,它的任务是 存储数据。除此之外,通过使用MS Access,用户还可以创建“前端” 或一种对用户友好的、颇受欢迎的数据访问方式。 与SQL Server数据库进行比较,Access数据库具有以下的特点: 功能比较单一,不提供数据发布、分布式事务处理等操作,因此 比Access数据库需要的内存和磁盘资源要少; Access数据库一般用于桌面应用程序,适用于中小型的企业级应 用;Access应用程序的可执行文件为:MSACCESS.EXE,并且该文件 11 燕山大学本科生毕业设计(论文) 的位置与PowPoint、Excel等都在同一个目录下,例如Office 2003,在目录...[Office安装目录]\Office10下可以找到该文件。要运行Access,可以双击文件MSACCESS.EXE,也可以在“开始”菜单上以快捷方式 启动,启动后的界面如下图3?1所示: 图3?1 Access数据库登陆界面图 Access数据库 打开一个已经存在的数据库看看,如下图3?2所示: 12 燕山大学本科生毕业设计(论文) 图3?2 Access数据库运行界面图 Access数据库的对象: 可以看出,Access数据库由七个对象组成:表、查询、窗体、报 表、页、宏以及模块。 数据库中的数据主要存储在“表”中; “查询”帮助用户检索基于某些条件的特定数据; “窗体”帮助用户创建用于输入、修改和操纵数据的用户界面; “报表”以某种格式显示一个或多个表中的数据,数据可以直接从 表中提取,也可以是字段经过某些计算的结果,报表还提供良好的打 印效果; “宏”和“模块”用来计算在应用程序中导航以及打印报表等操作; “页”有提供以浏览器网页的形式查看数据库中的数据。 13 燕山大学本科生毕业设计(论文) ADO组件包含了可以用来访问Microsoft公司的ActiveX Data Objects(ADO)格式数据库的组件。ADO是Micrsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解 决办法。ADO的对象模型是所有数据访问接口对象模型中最简单的一 种。Microsoft公司用来访问ADO数据的应用程序界面技术是OLE DB。 OLE DB是一种底层编程接口,用来访问许多不同类型的数据源,其 中包括消息、文件系统以及其他一些非传统的数据源。OLE DB是一个由Component Object Model(COM)接口组成的集合,用来隐藏创 建数据访问服务过程中的细节。OLEDB提供了访问任何数据资源的方 法,包括相互关联的数据库和相互不关联的数据库、Email和文件系统、文本和图形以及用户定义的数据对象 [5]。 图书管理系统需要满足来自三方面的需求,这三个方面分别是图 书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是 查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工 作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还 书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对 工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、 14 燕山大学本科生毕业设计(论文) 维护。 图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本 人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护 部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借 书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息, 就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特 别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者 的个人隐私。 图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以 需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作 人员可以为图书借阅者加入借书记录或是还书记录。 图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。 本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统 计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、 查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、 添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆 的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由 图书馆工作人员执行,但是,删除某条图书借阅者基本信息记录时, 应实现对该图书借阅者借阅记录的级联删除。 所设计的系统需满足的要求为: (1)设计不同用户的操作权限和登陆方法 (2)对所有用户开放的图书查询 (3)借阅者维护借阅者个人部分信息 (4)借阅者查看个人借阅情况信息 (5)维护借阅者个人密码 15 燕山大学本科生毕业设计(论文) (6)查询及统计各种信息 (7)维护图书信息 (8)维护工作人员和管理员信息 (9)维护借阅者信息 (10)处理信息的完整性 即系统开发的总目标是实现内部图书借阅管理的系统化、规范化 和自动化。 能够对图书进行注册登记,也就是将图书的基本信息(如:书名、 作者、价格等)预先存入数据库中,供以后检索。 能够对借阅人进行注册登记,包括记录借阅人的姓名、地址、电 话等信息。 提供方便的查询方法。如:以书名、作者、出版社、出版时间(确 切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书 检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行 检索;以出版社名称查询出版社联系方式信息。 提供统计分析功能。可以展现出图书类型比例、库存与借出比例。 提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据 库进行修改。 能够对使用该管理系统的用户进行管理,按照不同的工作职能提 供不同的功能授权。 提供较为完善的差错控制与友好的用户界面,尽量避免误操作。 在系统功能分析的基础上,图书借阅管理系统下属三个子系统得 16 燕山大学本科生毕业设计(论文) 到如图所示的系统功能模块图: 图书借阅管理系统 数数数 据据据 输输管 入出理 子子子 系系系 统 统 统 图4?1 图书借阅管理系统功能模块图 (1) 图书基本信息登记/修改: 出版社信息 分类信息 出版社信息图书分类信 图书信息 库 息库 得到完整的图书信息 图书信息库 17 燕山大学本科生毕业设计(论文) 图4?2 图书基本信息登记/修改 说明: 出版社信息人工录入后,存放在出版社信息库中,便于今后 书籍信息的录入以及出版社信息的查询。分类信息由图书馆 进行分类定制,存放在图书分类信息库中,用于图书的分类 管理。登记新书时,当涉及到出版社和分类的填写时,只需 做相应的选择即可,并存放在图书信息库中。 (2) 借阅人基本信息登记/修改 借阅人基本信息 借阅人信息库 图4?3借阅人基本信息登记/修改 说明:录入借阅人基本信息后存放在借阅人信息库中。 (3) 图书查询 图书信息库 查询条件 信息查询 图书查询结果 18 燕山大学本科生毕业设计(论文) 图4?4图书查询 说明:输入查询条件后,检索图书信息库,并反应出查询结果。 (4) 图书统计 统计条图书分类信图书信息库 件 息库 信息统计 图书统计 结果 图4?5 图书统计 说明:根据选择的统计条件,检索图书分类信息库或图书信息 库,并反应出统计结果。 (5)图书借阅 在借 借阅人 图书 在借图书编 信息库 信息库 信息库 号 在借信息图书在借 库修改 状态修改 图书归还处理 19 燕山大学本科生毕业设计(论文) 图4?6 图书借阅 说明:输入借阅人编号,通过检索借阅人信息库,核实借阅人 身份。输入图书编号,通过 检索图书信息库,核实图书信息。进行图书借出处理后,在图 书借阅库中进行登记, 并将借出图书的在借标志设为“是”。 (6)图书归还 图书 借阅人 借阅人编号 图书编号 信息库 信息库 图书信息认借阅人信息认 证 证 图书借出处理 图书在借 状态修改 在借信息 图4?7图书归还 说明:输入图书编号,检索在借信息库,反应出图输借阅情况。 [6]进行归还操作后,修改在图书信息库中。 20 燕山大学本科生毕业设计(论文) 数据库的设计是MIS系统的核心部分,设计数据库,首先要进 行需求分析,然后进行数据库的概念结构设计、逻辑结构设计、数 据库结构实现等步骤。 根据以上的需求分析和数据组织,开始设计数据结构,即根据需 求勾画出实体/关系图(E/R)。在概念上,E/R图代表的是系统需要的数据及其这些数据之间的关系。如图所示的实体/关系图: 借阅人(Member) 图书借阅登记 (Book Loan) 图书基本信息(Book) 图5?1 实体/关系图 从图中可以看出,在这个系统中实际存在的实体:图书和借阅人, 其中借阅人和图书是多对多关系,针对本系统,通过对图书借阅管理 的内容和数据流程分析,设计数据项和数据结构如下: 21 燕山大学本科生毕业设计(论文) (1) 图书基本信息,其数据项有图书编号、图书名称、作者、出 版社等。 (2) 借阅人基本信息,其数据项有借阅人编号、借阅人姓名、电 话等。 (3) 图书借阅登记,其数据项有借阅序号、借阅图书编号、借阅 人编号等。 为了实现图书信息录入的方便性与规范性以及相关的统计功 能,还应增加出版社信息与图书分类信息: (4) 出版社信息,其数据项有出版社编号、出版社名称、地址、 电话等。 (5) 图书分类信息,其数据项有分类编号、分类名称、同一类 型图书数目。 同时针对于本系统的多用户使用特点,增加用户信息表: (6)用户信息表,其数据项有用户名、密码、用户权限。 数据库设计有几个范式,一般要做到的是第三范式,即数据表中 没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即 在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需 要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字 段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应 该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计 算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样, 在程序运行过程中可以减少由于表间互相关联而使用速度降低等问 22 燕山大学本科生毕业设计(论文) 题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入 的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程 序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联 的外键最好是由程序自动生成的主键,这样数据库就比较规范了。 另外,数据表设计时一般都应该有一些标志字段,标志字段可以 定义成CHAR(1)或BIT型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情 况,在程序后来的开发中,可以通过设计标志字段为不同的 值来解决,这样就避免了修改数据库结构。 数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去, 即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩 充。 程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数 据库结构一旦改变,所有与修改的数据表相关的业务都有可能受到影 响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越 改越多,越改越乱,最终导致程序的失败。PB的数据窗口与其他语言 的数据控件不一样,它的很多东西是预编译的。即使你一个模块已经 调试无误,但只要数据库结构改动。相应的模块就一定要重新修改, 否则一定会出问题 [14]。 图书借阅管理系统数据库中各个表的设计结果如下面几个表格所 示。每个表格表示为数据库中的一个表。 表5?1 借阅人基本信息表memberinfo 说明:记录借阅人的基本情况,memberid设为主键、索引。 列名 数据类型 长度 可否为空 注释 Memberid Char 10 Not Null 借阅人编号 23 燕山大学本科生毕业设计(论文) Membername Char 10 Null 借阅人姓名 Phone Char 20 Null 联系电话 表5?2 用户基本信息表people 说明:记录系统用户的用户名、密码与权限,name设为主键。 列名 数据类型 长度 可否为空 注释 name Char 10 Not Null 用户名 password Char 10 Not Null 密码 level char 1 Not Null 权限 表5?3 图书基本信息表bookinfo 说明:记录图书基本信息,bookid设为主键、索引。 列名 数据类型 长度 可否为空 注释 Bookid Char 10 Not null 图书编号 Classname Char 20 Null 图书类别 Title Char 40 Null 图书名称 author Char 20 Null 作者 pub Char 30 Null 出版社 bookonloan Char 1 Null 图书在借标志 表5?4 分类信息表bookclass 说明:记录定制的分类情况,classid设为主键。 列名 数据类型 长度 可否为空 注释 24 燕山大学本科生毕业设计(论文) Classname Char 20 Null 分类名称 表5?5 借阅情况信息表loan 说明:进行借阅的登记,loanid设为主键、自动增长。 列名 数据类型 长度 可否为空 注释 Bookid Char 10 Not Null 图书编号 memberid Char Not Null 10 借阅人编号 Loandate date Null - 借阅日期 (1) 规划有效的索引[15] ?.在组合表的列中创建索引,包括主关键字和外部关键字所在的 列。 ?.在列或类组合中创建唯一的索引能增强唯一性。 ?.浏览索引并卸载不使用的索引。索引需要一定硬盘空间和时间 来维护。具有较高数据插入操作频率的数据库最好不要索引。有较高 读操作频率的数据库应该有更多的索引。 ?.避免在簇索引中包括不必要的列。在可能的情况下,使用较小 的数据类型,例如用varchar替代char。 ?.考虑使用簇索引来支持排序和范围化查询。在为数据检索优化 表时,簇索引必须支持数据的分组索引。为簇关键字选择列或列 组,簇关键字以经常需要的顺序排序数据或以必须被一起访问的 记录而分组记录。 ?.创建支持一般查询的查找参数索引。具有高选择性的列是索引 的最好候选列。具有高密度的列是索引糟糕的候选列。 25 燕山大学本科生毕业设计(论文) (2)使用约束实现数据的完整性 PRIMARY KEY约束在表中定义了主关键字,它是行唯一的 标识符,它可以强制实体完整性。在使用PRIMARY KEY约束时考虑以下事实: ?.每个表只能有一个PRIMARY KEY约束。 ?.键入的值必须是唯一的。 ?.不允许有空值。 ?.PRIMARY KEY约束在指定的列创建唯一的索引,可以指定簇 索引和非簇索引(如果非簇索引先前并不存在,簇索引是默认的)。 UNIQUE约束指定,在一列中的两行不能有相同的值。该约 束使用唯一的索引来强制实体的完整性。在已有一个主关键字时 UNIQUE约束很有用,例如雇员号,但是必须保证其他标识符(例 如,雇员驾驶证号)也是唯一的。在使用UNIQUE约束时,考虑以下事实; ? 允许有空值。 ? 在一个表中可以设置多个UNIQUE约束。 ? 可以将UNIQUE约束运用于具有唯一值的单列或多列,但不能 用于表的主关键字。 ? 通过指定的列组中创建唯一的索引,可以使UNIQUE索引得到。 26 燕山大学本科生毕业设计(论文) 结构如下图所示用菜单实现以下结构的逻辑先后顺序: 图6?1 窗体结构图 本窗体是为三种不同的用户(一般用户,工作人员,管理员)提 供选择以进入不同的模块,满足不同用户的需求。登陆界面及源代码 如下: 图6?2 登陆界面图 27 燕山大学本科生毕业设计(论文) Option Explicit Dim cnt As Integer Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(txtuser.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else sql = "select * from 系统管理 where 用户名='" & txtuser.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else If Trim(rs_login.Fields(1)) <> Trim(txtpwd.Text) Then MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus Else If Trim(Combo1.Text) = "" Then MsgBox "请选择权限", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else 28 燕山大学本科生毕业设计(论文) If Trim(rs_login.Fields(2)) <> Trim(Combo1.Text) Then MsgBox "您选择的用户权限错误", vbOKOnly + vbExclamation, "" Combo1.SetFocus End If If Trim(rs_login.Fields(2)) = Trim(Combo1.Text) Then If Combo1.Text = "system" Then Unload Me form1.Show Else rs_login.Close Unload Me Form2.Show End If End If End If End If End If End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub 29 燕山大学本科生毕业设计(论文) Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=book.mdb" conn.Open connectionstring cnt = 0 Combo1.AddItem "system" Combo1.AddItem "guest" End Sub 在本系统中,任何人都有权限使用查询功能,不做任何限制。由 于实现的查询功能有多种,如按图书编号、图书名称等字段进行完全 匹配查找和部分匹配的模糊查找,还有按多个条件进行逻辑与或是逻 辑或的多条件查找。其中实现的方法都差不多,界面及代码如下: 30 燕山大学本科生毕业设计(论文) 图6?3 图书查询功能界面 代码: Option Explicit Dim panduan As String Private Sub Command1_Click() Dim rs_findbook As New ADODB.Recordset Dim sql As String If Check1.Value = vbChecked Then sql = "书名='" & Trim(Text1.Text & " ") & "'" End If If Check2.Value = vbChecked Then If Trim(sql) = "" Then sql = "类别='" & Trim(Combo1.Text & " ") & "'" 31 燕山大学本科生毕业设计(论文) Else sql = sql & "and 书名='" & Trim(Combo1.Text & " ") & "'" End If End If If Check3.Value = vbChecked Then If Trim(sql) = "" Then sql = "作者='" & Trim(Text2.Text & " ") & "'" Else sql = sql & "and 作者='" & Trim(Text2.Text & " ") & "'" End If End If If Check4.Value = vbChecked Then If Trim(sql) = "" Then sql = "出版社='" & Trim(Text3.Text & " ") & "'" Else sql = sql & "and 出版社='" & Trim(Text3.Text & " ") & "'" End If End If If Check5.Value = vbChecked Then If Trim(sql) = "" Then sql = "书籍编号='" & Trim(Text4.Text & " ") & "'" Else sql = sql & "and 书籍编号='" & Trim(Text4.Text & " ") & "'" End If End If 32 燕山大学本科生毕业设计(论文) If Trim(sql) = "" Then MsgBox "请选择查询方式!", vbOKOnly + vbExclamation Exit Sub End If sql = "select * from 书籍信息 where " & sql rs_findbook.CursorLocation = adUseClient rs_findbook.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False Set DataGrid1.DataSource = rs_findbook 'rs_findbook.Close End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Command3_Click() If Trim(book_num) = "" Then MsgBox "请选择要借阅的图书!", vbOKOnly + vbExclamation Exit Sub End If If panduan = "是" Then MsgBox "此书已被借出!", vbOKOnly + vbExclamation 33 燕山大学本科生毕业设计(论文) Exit Sub End If frmborrowbook.Show End Sub Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) book_num = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark) panduan = DataGrid1.Columns(7).CellValue(DataGrid1.Bookmark) End Sub Private Sub Form_Load() Dim rs_find As New ADODB.Recordset Dim sql As String sql = "select * from 图书类别" rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic rs_find.MoveFirst If Not rs_find.EOF Then Do While Not rs_find.EOF Combo1.AddItem rs_find.Fields(0) rs_find.MoveNext Loop Combo1.ListIndex = 0 End If rs_find.Close 34 燕山大学本科生毕业设计(论文) End Sub 借阅者服务窗体的功能主要是图书的查询,个人借阅情况查看及 个人部分信息的修改。界面图如下: 图6?4 借阅者服务界面图 代码如下: Private Sub exit_sys_Click() frmexitsystem.Show End Sub Private Sub find_reader_info_Click() frmfindreader.Show End Sub 35 燕山大学本科生毕业设计(论文) Private Sub find_book_info_Click() frmfindbook.Show End Sub Private Sub change_pwd_Click() frmchangepwd.Show End Sub 在主登陆界面中有选择登陆身份的选择,会根据数据库中的信息 匹配登陆者的输入,以选择需打开的界面从而限制登录的权限,这个 功能的实现与工作人员和管理人员登录功能实现的方法大致一样,并 且还要简单。是从User表中查到借阅证号与密码,看与用户输入的是 否一致。如果一致,那么用户就可查看自已的借阅情况并维护自己的 部分信息。登陆界面和代码如下: 36 燕山大学本科生毕业设计(论文) 图6?5 借阅者登陆界面图 代码:Option Explicit Dim cnt As Integer Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(txtuser.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else sql = "select * from 系统管理 where 用户名='" & txtuser.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus 37 燕山大学本科生毕业设计(论文) Else If Trim(rs_login.Fields(1)) <> Trim(txtpwd.Text) Then MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus Else If Trim(Combo1.Text) = "" Then MsgBox "请选择权限", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else If Trim(rs_login.Fields(2)) <> Trim(Combo1.Text) Then MsgBox "您选择的用户权限错误", vbOKOnly + vbExclamation, "" Combo1.SetFocus End If If Trim(rs_login.Fields(2)) = Trim(Combo1.Text) Then If Combo1.Text = "system" Then Unload Me form1.Show Else rs_login.Close Unload Me Form2.Show End If End If 38 燕山大学本科生毕业设计(论文) End If End If End If End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=book.mdb" conn.Open connectionstring cnt = 0 Combo1.AddItem "system" Combo1.AddItem "guest" End Sub 39 燕山大学本科生毕业设计(论文) 当借阅者正确登录到系统后,此功能将被激活,使用户能查看到 自身的借阅情况。在此系统中,借阅者可以检查确认自己的借阅情况, 界面及代码如下: 图6?6 借阅界面图 代码: Option Explicit Private Sub Command1_Click() Dim sql As String Dim rs_find As New ADODB.Recordset 40 燕山大学本科生毕业设计(论文) If Option1.Value = True Then sql = "select * from 书籍信息 where 是否被借出='是'" End If If Option2.Value = True Then sql = "select * from 书籍信息 where 是否被借出='否'" End If If Option3.Value = True Then sql = "select * from 借阅信息 where 读者姓名='" & Text1.Text & "'" End If rs_find.CursorLocation = adUseClient rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False Set DataGrid1.DataSource = rs_find End Sub Private Sub Command2_Click() Unload Me End Sub 在此功能中,工作人员根据借阅者的借书证号和要借阅或归还的 41 燕山大学本科生毕业设计(论文) 图书编号进行图书的借阅及归还工作。并且根据现实中可能会出现的 只知图书名不知图书编号的借还情况,所以加入了按书籍名称进行归 还的功能。这个功能是图书借阅功能中把图书名称转换成图书编号的 一种改进方法界面及代码分别如下: 图6?7 工作人员查询界面图 42 燕山大学本科生毕业设计(论文) 图6?8 借阅信息查询界面图 借书代码: Option Explicit Dim leibie As String '该读者的类别 Dim qixian As Integer '该读者可以借书的期限 Dim shumu As Integer '该读者已借书数量 Dim maxnum As Integer '该读者借书数量的限制 Private Sub Combo1_Click() Combo2.ListIndex = Combo1.ListIndex End Sub Private Sub Combo2_Click() Combo1.ListIndex = Combo2.ListIndex End Sub Private Sub Command1_Click() Dim rs_borrowbook As New ADODB.Recordset Dim sql As String sql = "select * from 读者信息 where 读者编号='" & Combo1.Text & "'" rs_borrowbook.Open sql, conn, adOpenKeyset, adLockPessimistic leibie = rs_borrowbook.Fields(3) shumu = rs_borrowbook.Fields(8) rs_borrowbook.Close sql = "select * from 读者类别 where 种类名称='" & leibie & "'" 43 燕山大学本科生毕业设计(论文) rs_borrowbook.Open sql, conn, adOpenKeyset, adLockPessimistic qixian = rs_borrowbook.Fields(2) maxnum = rs_borrowbook.Fields(1) rs_borrowbook.Close If shumu >= maxnum Then MsgBox "该读者借书数额已满!", vbOKOnly + vbExclamation Exit Sub End If sql = "select * from 借阅信息" rs_borrowbook.Open sql, conn, adOpenKeyset, adLockPessimistic rs_borrowbook.AddNew rs_borrowbook.Fields(1) = Combo1.Text rs_borrowbook.Fields(2) = Combo2.Text rs_borrowbook.Fields(3) = Label8.Caption rs_borrowbook.Fields(4) = Label9.Caption rs_borrowbook.Fields(5) = Date rs_borrowbook.Fields(6) = DateAdd("Ww", qixian, Date) rs_borrowbook.Update rs_borrowbook.Close sql = "select * from 书籍信息 where 书籍编号='" & book_num & "'" rs_borrowbook.Open sql, conn, adOpenKeyset, adLockPessimistic rs_borrowbook.Fields(7) = "是" rs_borrowbook.Update rs_borrowbook.Close sql = "select * from 读者信息 where 读者编号='" & Combo1.Text & "'" 44 燕山大学本科生毕业设计(论文) rs_borrowbook.Open sql, conn, adOpenKeyset, adLockPessimistic rs_borrowbook.Fields(8) = rs_borrowbook.Fields(8) + 1 rs_borrowbook.Update rs_borrowbook.Close MsgBox "本书借阅成功!", vbOKOnly + vbExclamation Unload Me End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim rs_borrow As New ADODB.Recordset Dim rs_reader As New ADODB.Recordset Dim sql As String sql = "select * from 书籍信息 where 书籍编号='" & book_num & "'" rs_borrow.Open sql, conn, adOpenKeyset, adLockPessimistic Label8.Caption = rs_borrow.Fields(0) Label9.Caption = rs_borrow.Fields(1) Label10.Caption = rs_borrow.Fields(2) Label11.Caption = rs_borrow.Fields(3) Label12.Caption = rs_borrow.Fields(4) Label13.Caption = rs_borrow.Fields(5) Label14.Caption = rs_borrow.Fields(6) 45 燕山大学本科生毕业设计(论文) sql = "select * from 读者信息" rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic If Not rs_reader.EOF Then Do While Not rs_reader.EOF Combo1.AddItem rs_reader.Fields(1) Combo2.AddItem rs_reader.Fields(0) rs_reader.MoveNext Loop Else MsgBox "请先登记读者!", vbOKOnly + vbExclamation Exit Sub End If rs_borrow.Close rs_reader.Close End Sub 还书代码: Option Explicit Dim findform As Boolean Private Sub Combo1_Click() Combo2.ListIndex = Combo1.ListIndex End Sub Private Sub Combo2_Click() Combo1.ListIndex = Combo2.ListIndex 46 燕山大学本科生毕业设计(论文) End Sub Private Sub Combo3_Click() Combo4.ListIndex = Combo3.ListIndex End Sub Private Sub Combo4_Click() Combo3.ListIndex = Combo4.ListIndex End Sub Private Sub Command1_Click() Dim rs_reader As New ADODB.Recordset Dim sql As String findform = True sql = "select * from 借阅信息 where 读者姓名='" & Combo2.Text & "'" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic Set DataGrid1.DataSource = rs_reader DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False End Sub Private Sub Command2_Click() Dim rs_book As New ADODB.Recordset 47 燕山大学本科生毕业设计(论文) Dim sql As String findform = False sql = "select * from 借阅信息 where 书籍编号='" & Combo3.Text & "'" rs_book.CursorLocation = adUseClient rs_book.Open sql, conn, adOpenKeyset, adLockPessimistic Set DataGrid1.DataSource = rs_book DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False End Sub Private Sub Command3_Click() Dim book_num As String Dim reader_num As String Dim answer As String Dim rs_back As New ADODB.Recordset Dim sql As String On Error GoTo delerror book_num = DataGrid1.Columns(3).CellValue(DataGrid1.Bookmark) reader_num = DataGrid1.Columns(1).CellValue(DataGrid1.Bookmark) answer = MsgBox("确定要还这本书吗?", vbYesNo, "") If answer = vbYes Then sql = "select * from 借阅信息 where 书籍编号='" & book_num & "'" rs_back.CursorLocation = adUseClient 48 燕山大学本科生毕业设计(论文) rs_back.Open sql, conn, adOpenKeyset, adLockPessimistic rs_back.Delete rs_back.Update rs_back.Close sql = "select * from 书籍信息 where 书籍编号='" & book_num & "'" rs_back.CursorLocation = adUseClient rs_back.Open sql, conn, adOpenKeyset, adLockPessimistic rs_back.Fields(7) = "否" rs_back.Update rs_back.Close sql = "select * from 读者信息 where 读者编号='" & reader_num & "'" rs_back.CursorLocation = adUseClient rs_back.Open sql, conn, adOpenKeyset, adLockPessimistic rs_back.Fields(8) = rs_back.Fields(8) - 1 rs_back.Update rs_back.Close If findform = True Then Command1_Click Else Command2_Click End If MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False 49 燕山大学本科生毕业设计(论文) Else Exit Sub End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Command4_Click() Unload Me End Sub Private Sub Form_Load() Dim rs_reader As New ADODB.Recordset Dim rs_book As New ADODB.Recordset Dim sql As String sql = "select * from 读者信息" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic If Not rs_reader.EOF Then Do While Not rs_reader.EOF Combo1.AddItem rs_reader.Fields(1) Combo2.AddItem rs_reader.Fields(0) 50 燕山大学本科生毕业设计(论文) rs_reader.MoveNext Loop End If rs_reader.Close sql = "select * from 借阅信息" rs_book.CursorLocation = adUseClient rs_book.Open sql, conn, adOpenKeyset, adLockPessimistic If Not rs_book.EOF Then Do While Not rs_book.EOF Combo3.AddItem rs_book.Fields(3) Combo4.AddItem rs_book.Fields(4) rs_book.MoveNext Loop End If rs_book.Close End Sub 在这个功能中可以在(图书编号)中输入图书编号,点查找按钮 后就会在各个相应的组件中显示出信息,在各个相应的组件中显示第 一条记录的信息,也可在下端的ListView组件中点击某一条记录,在 各个相应的组件中也会显示所选记录的信息。在入库功能中只要不是 相同的图书编号并且若提示的字段不为空就可插入新的图书记录。删 除则删除那些Book表中的图书记录,图书修改与图书入库的功能与工 51 燕山大学本科生毕业设计(论文) 作人员记录修改和工作人员记录添加的实现过程一样,界面及代码如 下: 图6?9 管理员管理界面图 Private Sub add_admin_Click() frmadduser.Show End Sub Private Sub add_back_book_Click() frmbackbookinfo.Show End Sub Private Sub add_book_info_Click() 52 燕山大学本科生毕业设计(论文) frmaddbookinfo.Show End Sub Private Sub add_book_style_Click() frmaddbookstyle.Show End Sub Private Sub add_lend_book_Click() frmfindbook.Show End Sub Private Sub add_reader_info_Click() frmaddreaderinfo.Show End Sub Private Sub add_reader_style_Click() frmaddreaderstyle.Show End Sub Private Sub change_pwd_Click() frmchangepwd.Show End Sub Private Sub del_book_info_Click() frmmodifybookinfo.Show 53 燕山大学本科生毕业设计(论文) End Sub Private Sub del_book_style_Click() frmmodifybookstyle.Show End Sub Private Sub del_reader_info_Click() frmreaderinfo.Show End Sub Private Sub del_reader_style_Click() frmmodifyreaderstyle.Show End Sub Private Sub exit_sys_Click() Form3.Show End Sub Private Sub find_book_info_Click() frmfindbook.Show End Sub Private Sub find_lend_book_Click() frmfindborrowinfo.Show End Sub 54 燕山大学本科生毕业设计(论文) Private Sub find_reader_info_Click() frmfindreader.Show End Sub Private Sub modify_book_info_Click() frmmodifybookinfo.Show End Sub Private Sub modify_book_style_Click() frmmodifybookstyle.Show End Sub Private Sub modify_reader_info_Click() frmreaderinfo.Show End Sub Private Sub modify_reader_style_Click() frmmodifyreaderstyle.Show End Sub 其中的显示连接的窗体及代码已在上述本章其他节中引用,读者 可自行查找。 55 燕山大学本科生毕业设计(论文) 在此功能中可以加入工作人员或是管理员,或是修改他们的密码、 权限操作窗体界面及代码如下: 图6?10 登陆界面图 代码: Private Sub Command1_Click() Dim sql As String Dim rs_add As New ADODB.Recordset If Trim(Text1.Text) = "" Then MsgBox "用户名不能为空", vbOKOnly + vbExclamation, "" Exit Sub Text1.SetFocus 56 燕山大学本科生毕业设计(论文) Else sql = "select * from 系统管理" rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic While (rs_add.EOF = False) If Trim(rs_add.Fields(0)) = Trim(Text1.Text) Then MsgBox "已有这个用户", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" Text2.Text = "" Text3.Text = "" Combo1.Text = "" Exit Sub Else rs_add.MoveNext End If Wend If Trim(Text2.Text) <> Trim(Text3.Text) Then MsgBox "两次密码不一致", vbOKOnly + vbExclamation, "" Text2.SetFocus Text2.Text = "" Text3.Text = "" Exit Sub ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, 57 燕山大学本科生毕业设计(论文) "" Combo1.SetFocus Combo1.Text = "" Exit Sub Else rs_add.AddNew rs_add.Fields(0) = Text1.Text rs_add.Fields(1) = Text2.Text rs_add.Fields(2) = Combo1.Text rs_add.Update rs_add.Close MsgBox "添加用户成功", vbOKOnly + vbExclamation, "" Unload Me End If End If End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Combo1.AddItem "system" Combo1.AddItem "guest" End Sub 58 燕山大学本科生毕业设计(论文) 在此窗体中能对图书的类别进行删除,添加和修改,这模块的功 能的实现过程与图书记录的删除,添加和修改一样的,但是这个窗体 还能跟据图书类别进行统计,还可根据Book表和Owner表统计出图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目。在 这里给出统计图书总数目,库存图书数目,借出图书数目及借阅过期 的图书数目的实现过程中的几个函数和过程实现界面及实现代码如 下: 图6?11 管理员修改图书信息 代码: Option Explicit Dim rs_book As New ADODB.Recordset 59 燕山大学本科生毕业设计(论文) Private Sub cmdcancel_Click() rs_book.CancelUpdate DataGrid1.Refresh DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False End Sub Private Sub cmddel_Click() Dim answer As String On Error GoTo delerror answer = MsgBox("确定要删除吗?", vbYesNo, "") If answer = vbYes Then DataGrid1.AllowDelete = True rs_book.Delete rs_book.Update DataGrid1.Refresh MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False Else Exit Sub 60 燕山大学本科生毕业设计(论文) End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub cmdmodify_Click() Dim answer As String On Error GoTo cmdmodify cmddel.Enabled = False cmdmodify.Enabled = False cmdupdate.Enabled = True cmdcancel.Enabled = True DataGrid1.AllowUpdate = True cmdmodify: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Command5_Click() rs_book.Update DataGrid1.Refresh End Sub 61 燕山大学本科生毕业设计(论文) Private Sub cmdupdate_Click() If Not IsNull(DataGrid1.Bookmark) Then rs_book.Update End If cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox "修改成功!", vbOKOnly + vbExclamation, "" End Sub Private Sub Command1_Click() form1.Show Unload Me End Sub Private Sub Command2_Click() End Sub Private Sub DataGrid1_Click() End Sub 62 燕山大学本科生毕业设计(论文) Private Sub Form_Load() Dim sql As String On Error GoTo loaderror sql = "select * from 书籍信息" rs_book.CursorLocation = adUseClient rs_book.Open sql, conn, adOpenKeyset, adLockPessimistic '打开数据库 cmdupdate.Enabled = False '设定datagrid控件属性 DataGrid1.AllowAddNew = False '不可增 加 DataGrid1.AllowDelete = False '不可删 除 DataGrid1.AllowUpdate = False If userpow = "guest" Then '权限相 关 Frame2.Enabled = False End If Set DataGrid1.DataSource = rs_book 'cmdcancel.Enabled = False Exit Sub loaderror: MsgBox Err.Description End Sub 63 燕山大学本科生毕业设计(论文) Private Sub Form_Unload(Cancel As Integer) Set DataGrid1.DataSource = Nothing rs_book.Close End Sub 这一部分是对借阅者身份进行管理,能对身份进行添加、删除、 修改。并且同样的在listview中选中某条或多条记录时会在相应的右边 的组件中显示出信息。实现界面及代码如下: 图6?12 借阅者身份管理 代码: 64 燕山大学本科生毕业设计(论文) Option Explicit Dim rs_reader As New ADODB.Recordset Private Sub cmdcancel_Click() rs_reader.CancelUpdate DataGrid1.Refresh DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False End Sub Private Sub cmddel_Click() Dim answer As String On Error GoTo delerror answer = MsgBox("确定要删除吗?", vbYesNo, "") If answer = vbYes Then DataGrid1.AllowDelete = True rs_reader.Delete rs_reader.Update DataGrid1.Refresh MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False 65 燕山大学本科生毕业设计(论文) Else Exit Sub End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub cmdmodify_Click() Dim answer As String On Error GoTo cmdmodify cmddel.Enabled = False cmdmodify.Enabled = False cmdupdate.Enabled = True cmdcancel.Enabled = True DataGrid1.AllowUpdate = True cmdmodify: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Command5_Click() rs_reader.Update 66 燕山大学本科生毕业设计(论文) DataGrid1.Refresh End Sub Private Sub cmdupdate_Click() If Not IsNull(DataGrid1.Bookmark) Then rs_reader.Update End If cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox "修改成功!", vbOKOnly + vbExclamation, "" End Sub Private Sub Form_Load() Dim sql As String On Error GoTo loaderror sql = "select * from 读者类别" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic '打开数 据库 cmdupdate.Enabled = False '设定datagrid控件属性 DataGrid1.AllowAddNew = False 67 燕山大学本科生毕业设计(论文) '不可增加 DataGrid1.AllowDelete = False ' 不可删除 DataGrid1.AllowUpdate = False If userpow = "guest" Then ' 权限相关 Frame2.Enabled = False End If Set DataGrid1.DataSource = rs_reader 'cmdcancel.Enabled = False Exit Sub loaderror: MsgBox Err.Description End Sub Private Sub Form_Unload(Cancel As Integer) Set DataGrid1.DataSource = Nothing rs_reader.Close End Sub 68 燕山大学本科生毕业设计(论文) 在对管理信息系统的开发过程有了基本了解后,本人使用Visual Basic开发了这个“图书管理系统”。系统基本实现了内部图书借阅管 理的系统化、规范化和自动化。例如对图书进行登记,对旧书进行删 除。添加借阅人以及注销借阅人。图书的借阅、归还。可以按作者、 出版社等信息对图书进行查询,并能反映出图书的借阅情况。实现了 简单的统计分析功能,可以展示出库存图书与借出图书的比例、馆藏 图书种类的情况。并能对借阅规则进行设置。还能够对使用该管理系 统的用户进行管理,按照不同的工作职能提供不同的功能授权。 通过对该系统的设计、开发和调试,一方面让我了解了MIS系统的开发过程与方法,另一方面,让我初步掌握了Visual Basic开发工具的使用方法,熟悉了窗口、菜单以及一些可视化控件的使用方法。通 过使用还了解到窗口对象、数据窗口对象、各类控件的属性与方法。 同时,在制作过程中遇到了不少问题和困难,通过查阅书籍及互连网 得到了不小的帮助。 因为条件的限制,该管理系统还存在不少的缺点和漏洞,只能尽 量改正与完善。 69 燕山大学本科生毕业设计(论文) [1] 莫德举,夏涛.Visual Basic程序设计[M].北京邮电大学出版社 [2] 刘刚,陈克明.ACCESS数据库程序设计教程[M].清华大学出版社 [3] 李敏业等.Visual Basic+ACCESS数据库应用实例完全解析(含光 盘)[M].人民邮电出版社 [4] 张海藩.软件系统工程[M].人民邮电出版社 [5] 萨师煊,王珊.数据库系统概论[M].高等教育出版社.1991 [6] 黎景云,程薇.图书馆计算机管理 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 实施探讨[J].广州师院学报:自然科学报.1991 [7] 杨晶.VB6.0程序设计[M].机械工业出版社.2008 [8] 林卓然.VB语言程序[M].电子工业出版社.2009 [9] 沈建蓉,单贵.大学VB程序设计实践教程(附光盘一张)[M].复旦大学出版社.2007 [10] 刘凡馨.Access数据库应用教程[M].清华大学出版社.2007 [11] Michael J.Young.Mastering Visual Basic[M] .Sybex Inc.1999 [12] Cohoon & Davidson.Introduction to Programming and Object-Oriented Design[M].清华大学出版社.2002 [13] Leen Ammeraal .VB程序设计教程[M] .中国铁道出版社.2003 [14] H.M.Lippman,J.Lajoie VB primer[M] .中国电力出版社 [15] Bjarne stroustrup .The VB Programming Language[M]. Addison –wesley Pub Co 70 燕山大学本科生毕业设计(论文) 致 谢 经过一段时间的努力,我终于实现了图书信息管理系统的功能。 软件设计是一个整体的过程,需要了解和掌握设计流程的每一个环节, 时间上也需要有周密的 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 和安排,在设计中,我严格按照任务书中 的安排按部就班的进行软件的学习和制作,随着软件的逐渐完成,我 所学的知识也不断扩充,而且我的操作和实际动手能力也得到了显著 的提高,而且这款软件能够得以顺利的完成与学院的关注和老师的辛 勤指导是分不开的。 首先我要感谢我的指导老师程建钧老师,在软件设计的过程中刘 老师给予了精心的指导和热情的帮助,无论是在软件设计的前期准备 阶段,还是后期的软件调试和论文撰写阶段程老师都热情的提出了许 多宝贵的设计意见,在这段时间里程老师渊博的知识,解决问题的高 效和实事求是的作风给我留下了深刻的印象,也将使我受益终身。我 的软件设计能够顺利的完成与学院领导和指导员对我的关注和撰写规 范的提供也起到了很大作用。在此向我敬爱的老师表示最衷心的感谢。 71
本文档为【计算机毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:312KB
软件:Word
页数:66
分类:互联网
上传时间:2018-01-21
浏览量:23