学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 计算机论文 > 计算机信息管理论文

图书系统所要解决的核心问题

来源:学术堂 作者:姚老师
发布于:2016-11-07 共3524字

  第4 章 系统所要解决的核心问题

  4.1 核心问题概述。

  1.对于需求的准确理解和将其如何用程序实现;2.如何合理设计数据库;3.尽量多的使代码重用,避免代码冗余。

  4.努力做到视图层,业务层,数据访问层相分离,以便于系统的扩展和维护。

  5.如何规范化自己的代码和注释6.系统安全性的设计

  4.2 解决问题的方法。

  4.2.1 面向对象编程。

  虽然从严格意义上来说 VB 并不算是真正的面向对象编程,而只是基于面向对象编程而已,不过在本系统的设计当中还是引入了类来进行编程。将每一个实体抽象成类,针对这个实体的操作都封装到相应的类中,这样可以使自己的设计结构清晰化。面向对象比起面向过程而言,有很多优点,主要可以体现在以下几个方面:

  (1)面向对象的设计方式更加符合人类自己的思考方式。

  程序的设计中经常使用的方法有面向过程的设计方法和面向对象的设计方法。面向过程的设计方法是以函数为基础,通过对流程的控制,以及对算法的实现,来达到处理数据的目的。在这个过程中,数据和处理数据的过程是分开来考虑的,是独立的。

  面向对象的设计方法则不同于面向过程的设计方法,它的基础单元就是对象。对象是对现实生活中实体的抽象表示,是由属性和方法组成的集合体。属性纪录着当前实体的状态数据,而通过方法可以操作该实体,从而达到改变对象当前状态的目的。对象和对象之间的联系可以通过传递消息来实现。

  面向对象的开发方法和面向过程的开发方法的出发点是不同的,所以本质上也是不一样的。面向对象的开发方法是从人类思考的角度出发,通过模拟人类互相联系交互的方式,来设计系统中实体之间的交互。它强调的是实体之间交互的接口,而不是一味的强调控制流程和算法。面向对象的开发方法倡导开发人员在构建软件的过程中,应该多从业务的方向去考虑系统的实现,而不是从计算机的角度去设计程序应该如何执行。这样开发的好处是,开发的代码更容易理解,也更方便系统后期的维护和扩展。另外,由于对象封装了自己的属性数据,所以当业务发生变更的时候,通过这种方式,更容易进行修正而不至于破坏实体之间的联系。

  (2)更好的重用性。

  用现有的零部件装配新的产品无疑是最方便、快捷的。这就是我们所说的重用技术。

  重用可以使得开发的效率大大提高。由于面向对象是针对业务模型进行设计,所以对于类似或者通用的业务,更容易被组件化,从而达到重用的目的。比如,对日志组件,报表组件等的封装和独立,就可以把这些组件应用到其他的系统当中。另外,如果在现有业务的基础上衍生出了新的需求,可以通过面向对象中继承的特性,来同时满足现有代码的重用和新业务的开发。

  (3)更好的稳定性。

  面向对象的开发方法是以现实世界中的业务实体模型为基础进行设计的,而不是针对系统应该实现的功能流程来设计。这样使得系统中实体之间的关系更像是现实世界中各个实体之间的关系。基于这样的设计,当有新的需求发生时,或者现有的业务模型发生变更时,局部的变化并不会引起整体软件结构的改变,只需要针对变更的部分重新进行抽象和设计就可以了。这样做可以使得变更发生在很小的范围内,而不至于牵一发而动全身,更好的保证了系统的稳定性。

  (4)更好的维护性。

  面向对象的开发方式是按照人类自己的思考方式设计的,而面向过程的开发方式是符合计算机的执行方式的。这样的话,通过面向对象的方式设计的系统更容易被不熟悉系统的人员快速掌握上手。而且由于使用的一些通用组件,都是经过完善的测试的,所以更不容易出现大的问题。同时,由于对象之间通过消息传递,而真正的逻辑都封装在了类的内部,所以当出现问题时,更容易对问题类进行调试而不至于影响到全局系统的运行。另外由于面向对象的设计中可重用组件的使用以及相对于业务独立的设计,使得系统的扩展和添加新的需求变得容易,这样当需要扩展和修正时,可以减少维护人员的投入,实现事半功倍的效果。

  4.2.2 访问数据库接口设计。

  由于访问数据库接口频繁,如果对于每个窗体都写数据库接口,则会造成代码冗余,而且如果有数据库的变更,则需要修改的地方会很多,不利于系统维护。所以有必要开发一些公用的数据库访问接口。

  Public Function connectToServer() As Boolean 连接数据库接口,若返回值为true 则数据库连接成功,若返回值为 false 则数据库连接失败。

  Public Function closeConnection() As Boolean 关闭数据库,若返回值为 true 则关闭数据库成功,若返回值为 false 则表示关闭数据库失败。

  Public Function openConnection() As Boolean 打开数据库,若返回值为 true 则打开数据库,若返回值为 false 则表示打开数据库失败。

  Public Function executeSql(sql As String) As Boolean 执行单条 SQL 语句,其中 sql 表示所要执行的语句。返回值为 true 则表示执行成功,反之则表示执行失败。

  Public Function executeTransation(sqlArray As Variant) As Boolean 执行事务,其中 sqlArray 表示一个存放多个 sql 的 string 数组。这个接口会把这些 sql 语句按照一个事务来执行,即要么全部执行成功,要么全部执行失败。

  Public Function queryDataBySql(ByVal strSQL As String, rstResult AsADODB.Recordset) As Boolean 根据指定的 SQL 语句执行查询,将查询结果返回到recordset 中。

  Public Sub closeRst(rstdb As ADODB.Recordset) 关闭记录集。

  Public Function findFieldExist(tableName As String, fieldName As String,fieldValue As String) As Boolean 从特定表中查询特定字段的记录是否存在。

  Public Function findTableField(tableName As String, fieldName As String,rstResult As ADODB.Recordset) As Boolean 从特定表中取出所有的特定字段。

  tableName 表示特定的表的名称,fieldName 表示所要取出的字段名。

  Public Function getPK(tableName As String, pkName As String, field1Name AsString, field1Value As String, field2Name As String, field2Value As String) AsString 根据条件取出主键信息。

  4.2.3 三层架构模式。

  对于设计人员来说,一个系统可以分为三个层次:视图层,即用户界面的设计;业务层,即具体的业务需求,比如借书业务,还书业务;数据访问层,即对数据库的访问。

  一个好的系统应该尽量做到这三个层次相分离,各司其职,这样才能使系统的可扩展性,可维护性达到更高。本系统中视图层也就是用户窗体的设计,业务层是通过窗体代码来实现,而数据访问层则是通过类的实例--对象调用相应的数据库接口,或者是直接调用数据库接口来实现,真正做到了三者的分离。各个模块的独立性和可靠性是三层架构的最大特征。使用者只能按照规定的规则进行各个层级的访问,这样可以控制各个层级的入口,当发生问题时更容易快速定位,从而使得系统更加稳定。

  4.2.4 模块化,通用化。

  由于系统设计当中经常对输入项进行格式检查,而且很多格式检查都是相同的,所以就有必要将这些相同的检查写成通用的模块,这样可以减少代码的重复书写。比如检查输入项是否为空,可以用以下的通用函数来进行检查:

  查输入项是否为空,可以用以下的通用函数来进行检查:

  Public Function isNull(str As String) As BooleanIf Trim(str) = "" Or str = Null ThenisNull = TrueElseisNull = FalseEnd IfEnd Function4.2.5 权限设计。

  安全性对于一个多用户的系统而言是相当重要的,所以对于一个系统来说引入权限的管理非常必要。本系统中按照业务的不同大致分了几个大的权限,同时实现了对用户的授权。这样实现了只有拥有相应权限的管理员才能进行相应操作的功能,提高了系统的安全性。

  4.2.6 测试驱动开发。

  TDD(测试驱动开发),是 XP(极限编程)开发中一个很重要的规范,也是一种编程技术,他的作用主要是确保自己的代码能彻底的被单元测试所覆盖和检查。对于软件开发而言,单元测试的重要性不言而喻。而相对于手动测试来说,使用代码测试能使测试的范围更广,测试覆盖率更高。

  另外,还有一个重要的优势是,通过代码测试能够很大程度降低降级 Bug.所谓降级Bug 就是在修改系统 Bug 时,又引出了其他新的 Bug.而通过 TDD,可以构建完备的测试用例库,每次修改了代码之后,重新进行自动测试,从而保证本次修改不影响其他模块。

  本系统中使用了 vbUnit 来进行测试驱动开发。vbUnit 是对 VB 工程进行自动化测试的库,类似于 Java 和 JUnit 的关系。比如对于 isNull 函数,可以通过如下测试用例进行测试:Public Sub TestIsNull()m_assert.Verify CommonModule.isNull(""), "传入空字符串"m_assert.Verify CommonModule.isNull(" "), "传入空格字符串"m_assert.Verify CommonModule.isNull(Null), "传入 Null"m_assert.Verify NOT CommonModule.isNull("字符串"), "传入非空字符串"End Sub

  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站