VB+access实验室设备管理系统
课程设计任务内容
本系统要实现的功能是管理员可以对实验室设备信息进行查询及相关实验室设备的使用情况查看,可以根据本人用户名和密码登录系统。在信息系统中,后台数据库存储的地位相当重要.本系统采用了SQL数据库book,库中包括教师信息表、借用设备表、仪器表、用户登陆表。系统首先必须维护实验室中详细资料的数据表,程序能对该表进行写入和读出数据的操作。
实验室设备管理需要完成的功能主要如下:
1) 设备管理:实现仓库中的每样设备信息的登记和新设备的入库登记,旧设备的报修、报废处理,以及设备状态的更改。2) 设备的借出:按照教师所需设备而给予借出,并在数据库中更改这些设备的使用状态。
3) 设备的归还:按照教师所还设备而进行入库登记,并在数据库中更改这些设备的使用状态。4) 设备报修:实验人员在实验过程中如果发现设备损坏,通过此系统报告给管理员,同时改写数据库中的设备状态。
目 录
第一章 系统概述. 1
1.1 绪论.... 1
1.2项目背景.... 1
1.3开发平台.... 2
第二章 系统可行性研究与需求分析. 3
2.1可行性研究.... 3
2.1.1技术可行性.... 3
2.1.2经济可行性.... 3
2.1.3操作可行性.... 3
2.1.4社会因素可行性.... 4
2.1.5可行性研究结论.... 4
2.2需求分析.... 4
2.2.1系统的目的.... 4
2.2.2系统功能及用户需求分析.... 4
2.3数据描述.... 5
2.3.1数据流图.... 5
2.3.2数据字典.... 8
2.3.3安全性、完整性需求. 9
第三章 项目设计的基本原理和采用的主要方法与技术. 11
3.1项目设计的基本原理.... 11
3.2项目设计采用的主要技术.... 11
3.3数据库系统设计及范式分析.... 12
3.4 Visual Basic中的数据库控件ADO的介绍. 14
第四章 总体设计. 15
4.1总体设计原理.... 15
4.2 运行环境与系统结构.... 16
4.3系统流程图.... 16
4.4系统功能模块图与设计.... 17
4.5系统功能模块说明.... 18
4.6系统性能说明.... 19
第五章 详细设计. 20
5.1数据库的概念设计.... 20
5.1.1局部E-R模式设计. 20
5.2.2全局E-R设计. 23
5.2程序流程图.... 23
5.3物理模型.... 25
第六章 编码实现与测试用例设计. 26
6.1登录界面.... 26
6.2主界面.... 27
6.3设备基本信息.... 29
6.4设备状态信息.... 24
6.5使用设备管理功能.... 39
6.6密码设置.... 43
6.7密码设置.... 44
第七章 软件的测试. 45
7.1 系统开发环境..... 45
7.2 系统测试..... 46
总 结. 50
参考文献. 31
VB+access实验室设备管理系统
第一章 系统概述
1.1 绪论
本系统中的应用程序使用的是Visual Basic,它是Mricrosoft公司开发的一个套件部分,是一个功能丰富,方便实用的程序开发环境,它的一个很大的特点就是功能强大,编程简单的数据库操作能力。可视化的开发环境,丰富的数据库访问控件的支持,使它成为数据库应用程序项目中重要的开发工具。
本系统采用的数据库是ACCESS,它Mricrosoft公司自带一种数据库管理系统,它在数据仓库,数据库解决方案中起着重要的核心作用,是目前广泛使用的一种数据库之一。本系统使用ADO组件,ADO在Internet解决方案中能够实现,将网络流量前端与数据源之间的层数降低到最少,提供了轻量高性能的接口。因此,ADO是如今使用最广泛,应用最成功的数据访问技术,不仅在C/S架构的数据库应用程序中得到认可,在日益风靡的B/S结构的Internet交互式站点建设中,也受开发者的青睐。
1.2项目背景
一个现代化的实验室定理系统在正常运行中总是面对大量的使用者,仪器以及两者相互作用产生的借用仪器。人工管理既浪费人力物力才力,又容易导致各种错误的发生。为了方便图书馆管理,得开发一个更好更高效的软件来管理。实验室管理系统,是为了实现实验室管理而设计的,它也是现在各个部门的一个重要环节。
实验室是所有高校、研究机构必不可少的基本构成单位。特别是高校,其实验室的设备管理和学生试验课程安排都需要一套稳定,高效的管理办法。就我校情况看来,目前,我校的实验室设备和实验的管理还处于较为原始的手工阶段,缺少一套实用可靠的管理系统软件。随着电气化教学和无纸化办公的一步步完善,利用计算机管理系统管理我校的实验室设备势在必行。因此,本项目拟开发一个集实验室设备管理、本科生实验安排、研究生实验安排为一体的实验室设备管理系统。本系统将建立一个实验室设备管理平台,记录实验室所有的实验设备,并实时反应设备的运转状态、使用情况,以供本科生和研究生及其他试验人员合理地安排实验,达到工作效率的最优。
1.3开发平台
运行环境要求:硬件环境:服务器端:PIII +512兆内存+80G以上硬盘+10/100M网卡;客户端:CPU为1.0以上,内存128以上,WindowsXP/2000.Windows NT4.0+lis5.0以上。软件环境:WindowsXP/2000 +IE6.0以上。开发环境:WindowsXP/2000 +SQL Server 2000+Visual Basic6.0
第二章 系统可行性研究与需求分析
2.1可行性研究
2.1.1技术可行性
一个完备的实验室设备管理信息系统具有以下优越性:
方便校领导查询实验室设备的使用情况,节省时间,可以提高系统的工作效率和准确性。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在查询实验室设备信息时发挥高效、便捷的作用,把系统管理员从繁重的工作中解脱出来!
该实验室设备管理信息系统是以ACCESS数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和管理维护,为实验室设备信息提供管理。
2.1.2经济可行性
经济可行性主要依据是成本/效益分析,该系统的目标是以最低的成本,在最短的期限内开发出实验室设备管理信息系统。系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大大节省了学校能源。并且计算机的存储与快速查询功能大大提高了实验室设备信息管理的效率,并且还提高了实验室设备信息管理的精确度。
方便快速的操作,可减少实验室设备信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支。为学校增加了财富。
目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上比较低。而且,目标系统并不是十分的复杂。当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时,也为系统的进一步推广创造了条件。这带来的经济回报将远超过支出,并且最重要的是该软件的开发可以使我们对系统的开发有全面的认识。从经济角度考虑,此实验室设备管理信息系统开发可行。
2.1.3操作可行性
用户仅需具有基本的电脑操作能力即可。
2.1.4社会因素可行性
从法律因素和安全用正版和免费角度考虑,所有技术参考资料都经授权,所有软件都选。
2.1.5可行性研究结论
依据以上因素,本实验室设备管理信息系统开发项目不仅方便快捷、高效,而且社会效益比较好,从而使本系统开发者相信该系统开发出来之后将取得的成功。
综上所述,此项目在技术、经济、操作和社会效益上是完全可行的。
2.2需求分析
2.2.1系统的目的
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校实验室设备信息管理系统软件为学校实验室带来了极大的方便。
学校的规模不断扩大,实验室设备数量急剧增加,有关实验室设备的各种信息量也成倍增加。面对庞大的信息量,需要有专门的实验室设备管理系统来提高工作的效率。本系统为实验室设备管理信息系统,通过这样的系统,可以做到信息的规范管理,快速查询实验室设备的就业信息。其开发主要包括数据库的建立和维护以及前端应用程序的开发两个方面。
2.2.2系统功能及用户需求分析
管理员可以对实验室设备信息进行查询及相关实验室设备的使用情况查看。管理员可以根据本人用户名和密码登录系统。在信息系统中,后台数据库存储的地位相当重要.数据库的设计不但对数据的操作速度有影响,还直接关系到软件系统的质量和生存周期.本系统采用了SQL数据库book,book库中包括教师信息表、借用设备表、仪器表、用户登陆表。系统首先必须维护实验室中详细资料的数据表,程序能对该表进行写入和读出数据的操作。相应的,该表还有记录读者的借用情况,系统通过该表判断读者是否满足借用条件。系统还要管理员信息表,记录管理员的资料,检验管理员的登录,管理员的权限等。
1.功能需求
1) 设备预定:实现实验人员在系统平台上查询库内实验设备的状态及其在某一时段的使用状态,若无损坏且未被预定使用,则用户可预定使用。 2) 设备管理:实现现在仓库中的每样设备信息的登记和新设备的入库登记,旧设备的报修、报废处理,以及设备状态的更改。 3) 设备的借出:按照教师所需设备而给予借出,并在数据库中更改这些设备的使用状态。
4) 设备的归还:按照教师所还设备而进行入库登记,并在数据库中更改这些设备的使用状态。 5) 设备报修:实验人员在实验过程中如果发现设备损坏,通过此系统报告给管理员,同时改写数据库中的设备状态。
2.3数据描述
2.3.1数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据流图的基本目的是利用它作为交流信息的工具,还有一个重要的作用就是作为分析和设计的工具。
一个完整的软件系统需要有一个完整的、系统化的数据流向,数据的输入输出以及数据在整个过程中经过哪些路径,都尽可能的在数据流图中表示出来,数据流是处于运动中的数据。下面就是针对本开发系统而设计的“数据流程图”如下图所示:若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
图2.1 实验室设备管理系统的基本系统模型
VB+access实验室设备管理系统若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
(1)顶层数据流程图:
图2.2 实验室设备管理系统数据流图
(2)细化管理员用户数据流图:
图2.3 细化管理员用户数据流图
若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
(3)细化借出设备的数据流图:
图2.4 细化借出设备的数据流图
(4)细化归还设备的数据流图:
图2.5 细化归还设备的数据流图
(5)细化人员管理的数据流图:
图2.6 细化人员管理的数据流图:
(6)细化分类建档的数据流图:
图2.7 细化管理员用户数据流图
2.3.2数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。
下面用数据字典来定义数据流图中各元素的确切内容:
设备:实验室设备信息表别名:
定义:实验室设备信息表=类别+型号+规格+购买每个设备的价格+单价数量+购置日期间+生产厂家+生厂商+购买人保修时间+是否贵重设备+责任人描述:实验室每种设备的详细信息;
位置:equipment.mdb 数据库
归还:归还设备信息表
别名:
描述:记录所有已归还设备的情况
定义:归还信息表=编号+设备名+型号+规格+数量+单价+借出日期+生产厂家
位置:return.数据库
维修:实验室中损坏的信息;
别名:
描述:记录实验室中损坏的设备以及归还设备中损坏的信息;
定义:损坏信息表=编号+设备名+型号+规格+数量+单价+生产厂家+损坏的责任人;
位置:repaire.数据库
报废:实验室中损坏但是修理不好的设备信息;
别名:
描述:记录实验室中没有使用价值的设备;
定义:报废设备信息表=编号+设备名+型号+规格+数量+单价+生产厂家
位置:throw.数据库
人员:使用实验室设备的所以教师
别名:
描述:记录所以使用设备的所有教师信息;
定义:人员信息=教师姓名+教师性别+教师学历+部门名称+权限类别+电话号码+登记日期
位置:teacher.数据库
系统管理员:管理实验室设备的人;
别名:
描述:对整个实验室设备进行管理,包括对设备进行查询、删除、更新操作的人;
定义:管理员信息=用户名+密码+权限
位置management. 数据库
2.3.3安全性、完整性需求
本软件作为实验室设备信息管理设备,它的规模比较小,不需要保密技术;只需限定一个程序中某些区域的规约,给不同的模块分配不同的功能即可。本系统的源程序采用VB编写,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
第三章 项目设计的基本原理和采用的主要方法与技术
3.1项目设计的基本原理
软件工程是一门从技术和组织管理两个角度研究如何用系统化、规范化和数量化等工程原理与方法去进行软件开发和维护的学科。软件工程学研究的范围非常广泛,包括技术方法、工具、和管理等许多方面。软件生命周期的各个阶段可分为:
问题定义: 确定系统的基本功能
可行性研究: 确定系统是否能够实现及是否值得实现
需求分析: 确定系统必须完成的各种功能
总体设计: 确定如何实现软件
详细设计: 详细设计实现系统
编码和单元测试: 写出正确的容易理解和维护的程序模块
综合测试:通过各种类型的测试及调试使软件达到预定的要求
软件维护:通过各种必要的维护活动使系统持久地满足用户需要
采用软件工程的技术方法开发本系统,通过以上八个阶段组成软件的生存期。它是指从提出开发要求开始直到该软件报废为止的整个时期。分阶段进行,就把规模庞大、结构复杂和管理复杂的软件变得容易控制和管理。正是基于此思想,本系统开发实际可行的软件,方便毕业生信息的管理。
3.2项目设计采用的主要技术
本系统主要利用Visual Basic作为前端的应用开发工具 ,利用ACCESS作为后台的数据库,利用Windows XP作为系统平台。
Windows XP以其友好的图形界面、易学易用的操作方法、强大的多任务功能、健全的内在管理以及先进的程序设计方法为广大数据库软件开发人员所熟悉。对它的操作环境的熟悉,使得我们在其上开发数据库应用程序更加方便、可靠。
1)Visual Basic语言
Visual Basic是一种可视化的、面对对象和条用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,
VB+access实验室设备管理系统
使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
Visual Basic的特点:
可视化编程:最直观的编程方法,程序人员只需绘制界面,无需编程, VB自动产生界面代码,就可以完成许多步骤。这样大大的提高了程序设计的效率。这些在以前的编程语言下是要经过相当复杂的工作的。
面向对象的程序设计思想:
对象:现实世界中的实体,如汽车。
属性:描述对象的特征,如车的颜色。
方法:向对象实施的动作,如启动车。
事件:动作所触发的操作,如红灯亮。
事件驱动的编程机制:
由事件来引发程序的运行。
结构化的程序设计语言。
支持多种数据库系统的访问。
3.3数据库系统设计及范式分析
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
数据库设计的步骤是:
(1) 数据库结构定义:目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有联机分析处理CLAP(指为支持决策的制定对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的DBMS,进行数据库结构定义。
(2) 数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。
(3) 存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。
(4) 数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。
(5) 数据字典设计:用数据字典描述数据库的设计,便于维护和修改。
为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:
规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。
关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。
建立关系数据结构涉及三方面内容:确定关联的关键指标项并建立关联表;确定单一的父系记录结构;建立整个数据库的关系结构。
(1)链接关系的确定
在进行了上述数据规范化重组后,已经可以确保每一个基本数据表(我们简称为表)是规范的,但是这些单独的表并不能完整地反映事物,通常需要通过指标体系整体指标数据才能完整全面地反映问题。也就是说在这些基本表的各宇段中,所存储的是同一事物不同侧面的属性。那么计算机系统如何能知道哪些表中的哪些记录应与其它表中的哪些记录相对应,它们表示的是同一个事物呢?这就需要在设计数据结构时将这种各表之间的数据记录关系确定下来。这种表与表之间的数据关系一般都是通过主或辅关键词之间的连接来实现的。因为在每个表中只有主关键词才能唯一地标识表中的这一个记录值(因为根据第三范式的要求,表中其它数据字段函数都依赖于主关键词),所以将表通过关键词连接就能够唯一地标识出某一事物不同属性在不同表中的存放位置。
(2)确定单一的父子关系结构所谓确定单一的父系关系结构就是要在所建立的各种表中消除多对多(以下用M:N来表示)的现象,即设法使得所有表中记录之间的关系呈树状结构(只能由一个主干发出若干条分支,而不能有若干条主干交错发出若干条分支状况)。
所谓的“父系”就是指表的上一级关系表。消除多对多关系可以借助于E-R图的方法来解决,也可以在系统分析时予以注意,避免这种情况的发生。
消除这种M:N情况的办法也很简单,只需在二表之间增加一个表,则原来M:N的关系就改成了M:1,1:N的关系了
3.4 Visual Basic中的数据库控件ADO的介绍
本程序是用vb的ADO来与数据库进行数据交换的所以有必要介绍一下ADO。
ADO,即Active Data Objects,实际是一种提供访问各种数据类型的连接机制。ADO被实现为OLEDB之上的一个薄层,这使得ADO可以有更快的访问速度,更易使用,同时更节省资源。ADO被设计成一种非常简单的格式,通过ODBC的方法同数据库接口相连。用户可以使用任何一种ODBC数据源,不仅适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。
ADO使用OLEDB数据支持提供了一个面向对象的访问数据源的接口,它是DAO和RDO对象模型的集大成者,集合了DAO和RDO的优点。
ADO的另一大优点是,它是基于COM接口技术的OLEDB的高级接口,所以,任何支持COM的应用程序都可以实现ADO。也就是说,ADO的应用范围绝不仅仅是VB,甚至于不仅仅是Visual Studio 家族的产品。
ADO的内置类。
ADO提供了一系列的类和方法,用来与数据库建立连接,然后数据中的数据进行各种操作。ADO中常用的几个类如下所示。
1,连接类(Connection)
2,命令类(Command)
3,数据集类(Recordset)
利用以上的上的三种方法就可以操作数据库,完成数据库的添加,修改,删除,和查询。
第四章 总体设计
4.1总体设计原理
总体设计的基本目的就是回答“概括的说,系统应该如何实现?”这个问题。因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互之间的关系。
总体设计工程通常有两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计确定软件结构,也就是要确定系统中每个程序拥有哪些模块组成的,以及这些模块之间的关系。在详细设计之前进行总体设计可以站在全局的高度上,花较少的成本,从中选出最佳方案和最合理的软件结构,从而用较低的成本开发出高质量的软件系统。
ADO控件: ADO(ActiveX Data Object,ActiveX 数据对象)组件是一个基OLEDB之上的对象模型,包括了所有可以被OLEDB标准接口描述的数据类型,通过ADO内部的属性和方法提供统一的数据访问接口方法。ADO对象模型工具有可扩展性,当把数据库上层应用程序移植到不同的数据平台时,只需更换连接数据库的驱动程序,而不需要对上层程序做任何修改。ADO是数据访问组件的一部分。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口连接,并可以使用任何一种ODBC数据源,是一个便于使用的应用的程序层接口。
ACCESS是Mricrosoft公司开发的数据库管理系统,它在数据仓库,数据库解决方案中起着重要的核心作用,它可以实现对数据的安全性,完整性,备份和恢复,是目前广泛使用的一种数据库之一。
Visual basic:它是Mricrosoft公司开发的一个套件部分,是一个功能丰富,方便实用的程序开发环境,它的一个很大的特点就是功能强大,编程简单的数据库操作能力。可视化的开发环境,丰富的数据库访问控件的支持,使它成为数据库应用程序项目中重要的开发工具。
VB+access实验室设备管理系统
4.2 运行环境与系统结构
为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛用于内部的局域网。其运行要求如下:
软件环境:
客户端: Windows98/NT/XP,Internet Explorer(IE)等
服务器端:Windows NT/Windows2000,Internet Information Server (IIS)4.0及其以上版本,IE等;或者Windows98,Personal Web Server(PWS),IE等。
数据库:采用ACCESS,运行于服务器端。
硬件环境:
服务器 CPU:PIII 500以上 ,内存:256M以上
客户机 CPU:P200MMX以上,内存:32M以上
4.3系统流程图
系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
本系统和系统流程图如下图4.1所示。图4.1 系统流程图
4.4系统功能模块图与设计
模块化就是把程序划分成独立命名且可独立访问的的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。一个好的电子系统要有一些必要的模块组成,若缺少了某些模块那么这个系统就会有缺陷。
本系统的功能模块图如下图4.2所示:
若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
图4.2 系统的功能模块图
4.5系统功能模块说明
1.新进设备状态查阅:A.待效验 B.效验通过 C.效验失败 D.待登记 E.登记成功 F.登记失败2.现有设备管理:A.损坏设备报修 a) 记录修理日期、设备名、修理厂家、修理费、责任人 b) 于统计栏记录备案B. 设备报废 a)记录报废原因、责任人及相关信息 b)于统计栏记录备案C.维修返回登记 a)加入“现有设备统计” b)统计栏记录备案D.设备出入统计 a) 统计记录资料并规范格式 b) 查询设备维修、报废统计 c) 打印设备维修、报废统计表3.急需设备购进 A.生成购买申请表 B. 打印表格 C.登记设备详细资料(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容4.管理员验证登陆 A.创立/修改管理员 a) 登记管理员资料 b) 修改管理员资料 c) 删除管理员资料B. 创建/修改管理员密码 a)新建管理员密码 b) 修改管理员密码 ( i. 验证旧密码 ii. 设置新密码)C.验证登陆 a) 登陆方式判断 b) 以浏览方式登陆,禁止修改数据但可以浏览 c) 管理员登陆密码验证(i. 密码错误,禁止修改数据但可以浏览 ii. 密码正确,成功登陆)
4.6系统性能说明
具体性能数据有待软件完成后进行测试后得出。
①. 数据写入
②. 效验耗时
③. 登陆验证
④. 整理数据
⑤. 完成时间
⑥. 完成效果
VB+access实验室设备管理系统
第五章 详细设计
5.1数据库的概念设计
根据对数据流图和数据字典的分析,确定该应用中的实体、属性和实体之间的联系,并画出系统总体的E-R图。概念设计可分为三步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
5.1.1局部E-R模式设计
实体和属性的定义。ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。
利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
1) 局部ER模式的合并
合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。
2) 消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。
3) 全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
各个实体的E-R图如下所示:若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
(1)实验室设备信息E-R图:
图5.1 实验室设备信息E-R图
(2)使用设备的教师信息E-R图:
图5.2 使用设备的教师信息E-R图
(3)归还设备E-R图:
图5.3 归还设备E-R图
(4)借用设备E-R图:
图5.4借用设备E-R图
(5)报废设备E-R图:
图5.5报废设备E-R图
(6)损坏设备E-R图:
图5.6损坏设备E-R图
(7)管理员E-R图:
图5.7 管理员E-R图
5.2.2全局E-R设计
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
图5.8 系统的总E-R图
5.2程序流程图
程序流程图也称程序框图,它的历史比较悠久,使软件开发者所熟悉和普遍采用的一种算法表达工具。
本系统的程序流程图如下图所示:若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
图5.9 系统的程序流程图
5.3物理模型
表/字段、及其主键、外键定义情况
仪器设备:仪器编号为主键.
人员信息:教师姓名为主键.
借用设备:仪器编号为主键.
系统管理:用户名为主键.
E-R图模型转成关系模型:
(1)仪器信息(仪器编号,仪器设备名,价格,厂家及产地,仪器数量,借出数量,备注,仪器状况,启用日期)
主键:仪器编号,仪器设备名称 NOT NULL
(2) 借用仪器(仪器编号,仪器设备名称,借用人,借用数量,用途,借用日期,归还日期,经手人,务注)
主键:仪器编号,仪器设备名称 NOT NULL
(3)人员信息(教师姓名,姓别,教师学历,权限类别,电话号码,登记日期,部门名称)
主键:教师姓名 NOT NULL
(4)管理员 (用户名,密码,权限)
主键:用户名 NOT NULL
首先填充实体内容的数据类型,然后建立实体之间的关系,在把它导成物理模型,最后把它生成数据库。具体如图5.3所示:
VB+access实验室设备管理系统
第六章 编码实现与测试用例设计
6.1登录界面
运行本系统程序,首先出现登录界面,输入正确的用户名和密码之后进入主窗体
图6.1登录界面窗体
Option Explicit
Public Function ESQL(ByVal sql As String) As ADODB.Recordset '定义函数
'定义连接
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
'创建连接
Set cnn = New ADODB.Connection
'打开连接
cnn.Open StrCnn
Set rs = New ADODB.Recordset
rs.Open Trim(sql), cnn, adOpenKeyset, adLockOptimistic
Set ESQL = rs
End Function
Public Function StrCnn()
'返回一个数据库连接
StrCnn = "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=XYGLXT"
End Function
Function valiText(keyIn As Integer, validateString As String, Editable As Boolean) As Integer
Dim valiDatelist As String
Dim keyOut As Integer
If Editable = False Then
valiDatelist = UCase(validateString) & Chr(8)
Else
valiDatelist = UCase(validateString)
End If
If InStr(1, valiDatelist, UCase(Chr(keyIn)), 1) > 0 Then
keyOut = keyIn
Else
keyOut = 0
Beep
End If
valiText = keyOut
End Function
6.2主界面
主界面的菜单栏包含的主要菜单有系统、仪器管理、人员管理、借用仪器、查询信息和帮助.
若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
图6.2登录主界面窗体
Private Sub a_Click()
Load main_jbxx_bfxxgl
main_jbxx_bfxxgl.Show
frm_main.Enabled = False
End Sub
Private Sub czysz_Click()
Load main_xtwh_czysz
main_xtwh_czysz.Show
Form1.Enabled = False
End Sub
Private Sub dwxxgl_Click()
Load Form4
Form4.Show
End Sub
Private Sub mmsz_Click()
Load main_xtwh_klsz
main_xtwh_klsz.Show
End Sub
Private Sub QUIT_Click()
End
End Sub
Private Sub sbxxgl_Click()
Load Form2
Form2.Show
End Sub
Private Sub Timer1_Timer()
'设置时间
St1.Panels(1).Text = Format(Date, "long date") & " " & Time
End Sub
Private Sub tjyh_Click()
Load main_xtwh_czysz
main_xtwh_czysz.Show
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.key
Case Is = "sbxxgl"
sbxxgl_Click '调入总台服务管理窗口
Case Is = "ztxxgl"
ztxxgl_Click '调入日结算管理窗口
Case Is = "dwxxgl"
dwxxgl_Click '调入日结算管理窗口
Case Is = "mmsz"
mmsz_Click '调入日结算管理窗口
Case Is = "exit"
End
End Select
End Sub
Private Sub ztxxgl_Click()
Load Form3
Form3.Show
Form1.Enabled = False
End Sub
6.3设备基本信息
图6.3 设备基本信息
Dim i As Integer '定义整数变量,表示字段编号和数组编号
Dim rs1 As New ADODB.Recordset '定义数据集对象
Dim txtSQL As String '定义一个字符串变量
Private Sub Form_Load()
Combo1.AddItem ("教师实验设备"):
Combo1.AddItem ("学生实验设备"): Combo1.ListIndex = 0
'添加查询内容列表
Combo3.AddItem ("设备名称"): Combo3.AddItem ("型号")
Combo3.AddItem ("生产厂家"): Combo3.ListIndex = 0
'添加查询条件列表
Combo4.AddItem ("like"): Combo4.AddItem ("=")
Combo4.ListIndex = 0
Adodc1.RecordSource = "select * from 实验设备基本信息 order by 型号"
Adodc1.Refresh
End Sub
Private Sub Form_Unload(Cancel As Integer)
Form1.Enabled = True '设置frm_main窗体有效
End Sub
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
Select Case Index
Case Is = Index
If KeyCode = vbKeyReturn And Index >= 1 And Index < 5 Then Text1(Index + 1).SetFocus '回车获得焦点
If KeyCode = vbKeyReturn And Index = 4 Then Combo1.SetFocus
If KeyCode = vbKeyReturn And Index = 5 Then Combo5.SetFocus '回车获得焦点
If KeyCode = vbKeyReturn And Index >= 9 And Index < 12 Then Text1(Index + 1).SetFocus
If KeyCode = vbKeyReturn And Index = 12 Then ComSave.SetFocus
End Select
End Sub
Private Sub ComFirst_Click() '移到第一条记录
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst
End Sub
Private Sub ComPrevious_Click() '向上移一条记录
If Adodc1.Recordset.RecordCount <> 0 Then
If Adodc1.Recordset.BOF = False Then Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF = True Then Adodc1.Recordset.MoveFirst
End If
End Sub
Private Sub ComNext_Click() '向下移一条记录
If Adodc1.Recordset.RecordCount <> 0 Then
If Adodc1.Recordset.EOF = False Then Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast
End If
End Sub
Private Sub ComLast_Click() '移到最后一条记录
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast
End Sub
Private Sub ComAdd_Click() '添加
Frame1.Visible = True 'frame1可见
Dim dm As Integer '定义一个整型变量
txtSQL = "select * from 实验设备基本信息 order by 型号"
Set rs1 = ESQL(txtSQL) '执行SQL语句
If rs1.RecordCount > 0 Then '当记录大于零时
If Not rs1.EOF Then rs1.MoveLast '如记录没到头,那么移到最后一条记录
If rs1.Fields("型号") <> "" Then '假如编号不等于空
dm = Trim(rs1.Fields("型号")) + 1 '赋值给dm变量
Text1(0).Text = Format(dm, "000") '赋值给text1(0).text
End If
Else '否则
Text1(0).Text = "0001" '为text1(0).text设初值
End If
'清空数据
For i = 1 To 4
Text1(i).Text = ""
Next i
Text1(5).Text = ""
Text1(9).Text = ""
Text1(10).Text = ""
VB+access实验室设备管理系统
Text1(6).Text = ""
Text1(1).SetFocus 'text1(1)获得焦点
End Sub
Private Sub ComModify_Click() '允许修改数据
If Adodc1.Recordset.RecordCount > 0 Then '当记录大于零时
Frame1.Visible = True 'frame1可见
'赋值给Text1(i)等
If Adodc1.Recordset.Fields(0) <> "" Then Text1(0).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(1) <> "" Then Text1(3).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(2) <> "" Then Text1(6).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(3) <> "" Then Text1(4).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(4) <> "" Then Text1(1).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(5) <> "" Then Text1(2).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(6) <> "" Then Text1(5).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(7) <> "" Then Text1(9).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields("属性") <> "" Then Combo1.Text = Trim(Adodc1.Recordset.Fields("属性"))
If Adodc1.Recordset.Fields(8) <> "" Then Text1(10).Text = Trim(Adodc1.Recordset.Fields(i))
Else
MsgBox "没有要修改的记录,请核对!"
End If
End Sub
Private Sub ComDelete_Click() '删除包房信息
Frame1.Visible = False 'frame1不可见
On Error Resume Next
Adodc1.Recordset.Delete '删除记录
Adodc1.Refresh '刷新记录
End Sub
Private Sub ComSave_Click()
txtSQL = "select * from 实验设备基本信息 where 型号='" & Trim(Text1(0).Text) & "'order by 型号"
Set rs1 = ESQL(txtSQL)
If rs1.RecordCount > 0 Then '当记录大于零时
Dim a As String '定义字符串变量
a = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If a = vbYes Then
If Text1(10).Text = "" Then
MsgBox ("请输入型号!")
Exit Sub
End If
'赋值给数据库字段
rs1.Fields("型号") = Text1(0).Text: rs1.Fields("数量") = Text1(1).Text
rs1.Fields("单价") = Text1(2).Text: rs1.Fields("设备名称") = Text1(3).Text
rs1.Fields("生产厂家") = Text1(4).Text: rs1.Fields("属性") = Combo1.Text
rs1.Fields("总价") = Val(Text1(5).Text): rs1.Fields("购置日期") = Val(Text1(9).Text)
rs1.Fields("资金来源") = Val(Text1(10).Text): rs1.Fields("负责人姓名") = Text1(6).Text
rs1.Update '更新记录集
Adodc1.Refresh
End If
Else
If Text1(0).Text = "" Then
MsgBox ("请输入型号!")
Exit Sub
End If
If Text1(1).Text = "" Then
MsgBox ("请输入数量!")
Exit Sub
End If
If Text1(2).Text = "" Then
MsgBox ("请输入单价!")
Exit Sub
End If
If Text1(3).Text = "" Then
MsgBox ("请输入设备名称!")
Exit Sub
End If
If Text1(4).Text = "" Then
MsgBox ("请输入生产厂家!")
Exit Sub
End If
rs1.AddNew
'赋值给数据库字段
rs1.Fields("型号") = Text1(0).Text: rs1.Fields("数量") = Text1(1).Text
rs1.Fields("单价") = Text1(2).Text: rs1.Fields("设备名称") = Text1(3).Text
rs1.Fields("生产厂家") = Text1(4).Text: rs1.Fields("属性") = Combo1.Text
rs1.Fields("总价") = Val(Text1(5).Text): rs1.Fields("购置日期") = Val(Text1(9).Text)
rs1.Fields("资金来源") = Val(Text1(10).Text): rs1.Fields("负责人姓名") = Text1(6).Text
rs1.Update '更新记录集
Adodc1.Refresh
MsgBox "包房信息已成功保存!"
End If
Frame1.Visible = False '设置Frame1不可见
End Sub
Private Sub Comfind_Click() '查询
Select Case Combo4.Text
Case Is = "like"
Adodc1.RecordSource = "select * from 实验设备基本信息 where (实验设备基本信息." & Combo3.Text & " like +'%'+ '" + Text2.Text + "'+'%') order by 型号"
Adodc1.Refresh
Case Is = "="
Adodc1.RecordSource = "select * from 实验设备基本信息 where (实验设备基本信息." & Combo3.Text & " = '" + Text2.Text + "') order by 型号"
Adodc1.Refresh
End Select
End Sub
Private Sub ComEsc_Click() '取消操作
Frame1.Visible = False
End Sub
Private Sub ComExit_Click()
Unload Me
Form1.Enabled = True
End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Index = 12 Then KeyAscii = valiText(KeyAscii, "0123456789." & Chr(13), True)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then ComFind.SetFocus
End Sub若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn
图6.4 查询设备窗体
图6.5添加设备窗体
图6.5修改设备窗体
图6.5删除设备窗体
6.4设备状态信息
图6.6设备状态窗体
图6.7添加损坏的设备窗体
图6.8修改损坏的设备窗体
图6.9删除损坏的设备窗体
Dim i As Integer '定义整数变量,表示字段编号和数组编号
Dim rs1 As New ADODB.Recordset '定义数据集对象
Dim txtSQL As String '定义一个字符串变量
Private Sub Command2_Click()
Frame1.Visible = False
Form1.Enabled = True
End Sub
Private Sub Form_Load()
'添加部门列表
Combo1.AddItem ("是"):
Combo1.AddItem ("否"): Combo1.ListIndex = 0
'添加查询内容列表
Combo3.AddItem ("设备编号"): Combo3.ListIndex = 0
'添加查询条件列表
Combo4.AddItem ("like"): Combo4.AddItem ("=")
Combo4.ListIndex = 0
'查询所有包房信息,并按"编号"排序
Adodc1.RecordSource = "select * from 设备状态信息 order by 设备编号"
Adodc1.Refresh
End Sub
Private Sub Command1_Click()
txtSQL = "select * from 设备状态信息 order by 设备编号 ='" & Trim(Text1(0).Text) & "'order by 设备编号"
Set rs1 = ESQL(txtSQL)
If rs1.RecordCount > 0 Then '当记录大于零时
VB+access实验室设备管理系统
Dim a As String '定义字符串变量
a = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If a = vbYes Then
'赋值给数据库字段
rs1.Fields("设备编号") = Text1(0).Text: rs1.Fields("设备型号") = Text1(1).Text
rs1.Fields("使用状态") = Text1(2).Text: rs1.Fields("是否损坏") = Combo1.Text
rs1.Update '更新记录集
Adodc1.Refresh
End If
Else
If Text1(0).Text = "" Then
MsgBox ("请输入设备编号!")
Exit Sub
End If
If Text1(1).Text = "" Then
MsgBox ("请输入设备型号!")
Exit Sub
End If
If Text1(2).Text = "" Then
MsgBox ("请输入使用状态!")
Exit Sub
End If
rs1.AddNew '添加包房信息
'赋值给数据库字段
rs1.Fields("设备编号") = Text1(0).Text: rs1.Fields("设备型号") = Text1(1).Text
rs1.Fields("使用状态") = Text1(2).Text: rs1.Fields("是否损坏") = Combo1.Text
rs1.Update '更新记录集
Adodc1.Refresh
MsgBox "成功保存!"
End If
Frame1.Visible = False '设置Frame1不可见
End Sub
Private Sub Form_Unload(Cancel As Integer)
Form1.Enabled = True
End Sub
Private Sub ComAdd_Click() '添加
Frame1.Visible = True 'frame1可见
Dim dm As Integer '定义一个整型变量
txtSQL = "select * from 设备状态信息 order by 设备编号"
Set rs1 = ESQL(txtSQL) '执行SQL语句
If rs1.RecordCount > 0 Then '当记录大于零时
If Not rs1.EOF Then rs1.MoveLast '如记录没到头,那么移到最后一条记录
If rs1.Fields("设备编号") <> "" Then '假如编号不等于空
dm = Trim(rs1.Fields("设备编号")) + 1 '赋值给dm变量
Text1(0).Text = Format(dm, "0000") '赋值给text1(0).text
End If
Else '否则
Text1(0).Text = "0001" '为text1(0).text设初值
End If
'清空数据
Text1(1).Text = ""
Text1(2).Text = ""
Text1(1).SetFocus 'text1(1)获得焦点
End Sub
Private Sub ComModify_Click() '允许修改数据
If Adodc1.Recordset.RecordCount > 0 Then '当记录大于零时
Frame1.Visible = True 'frame1可见
'赋值给Text1(i)等
If Adodc1.Recordset.Fields(0) <> "" Then Text1(0).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(1) <> "" Then Text1(1).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(2) <> "" Then Text1(2).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields("是否损坏") <> "" Then Combo1.Text = Trim(Adodc1.Recordset.Fields("是否损坏"))
Else
MsgBox "没有要修改的记录,请核对!"
End If
End Sub
Private Sub ComDelete_Click() '删除包房信息
Frame1.Visible = False 'frame1不可见
On Error Resume Next
Adodc1.Recordset.Delete '删除记录
Adodc1.Refresh '刷新记录
End Sub
Private Sub ComSave_Click()
txtSQL = "select * from 设备状态信息 where 设备编号='" & Trim(Text1(0).Text) & "'order by 设备编号"
Set rs1 = ESQL(txtSQL)
If rs1.RecordCount > 0 Then '当记录大于零时
Dim a As String '定义字符串变量
a = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If a = vbYes Then
If Text1(0).Text = "" Then
MsgBox ("请输入设备编号!")
Exit Sub
End If
'赋值给数据库字段
rs1.Fields("设备编号") = Text1(0).Text: rs1.Fields("设备型号") = Text1(1).Text
rs1.Fields("使用状态") = Text1(2).Text: rs1.Fields("是否损坏") = Combo1.Text
rs1.Update '更新记录集
Adodc1.Refresh
End If
Else
If Text1(0).Text = "" Then
MsgBox ("请输入设备编号!")
Exit Sub
End If
If Text1(1).Text = "" Then
MsgBox ("请输入设备型号!")
Exit Sub
End If
If Text1(2).Text = "" Then
MsgBox ("请输入使用状态!")
Exit Sub
End If
rs1.AddNew
'赋值给数据库字段
rs1.Fields("设备编号") = Text1(0).Text: rs1.Fields("设备型号") = Text1(1).Text
rs1.Fields("使用状态") = Text1(2).Text: rs1.Fields("是否损坏") = Combo1.Text
rs1.Update '更新记录集
Adodc1.Refresh
MsgBox "状态信息已成功保存!"
End If
Frame1.Visible = False '设置Frame1不可见
End Sub
Private Sub Comfind_Click() '查询
Select Case Combo4.Text
Case Is = "like"
Adodc1.RecordSource = "select * from 设备状态信息 where (设备状态信息." & Combo3.Text & " like +'%'+ '" + Text2.Text + "'+'%') order by 设备编号"
Adodc1.Refresh
Case Is = "="
Adodc1.RecordSource = "select * from 设备状态信息 where (设备状态信息." & Combo3.Text & " = '" + Text2.Text + "') order by 设备编号"
Adodc1.Refresh
End Select
End Sub
Private Sub ComEsc_Click() '取消操作
Frame1.Visible = False
End Sub
Private Sub ComExit_Click()
Unload Me
Form1.Enabled = True
End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Index = 12 Then KeyAscii = valiText(KeyAscii, "0123456789." & Chr(13), True)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then ComFind.SetFocus
End Sub
6.5使用设备管理功能
若图片无法显示请联系QQ3710167,本论文免费,转发请注明源于www.lwfree.cn图6.10 查询使用单位信息
图6.11添加使用单位信息
图6.12修改使用单位信息
图6.13删除使用单位信息
Dim i As Integer '定义整数变量,表示字段编号和数组编号
Dim rs1 As New ADODB.Recordset '定义数据集对象
Dim txtSQL As String '定义一个字符串变量
Private Sub Form_Load()
'添加查询内容列表
Combo3.AddItem ("单位名称"): Combo3.AddItem ("设备编号")
Combo3.ListIndex = 0
'添加查询条件列表
Combo4.AddItem ("like"): Combo4.AddItem ("=")
Combo4.ListIndex = 0
Adodc1.RecordSource = "select * from 使用单位信息 order by 单位编号"
Adodc1.Refresh
End Sub
Private Sub Form_Unload(Cancel As Integer)
Form1.Enabled = True
End Sub
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
Select Case Index
Case Is = Index
If KeyCode = vbKeyReturn And Index >= 1 And Index < 5 Then Text1(Index + 1).SetFocus '回车获得焦点
If KeyCode = vbKeyReturn And Index >= 9 And Index < 12 Then Text1(Index + 1).SetFocus
If KeyCode = vbKeyReturn And Index = 12 Then ComSave.SetFocus
End Select
End Sub
Private Sub ComAdd_Click() '添加
Frame1.Visible = True 'frame1可见
Dim dm As Integer '定义一个整型变量
txtSQL = "select * from 使用单位信息 order by 单位编号"
Set rs1 = ESQL(txtSQL) '执行SQL语句
If rs1.RecordCount > 0 Then '当记录大于零时
VB+access实验室设备管理系统
If Not rs1.EOF Then rs1.MoveLast '如记录没到头,那么移到最后一条记录
If rs1.Fields("单位编号") <> "" Then '假如编号不等于空
dm = Trim(rs1.Fields("单位编号")) + 1 '赋值给dm变量
Text1(0).Text = Format(dm, "0000") '赋值给text1(0).text
End If
Else '否则
Text1(0).Text = "0001" '为text1(0).text设初值
End If
'清空数据
For i = 1 To 2
Text1(i).Text = ""
Next i
End Sub
Private Sub ComModify_Click() '允许修改数据
If Adodc1.Recordset.RecordCount > 0 Then '当记录大于零时
Frame1.Visible = True 'frame1可见
'赋值给Text1(i)等
If Adodc1.Recordset.Fields(1) <> "" Then Text1(1).Text = Trim(Adodc1.Recordset.Fields(i))
If Adodc1.Recordset.Fields(2) <> "" Then Text1(2).Text = Trim(Adodc1.Recordset.Fields(i))
Else
MsgBox "没有要修改的记录,请核对!"
End If
End Sub
Private Sub ComDelete_Click() '删除包房信息
Frame1.Visible = False 'frame1不可见
On Error Resume Next
Adodc1.Recordset.Delete '删除记录
Adodc1.Refresh '刷新记录
End Sub
Private Sub ComSave_Click()
txtSQL = "select * from 使用单位信息 where 单位编号='" & Trim(Text1(0).Text) & "'order by 单位编号"
Set rs1 = ESQL(txtSQL)
If rs1.RecordCount > 0 Then '当记录大于零时
Dim a As String '定义字符串变量
a = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If a = vbYes Then
If Text1(1).Text = "" Then
MsgBox ("请输入单位编号!")
Exit Sub
End If
'赋值给数据库字段
rs1.Fields("单位编号") = Text1(0).Text: rs1.Fields("单位名称") = Text1(1).Text
rs1.Fields("设备编号") = Text1(2).Text: rs1.Fields("借入日期") = Format(Date, "long date") & " " & Time
rs1.Update '更新记录集
Adodc1.Refresh
End If
Else
If Text1(0).Text = "" Then
MsgBox ("请输入单位编号!")
Exit Sub
End If
If Text1(1).Text = "" Then
MsgBox ("请输入单位名称!")
Exit Sub
End If
If Text1(2).Text = "" Then
MsgBox ("请输入设备编号!")
Exit Sub
End If
rs1.AddNew
'赋值给数据库字段
rs1.Fields("单位编号") = Text1(0).Text: rs1.Fields("单位名称") = Text1(1).Text
rs1.Fields("设备编号") = Text1(2).Text: rs1.Fields("借入日期") = Format(Date, "long date") & " " & Time
rs1.Update '更新记录集
Adodc1.Refresh
MsgBox "单位信息已成功保存!"
End If
Frame1.Visible = False '设置Frame1不可见
End Sub
Private Sub Comfind_Click() '查询
Select Case Combo4.Text
Case Is = "like"
Adodc1.RecordSource = "select * from 使用单位信息 where (使用单位信息." & Combo3.Text & " like +'%'+ '" + Text2.Text + "'+'%') order by 单位编号"
Adodc1.Refresh
Case Is = "="
Adodc1.RecordSource = "select * from 使用单位信息 where (使用单位信息." & Combo3.Text & " = '" + Text2.Text + "') order by 单位编号"
Adodc1.Refresh
End Select
End Sub
Private Sub ComEsc_Click() '取消操作
Frame1.Visible = False
End Sub
Private Sub ComExit_Click()
Unload Me
Form1.Enabled = True
End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Index = 12 Then KeyAscii = valiText(KeyAscii, "0123456789." & Chr(13), True)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then ComFind.SetFocus
End Sub
6.6密码设置
图6.14 口令设置窗体
'定义数据集对象
Dim rs1 As New ADODB.Recordset
Dim txtSQL As String '定义字符串变量
Private Sub Form_Activate()
'清空文本框数据
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Form_Unload(Cancel As Integer)
Form1.Enabled = True
End Sub
Private Sub DataCombo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then Text2.SetFocus '按回车键text2获得焦点
End Sub
Private Sub DataCombo1_Change()
'按操作员名称查询权限信息
txtSQL = "select * from 权限信息表 where 操作员名称='" & DataCombo1.BoundText & "'"
Set rs1 = ESQL(txtSQL)
If rs1.RecordCount > 0 Then '当记录大于零时
Text1.Text = Trim(rs1.Fields("密码")) '赋值给text1.text
Else
Text1.Text = ""
End If
End Sub
Private Sub Command1_Click() '保存操作员信息
'按操作员名称查询权限信息
'按操作员名称查询权限信息
txtSQL = "select * from 权限信息表 where 操作员名称='" & DataCombo1.BoundText & "'"
Set rs1 = ESQL(txtSQL)
If Text2.Text <> "" Then
rs1.Fields("密码") = Trim(Text2.Text) '赋值给rs1.Fields("密码")
rs1.Update '更新记录
'清空文本框内的数据
Text1.Text = ""
Text2.Text = ""
MsgBox "密码设置成功!", , "系统提示"
Unload Me
End If
End Sub
Private Sub Command3_Click()
Form1.Enabled = True
Unload Me
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then Command1.SetFocus
End Sub
6.7密码设置
图6.15 实验室设备管理系统登陆身份窗体
If czy.Caption <> "" And Text1.Text = Trim(Adodc1.Recordset.Fields("密码")) Then
'调入frm_main主窗体
Load Form1
Form1.Show
Form1.St1.Panels(3).Text = czy.Caption
Unload Me
Else
'输入三次错误的密码,系统自动退出
If TIM = 3 Then
MESSAGE = MsgBox("密码输入错误,请向系统管理员查询!", 0, "系统提示")
If MESSAGE = vbOK Then End
End If
If czy.Caption = "" Then
MsgBox "请选择操作员!", , "系统提示"
ListView1.SetFocus 'ListView1获得焦点
Else
If Text1.Text <> Adodc1.Recordset.Fields("密码") Then
MsgBox "密码错误,请重新输入密码!", , "系统提示"
TIM = TIM + 1 '记录输入次数
Text1.SetFocus 'text1获得焦点
End If
End If
End If
End Sub
Private Sub comend_Click()
End
End Sub
VB+access实验室设备管理系统
第七章 软件的测试
7.1 系统开发环境
硬件平台是指开发与运行所需要的硬件环境,主要包括计算机机型及硬件配置。由于本系统是一个小型的MIS管理系统,因此对计算机硬件的要求不高,比较经济,只要配备有奔腾四代赛扬处理器2.0GHZ(或以上)、256M内存(或以上)、60G硬盘(或以上)的普通微机即可顺利运行。
软件平台是指系统开发与运行的软件环境。本系统在开发时选用了稳定性较强的Windows XP中文专业版和Visual Basic6.0作为开发语言,同时选用了SQL Server 2000 数据库,由于这些软件产品都是Microsoft公司的产品,因此彼此之间的兼容性较好,开发出的应用系统稳定性较高。
Visual Basic 6.0具有可视化的开发环境,可以快速完成系统的开发,内部集成的数据库访问通道,使得可以轻松方便的对数据库管理。数据库采用SQL Server 2000,由于我们的系统要求,采用它完全可以适合我们的工作需求,并且它所支持的数据类型十分丰富,维护简便,费用比较低,人员素质要求不是很高,容易升级。
7.2 系统测试
在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,示经周密测试的系统投入运行,将会造成难以想像的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。
(1)单元测试:
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。
(2)组合测试
组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。
(3)确认测试
确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是对表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。
(4)系统测试
系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统不否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
(5)用户验收测试
在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。
在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:
1、菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,我把相关的基础数据,基本上全部输入到本系统中,并对每一个菜单项反复进行了增加、删除、修改等操作,从而保证了菜单级功能的正确实现。
2、数据跟踪:完成菜单项测试后,我又对系统内的每一个数据进行了跟踪。例如:在成绩管理模块中,我首先对考试类型进行设定,然后在成绩添加模块中进行数据操作,随时观察这两个模块之间是否有冲突产生,配合得是否正确,再然后在成绩浏览模块中进行验证,说明该功能完全正常,对其它的功能模块也进行了类似的设置。
3、综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次来检验系统功能是否符合系统设计的要求。
本系统采用黑盒测试用例如图;
VB+access实验室设备管理系统
总 结
本系统主要完成了实验室管理中的一些基本的功能,如:借出和归还、设备类别和信息的添加、删除和修改,、教师人员使用设备的添加、删除和修改,还有对管理员的添加和密码的修改等。虽然本系统主要实现了visual basic6.0中的一些基本功能,实现了图书管理的系统化和自动化。
本系统采用的是现在流行的面向对象的visual basic6.0开发的,由于水平有限,所以在开发过程中遇到了许多问题和难点,是在郭老师的指导下完成的,而有些问题是自己摸索出来的,没有完全体现出visual basic6.0的优点,而且还存在一些不足之处。(如:没有实现报表的使用。)。本系统主要用了ADO组件。本系统使用的是本地的数据库SQL Server200。本项目还有许多地方要进行改进,比如:打印报表、还有对超出期限的使用者进行罚款等。本系统还有待于改善。
本系统的设计已经初步完成,由于时间的仓促以及经验的不足,难免存在许多问题,这就需要在今后的实践中加以修改和完善。本系统经过调试后,应该说基本上是可行的。在程序设计中,我觉得测试是一个复杂而重要的步骤,应该认真对待,当一个功能或一个函数过程完成后,必须认真测试,可以采取书本上学到的黑盒测试和白盒测试两种方法,黑盒测试时应该尽量把所有的可能性都一一试过,验证其正确性;而白盒测试则可以通过设置断点,添加监视来一步一步检查它的流程和数值的正确性。只有经过认真的测试,软件的质量才能得到保证。
同时了解到程序清单的布局对于程序的可读性也有很大影响,利用适当的阶梯形式可以使程序的层次结构清晰明显,还有经常作好一些代码的注释,这样对自己或别人检查程序时带来很大方便。
通过此次软件工程设计,我学习掌握了一个软件开发的整个过程,同时也深刻的体会到软件工程中的结构化,模块化的设计方法,以及提高软件可靠性、可维护性、提高效率的重要性。通过使用Visual Basic 6.0语言作为编程工具体会到其软件的强大功能及易学、易用的特性。
在本系统的开发过程中,基本是按照总体思路进行设计编制的,基本达到了预期的结果。通过这次课程设计,不仅是对Visual FoxPro 6.0这门课程进行了更加深入和系统的学习,更多的是学到了在实践中分析问题,解决问题的方法,这在以后的工作学习中,对自己也会有极大的帮助,总之,通过这次课程设计自己感觉到受益非浅,收获很大。
在这篇论文编制过程中,得到了指导老师张老师和赵老师的大力支持,从选题制定,表单设计,模块测试到系统调试的每一个环节,就存在的问题和不足之处及时给予修改和指正。在整个系统的完成过程中,老师们始终给予我热情的鼓励和无私的帮助,使我在较短的时间内顺利地完成。在此,谨向有关老师和同学,特别向老师们表示衷心的感谢和诚挚的敬意。在这次设计中,由于水平有限,加之时间短促,难免有不足之处,诚恳希望批评指正。
参考文献
[1] 谭浩强主编.Visual Basic 程序设计(二级)教程.清华大学出版社,2002年
[2] 柳青等编.Visual Basic 程序设计教程.高等教育出版社,2002年
[3] 范立南. SQL Server 2000 实用教程.北京:清华大学出版社,2004年
[4] 柳青等编.Visual Basic 程序设计实验与实训.高等教育出版社,2002年
[5] 孙燕等编.Visual Basic 程序设计.高等教育出版社,2000
[6] 萨师煊. 王珊编.数据库系统概论. 北京:高等教育出版社,2003年
[7] 杨志强. Visual Basic程序设计教程.北京:高等教育出版社,2003年
[8] 周志刚. 软件工程. 北京:机械工业出版社,2001年9月