版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)题
目:图书管理系统I摘
要图书馆管理信息系统是对学校图书进行全面信息管理的系统。该管理系统可以有效地管理学校图书资源,记录学校与读者之间的使用书籍情况。此外,根据读者的要求,实现书籍基本信息的输入,查询等几个方面的功能。本系统可以作为独立的系统使用,它包括借阅信息管理、书籍信息管理、读者信息管理、系统管理四个主要的功能模块。该管理系统力求给读者方便快捷的途径去及时了解书籍信息。针对各个模块不同的数据表实现添加记录、修改记录、删除记录、以及查询显示记录等功能,所有的操作方便而快捷,并全面实现了图书馆管理的各项功能。这篇论文主要讲述关于图书馆管理信息系统的信息,特别是讨论了关于设计该系统时的思想、方法和过程,以及在细节上分析函数和方法的实现思想。在本论文中讲述的图书馆管理信息系统拥有一个交互式的界面、逻辑的数据库结构。并且在设计数据库时还考虑到了实体完整性约束、参照完整性约束、及尽量减少数据的冗余,在数据库里有包括表、过程、函数、触发器等5个数据库对象。许多涉及到图书、读者的信息的功能在本系统中都有实现。例如,你可以将新书的信息插入到数据库的图书基本情况表里;还可以对已经插入的关于图书的信息进行修改;更重要的是,读者可以从图书馆里借阅书籍。经过多次的测试和运行,本系统能实现其在设计时的所有功能。关键字:
图
读者
管理系
数据目
录第一章绪论II第二章系统需求分析2.1任务概述2.2数据描述(数据流图+数据字典)2.3功能需求2.4性能需求2.5需求规定第三章系统总体设计3.1总体设计3.2运行环境..............................................................................................错!未定书签。3.3数据结构.............................................................................................错!未定书签。3.4输入输出设计第四章详细设计4.1程序流程图.........................................................................................................................114.2程序输入输出描述.............................................................................................................11主模块........................................................................................................................学生管理模块.图书管理模块.借阅管理模块.归还管理模块.管理措施设置模块.4.3程序接口描述外部接口.内部接口.4.4数据库的设计数据库的逻辑设计.第五章编码实现5.1程序编码第六章测试分析报告III6.1测试计划和要点主模块测试要点.借阅模块测试要点.学生查询模块测试要点.图书查询模块测试要点.图书归还模块测试要点.6.2测试用例主模块测试用例.借阅模块测试用例.学生查询模块测试用例.图书查询模块测试用例.图书归还模块测试用例.6.3测试结果及结论测试的结果.缺陷分析及改进.测试结论.总结.致谢.参考文献附录.IV第一章绪论随着计算机技术的高速发展和计算机应用的日益普及,在现代化社会中,信息管理工作将发挥越来越重要的作用。学校是传授知识的地方,一个学校的管理可以正确的反映它的价值,在信息飞速发展的当今社会中,学校在科学技术的应用是一个社会的体现,学校应该走在时代的最前沿。图书管理是高校内每一个系部或院部都必须切实面对的工作,但一直以来人们使用传统的人工方式管理图书资料。这种方式存在着许多缺点,如效率低、保密性差且较为繁琐。另外,随着图书资料数量的增加,其工作量也将大大增加,这必将增加图书资料管理者的工作量和劳动强度,这将给图书资料信息的查找、更新和维护都带来了很多困难。经过详细的调查,目前我国各类高等学校中有相当一部分单位图书资料管理还停留在人工管理的基础上。这样的管理机制已经不能适应时代的发展,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,这种传统的手工管理方法必然被以计算机为基础的信息管理方法所取代。图书管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统,将是非常必要的,也是十分及时的。第二章系统需求分析任概经过对我校详细调查,并多次与负责图书管理的老师进行研讨后,加深了对现行图书管理业务的深刻了解,与此同时,将整个图书管理的业务流程抽象描述如下:新的图书购进后,分门别类地进行归并并汇总,加以编号。新书编号后,上到书架以备学生借阅。如某学生需要借阅图书则在其本人的借阅登记表上进行登记记录相关借阅信息与借阅日期。学生借阅图书后,应及时归还图书,并在本人的借阅登记表上注明还书日期和时间。根据以上调查分析,可以给出其现行业务流程图如图所示。1新书
分类、编号
新书
学生借阅
新书
学生归还图书
新书归还后的图书图现图书管理业务流程图数描(据图+数据典)
新书经过详细的调查,我们已经清楚了解了现行的业务流程,接下来给出系统的逻辑模型。构造系统逻辑模型的工具是数据流图和数据字典。根据现行图书管理的业务流程,首先把数据流图中的源点和终点都选定为学生,因此可以得到图书管理系统的基本系统模型,如图所示。图书管理员
图书借阅信息
图书归还信息
图书管理员图2.2图书管理系统的基本系模型根据基本系统模型,对其逐步细化到描述逻辑系统细化后的数据流图,如2.3所示。图书息
D2图书息登记
借阅息D3
借阅记
借阅果管员
图书息
2图管
学生阅图
3借管理
归还书
4归管
学学生息
理1学管
归还书
归还果学生息
D1生信息
D4归还登记图2.3图管系统数据流图(顶层DFD图)对顶层DFD图中的一个加工“学生管理”进行展开,如图2.4。2图
阅
阅
阅管理员
书
图书管理
生书
借阅理
还
归还
学生生
理新学
还
还生
录入
归还登学生信
生
学生询新息
生毕业生清图细后数据流图对顶层DFD图中的一个加工“图书管理”进行展开,如图。
借阅登记
2.1
2.2学生借阅书
图2.5“图书管理”展开对第1层DFD图中的加工进一步进行展开,如图。学生借请求学生借阅结
借阅条借阅书
学生信图书信图书信
学生图书3罚款r赔偿理条
罚信还图学生果
合法性检查理条归还书
息阅信息
学生图书图进步细化数据流图有了系统的数据流图后,还有相当多的数据信息如图书、借阅、归还等信息需要进一步描述,这就是需要定义数据字典,才能把现有的系统描述清楚。图2.7出了系统的主要数据字典。编号RS01RS02RS03RS04RS05RS06RS07RS08RS09RS10RS11RS12RS13RS14
基本数据项名称读者编号姓名性别年龄部门办证日期图书编号图书名称作者出版社单价总数库存数图书位置
数据类型字符型字符型字符型数值型字符型日期型字符型字符型字符型字符型数值型数值型数值型字符型
长度
小数位数——————————4RS15RS16RS17RS18RS19
类别简介借阅日期还书日期备注
字符型备注型日期型日期型备注型
4
—————图2.7系统主要数据字典功需经过以上详细的用户调查,在现行业务流程和数据分析的基础上,基本可以确定系统设计必须达到的目标。以下是图书管理系统必须具备的功能:1.新进图书的登记功能:对于购进的新书,系统必须具备图书信息资料的录入功能。2.图书的查询修改功能:当图书资料发生变化,如图书丢失或有错误信息输入时,则应能够及时对数据进行修改和补充。借阅的登记,归还的登记功能:系统的主要功能之一,供本校学生借阅图书、归还图书,并进行登记。学生信息的增加、删除和修改功能:系统主要功能之一,建立学生信息,并对其进行维护。性能求为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求:1、系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。2、系统的开放性和系统的可扩充性图书管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。3、系统的易用性和易维护性图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。4、系统的标准性5系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。5、系统的先进性目前计算系统的技术发展相当快,做为图书管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。6、系统的响应速度图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟,原则是保证操作人员不会因为速度问题而影响工作效率。需求定对于新买进的书籍,一定要进行基本的信息录入。如:图书名称、作者姓名、出版社、类别等。对于新来的读者也一样要有基本的信息录入工作,如:读者编号、读者姓名、性别、年龄、住址、电话。在系统的运行过程中,系统的日期输入格式为。在应用‘借书’窗体时,各个书名的输入一定要和书库中的书名保持一致。(5)用户修改密码时,只可以修改正在使用的用户名的密码,无法修改其他用户的个人使用密码。(6)在应用各种查询功能时,要确保输入的信息与书库当中或者与读者的信息完全一致,否则可能就会有查询不到的可能性。第三章系统总体设计总设图书管理系统功能模块图如图3-16系
(
二)系统模块设计
图3-1系模块图用户登录模块:已经在本程序中注册的用户进入系统,必须先进行登录,否则无法进入。系统维护模块:已经进入本系统的用户,可以在注册其他的用户,可以修改本用户的密码,也可以注销这个用户。退出本系统。详细管理模块:用户可以在这里为读者办理借阅图书、归还图书。浏览所有的图书目录,为图书目录增加、删除,修改记录;也可以浏览所有读者的基本信息,对读者信息的增加、删除、修改等的一系列的操作。相关查询模块‘借阅查询中用户可以查询出任意一个读者的图书借阅情况;而在‘图书查询’中,用户可以查询出书库当中的任意一本图书的借阅情况。统计内容模块:在‘读者借阅情况统计’中,用户可以统计出所有的读者的基本信息和他借阅图书的次数;而在‘图书借阅情况统计’中,则可以统计出被读者借阅过的图书的借阅次数。关于模块:次模块中是关于本系统的基本信息。运环(一)开发环境硬件环境:奔腾,内存128M以上,800x600及以上分辨率的显示器。软件环境:Windows9x/2000/NT/XP,Office2000,VisualBasic6.0(二)运行环境硬件环境:同开发环境。软件环境:Windows9x/2000/NT7数据结构设1.图书信息表:包括图书编号、图书名称、作者姓名、出版社、出版日期、单价和类别等字段。表3-1图书息结序
字名
类
大
说
图书编号图书名称作者姓名出版社出版日期单价类别
字符型字符型字符型字符型字符型字符型字符型
图书入库时自动生成图书的价格图书属于那一个种类2.读者信息表:包括读者编号、读者姓名、性别、年龄、住址、电话、备注等字段。表3-2读者息序
字名
类
大
说
读者编号读者姓名性别年龄住址电话备注
字符型字符型字符型字符型字符型字符型字符型
读者注册时系统自动读者的真实姓名读者的家庭住址能联系到读者的电话关于读者的任何信息3.借阅信息表:包括编号、图书1、图书2、图书、借阅时间、还书时间等。表3-3借阅息序
字名
类
大
说
编号图书图书图书借阅时间还书时间
字符型字符型字符型字符型字符型字符型
读者的借阅编号读者借阅的第一本图读者借阅的第二本图读者借阅的第三本图读者借阅图书的时间读者归还图书的时间4.读者借阅信息表:包括读者编号和借阅次数两个字段。表3-4读者阅息序
字名
类
大
说
读者编号借阅次数
字符型字符型
读者的借阅编号读者借阅一次此值加5.图书借阅信息表:包括图书编号和借阅次数两个字段。8表3-5图书阅息序
字名
类
大
说
图书编号借阅次数
字符型字符型
图书的借阅编号图书被借阅一次此值6.图书借阅情况信息表:包括图书编号和借阅情况两个字段。表3-6图书阅况息序
字名
类
大
说
图书编号借阅情况
字符型字符型
图书的借阅编号表示图书是否被借出7.用户表:包括用户名和密码两个字段。表户序
字名
类
大
说
用户名密码
字符型字符型
用户注册时的名登录系统是的密码3.4入出计本系统中的图书入库数据是根据购书单来录入的,所以购书单即为现行系统的图书进货单。同表3-1。表3-1
图书购货单日期11/23/05
图书名称防雷技术
作者林海
出版社电子出版社
单价23.5
类别电子技术
总数8本系统报表输出格式设计成图3-1形式。9第四章详细设计程流图依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。具体来说就是把经过总体设计得到的各个模块详细的加以描述。由于本系统采用支持面向对象的VisualBasic6.0为开发工具VisualBasic6.0采用事件驱动的编程机制,所以在此给出软件系统的主程序流程图,如图4.1所示。Yes
图主程序流程图根据以上主程序的流程图我们可以得出下面的关于各个模块的程序流程图如图所示。10开始管理员登陆是否合法选择
No学生信息表操作
图书信息表操作
查询信息
借阅图书
归还图书
退出选择
选择查询方式
读入书号
读入书号已借出
超期退出加除修改
书名书号作出版
No
NoNo
读入学号
罚款
确认更新
输入所需记录要查找记录
确认更新数据库
No
更新数据库继续显示记录
No
继续
继续
No管理员注销结束图程流程图程输输描主模块1.输入项目:操作系统传递至的各种消息以及用户的输入数据。2.输出项目:用户界面显示
。11学生管模块1.输入项目:与学生管理操作子对话框有关的用户输入及系统消息。2.输出项目:操作结果显示图书管模块1.输入项目:用户口令。2.输出项目:相应的界面。阅管理模块
。1.输入项目:学生学号、图书编号。2.输出项目:学生信息、相关借书信息归还管模块输入项目:图书编号。输出项目:相关学生信息。管理措设置模块
。输入项目:用户的输入。输出项目:根据用户的输入显示相应的对话框。程接描外部接按Windows用软件用户界面的规范来设计,使用以对话框为主的用户界面,便于用户使用。内部接模块间接口采用数据耦合方式,通过参数表传送数据,交换信息。12数库设数据库逻辑设计在需求分析阶段已完成该系统所有的数据分析。根据该阶段所建立的概念模型,已经得出满足系统设计要求的几个关系描述,该阶段的主要工作就是把前一阶段的成果转化为具体的数据库。下面给出概念结构设计得图如图4.3所示。性入时图书ISBN号图书名称图书编号图书数量
学生毕时①图书图书类别②管理员
学姓学学图书作者图书出版社图书编号③分E-R图13管理员学管理
图管理N
M
归
N
N学生
图书M
借总E-R图
N图4.3概念结构设计E-R图实体:图书(图书编号,书名,作者,出版社,定价,图书类别,图ISBN号,图书数量)学生(学生学号,学生姓名,性别,入校时间,毕业时间)管理员(编号,名字,密码,加入时间)联系:学生管理(图书管理员,学生姓名,学生密码)图书管理(图书管理员,借阅号,归还号)查询(图书编号,借阅证号,图书管理员,学生)第五章编码实现程编登陆界面如图5.1所示。图5.1登陆界面14程序代码如下:主界面如图5.2所示
。图程主界面操作员管理界面如图5.3所示。15图5.3操作员管理界面学生登记界面如图5.4所示。图学信息登记界面16图书信息登记界面如图5.5示。图5.5图书信息登记界面图书查询界面如图5.6所示。图5.6图书信息查询界面17第六章测试分析报告有两种基本方法可以用来标识测试用例,即功能测试(黑盒测试)和结构测试(白盒测试本次测试我主要采用了功能测试。功能测试的基本观点是,任何程序都可以看作是将输入定义域取值映射到输出值域的函数。测计和点软件测试的本质是针对要测试的内容确定一组测试用例。在讨论之前,我先把要测试各个模块的计划和要点列出:主模块试要点数据库连接情况:正常情况,数据库文件缺少,外部系统异常。系统设置获取:正常情况,外部系统异常。对用户输入的响应:合法输入,能够正常调用子模块;非法输入,系统能否辨别,并作出响应(提出警告;子模块的异常状况,系统能否及时做出响应。借阅模测试要点模块正常运行流程用户输入数据检查(学生学号、图书书号),包括数据合理性检查,以及合法性检查数据库操作数据库连接异常时的响应情况学生查模块测试要点数据库连接正常时输入合理合法参数输入参数不合理输入参数不合法数据库连接异常;数据库数据异常(读者姓名为空图书查模块测试要点数据库连接正常数据库数据正常输入的书号合理合法18输入的书号不合理输入的书号不合法数据库数据异常数据库连接异常图书归模块测试要点模块正常工作流程对输入的查验,包括输入值的合法性与合理性检验数据库连接异常能否做出适当处理数据库数据异常时能否判断并给予适当处理测用测试用例是为了特定目的(如考察特定程序路径或验证是否符合特定的需求)而设计的测试数据及与之相关的测试规程的一个特定的集合,或称为有效地发现软件缺陷的最小测试执行单元。根据上一节给出的测试要点,又因为测试是不可能穷举的。所以我们采用等价划分法来进行对图书管理系统的测试。它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有代表性和完整性。主模块试用例表6-1主模块测试用例字段名称标识符测试项输入标准输出标准
描述C1主模块中的“系统”菜单栏务”菜单栏的功能测试打开主模块,没有任何输入字符,点击相应的菜单栏项目。在数据库文件缺少的情况下,打开主模块。模块未做任何操作,单击“系统”|退出”命令,能正常退出,无提示信息。在打开相应的子窗体时,未做任何操作,单击“系统”|“退出”命令,能正常退出,无提示信息。在打开相应的子窗体时做相关的增删或修改操作保存单“系统退出命令提“修改信息未保存存修改吗?单“保存修改,正常退出,单击“No”,保存修改,并退出。借阅模测试用例字段名称
表6-2借阅模块测试用例描述19标识符测试项输入标准输出标准
C2借阅模块的功能测试打开借阅模块,没有任何输入字符,点击相应的项目。输入一些正确的学号、图书号、借阅号,点击“登记输入一些非法的学号、图书号、借阅号,点击“登记1.模块未做任何操作,单击“退出”命令,能正常退出,无提示信息。2.在打开借阅模块,做相关的“借出”操作,未保存,单击“退出”命令,提示“修改信息未保存,保存修改吗?”单击存修改,正常退出,单击“No”,不保存修改,并退出。学生查模块测试用例表6-3学生查询模块测试用例字段名称标识符测试项输入标准输出标准
描述C3学生查询模块的功能测试打开学生查询模块,没有任何输入字符,点击相应的项目。输入一些正确的学号、姓名,点击“确定输入一些非法的学号、姓名,点击“确定在选择“按姓名查询”单选时,输入学号,点击“确定在选择“按学号查询”单选时,输入姓名,点击“确定1.模块未做任何操作,单击“退出”命令,能正常退出,无提示信息。图书查模块测试用例表6-4图书查询模块测试用例字段名称标识符测试项输入标准输出标准
描述C4图书查询模块的功能测试打开图书查询模块,没有任何输入字符,点击相应的项目。输入一些正确的书名、作者、出版社,点击“确定输入一些非法的书名、作者、出版社,点击“确定在选择“按书名查询”单选时,输入作者或出版社,点击“确定5.在选择“按作者查询”单选时,输入书名或出版社,点击“确定6.在选择“按出版社查询”单选时,输入书名或作者,点击“确定1.模块未做任何操作,单击“退出”命令,能正常退出,无提示信息。图书归模块测试用例表6-5图书归还模块测试用例字段名称
描述20标识符测试项输入标准输出标准
C5图书归还模块的功能测试打开归还模块,没有任何输入字符,点击相应的项目。输入一些正确的学号、图书号,点击“登记输入一些非法的学号、图书号,点击“登记1.模块未做任何操作,单击“退出”命令,能正常退出,无提示信息。2.在打开借阅模块,做相关的“借出”操作,未保存,单击“退出”命令,提示“修改信息未保存,保存修改吗?”单击存修改,正常退出,单击“No”,不保存修改,并退出。测结及论测试的果我们按照6.2节中给出的测试用例的顺序来给出相应的测试结果。表6-6主模块测试结果标识符C1测试结果正常操作无任何异常处理出现与预期的偏差无说明的问题主模块通过了功能测试表6-7借阅模块测试结果标识符C2测试结果与预期的偏差
在输入借阅号但是未输入图书号或学生学号时,系统也能给出正确的借阅成功信息应该在借阅图书时,输入完整的借阅信息,包括借阅号、图书号、学生学号和借阅时间说明的问题图书借阅模块的借阅功能有待改进表6-8学生查询模块测试结果标识符C3测试结果与预期的偏差说明的问题
在单选“按姓名查询”时,输入学生学号也能查询到学生的相关信息。在单选“按学号查询”时,输入学生姓名也能查询到学生的相关信息。应该在单选按“姓名”或“学号”查,只能通过选中的方式查询学生的相关信息。学生查询模块的借阅功能有待改进表6-9图书查询模块测试结果标识符C4测试结果与预期的偏差说明的问题
正常操作无任何异常处理出现无图书查询模块通过了功能测试表6-10图书归还模块测试结果21标识符测试结果与预期的偏差说明的问题
C5正常操作无任何异常处理出现无图书归还模块通过了功能测试缺陷分及改进本部分对上述缺陷和其他收集数据进行综合分析1.缺陷综合分析缺陷发现效率=缺陷总数/执行测试用时=2/(5天)=0.4/天用例质量=缺陷总数/测试用例总数×100%=2/5×100%=40%2.对缺陷的改进在测试用例C2和C3中,发现的缺陷,通过对相关功能编码的改进,已经使测试的结果和预期达到的效果一致。测试结.测试目标完成.测试已经通过.可以进入下一阶段项目目标22总
结这次软件工程课程设计要采用VisualBasic为前台开发工具MicrosoftSQLSevere2000为后台数据库,结合软件工程设计和数据库编程的有关知识,开发了这个图书管理系统。通过这次软件工程课程设计,我对于软件工程设计的相关步骤和流程有了更深刻的理解,熟悉并掌握了MicrosoftSQLSevere2000和VB6.0的数据库使用,同时,我也发现自己对于软件工程设计和数据库设计的知识掌握的还不够,设计和编程能力还有待于进一步提高。这次课程设计给了我一个锻炼自己,强化专业知识的机会,通过这次课程设计,我也得以一窥软件工程设计的广袤天地,我相信,只要认真学习,多借鉴别人的经验,多思考,多实践,就一定能够成为一个合格的软件设计人员,能够翱翔在软件开发的天地。致谢首先感谢学院给我们提供良好的学习设备,学习和生活环境,其次感谢老师三年来对我们的精培育,我在公司中学到了书本中所学不到的知识,并掌握了很多学习,工作方法。三年的大学生马上就要结束了,三年的时间我学到了很多的知识懂了很多道理知道如何与人沟通、交流,让自己尽快地适应新的环境。开发一个项目,需要的是团队的力量,团队的合作,沟通.在开发此项目的过程遇到很多的问题,如:界面的设计、编码问题、用户需求问题等。在开发的过程中我学习到了书本上学不到的知识。让我懂得了实践是检验真理的惟一标准的真正涵义。23参考文献[1]张海藩.软件工程导论(第四版)北京:清华大学出版社,2003年12[2]朱少民.软件测试方法和技术北京:清华大学出版社,2005年7月[3]PaulC.Jorgensen.软件测试(第二版).北京:机械工业出版社,年2月[4]郭胜,夏邦贵.VisualBasic数据库开发入门与范例解析北京:机械工业出版社,2004年4月[5瑞新.VisualBasic管理信息系统开发毕业设计指导及实例.北京械工业出版社,2005年3月[6]魏志强、王忠华、何敏、乔林数据库应用实务篇国铁道出版社2000[7]齐治昌、谭庆平、宁洪件工程等教育出版社年第一版[8]韩强SQLSERVER2000程序员手册机械工业出版社2000[9]萨师煊、王珊据库系统概论等教育出版社2000年第三版[10]李新乐代图书馆管理目文献出版社1989[11]谭浩强程序设计(第三版大学出版社2005年1月124附录FunctionCheck_Password(ByValUserNameAsString,ByValUserPasswordAsString)AsIntegerOnErrorGoToER2:IfConnectToServer=TrueThenSetobjRs=NewRecordsetStrSql="selectcOperatorPasswordfromwhere&Trim(cboName.Text)&"'"GetDataStrSql'ReferencefunctiontogetdataIfobjRs.EOFThenCheck_Password=0'ThisOperatornotexistElseIftxtPassword.Text<>Trim(objRs.Fields("cOperatorPassword").Value)ThenCheck_Password=1'passworderrorElseCheck_Password=2'passwordokCurrentOpname=Trim(cboName.Text)CurrentOppassword=objRs.Fields("cOperatorPassword").Value'HerecansaveaoperatorgradeforexpandEndIfEndIfobjCon.CloseExitFunctionER2:MsgBoxErr.DescriptionCheck_Password=255EndIfEndFunctionPrivateSubcmdCancel_Click()UnloadMeEndEndSubPrivateSubcmdOK_Click()DimintCheckAsInteger'StaticintLogTimestosaveuserlogintimesStaticintLogTimesAsIntegerintLogTimes=intLogTimes+1'SavelogintimesIfintLogTimes>MaxLogTimesThen'OverallowedlogintimesthenlistinformationMsgBox"Youhaveoverallowedloghintimes,loginfailure!",vbCritical,"LoginError"25UnloadMeElseintCheck=Check_Password(Trim(txtPassword),Trim(cboName))SelectCaseintCheckCase0MsgBox"Yourarenotasystemuser!",vbInformation+vbOKOnly,"LoginError"Case1MsgBox"Passworderror,pleasecheckyourpassword!",vbInformation+vbOKOnly,"LoginError"Case2UnloadMeIfCurrentOpname="Admin"AndCurrentOppassword="1"ThenMainWin.mnuOp.Visible=TrueElseMainWin.mnuOp.Visible=FalseEndIfoadMainWinainWin.ShowEndSelectEndIfEndSubptionExplicitrivateSubMDIForm_Activate()IfCurrentOpname="Admin"ThentatusBar2.Panels(1).Text="理员:"&CurrentOpnameToolbar1.Buttons(1).Visible=Trueoolbar1.Buttons(2).Visible=TrueElsetatusBar2.Panels(1).Text="作员:"&CurrentOpnameToolbar1.Buttons(1).Visible=Falseoolbar1.Buttons(2).Visible=FalseEndIfEndSubPrivateSubMDIForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=vbRightButtonThenPopupMenumnuOperation'DesignpopupmenuEndIfEndSubPrivateSubMDIForm_Unload(CancelAsInteger)CheckConnect'Referencefunctiontomakeobjconbreakifconnectionisopen26EndSubPrivateSubmnuAbout_Click()frmAbout.ShowEndSubPrivateSubmnuBookQuery_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenLoadfrmBookQueryfrmBookQuery.ShowEndSubPrivateSubmnuBookRegist_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenLoadfrmBookRegfrmBookReg.ShowEndSubPrivateSubmnuBorrowQuery_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenLoadfrmReadQueryfrmReadQuery.ShowEndSubPrivateSubmnuExit_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenUnloadMeEndEndSubPrivateSubmnuReLogin_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenUnloadMeLoadfrmLoginfrmLogin.ShowEndSubPrivateSubmnuVipQuery_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenLoadfrmVipQueryfrmVipQuery.ShowEndSubPrivateSubmnuVipRegist_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenLoadfrmVipRegfrmVipReg.ShowEndSub27PrivateSubmunReadRegist_Click()CheckConnect'ReferencefunctiontomakeobjconbreakifconnectionisopenLoadfrmReadRegistfrmReadRegist.ShowEndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase"operatorReg"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmAdminfrmAdmin.ShowCase"vipReg"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmVipRegfrmVipReg.ShowCase"vipQuery"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmVipQueryfrmVipQuery.ShowCase"BookReg"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmBookRegfrmBookReg.ShowCase"bookQuery"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmBookQueryfrmBookQuery.ShowCase"readReg"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmReadRegistfrmReadRegist.ShowCase"readQuery"CheckConnect'ReferencefunctiontomakeobjconbreakisopenLoadfrmReadQueryfrmReadQuery.ShowEndSelectEndSubOptionExplicitSubSetTextEmpty()'ThisfunctionissetalltexttoemptytxtOpID.Text=""txtOpName.Text=""txtOpPwd.Text=""28cboOpGrade.Text=""txtOpAddTime.Text=""EndSubSubRefreshOperator()'ThisfunctionistoRefreshtexttxtOpID.Text=objRs.Fields(0).ValuetxtOpName.Text=objRs.Fields(1).ValuetxtOpPwd.Text=objRs.Fields(2).ValuecboOpGrade.Text=objRs.Fields(3).Value'txtOpAddTime.Text=objRs.Fields(4).ValueEndSubPrivateSubcmdAdd_Click()txtOpID.Enabled=True'Youdon'tchangedatagriduntillyouadddatafinishdgdOp.Enabled=FalseIfcmdAdd.Caption="加"ThencmdAdd.Caption="定"SetTextEmpty'referencesettextemptyfounctiontosetemptycmdDel.Enabled=FalsecmdModify.Enabled=FalsecmdRefresh.Enabled=FalsetxtOpID.SetFocusElseIfTrim(txtOpName.Text)=""ThenMsgBox"Operatornamemustnotnull,pleaseinputoperatorname!",vbInformation+vbOKOnlytxtOpName.SetFocusExitSubElseIfTrim(txtOpID.Text)=""ThenMsgBox"OperatorIDmustnotnull,pleaseinputoperatorID!",vbInformation+vbOKOnlytxtOpID.SetFocusExitSubElseIfTrim(txtOpPwd.Text)=""ThenMsgBox"Operatorpasswordmustnotnull,pleaseinputoperatorpassword!",vbInformation+vbOKOnlytxtOpPwd.SetFocusExitSubElseWithobjRscheckAddNew=True.Filter="cOperatorID='"&Trim(txtOpID.Text)&"'"If.RecordCount>0ThenMsgBox"Thisoperatorhasbeenexist!"txtOpID.Text=""29txtOpID.SetFocus.Filter="cOperatorID<>''"cmdRefresh.Value=True'ToexecuterrefreshoncecheckAddNew=FalsecmdDel.Enabled=TruecmdModify.Enabled=TruecmdAdd.Caption="加(&A)"txtOpID.Enabled=FalseRefresh.Enabled=TrueOp.Enabled=TruecheckAddNew=FalseExitSubEndIfcheckAddNew=True.AddNew.Fields(0).Value=Trim(txtOpID.Text).Fields(1).Value=Trim(txtOpName.Text).Fields(2).Value=Trim(txtOpPwd.Text).Fields(3).Value=Trim(cboOpGrade.Text).Fields(4).Value=Trim(txtOpAddTime.Text).UpdateMsgBox"Operatoraddsuccess!",vbInformation+vbOKOnly.Filter="cOperatorID<>''"cmdRefresh.Value=True'ToexecuterrefreshonceEndWithcheckAddNew=False'----TherewillreferenceafounctiontosetemptytxtOpID.Enabled=FalsecmdDel.Enabled=TruecmdModify.Enabled=TruecmdRefresh.Enabled=TrueAdd.Caption="加"Op.Enabled=True'YoucanusedatagridafteraddfinishEndIfEndIfEndSubPrivateSubcmdDel_Click()If=TruetoifisnullIfNotobjRs.EOFAndobjRs.RecordCount>0ThenIfMsgBox("The:"&txtOpName&"'sdatawillcontinuevbYesNo+vbInformation)=vbYesThenobjRs.DeleteEndIf30EndIfEndSubPrivateSubcmdModify_Click()If=TrueExittoisnulldgdOp.Enabled=FalseIftxtOpID.Text<>objRs.Fields(0).ValueThenExitSub'TocheckoperatorIDIfcmdModify.Caption="改"ThencmdModify.Caption="定"cmdDel.Enabled=FalsecmdAdd.Enabled=FalseElseWithobjRs.Fields(0).Value=Trim(txtOpID.Text).Fields(1).Value=Trim(txtOpName.Text).Fields(2).Value=Trim(txtOpPwd.Text).Fields(3).Value=Trim(cboOpGrade.Text).UpdateEndWithcmdModify.Caption="改"cmdDel.Enabled=TrueAdd.Enabled=TrueOp.Enabled=TrueEndIfEndSubPrivateSubcmdExit_Click()UnloadMeEndSubPrivateSubcmdRefresh_Click()RefreshOperator'ReferencefunctionistoRefreshtextEndSubPrivateSubdgdOp_RowColChange(LastRowAsVariant,ByValLastColAsInteger)IfcheckAddNew=TrueThenExitSubcmdRefresh.Value=TrueEndSubPrivateSubForm_Activate()FormMiddlefrmAdmin'ReferencefunctiontomakeforminMDIForm'mddilecboOpGrade.ListIndex=1IfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetStrSql="select*fromtOperators"GetDataStrSql'ReferencefunctiontogetdataSetdgdOp.DataSource=objRs31cmdRefresh.Value=TrueEndIfEndSubPrivateSubtxtOpAddTime_KeyPress(KeyAsciiAsInteger)'CheckInputNum'ReferencefunctiontocheckinputIfNot(KeyAscii>=vbKey0AndKeyAscii<=vbKey9_OrKeyAscii=vbKeyBack_OrKeyAscii=Asc("-"))ThenKeyAscii=0EndIfEndSubPrivateSubtxtOpID_KeyPress(KeyAsciiAsInteger)IfNot(KeyAscii>=vbKey0AndKeyAscii<=vbKey9_OrKeyAscii=vbKeyBack)ThenKeyAscii=0EndIfEndSubPrivateSubcmdAdd_Click()dgdVip.Enabled=FalsecmdRefresh.Enabled=FalsetxtVipID.Enabled=TrueIfcmdAdd.Caption="加(&A)"ThencmdAdd.Caption="定"txtVipID.SetFocusSetTextEmpty'ReferenceafounctiontosetemptycmdDel.Enabled=FalsecmdModify.Enabled=FalsecmdRefresh.Enabled=FalseElse'ToProgressoptionDimvipsexAsStringIfVipMale.Value=TrueThenvipsex="男ElseIfVipFemale.Value=TrueThenvipsex=""Elsevipsex="Null"EndIfIftxtVipName.Text=""ThenMsgBox"Vipnamemustnotnull!"txtVipName.SetFocusExitSubElseIftxtVipID.Text=""Then32MsgBox"VipIDmustnotnull!"txtVipID.SetFocusExitSubElseWithobjRscheckAddNew=True.Filter="cVipID='"&Trim(txtVipID.Text)&"'"If.RecordCount>0ThenMsgBox"Thisviphasbeenexist!"txtVipID.Text=""txtVipID.SetFocus.Filter="cVipID<>''"cmdRefresh.Value=TruecheckAddNew=FalsecmdDel.Enabled=TruecmdModify.Enabled=TruecmdAdd.Caption="加(&A)"txtVipID.Enabled=FalseRefresh.Enabled=TrueVip.Enabled=TruecheckAddNew=FalseExitSubEndIfcheckAddNew=True.AddNew.Fields(0).Value=Trim(txtVipID).Fields(1).Value=Trim(txtVipName).Fields(2)=vipsex.Fields(3)=Trim(txtVipID_card.Text).Fields(4)=Trim(txtVipPhone.Text).Fields(5)=Trim(txtVipAddress.Text).Fields(6)=Trim(txtVipAddTime.Text).Fields(7)=Trim(txtVipEndTime.Text).UpdateMsgBox"Vipaddsuccess!",vbInformation+vbOKOnly.Filter="cVipID<>''"cmdRefresh.Value=TrueEndWithcheckAddNew=FalsecmdDel.Enabled=TruecmdModify.Enabled=TruecmdAdd.Caption="加(&A)"txtVipID.Enabled=FalsecmdRefresh.Enabled=True33dgdVip.Enabled=TrueEndIfEndIfEndSubPrivateSubcmdClose_Click()UnloadMeEndSubPrivateSubcmdDel_Click()If=TrueifisemptyCheckConnect'TobreakobjrsifitisopenedIfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetStrSql="select*fromtBorrowwherecVipID='"&Trim(txtVipID.Text)&"'andcReturnTime=''"'"GetDataStrSql'ReferencefunctiontogetdataIfobjRs.RecordCount>0ThenMsgBox"Heborrowedbooksyoudon'tdeletethisvip!",vbInformation+vbOKOnlyCheckConnect'TobreakobjrsifitisopenedIfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetStrSql="select*fromtvip"GetDataStrSql'ReferencefuctiontogetdataSetdgdVip.DataSource=objRscmdRefresh.Value=True'ExectuerefreshorderlistdataformloadColNamechange'ReferencefuctiontochangecolumnsnametochineseEndIfElseIf&"'ssurevbYesNo+vbInformation)=vbYesThenStrSql="deletefromtVipwherecVipID='"&Trim(txtVipID.Text)&"'"objCon.ExecuteStrSqlCheckConnect'TobreakobjrsifitisopenedIfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetStrSql="select*fromtvip"GetDataStrSql'ReferencefunctioninordertogetdataSetdgdVip.DataSource=objRscmdRefresh.Value='ExectuerefreshinordertodatawhenformloadColNamechange'Referencefuctiontochangecolumnsnameto34chineseEndIfEndIfCheckConnect'TobreakobjrsifitisopenedIfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetStrSql="select*fromtvip"GetDataStrSql'ReferencefuctiontogetdataSetdgdVip.DataSource=objRscmdRefresh.Value=True'ExectuerefreshorderlistdataformloadColNamechange'ReferencefuctiontochangecolumnsnametochineseEndIfEndIfEndIfEndSubPrivateSubcmdModify_Click()If=TruetoisisemptyIf<>Trim(objRs.Fields(0).Value)ThenvipIDIfcmdModify.Caption="改(&M)"ThencmdModify.Caption="定"cmdDel.Enabled=FalsecmdAdd.Enabled=FalsecmdRefresh.Enabled=FalseElseIfMsgBox("Areyousuretomodifythisrecord",vbYesNo+vbInformation)=vbYesThenWithobjRsIfNot.EOFAnd.RecordCount>0Then.Fields(0).Value=Trim(txtVipID.Text).Fields(1).Value=Trim(txtVipName.Text)'.Fields(2)=vipsex.Fields(3)=Trim(txtVipID_card.Text).Fields(4)=Trim(txtVipPhone.Text).Fields(5)=Trim(txtVipAddress.Text).Fields(6)=Trim(txtVipAddTime.Text).Fields(7)=Trim(txtVipEndTime.Text).UpdateEndIfEndWithcmdModify.Caption="改(&M)"cmdDel.Enabled=True35cmdAdd.Enabled=TruecmdRefresh.Enabled=TrueEndIfEndIfEndSubPrivateSubcmdRefresh_Click()RefreshVip'ReferencerefreshvipfunctiontorefreshEndSubPrivateSubdgdVip_RowColChange(LastRowAsVariant,ByValLastColAsInteger)IfcheckAddNew=TrueThenExitSubcmdRefresh.Value=TrueEndSubPrivateSubForm_Activate()FormMiddlefrmVipReg'ReferencefunctiontomakeforminMDIForm'mddileIfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetStrSql="select*fromtvip"GetDataStrSql'ReferencefunctioninordertogetdataSetdgdVip.DataSource=objRscmdRefresh.Value=True'ExectuerefreshinordertolistdatawhenformloadColNamechange'ReferencefuctiontochangecolumnsnametochineseEndIfEndSubPrivateSubcmdQuery_Click()CheckConnect'IfobjRsisopenthencloseitIfConnectToServer=TrueThenSetobjRs=NewADODB.RecordsetIfoptCheck(0).Value=TrueThen'ThisischeckifyourquerybyisnullIfTrim(txtbookID.Text)=""ThenMsgBox"PleaseinputbookIDinordertoquery!",vbInformation+vbOKOnlytxtbookID.SetFocusExitSubEndIfStrSql="select*fromtBookswherecBooksID='"&Trim(txtbookID)&"'"GetDataStrSql'ReverencefunctiontogerdataIfobjRs.RecordCount=0ThenMsgBox"Thisbookdonotexist,pleaseanotherIDorchoose36anotherqueryway!",vbInformation+vbOKOnlytxtbookID.Text=""optCheck(0).Value=FalseEnabledSet'ReferencefunctiontosetcheckboxenabledCheckConnect'ReferencefunctionifobjrsisopenthencloseitExitSubEndIfoptCheck(0).Value=FalseElseIfoptCheck(1).Value=TrueThen'ThisischeckifyourquerywayisnullIfTrim(txtBookName.Text)=""ThenMsgBox"Pleaseinputbooknameinordertoquery!",vbInformation+vbOKOnlytxtBookName.SetFocusExitSubEnd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桥梁建设打桩施工合同
- 2024奥迪Q5L定制版车辆购买与交付协议2篇
- 2024年度祁菊与陈飞离婚后的财产分割及子女抚养协议3篇
- 2024年度无形资产全权授权与运营合同范本3篇
- 2024年教育培训机构招生专员协议2篇
- 2024年度智能门禁系统与安保员聘用服务合同3篇
- 2024年度汽车整车运输风险管理合同3篇
- 2024年新型石油钻机购销合同版B版
- 2024年度交通设施招标代理服务合同样本下载3篇
- 2024年度个性化定制汽车抵押租赁服务协议书3篇
- 【泰禾房地产集团偿债能力探析案例报告(定量论文)7800字】
- 语文第15课《梅岭三章》课件 2024-2025学年统编版语文七年级上册
- 岩体力学与工程智慧树知到答案2024年合肥工业大学
- 2025届高考数学复习 函数导数 备考策略分析课件
- 科室VTE工作总结课件
- 二年级上册数学教案-小小测量员 (2)-西师大版
- 《2023-2024中国区块链发展年度报告》
- 六年级上册美术说课稿 -第7课《 变化多样的脸谱》桂美版(广西版)
- 人教版七年级数学上册3.4 第3课时《 球赛积分表问题》说课稿1
- DL∕T 5210.2-2018 电力建设施工质量验收规程 第2部分:锅炉机组
- 2024年物业经理(中级)职业鉴定考试题库(含答案)
评论
0/150
提交评论