教材管理系统

news/2024/4/19 2:09:08

目 录
第一章 引言 3
1.1 背景 3
1.1.1教材管理系统 3
1.1.2信息管理系统 3
1.2开发教材管理系统的目的和原则 5
1.3开发环境介绍 6
1.3.1 开发平台 6
1.3.2 数据库查询语言——SQL 8
1.3.3 数据库设计工具——ACCESS数据库管理系统 9
第二章 系统设计 11
2.1 系统分析 11
2.2 系统流程和操作方式设计 13
第三章 系统界面设计 14
3.1系统界面设计 14
3.2系统的界面及窗体 16
3.2.1 下面是系统的主要窗体 16
3.2.2 界面多文档(MDI)frmDMI的设计及代码 17
第四章 数据库的设计 32
4.1数据库设计 32
4.1.1 数据库概念和发展 32
4.1.2 数据库模型及参照完整性 33
4.1.3数据库的建立与连接 34
4.2 数据库查询设计 36
4.2.1查询功能简介 36
4.2.2查询功能实现的相关技术 36
4.2.3查询功能的具体实现 38
4.3系统测试与评价 40
总 结 41
致 谢 42
参考文献 43

第一章 引言
1.1 背景
1.1.1教材管理系统
学校教材管理主要是由教材计划制定、采购、入库、发放、记账、结算等一系列工作所组成,该工作各院校都设有专门机构负责该项工作,通常是教材科。由于学校中专业设置门类多,各专业每期开设课程种类多其业务不仅涉及出版部门,而且要面对全校各系、部的授课教师,各班级的学生,每期教材科涉及管理的入出库教材种类少则几百多则几千种,涉及教材册数少则几千多则几万,涉及人员广,工作量大,再者特别是近年来,我国高等教育规模的不断扩大,学校学生 人数迅速增加,使教材管理工作更加繁重不堪。据调查,到目前为止,我国还有许多学校甚至是一些重点院校的教材管理仍为手工管理方式,这种现状不但与现实学校教材管理的业务需求不相适应,并且也与学校信息化建设的发展趋势不相适应,因此,学校教材管理人员目前迫切需要一套方便、高效的计算机化的管理信息系统来代替他们繁琐、低效的传统手工管理方式,并最终实现教材管理的全面自动化。

1.1.2信息管理系统
(1)、信息管理系统的简介

教材管理系统属于信息管理系统中的一个具体信息管理类型,而所谓的管理信息系统也就是我们常说的MIS(Management Information System)它是“由人、计算机等组成的能进行信息的收集、传送、储存、加工、维护和使用的系统。管理信息系统能实测企业的各种运行情况利用过去的数据观测未来;从企业全局出发辅助企业进行决策;利用信息控制企业的行为;帮助企业实现其规划目标。”在当今这个强调管理、强调信息的时代,MIS变得越来越普及。MIS作为一门新的学科,它跨越了多个领域,如:管理科学、系统科学、运筹学、统计学以及计算机科学。在这些新兴的学科基础上发展出一种信息收集和加工的方法,最终形成现在一个纵横交织的系统。本系统为单机版运行方式,对于硬件的要求比较小,能够在任何运行图形化Windows视窗操作系统上运行。另外需要说明的一点是,限于技术的原因,目前国内还没有出现更高级的管理模型开发方法,所以本系统采用广泛使用的MIS系统。

(2)、信息管理系统的概况和发展方向

第一阶段:统计系统,所研究的内容是数量数据间表面的规律,它可以把数据分成较相关和较不相关的组,然后把数据转换为信息。
第二阶段:数据更新系统。
第三阶段:状态报告系统,它可以分为生产状态报告、服务状态报告和研究状态报
告等系统。
第四阶段:决策支持阶段,它是用来辅助决策的信息系统,该系统可以计划、分析方案,审查解答和求解的误差。它具有较好的人机对话方式,可以和不怎么熟悉计算机的管理人员通话。它一般包括一些模型用以产生决策信息,但不强调全面的管理功能。
(3)、 管理信息系统的发展方向
从国际技术发展来看,20世纪90年代出现了几种全新的管理技术:
BPR—企业过程重组;IDDS—智能化决策支持系统;Lean Production—精良生产;Agile Manufacture—灵捷制造。
相应的MIS开发技术在20世纪90年代也有了新的发展:信息综合集成和Internet/Intranet。
1.2开发教材管理系统的目的和原则
开发教材管理系统的目的就是充分利用计算机和现代办公软件,摆脱传统办公工具,用计算机实现集中方便的管理工作,把学校教材科的工作人员从繁重的体力劳动中解脱出来以达到提高工作效率和质量,最终实现教材管理的全面自动化为和现代化。要实现这个目标在开发过程中应遵循以下几条原则:
1.、从实际出发,总结借鉴吸收相结合的原则
参照并保留了其他软件的征订、采购、发行、结算等常规应用部分,改变了原来库连接方式,所有库连接形成一个整体,增强了智能化和自动化 程度。具有独立的设计构思,方便、快捷、简单、实用。
2、编制和实施操作的现实性
. 该教材管理系统是我们在Windows操作平台下开发的初级版本,既考虑了与旧的方法的衔接,又注意了新情况新特点,注意承上启下,运算规则(规律)更具科学性。在编制过程中,我们既考虑了与现实旧软件和手工操作的衔接,又注意了新方法的应用,增加了可操作性,现实、可靠、 即时使用。逐步成熟后,可随着技术条件的改进和提高,随时升级可见的用户界面——要求系统的大部分功能在菜单或工具栏级别上通过简单的鼠标点击完成
3、教材管理的框架,应以科学严谨,各种新思想,新方法构筑完备为原则
既要保证教材管理系统的科学性、完整性、系统性,又注意到教材管理的灵活性和可操作性。同时又较好的解决了教材管理工作的部分难点问题,比如多价书的征订采购发行,到货前书目替换,大量的录入工作,查找书目难以操作等等。
4、统要有简单可得的帮助
整的工具栏、状态栏和系统帮助。
1.3开发环境介绍
使用Visual Basic 6.0作为管理系统的开发平台,ACCESS2000用于数据源的开发;使用ODBC(开放式数据库连接)进行对数据源的连接,SQL结构化查询语言用于实现查询功能。之所以采用vb作为开发平台主要是考虑到对此种语言的熟悉性以及使用vb能够在较短的时间内给用户提供友好的界面和完善的功能,缩短了开发周期。而数据源的开发最初是想使用SQL Server企业管理器进行的,但是考虑到ACCESS的简单易用性,最终还是采用了ACCESS2000。

1.3.1 开发平台
用Visual Basic 60作为数据库开发平台,3.0版以后的Visual Basic具有数据库连接和数据处理功能,因此完全有资格作为数据库应用程序的开发环境。Microsoft公司把许多新的数据访问功能加到Visual Basic中,使得该产品成为桌面数据库市场中Access、FoxPro及Paradox for Windows的直接竞争者。与普通的数据库系统相比,用Visual Basic作为数据库开发平台有以下优点:
(1)、简单性
Visual Basic提供了数据控件,利用该控件,用户只要编写少量的代码甚至不编写任何代码就可以访问数据库,对数据库进行浏览。
(2)、灵活性
Visual Basic不像一般的数据库(如Access)那样局限于特定的应用程序结构,也不需要用某些指令对当前打开的数据库进行操作,因而比较灵活。
(3)、可扩充性
Visual Basic是一种可以扩充的语言,其中包括在数据库应用方面的扩充。在Visual Basic中,可以使用ActiveX控件(以前版本中称为VBX或OLE控件),这些控件可以由Microsoft公司提供,也可以由第三方开发者提供。有了这些控件,可以很容易地在Visual Basic中增加新功能,扩充Visual Basic数据存取控制的指令系统。 用Visual Basic 6.0作为数据库前端,数据库前端是一个计算机应用程序,用该程序可以选择数据库中的数据项,并把所选择的数据项按用户的要求显示出来。数据库系统本身被称为后端,后端数据库通常是一个关系表的集合。之所以选择Visual Basic作为开发数据库前端应用程序的工具,主要是因为Visual Basic可以和多种数据库连接。也就是说,目前较为流行的大多数数据库都可以与Visual Basic连接,因而可以用Visual Basic开发相应的前端应用程序。Visual Basic通过不同的方式与各种数据库进行连接,主要有三种方式,即Access数库引擎、MicrosoftODBC驱动程序、第三方ODBC驱动程序。
A.Access数据库引擎
Access是Visual Basic的“内部数据库”,即在Visual Basic中可以直接建立Access数据库。同时,通过Access数据库引擎,还可以使用下列数据库:
·Btrieve(.DAT)
·dBASE(.DBF/.NDX)
·Foxpro(.DbF/.CDX/.NDX)
·Paradox(.DB, .PX)

B.Microsoft ODBC
通过’Microsoft ODBC驱动程序,可以使用下列数据库:
·Microsoft SQL Server
·Oracle
·Sybase SQL Server
Excel(.XLS)
Text(.TXT)
Access(.MDB)
Btrieve
DBASE
FoxPro
Paradox
上面所列的数据库中,除前三种外,其余数据库均包含在一套Microsoft ODBC桌面数据库驱动程序及Microsoft Query 中。

1.3.2 数据库查询语言——SQL
Visual Basic是数据库开发的主要开发工具,同时为了实现查询的功能以及系统的一些相关功能,SQL语言的使用也是必不可少的,SQL语言即结构查询语句,SQL语言之所以能够为用户和业界所接受,成为国际标准,是因为它是一个综合的、通用的、 功能极强,同时简洁易学。SQL语言集数据查询(data query)、 数据操纵(data manipulation) 、数据定义(data definition) 和数据控制(data control) 功能于一体,充分体现了关系数据语言的特点和优点。 其主要特点包括:
(1)综合统一
主要功能是通过数据库支持的数据语言来实现的。
非关系模型(层次模型, 网状模型)的数据语言一般都分为模式数据定义语言(schema data definition language ,简称模式DDL),外模式数据定义语言(subschema data definition language,简称外模式DDL)与数据存储有关的描述语言(data storage de-scription language,简称DSDL)以及数据操纵语言(data manipualtion language,简称DML) ,分别于定义模式, 外模式,内模式和进行数据的存取与处置。当用户数据库投入运行后,如果需要修改模式,必须停止现有数据库的运行,转储数据,修改模式并编译后再重装数据库,因此很麻烦。
(2)高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,有其完成某项请求,必须指定存取路径。而用SQL语言进行数据 操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程均由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。
(3)面向集合的操作方式
非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都是一条记录。例如,查询所有平均成绩在80分以上的学生姓名,用户必须说明完成该请示的具体处理过程,即如何用循环结构按照某条路径一条一条地把满足条件的学生记录读出来。而SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可以是元组的集合。
(4)语言简洁,易学易用
SQL 语言功能极强,但由于设计巧妙,语言十分简洁,完成数据定义,数据操纵,数据控制的核心功能只用了9个动词: CREATE、DROP、SELECT、ENSERT、UP-DATE、DELETE、GRANT、REVOKE、ALTER.而且SQL语言语法简单,接近英语口语,因此容易学习,容易使用。
1.3.3 数据库设计工具——ACCESS数据库管理系统
ACCESS数据库是个人、部门及企业管理数据的最易操作的新一代数据库。它兼容传统的数据库,同时进一步增强了web支持。可以非常方便地跨平台作业和共享数据。
ACCESS具有一个数据库管理系统所应具有的功能。Access 2000是一个面向对象的采用时间驱动机制的新型关系数据库管理系统。它可以通过ODBC与其他数据库相连, 实现数据交换与共享数据库是进行信息管理的基础。利用计算机进行信息管理首先要建立数据库。ACCESS 2000可以用作企业级后端数据库(如Microsoft SQL Server)的前台客户端。ACCESS有两种使用方式:作为创建个人或部门数据库的独立应用程序,或作为更强健、更具扩展性的后端数据库的接口客户端。不论选用了何种后端数据源,最终用户都将得到使用流行的桌面数据库客户端时易于使用的好处。

1、信息查找和使用更容易的特征
(1)将数据库转换成以前的ACCESS版本,ACCESS用户首先可以将数据库保存为以前的ACCESS版本,是不同版本的软件用户共享数据更加方便。
(2)对数据库窗口进行更改,以便容纳在ACCESS 2000种现实的新对象,这样可以提高可用性,并使其同整个OFFICE 2000所使用的新用户界面相一致。
(3)名称自动更正特征能够自动解决用户重命名数据库对象时所产生的不匹配问题。例如,当用户重命名表中的字段时,更改将被自动传递到相关的对象(例如查询和窗体),以便用户可以继续使用应用程序。
(4)条件格式支持负数和正数,并可以将表示成小于、大于、介于和等于的值。此外,用户还可以根据用户定义函数设置格式。用户可以根据值设置颜色、背景、样式。
(5)子数据表提供数据纲要,以在同一窗口中查看和编辑所有相关数据。
(6)用户可以将数据从Microsoft Access导出到Microsoft Excel,方法是将Access对象(表格、查询等)从数据库容器拖放到Microsoft Excel。这提供了一种将数据迅速导出到Excel进行进一步分析的快速方法。
(7)直接从“窗体”视图更改字段(例如,颜色或字体)更方便了。
(8)Access具有打印“关系”窗口的视觉图表的能力,可让用户更加方便地查看数据库的结构。
(9)控件分组特性允许用户将控件作为单个单元进行分组,使窗体的设计更容易。
(10)在关闭文件时,如果占用磁盘空间太多,Access 2000会自动压缩数据库。这可以确保使Access数据库尽可能地小。
2、具有Web特性的信息共享特性
3、丰富的信息管理分析工具
(1)Microsoft Access 2000支持OLE DB,允许用户将Access界面的易用性和企业后端数据库(例如,Microsoft SQL Server)的可伸缩性结合起来。
(2)Access界面可以创建一种新的文本类型(.adp),该文件类型可直接连接到Microsoft数据库引擎(MSDE)和Office中与SQL服务器兼容的数据存储区、SQL Server6.5或SQL Server7.0。这使用户可以方便地利用Access中熟悉的界面来创建真正的客户端/服务器应用程序。
(3)(新的设计工具允许用户在处理Microsoft Access项目文件( .adp)时,方便地创建和管理服务器端的对象,其中包括表格、视图、存储的过程和数据库图表。
(4)Microsoft Access 2000允许用户执行和管理普通Microsoft SQL Server7.0管理任务,例如复制、备份与恢复、以及完全性。

第二章 系统设计
2.1 系统分析
系统分析的任务是明确教材数据库管理系统开发的目的、系统应用的功能等,主要有以下步骤:
1.软件结构分析
对于大型系统的设计,通常分为两个阶段:结构设计和过程设计。
结构设计:确定系统由哪些模块组成,以及这些模块之间的相互关系。
过程设计:确定每个模块的处理过程 。其中,结构设计是总体设计阶段的任务,而过程设计则是详细设计阶段的任务。这里只是一个小型的数据库管理系统,只分析构成它们最基本的成分以及所有这些成分之间的相互关系。结构分析就是系统分析人员对完成任务的每一个工序进行分析的过程。
这里只画出其结构的业务流程与数据流成图,如图2-1, 2-2

图2-1业务流程图

                       图2-2数据流程图系统开发的过程首先是要确定需要建立的表格以及视图,即首先完成数据库的设计,这个过程主要是通过Access的使用完成的;其次,就是进行界面的设计,这个过程是在VB中完成的,它是系统开发中比较重要的一步,系统界面在用户对软件的评价中占有很大的比重,影响到本次开发的成功与否,所以在后面将有专门一部分论述界面设计。最后就是功能编码功能的实现了,作为一个程序员来说,这一部分的工作相对简单,需要注意的主要是SQL语言在程序中的嵌套以及部分API函数的调用。
  1. 工作量分析
    对工作量的分析,是以分析传统教材管理系统的各种工作量为基础的。分析包括输入量分析,输出量分析,文档结构,程序编制,调试状况分析,一般有:
    (1)问题分析与综合
    (2)数据库组织与结构的分析
    (3)文档结构分析与编制
    (4)子系统处理过程分析
    (5)书目记录的种类分析
    (6)与用户充分交流的分析
    (7)输出产品的种类格式分
    (8)程序编制、调试状况分析
    (9)软件测试对象的分析
    2.2 系统流程和操作方式设计
    教材管理系统的工作流程建立在传统手工工作流程的基础上,但又不能完全等同于手工工作流程。因为教材管理系统毕竟不同于传统手工作业,从效率上来说,前者也高于后者,前者只需要少量的人工干预就能够实现教材信息的集中管理。
    首先,在流程安排上应尽量避免数据的重复输入,实现从采购到发放一次输入的数据得到多次使用,以提高系统的工作效率。这一步很大程度依赖于数据库的设计。
    其次,选择合适的操作方式。计算机系统操作方式有两种:一种是联机操作方式,即人机交互方式 ;另一种是脱机操作方式,它是将事先设计好的一套操作程序以作业的形式提交给计算机,由计算机依托几批处理的方式完成这套操作,并将处理结果通过系统打印输出。本次设计的教材管理系统属于第一种操作方式,需要用户输入信息完成操作。之所以采用这种方式,主要是考虑到此数据库管理系统的实时性需求,因为数据库随时可能都需要得到改变。

         第三章  系统界面设计
    

3.1系统界面设计
1、 为了设计出符合一般标准又具有特色的界面,系统开发时要遵循以下开发原则:
(1) 保证界面设计的风格具有一致性。
(2) 界面设计时,控件的摆放要协调和匀称。
(3) 常用操作(如教材管理、查询 、打印等操作)应建立快捷方式,方便管理员日常操作。
(4) 提供信息反馈,对一些不常见的操作和至关重要的操作,系统应该能反馈信息。
(5) 提供错误处理信息,在出现错误时,系统应该能检测出错误并提供错误处理的功能;错误出现后,系统的状态不发生变化,或者系统要提供错误恢复的向导。
(6)为了方便管理员的管理应设置工具栏和状态栏。
系统的总体设计,预订需要设计几个具有主要功能的窗体,其中系统主要功能界面是最主要的,是设计的重点。该界面上包括了系统的功能查询以及触发其他单项功能界面的快捷方式,如教材管理、查询、打印与报表等。

2、系统结构
本系统是以教材管理业务为原型设计开发的,教材科的日常业务大体上有如下几项:
(1)教材预订。教材的预订工作基本上是由系、部来完成。教材科将教材征订通知下发到各系、(轮流传阅),各系从中选订所开课程的教材,填写预订单,经系、部汇总报教材科。教材科汇总报教务处审批后,编制填写正式订单寄发到各出版社。
(2)教材入库业务。出版社按订单如期如数发书,教材科查收入库。
(3)教材发放。按预订数量发放专业和年级用书。通常是以系、班级为单位领进行领书。
(4)查询,这项工作包括四项内容,其一是预订查询及时了解各系教材的订购情况;再就是入库查询及时掌握入库情况;第三是库存查询情况;第四是帐务查询,主要记录学生、班级、教师领教材的详细情况。
(5)打印与报表,主要用于订书、购书、发书清单的打印。
(6)系统管理主要包括用户、密码的更改,学生信息管理和数据库的维护。
(7)选项和系统帮助能使用户快速得到帮助。

3、教材管理系统功能模块设计图
根据上述我们对教材管理业务流程和数据流程的调查分析,并根据模块划分原则,同时考虑到用户对新系统的易学易用性,我们将新系统划分为如3-1图所示的功能模块结构:

图3-1功能模块结构

3.2系统的界面及窗体
3.2.1 下面是系统的主要窗体

                        图3-2 登录窗口 图3-3 系统界面当系统管理员想进入系统时,在登录窗体(图3-2)中输入用户名和密码,点击确定按钮,就可进入教材管理系统的主窗体界面(图3-3),管理员就可以进行如下的工作:

(1) 通过订书单来确定所需要订的书。
(2)把订书单和库存做比较得出还需要订阅的书的名称、数量等。
(3)把所需要订阅书导出到订书表,通过订书表向各出版社订书。
(4)等所需要的书到了,把它们进入库存,更新库存数据库。
(5)比较新库存和订书单,导出各学生,各班级,各系的发
报表。
(6)按照发书报表进行发书,更新库存,并备份原来的库存,比较一下是否有错。
(7)按照学生的发书报表发书,并把各学生的领书清单打印发给学生。
用户界面是开发应用程序的最主要的组成部分,用户界面设计的优劣决定了应用程序的 易用性、易操作性,基于windows应用程序的用户界面的样式主要有两大类:单文档界面(SDI)和多文档界面(MDI)。采用单文档还是多文档要看应用程序的目的如本例就是用的多文档(MDI)的样式,因为一个处理教材管理的用户很可能会同时进行几种操作,这样用户就可以在不同的窗口进行切换操作。

3.2.2 界面多文档(MDI)frmDMI的设计及代码
1、frmDMI窗体是系统的主窗体(图3-3),这里是用户最常用的部分其代码为
Private Declare Function GetMenu Lib “user32” (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib “user32” (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib “user32” (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long

Const MF_BYPOSITION = &H400&

Private Sub MDIForm_Load()

StatusBar1.Panels(1).Text = “教材管理系统:就绪”
If InsertBook = False Then
mnuInsert.Enabled = False
Toolbar1.Buttons(8).Enabled = False
Toolbar1.Buttons(12).Enabled = False
mnuQueryR.Enabled = False
End If
If OrderBook = False Then
Toolbar1.Buttons(7).Enabled = False
Toolbar1.Buttons(11).Enabled = False
Toolbar1.Buttons(15).Enabled = False
mnuDingshu.Enabled = False
mnuQueryBook.Enabled = False
mnuOrderBook.Enabled = False
End If

  2、用户管理和学生管理是最重要的部分,它涉及到系统的安全问题和学生的详细资料如:图3-4、图3-5

图3-4
用户管理中心提供用户的帐户管理,在其中可以设置用户的权限。对用户进行添加、修改和删除。各个用户的权限不同,所可以浏览,查询的内容也不同。
Private Sub cmdupdate_Click()
If txtname.Text = “” Then
MsgBox “请输入用户名!”, vbCritical + vbOKOnly, “输入用户名”
Exit Sub
End If
If txtpass.Text <> txtagain.Text Then
MsgBox “你的密码不一样,请重输!”, vbOKOnly + vbCritical, “密码不一样”
txtpass.Text = “”
txtagain.Text = “”
txtpass.SetFocus
Else:
dbRecordset.Fields(0).Value = txtname.Text
dbRecordset.Fields(1).Value = txtpass.Text
dbRecordset.Fields(2).Value = Check(0).Value
dbRecordset.Fields(3).Value = Check(1).Value
dbRecordset.Fields(4).Value = Check(2).Value
dbRecordset.Fields(5).Value = Check(4).Value
dbRecordset.Fields(6).Value = Check(3).Value
dbRecordset.Fields(7).Value = Check(5).Value
dbRecordset.Fields(8).Value = chkSaveD.Value
dbRecordset.Fields(9).Value = chkBook.Value
dbRecordset.Update
cmdupdate.Enabled = False
End If
cmddel.Enabled = True
cmdadd.Enabled = True
cmdmodify.Enabled = True
logoinfo.Enabled = False
sets.Enabled = False
End Sub
这里记录着所有学生的信息,其中有学生的相关资料(学号、班级、姓名、留级否、退学否,)在此可以对学生记录进行修改、添加、编辑等操作。

图3-5

   其代码如下所示:

Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean
Private Sub Form_Load()
Me.Left = 0
Me.Top = 0
Dim db As connection
Set db = New connection
db.CursorLocation = adUseClient
strConn = “PROVIDER=Microsoft.Jet.OLEDB.4.0;” & “Data Source=” & App.Path & “\Book.mdb;Jet OLEDB:Database Password=******;”
db.Open strConn
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open “select * from xsxxb Order by 学号”, db, adOpenStatic, adLockOptimistic

Set grdDataGrid.DataSource = adoPrimaryRS
mbDataChanged = False
End Sub
Private Sub Form_Resize()
On Error Resume Next
'当窗体调整时会调整网格
grdDataGrid.Height = Me.ScaleHeight - 30 - picButtons.Height - picStatBox.Height
lblStatus.Width = Me.Width - 1500
cmdNext.Left = lblStatus.Width + 700
cmdLast.Left = cmdNext.Left + 340
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If mbEditFlag Or mbAddNewFlag Then Exit Sub
Select Case KeyCode
Case vbKeyEscape
cmdclose_Click
Case vbKeyEnd
cmdlast_Click
Case vbKeyHome
cmdfirst_Click
Case vbKeyUp, vbKeyPageUp
If Shift = vbCtrlMask Then
cmdfirst_Click
Else
cmdPrevious_Click
End If
Case vbKeyDown, vbKeyPageDown
If Shift = vbCtrlMask Then
cmdlast_Click
Else
cmdnext_Click
End If
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End Sub
Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'为这个 recordset 显示当前记录位置
lblStatus.Caption = “第” & CStr(adoPrimaryRS.AbsolutePosition) & “条记录”
lblStatus.ForeColor = &HFF
End Sub
te Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'验证代码置于此处
'下列动作发生时该事件被调用
Dim bCancel As Boolean
Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
If bCancel Then adStatus = adStatusCancel
End Sub
Sub cmdadd_Click()
On Error GoTo AddErr
adoPrimaryRS.MoveLast
adoPrimaryRS.AddNew
grdDataGrid.SetFocus
Exit Sub
AddErr:
MsgBox Err.Description
End Sub
Private Sub cmdDelete_Click()
On Error GoTo DeleteErr
With adoPrimaryRS
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub
Private Sub cmdRefresh_Click()
'只有多用户应用程序需要
On Error GoTo RefreshErr
Set grdDataGrid.DataSource = Nothing
adoPrimaryRS.Requery
Set grdDataGrid.DataSource = adoPrimaryRS
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub
Private Sub cmdEdit_Click()
On Error GoTo EditErr
lblStatus.Caption = “编辑记录”
mbEditFlag = True
SetButtons False
Exit Sub
EditErr:
MsgBox Err.Description
End Sub
Private Sub cmdcancel_Click()
On Error Resume Next
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
If mvBookMark > 0 Then
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbDataChanged = False
End Sub
Private Sub cmdupdate_Click()
On Error GoTo UpdateErr
adoPrimaryRS.UpdateBatch adAffectAll
If mbAddNewFlag Then
adoPrimaryRS.MoveLast '移到新记录
End If
mbEditFlag = False
mbAddNewFlag = False
SetButtons True
mbDataChanged = False
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub
Private Sub cmdclose_Click()
Unload Me
End Sub
Private Sub cmdfirst_Click()
On Error GoTo GoFirstError
adoPrimaryRS.MoveFirst
mbDataChanged = False
Exit Sub
tError:
MsgBox Err.Description
End Sub
Private Sub cmdlast_Click()
On Error GoTo GoLastError
rimaryRS.MoveLast
mbDataChanged = False
Exit Sub
tError:
MsgBox Err.Description
End Sub
Private Sub cmdnext_Click()
On Error GoTo GoNextError
If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
’ 已到最后返回
adoPrimaryRS.MoveLast
End If
'显示当前记录
mbDataChanged = False

Exit Sub
GoNextError:
MsgBox Err.Description
End Sub

Private Sub cmdPrevious_Click()
On Error GoTo GoPrevError

If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveFirst
End If
'显示当前记录
mbDataChanged = False
Exit Sub

GoPrevError:
MsgBox Err.Description
End Sub

Private Sub SetButtons(bVal As Boolean)
cmdAdd.Visible = bVal
cmdEdit.Visible = bVal
cmdUpdate.Visible = Not bVal
cmdCancel.Visible = Not bVal
cmdDelete.Visible = bVal
cmdClose.Visible = bVal
cmdRefresh.Visible = bVal
cmdNext.Enabled = bVal
cmdFirst.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
End Sub

3、 密码更改-----通过用户对自己的密码进行修改如图3-6

图3-6
其代码如下:
Private Sub cmdOk_Click()
Set DbRs = New ADODB.Recordset
If txtSecond.Text <> txtFirst.Text Then
MsgBox “两次密码不一同!请重输。”, vbOKOnly + vbCritical, “错了!”
txtFirst.SetFocus
Exit Sub
End If
DbRs.Open “Select * From Authority where UserName =” & “'” & userName & “'”, dbConn, adOpenStatic, adLockOptimistic
DbRs.Fields(1).Value = txtFirst.Text & " "
DbRs.Update
MsgBox “成功更改密码”, vbOKOnly + vbInformation, “好了!”
Unload Me
End Sub

4、教材订购(图3-7)

                        图3-7

A、必修课教材定单:
(1)、所需填写的字段:书名、出版社、主编、版本、经手人、课程名称、订书人、专业、专业号、年级、系别、ISBN(可以不填)。
(2)、当填完需要买的一本书的定单后可以按“下一本书”的按钮对要订的下一本书的信息进行输入。
(3)、每个专业有一张自己的必修课的定单,按“下一定单”进行对另一专业的订书信息进行输入。
(4)、如果你输入有误,在没有保存的情况下可以按“取消输入”键。如果你将有误的数据保存了,可以在查询中修改。具体步骤请看查询。
B、选修课教材定单:
(1)、所需填写的字段:书名、出版社、主编、版本、经手人、课程名称、专业、专业号、年级、系别、ISBN(可以不填),订书人可以从下面的列表中选择(当你正确填写数据后就会在下方出现有张列表)。
(2)、这张定单是以学生为单位的,每个学生都有一张定单。
(3)、按“下一本书”进行对下一本需要订的书进行录入。
C、附加教材定单:
(1)所需填写的字段:书名、出版社、主编、版本、经手人、订书人、数量、ISBN(可以不填写)。
(2)这张定单是以订书人为单位的,每个订书人都有一张定单。
(3)按“下一本书”进行对下一本需要订的书进行录入,按“下一定单”对下一订书人所要订的书进行录入。
(4)本张订书表主要是为教师订书的,如果学生需要的多订书的话,也可以在这里订

其功能的是通过frmOrderBook窗体的调用来实现的,其代码(部分)如下:

Private Sub cboProfession1_click()
Select Case cboProfession1.Text
Case “营销”
txtPNum1.Text = “1”
ComboPartion1.Text = “基础部”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
Case “计算机”
txtPNum1.Text = “2”
ComboPartion1.Text = “医电系”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
Case “社会工作”
txtPNum1.Text = “3”
ComboPartion1.Text = “基础部”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
Case “医用电子”
txtPNum1.Text = “4”
ComboPartion1.Text = “医电系”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
Case “药剂设备”
txtPNum1.Text = “5”
ComboPartion1.Text = “医械系”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
Case “医疗器械”
txtPNum1.Text = “6”
ComboPartion1.Text = “医械系”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
Case “放射设备”
txtPNum1.Text = “7”
ComboPartion1.Text = “放射系”
txtPNum1.Enabled = False
ComboPartion1.Enabled = False
End Select
SendKeys “{tab}”
blnProfession1 = True
cmdEnter1.Enabled = blnEdition1 And blnGrade1 And blnProfession1 And CBool(Len(Trim(txtBookName1.Text))) And CBool(Len(Trim(txtPublish1.Text))) And CBool(Len(Trim(txtAuthor1.Text))) And CBool(Len(Trim(txtClass1.Text))) And CBool(Len(Trim(txtSignN1.Text)))
End Sub

5、教材入库与发放(图3-8、图3-9)

图3-8

图3-9

教材入库与发放及部分代码
(1)所需填写的字段:发票编号、教材名称、ISBN、出版社、单价、版本、数量、主编、经手人。
(2)按“查询”键可以对已经入库的书进行查询,具体步骤请看查询。
从发书选项中可以选择你要发的书的类型:必修课、选修课。
(3)必须填写的字段有专业、班级、领书人、经手人、年级,当你填写完这些字段时程序会自动显示数量、书名。
(4)在选修课发书界面中:
必须填写的字段有专业、年级、班级、所订人,当你填写完这些字段时程序会自动显示该人所订阅的书的书名。

Dim connection As connection
Dim strConn As String
Private Sub cbbxclass_Click()
Dim num As Integer
num = 0
Dim recordset5 As Recordset
Set recordset5 = New Recordset
recordset5.CursorLocation = adUseClient
recordset5.Open “select 班级 from xsxxb”, connection, adOpenDynamic, adLockOptimistic
If recordset5.RecordCount <> 0 Then
recordset5.MoveFirst
While Not recordset5.EOF
If recordset5.Fields(“班级”).Value = cbbxclass.Text Then
num = num + 1
End If
recordset5.MoveNext
Wend
End If
txtnum.Text = num
End Sub(详细的代码见源程序)
6、查询
查询是本系统的重点部分之一,系统功能的强大与否与数据库的的查询有密切的关系如图3-10、3-11

                         图3-10图3-11

这里的查询条件:发票号码、书名、入书日期、经手人、选择那个字段就可以对那个字段进行查询,可以复合查询。
以上只是对多文档(MDI)的部分窗体的说明详细请参见“系统帮助”部分

第四章 数据库的设计
4.1数据库设计
数据库设计的主要任务是在SBMS(database management system)的支持下,按照应用的要求,数据结构的好坏将直接影响到系统的效率以及实现的效果。好的数据库结构会减少数据库的存储量、冗余度,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于数据库的应用程序的实现方法等。
4.1.1 数据库概念和发展
数据库是存储在计算机内、有组织的、可共享的数据集合,是许多应用软件的核心。数据库是专指使用管理系统及其类似软件建立起来的并由数据库管理系统及类似软件所能存取和维护的数据及数据间逻辑关系的集合体
众所周知,数据库系统不是在计算机产生的同时就出现的,而是随着计算机技术的不断发展,在特定的历史时期、特定的需求环境下出现的。人类在1946年发明了世界上的第一台计算机到20世纪60年代这漫长的20年里,计算机操作系统还主要局限于文件的操作,同样,对数据的管理也主要是通过文件系统来实现。进行计算所需要的各种数据存放在各自的文件里面。当要使用这些数据的时候,将文件打开,计算机操作系统中的文件系统一般不支持对文件的并发访问。而在现代计算机系统中,为了充分发挥计算机系统的资源使用效率,一般都允许多个程序“同时”运行,即并发性。对数据库系统提出了新的要求。
七十年代初,E.F.Codd在总结前面的层次、网状数据库优缺点的基础上,提出了关系数据模型的概念。他提出了关系代数和关系演算。整个七十年代,关系数据库系统无论从理论上还是实践上都取得了丰硕的成果。在理论上,确立了完整的关系模型理论、数据依赖理论和关系数据库的设计理论等,这些关系数据库;在实践上,世界上出现了很多著名的关系数据库系统,比较著名的如System R,INGRES,Oracle等。
  进入二十世纪八十年代之后,计算机硬件技术有了飞速的提高。计算机技术的提高促使计算机应用不断深入,产生了许多新的应用领域,例如计算机辅助设计、计算机辅助制造、计算机辅助教学、办公自动化、智能信息处理、决策支持等。这些新的领域对数据库系统提出了新的要求。但是由于应用的多元化,不能设计出一个统一的数据模型来表示这些新型的数据及其相互关系,因而出现了百家争鸣的局面,产生了演绎数据库、面向对象数据库、分布式数据库、工程数据库、时态数据库、模糊数据库等新型数据库的研究和应用。
  不过到目前为止,在世界范围内得到主流应用的还是经典的关系数据库系统,比较知名的如Sybase,Oracle,Informix,SQL Server,DB2等。

4.1.2 数据库模型及参照完整性
数据库模型是数据库系统的核心和基础,通常由数据结构、数据操作和完整性约束三部分组成。其中数据结构是所研究的对象类型的集合,在数据库系统中通常按照数据库结构的类型来命名数据模型,传统的数据模型有层次模型,网状模型和关系模型。数据库操作是对数据库中的实例允许执行的操作的集合。数据库主要有检索和更新两大类操作,数据库的约束条件是完整性规则的集合,保证数据完整性是对数据库的一个很重要的要求,所谓完整性就是数据的正确性、有效性和相容性。
按照数据模型的特点,可将传统数据库系统分为网状数据库,层次数据库和关系数据库。
本系统的数据模型采用关系数据库模型。关系模型有下列一些优点:
1.数据结构简单
关系模型中,所谓的数据模型不过是一些表格框架,其中公共的属性名指示着各表间的联系。
2.可以直接处理多对多的关系
由于用表格数据直接表示两实体间的联系,因此能够直接处理多对多的关系。
3.能够一次提供一个元组集合
每一个查找命令都可以找到满足某种条件的所有记录。
4.数据独立性高
关系模型中,用户只指出他所要存放的数据类型、数据长度等数据本身的特性,而不需要设计这些数据的物理存放,因而数据独立性较高。
数据库领域的专家们进行了关系理论的研究,这些工作使得关系理论趋于完善,而且也促进了其它软件分支如软件工程的发展。
当然,关系模型也有它自己的缺点,主要有:
(1) 查询效率较低
关系模型的DBMS能够提供较高的数据独立性以及非过程化的查询语言,因此系统的负担就很重,过去要程序员完成的任务,例如寻找最佳的存取路径等工作,现在全部由系统包办代替。这里面最影响效率的操作是进行笛卡尔积运算和联结运算。
(2) 关系模型的系统要求应用程序员和DBA应熟悉关系数据库设计理论
关系DBMS要求关系模式是规范化的形式,以简化操作,避免一系列的潜在问题。
因此用户必须熟悉这些理论。这一点对普及应用有一定的影响。
4.1.3数据库的建立与连接
数据库建立首先必须明确数据库保存什么样的数据,然后设计数据库,建立由字段组成的表,字段里定义要存储的数据类型
表 5-1帐务查询表
字段名字 数据类型 字段说明
班级 文本 20个字符
学号 数字 主键
姓名 文本 20个字符
书名 文本 100个字符
价格 数字
数量 数字
5-2用户表

   字段名字	类型	      字段说明用户权限	文本	       主键用户名	文本	       20个字符密码	字符	
数据库的建立代码:

Private Sub cmdInsertDb_Click()
Dim fs, d, s
Set fs = CreateObject(“Scripting.FileSystemObject”)

d = App.Path & “\book.mdb”
CommonDialog1.DialogTitle = “请选择导入数据库”
CommonDialog1.Filter = “Access2000 的数据库 (.mdb)|.mdb”
CommonDialog1.ShowOpen
e = CommonDialog1.FileName
If e = “” Then
Exit Sub
End If
lblInfo.Caption = “正在导入数据库……”
Set dbConnection = Nothing
Set dbRecordset = Nothing
fs.copyfile e, d, True
Form_Load
lblInfo.Caption = “导入完成!”

End Sub
(部分代码)

数据库的连接是使用ODBC,ODBC技术是数据库应用开发中使用最为广泛的技术。ODBC(Open Database Connective开放式数据库连接)是由微软定义的一种数据库访问标准。ODBC是一种窗口技术,他能使数据库客户应用程序连接到一个远程数据库上。ODBC是一个客户端连接后台数据库技术,应用程序不必知道他所连接的是何种类型的数据库,可以用标准SQL版本来编写客户应用程序。
ODBC结构如图所示:

图4.1 通过ODBC驱动管理器连接客户应用程序和SQL Server数据库的ODBC结构

4.2 数据库查询设计
4.2.1查询功能简介
在本系统中,查询功能是系统的主要功能之一。在主窗体中,通过菜单、工具栏或者对Tabstrip控件的使用,调用查询,可以根据在文本框中输入关键字,在Combobox中选择查询字段来进行教材的预定、库存、发放等信息的查询;而在教材管理窗体中可以以同样的方法进行教材信息的查询;在查询管理中,同样也可以对学生资料进行查询。基本上完成了课题对查询功能的要求。
4.2.2查询功能实现的相关技术
本系统查询功能实现是通过将数据访问对象(DAO)与SQL查询的结合的方式,这样提高了数据库编程的灵活性
1、SQL查询
SQL是一种数据库的查询和编程语言,英文名为Structure Query Language,即结构化查询语言。它是一种对数据库中的数据进行组织、管理和检索的工具。当用户想检索数据库里的数据时, 用SQL语言编写提取信息的命令序列,它使用了某种规则以获 得数目有限的特定记录。数据库管理系统(DBMS)对SQL请求进行处理,检索大量所需要的数据,并将其返回给用户。这个过程就是SQL查询,通过查询可以快速方便地从表和视图中获得数据。
SQL不仅仅是一个查询工具,SQL也可以控制DBMS提供给用户的所有功能,数据定义语言,数据查询语句,数据更新语言,数据控制语言,四种语言就是SQL语言对数据库的操作。SQL语言可以被嵌入到计算机语言中,实现与DBMS的交互,控制数据的存取。SQL已成为了关系数据库的标准语言。它广泛应用与客户机/服务器的结构中。客户机利用SQL通过网络和存放有数据的服务器通信。正因为SQL是一个标准,所以SQL可以用来在不同的DBMS间通讯。可以说,SQL是一个管理数据的综合工具。

2、数据访问对象技术
(1) 数据访问对象(Data Access Objects)简称DAO,是集合、对象、方法、和属性。在Visual Basic代码中使用DAO,操作数据库,使用DAO可以进行查询,更新数据库中的值,创建数据库结构,在Microsoft Jet数据库下DAO还提供了某些SQL所没有的访问功能。它具有以下几个特点:
Ⅰ.对象编程:对象封装数据和对数据的操作函数。数据隐藏在对象中。只有通过对象的成员函数才能访问数据。在Visual Basic中则表现为利用对象的属性和方法使用对象。这一方面增强了数据的安全保护,也简化了编程工作。
Ⅱ.可支持多种数据源:DAO对象的实现是和名为MDB的Microsoft数据库文件机构紧密联系在一起的。除此之外,DAO还支持ODBC数据源和ISAM数据源。获取这些数据源的方式各有不同。这些数据源都可以通过Microsoft Jet数据库引擎访问。还可以绕过Microsoft Jet数据引擎,运用一种叫ODBC Direct的技术直接访问ODBC数据源。
(2) 在代码中使用DAO操作数据库时首先要确定使用哪个对象更为合适,然后执行其方法并设置和获取其属性。DAO必须是实例化使用的对象,并且DAO属于对象模式的层次要求对象拥有其他对象。在具体编码时,DAO的对象编程有它自身的特点:
Ⅰ.要使用对象变量,从创建对象变量开始使用变量,首先要对对象变量进行说明。
Ⅱ.在代码中使用集合,可以使用索引或者关键字(唯一的文本标识符用于指定集合中一个元素)从集合中获取一个元素。
Ⅲ.用缺省集和缺省属性来简化代码。
(3) 使用到的DAO操作数据的对象
• Database对象 连接到数据库
• OpenBase对象 创建一个数据库对象
• RecordSet对象 记录的集合
• Filed对象 代表表中字段
• Index对象 创建索引
(4)SQL语言与数据访问对象的结合
本系统中查询功能的实现是采用的SQL语言与DAO相结合的方式,我们将SQL查询语言嵌入到DAO的对象编程中去,以达到对数据库数据的访问很修改,并与界面控件相关联,以达到查询的功能。
4.2.3查询功能的具体实现

1、 订书查询代码

Private Sub cmdSave_Click()
Dim 订购查询 As Variant
If ModifyOrder = False Then
MsgBox “对不起,你无权对你所做的修改作出保存!” & vbCrLf & “请与管理员联系!”, vbOKOnly + vbCritical + vbMsgBoxHelpButton, “无权修改!”, App.Path & “\Bookhelp.hlp”, 订购查询
Exit Sub
End If
Dim a As Variant
a = MsgBox(“确定要将网格中所修改的数据保存到数据库吗?”, vbYesNo + vbQuestion, “保存吗?”)
If a <> vbYes Then
Exit Sub
End If
frmMDI.StatusBar1.Panels(1).Text = “正在保存……”
Dim rst As ADODB.Recordset
Dim strWhere As String
Dim strsql As String
Dim strDat As String
Dim strToday As String
Dim getString As String
blnNoRecordset = False
blnClick = True
Set rst = New ADODB.Recordset
strsql = “Select * from Query”
strWhere = " Where 1=1"
strWhere = strWhere &GetWhereString(cboYear, “年级”)
strWhere = strWhere &GetWhereString(cboPart, “系部”)
strWhere = strWhere & GetWhereString(cboProfession, “专业”)
If cboDate.Tag = vbChecked And Len(cboDate.Text) And cboDate.Text <> “<请输入或选择>” And Trim(cboCondition.Text) <> “” Then
Select Case cboCondition.Text
Case “早于”
strDat = CDateType(CStr(CDate(cboDate.Text) - 1))
getString = " and 定书日期 between #1/1/2000# and " & strDat
Case “等于”
getString = " and 订书日期 between " & CDateType(CStr(CDate(cboDate.Text))) & " and " & CDateType(CStr(CDate(cboDate.Text)))
Case “晚于”
strDat = CDateType(CStr(CDate(cboDate.Text) + 1))
getString = " and 订书日期 between " & strDat & " And " & CDateType(CStr(Date))
End Select
End If
2、库存查询代码

Private Sub cmdquery_Click()
Dim rst As ADODB.Recordset
Dim strWhere As String
Dim strsql As String
blnNoRecordset = False
blnClick = True
Set rst = New ADODB.Recordset
strsql = “Select ISBN,书名,主编,出版社,版本,价格,实存数量,可取数量 from sxxb”
strWhere = " Where 1=1"
strWhere = strWhere & GetWhereString(cboBookName, “书名”)
strWhere = strWhere & GetWhereString(cboPublish, “出版社”)
strWhere = strWhere & GetWhereString(cboAuthor, “主编”)
strWhere = strWhere & GetWhereString(cboEdition, “版本”)
’ 'debug.print strsql & strWhere
rst.Open strsql & strWhere, cnnDb, adOpenStatic, adLockOptimistic
If rst.RecordCount = 0 Then
blnNoRecordset = True
End If
Set printRs = rst
showdata rst
If blnNoRecordset Or Not blnClick Then
cmdSave.Enabled = False
Else
cmdSave.Enabled = True
End If
End Sub

4.3系统测试与评价
软件测试是保证软件质量,提高软件可靠性的最主要的活动之一。它实施对软件规格说明、设计规格说明和编码的最终审核。软件测试的目的是以最少的人力、物力和时间投入,尽可能多地找出软件中潜在的各种错误和缺陷。测试的结果为软件可靠性分析提供了依据。设计测试用例的方法一般有两种:黑盒法以及白盒法。本次测试采用的是第一种方法,我们将所有可能的值来检查系统程序的正确性,并通过测试得到的结果进行必要的调试和功能改进。
通过测试结果,我们了解到,我们开发的系统开发的几个功能能够较好的完成工作,但是由于我们对客户信息了解不够以及本身的知识缺陷,所以在很多方面没有考虑到,比如说没有对于帮助系统始终没有提供更强大的索引功能。

总 结
经过三个月的学习,设计和编程,基本完成课题设计的任务,本次课题设计任务是开发教材管理系统,结合传统教材管理的模式,初步实现了教材的订购、查询、数据库管理等一些基本的管理系统功能,这些功能对于一般客户完全能够满足他们的需要。
我对开发环境Visual Basic 6.0并不是很熟悉,在以前的学习中也只是涉及到简单的程序设计,一开始做的还是有点力不从心,但在导师的耐心指导下,通过自己的努力学习和探索,我已经使自己可以使用Visual Basic 6.0以及SQL查询语言和ACCESS开发数据库应用程序。通过开发这个系统,我掌握了教材管理系统开发的基本过程,了解了教材管理的基本知识,掌握了SQL查询语言,巩固了我对Visual Basic 6.0学习,而在这次毕业设计的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学间相互帮助精神。
但是,由于实际条件和时间限制,还有自己平时的学习不够,系统在功能方面还不完善,有的仅仅是最简单最基本的功能实现,而且由于我们知识面的局限性,对于具体的MIS管理系统方面的知识还有很大的欠缺,可能在设计数据库存在着不合理的地方,以至于影响到整个系统的功能以及性能。
尽管系统有种种的不如意的地方,但是从课题开发开始到结束这一过程中,从查阅资料到撰写论文,从建库到建表,再到编写程序,从功能分析到界面设计,每一步都充满了我和同组同学辛勤劳动,每一次探索的成功都让我们欣喜,让我们得到无比的鼓舞。
总之,通过这次毕业设计使我学到了很多书本上没有的知识,让我了解到只有将理论和实际相结合才能将学到的知识消化为自己的,同时也让我认识到了我自身的不足。毕业设计留给我的经验对我以后的工作学习都是受益匪浅,它给我留下的教训也足以让我在今后的学习工作中引以为戒。

致 谢
在论文即将完成之际,回顾在紧张的工作中进行毕业设计的生活,感到受益匪浅,在此向所有关心和帮助过我的老师同学致以最真诚的感谢。
首先,我需要感谢我的导师卢萍老师,卢老师耐心解答我遇到的各种问题,热情的为我出谋划策,严格督促我毕业设计的进展,在系统设计阶段,卢老师多次帮我检查系统,给我指出错误,并为我提出更好的设想,在撰写论文阶段,几次审阅我的论文,并提出了许多宝贵意见,所以,如果没有卢老师的指导,我就不能较好的完成课题设计的任务。
再者,我还要十万分感谢我的同组的同学,没有他们的帮助我的毕业设计也不会较顺利的完成。

参考文献
【1】滕佳东著.《信息管理系统》(第2版).大连:东北财经大学出版社,2003.4
【2】 骆 丽等译.《金版Visual Basic5.0》.北京:电子工业出版社,1999.2
【3】刘炳文等.《Visual Base 程序设计》—数据库篇.北京:人民邮电出版社,1999.6.
【4】宋伟. 吴建国等编著.《中文Visual Basic6.0编程基础》.北京,清华大学出版社,
【5】王珊 陈红著《数据库系统原理教程》.北京:清华大学出版社,1998.7
【6】王珊.陈红.文继荣著.《数据库与数据库管理系统》.北京:电子工业出版社,1995
【7】郑人杰 主编.《中国计算机软件专业技术水平考试指定用书—软件工程》(初级).北京:清华大学出版,1999.5
【8】林立军.程斌.翁迪恩编著.《Visual Basic 6.0数据库开发指南》(第2版).西安:电子科技大学出版社.2000.2
【9】徐仁佐等编著.《软件工程》.武汉:华中科技大


http://www.ppmy.cn/news/73329.html

相关文章

惯性导航论文详解:神经惯性定位

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;Neural Inertial Localization 论文链接: https://arxiv.org/pdf/2203.15851v1.pdf 图1.从IMU测量到位置估计。给定惯性传感器数据&#xff08;左&#xff09;&#xff0c;我们的方法…

面了一个测试工程师要求月薪26K,总感觉他背了很多面试题...

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

测试类的使用

1.在pom文件中添加依赖 <dependencies> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope> </dependency> </dependencies>2.在s…

Vmware Linux磁盘空间扩容

Linux磁盘空间扩容 VMware虚拟机中配置&#xff08;1&#xff09;进入虚拟机设置界面&#xff0c;选择扩展磁盘容量。&#xff08;2&#xff09; 本次是在原来30G的基础上扩展为50G。 Linux中设置&#xff08;1&#xff09; 可以看出sda3是根分区&#xff0c;下面按照博客提示&…

掌握XPath:安装配置、解析流程、语法和实战练习全攻略

目录 引言 xpath安装与使用 解析流程与使用 xpath语法 xpath实战练习 引言 众所周知&#xff0c;XPath是Web开发中重要的工具之一&#xff0c;可以帮助我们在HTML或XML文档中快速定位和选择内容。但是对于初学者来说&#xff0c;XPath的安装配置、语法解析以及实际应用可…

响应式编程中Mono和Flux的区别

前言 当我们在使用Project Reactor&#xff0c;或者使用依赖于它的框架的时候。例如spring webflux&#xff0c;spring cloud gateway等&#xff0c;经常会用看到代码中有Mono和Flux两个术语。 响应式流 Reactor是由Pivotal公司开发的开源框架&#xff0c;它是开发响应式应用…

魔改车钥匙实现远程控车:(番外)在macOS上安装使用MicroPython

前言 哈哈&#xff0c;各位可能会奇怪为啥上一篇文章还在说怎么在 ESP32C3 上安装 Arduino&#xff0c;现在怎么又变成了安装 MIcroPython。 其实是因为上次写 Arduino 还是我高中时候的事了&#xff0c;已经不太会了。 虽然 MIcroPython 我从来没有接触过&#xff0c;但是 …

织梦网做城市分站织梦分站群二级目录织梦城市分站教程

一、安装网站 1、上传到服务器上输入www.xxxx.com/install进行安装(具体安装方法找百度一大堆); 可以参考http://www.hlzcb.com/zhimengxueyuan/zhimenganzhuangshiyong/25830.html 2.安装好后台点击后台系统→数据库备份还原→数据还原,点击下面的开始还原数据; 二、设…

vue导出word

先在项目中安装所需要的依赖包 npm install file-saver npm install docxtemplater-image-module-free npm install docxtemplater npm install pizzip npm install jszip-utils //angular-expressions 如果需要自定义图片尺寸需要安装此依赖包如图&#xff0c;一定要装完整 …

关于SD webui 部署运行的一些坑

[Bug 1]: RuntimeError: Couldnt install gfpgan 可以先尝试&#xff1a; pip install gfpgan 不过是在虚拟环境venv下的 E:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install gfpgan 如果还是无法安装gfpgan的原因是网络问题&#xff0c;就算已经科学上网…

【SAP Abap】X-DOC:SE18/19 - SAP第四代增强概念理解

【SAP Abap】X-DOC&#xff1a;SE18/19 - SAP第四代增强概念理解 1、Tcode2、概念3、增强选项类型4、增强实现类型5、增强操作方式6、增强选项与增强实现关系7、增强实施建议 1、Tcode SE18&#xff1a;Business Add-Ins: Definitions&#xff08;增强点定义/查看&#xff09;…

深度解析Qt背景设计:从基础到高级,从Widget到Quick

深度解析Qt背景设计&#xff1a;从基础到高级&#xff0c;从Widget到Quick 一、Qt背景设计的基础知识&#xff08;Basic Knowledge of Qt Background Design&#xff09;1.1 Qt背景的基本概念&#xff08;Basic Concepts of Qt Background&#xff09;1.1.1 QWidget和QQuickIte…

网易游戏开发实习生一面面经

面试时长20min&#xff08;没有手撕代码&#xff09; 1、介绍一下自己 2、MonoBehaviour是干什么的 3、说一下Update和FixedUpdate、LateUpdate的区别 4、关于xlua你了解多少 5、你觉得xlua有什么优缺点的地方 6、对Unity插件有了解吗 7、说一下shared_ptr和weak_ptr&#xff1…

C++ map用法总结(整理)

1&#xff0c;map简介 map是STL的一个关联容器&#xff0c;它提供一对一的hash。 第一个可以称为关键字(key)&#xff0c;每个关键字只能在map中出现一次&#xff1b;第二个可能称为该关键字的值(value)&#xff1b; map以模板(泛型)方式实现&#xff0c;可以存储任意类型的…

2023五一数学建模B题完整思路

已更新五一数学建模ABC题思路&#xff0c;文章末尾获取&#xff01; B题思路&#xff1a; 问题1&#xff1a;附件1为该快递公司记录的2018年4月19日—2019年4月17日的站点城市之间(发货城市-收货城市)的快递运输数据&#xff0c;请从收货量、发货量、快递数量增长/减少趋势、…

厚积薄发|迭代为什么叫冲刺?

上士闻道&#xff0c;勤而行之&#xff1b;中士闻道&#xff0c;若存若亡&#xff1b;下士闻道&#xff0c;大笑之。不笑不足以为道。–《道德经》 软件工程从原始的作坊式工作方式&#xff0c;经过了哪些思考、哪些方案的试探&#xff0c;才在不断地尝试与改善后&#xff0c;走…

java接口与实现

文章目录 一、Java接口二、Java实现接口三、Java接口回调四、Java接口与多态五、Java接口参数六、Java接口与抽象类的比较七、Java接口的UML图总结 一、Java接口 接口是Java语言中一种重要的数据类型&#xff0c;通常使用关键字interface来定义一个接口。 接口的定义和类的定…

成功的产品经理,应该了解一定的开发知识

产品经理在互联网产品开发中扮演着协调和推动的重要角色。然而&#xff0c;由于产品经理没有直接的实际权力&#xff0c;与开发团队合作时可能会遇到各种挑战。当你给开发人员分配任务时&#xff0c;他们可能会找各种借口推脱工作。 在项目开发中&#xff0c;所有成员必须共同…

丢与网站常用Permit 离线签名之实战案例和原理讲解

目录 背景 现象分析 正确应对 原理分析之Permit 参考 背景 5 月 11 日,0x9f4a15.....56e8f8因误点钓鱼网站(大家千万别点!

【SpringCloud】二、服务注册发现Eureka与负载均衡Ribbon

文章目录 一、Eureka1、服务提供者与消费者2、Eureka原理分析3、搭建Eureka4、服务注册5、模拟多服务实例启动6、服务的发现 二、Ribbon1、负载均衡的原理2、源码分析3、负载均衡策略4、饥饿加载 一、Eureka 1、服务提供者与消费者 服务提供者&#xff1a;一次业务中&#xf…