本文主要介绍图书借阅管理系统的开发过程,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立数据一致性好、完整性强、安全性强的数据库,而对于后者则要求应用程序功能完备,界面友好等。
在系统设计上,首先对图书借阅管理系统的现状及其重要性进行分析,提出实现图书借阅管理的必要性及系统的可行性。在短时间内建立系统应用原型,再对其进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。系统实现的主要功能有查询、图书管理、用户管理、借书、还书、超期罚款等。
图书借阅管理系统属于典型的管理信息系统(MIS)。前端采用C#语言开发程序,后台使用SQL Server 2005数据库管理系统,系统的操作具有方便、快捷、准确、安全等特点。
关键字:图书借阅管理系统;MIS;C#语言;SQL Server
I Abstract
This paper introduces the book lending management system development process, its development includes the establishment and maintenance of back-end database and front-end application development aspects. The establishment of the database requirements for data consistency is good, strong integrity, strong safety, for the latter application's requirements are fully functional, user-friendly and so on.
The designs of the system, first lending library management system for analysis of the status and importance of proposed management realize the need for borrowing books and system feasibility. The establishment of a prototype system application in a short time, then demand for them iterative, constantly revised and improved customer satisfaction until the formation of a viable system. The main functions of system implementation are queries, the books management, user management, borrowing books, returns the book, overdue fines.
Book lending management system is a typical management information system (MIS). Front-end was developed with C# language development program, the background using SQL Server 2005 database management system, the system's operation is convenient, fast, accurate, safe and so on.
Keywords: book lending management system; MIS; C# language; SQL Server
II 目 录
引 言 ........................................................................................................................................ 1 1 基础知识 .............................................................................................................................. 2
1.1 .NET简介 .................................................................................................................. 2 1.2 Visual C#.NET简介.................................................................................................. 2 1.3 SQL Server 2005数据库管理系统介绍 ................................................................... 3 2 系统分析 .............................................................................................................................. 5
2.1 开发背景及意义 ........................................................................................................ 5 2.2 可行性研究 ................................................................................................................ 5 2.3 功能需求 .................................................................................................................... 6
2.3.1 用例分析 .......................................................................................................... 6 2.3.3 实体关系设计 .................................................................................................. 9 2.3.3 行为描述 ........................................................................................................ 11 2.4 环境需求 .................................................................................................................. 12
2.4.1 硬件环境 ........................................................................................................ 12 2.4.2 软件环境 ........................................................................................................ 13
3 系统设计 ............................................................................................................................ 14
3.1 软件设计的原则 ...................................................................................................... 14 3.2 系统功能模块图 ...................................................................................................... 14 3.3 数据库设计 .............................................................................................................. 16
3.3.1 数据库概念设计 ............................................................................................ 16 3.3.2 数据库逻辑设计 ............................................................................................ 16 3.4 人机界面设计 .......................................................................................................... 18
3.4.1 人机界面设计指南 ........................................................................................ 18 3.4.2 用户界面设计 ................................................................................................ 20 3.5 系统详细设计 .......................................................................................................... 21
3.5.1 图书查询PAD图........................................................................................... 22 3.5.2 借书PAD图................................................................................................... 23 3.5.3 还书PAD图................................................................................................... 23
I 4 系统实现 ............................................................................................................................ 25
4.1 语言选择原因 .......................................................................................................... 25 4.2 软件开发环境 .......................................................................................................... 25 4.3 系统功能实现 .......................................................................................................... 26
4.3.1 登录 ................................................................................................................ 26 4.3.2 信息管理 ........................................................................................................ 26 4.3.3 借书管理 ........................................................................................................ 28 4.3.4 还书管理 ........................................................................................................ 29 4.3.5 报表显示 ........................................................................................................ 30 4.3.6 查询 ................................................................................................................ 31 4.3.8 附加功能 ........................................................................................................ 32
5 软件测试 ............................................................................................................................ 33
5.1 测试计划的制定 ...................................................................................................... 33
5.1.1 测试计划实现的目标 .................................................................................... 33 5.1.2 定义软件测试的标准 .................................................................................... 33 5.1.3 测试实施策略的制定 .................................................................................... 33 5.1.4 测试计划的要点 ............................................................................................ 33 5.2 测试的基础 .............................................................................................................. 34
5.2.1 测试的目标 .................................................................................................... 34 5.2.2 白盒测试和黑盒测试 .................................................................................... 34 5.2.3 测试的原则 .................................................................................................... 34 5.3 测试用例设计 .......................................................................................................... 35
5.3.1 等价类测试用例设计 .................................................................................... 35 5.3.2 边界值测试用例设计 .................................................................................... 35 5.3.3 功能图法测试用例设计 ................................................................................ 36 5.4 软件可靠性 .............................................................................................................. 37
5.4.1 基本定义 ........................................................................................................ 37 5.4.2 估算平均无故障时间的方法 ........................................................................ 38 5.4.3 MTTF和ASS的估算 ................................................................................... 39
结 论 ...................................................................................................................................... 40
II 致 谢 ...................................................................................................................................... 41 参考文献 .................................................................................................................................. 42 附 录 ...................................................................................................................................... 43
附录A VS2005 Introduction ............................................................................................. 43 附录B VS2005介绍 ........................................................................................................ 55 附录C核心代码 .............................................................................................................. 65
III
引 言
书籍是人类不可缺少的精神食粮,对于不断吸取知识的学生来说,更为重要。面对大量的图书借阅者来说,使用传统人工的方式借阅时间长,为用户带来了不便,管理员对图书、期刊的管理也存在着效率低、保密性差等缺点,时间一长,将产生大量的文件和数据,再加上图书的大量增加,不但会需要较多的管理员,而且也使工作变得越来越繁重起来。
随着信息技术的飞速发展,当今社会正快速向信息化社会迈进,计算机在全球范围内日益普及,它的作用也越来越大,因此使用计算机开发一个界面友好,易于操作的图书借阅管理系统进行自动化处理变得十分重要。
MIS(管理信息系统--Management Information System),现代管理信息系统是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以战略竞优、提高效益和效率为目的,支持高层决策、中层控制、基层运作的集成化的人机系统。图书借阅管理系统是一个典型的管理信息系统,其主要任务是利用计算机的存储容量大、保密性好等优点实现对大量图书信息的管理和图书的借阅管理。MIS系统主要用于管理需要的记录,并对记录数据进行相关处理。例如,可以利用MIS系统管理用户的借阅信息,并将信息及时反馈给管理人员,使其了解当前用户借阅是否超期等状况,并对其进行相应的管理操作。
图书借阅管理系统是从广义的管理入手,严格的遵守系统的效能,是一个结构复杂、功能强大的管理信息系统。图书的基本信息、图书的借阅和归还、超期罚款的管理是比较重要的任务。该系统提高了图书管理的方便性,使用性,安全性,准确性。图书借阅管理系统可以很有效地管理图书信息,提高用户借阅图书的效率,对图书馆的管理有很大益处。此系统能查询大量的各类图书资料和信息,并能随时添加、修改、删除借阅信息,以便提供全面,科学,有效的全面信息服务。
1
1 基础知识
1.1 .NET简介
.NET技术是微软公司推出的一个全新概念,它代表了一个集合、一个环境和一个可以作为平台支持下一代Internet的可编程结构。.NET的目的就是将互联网作为新一代操作系统的基础,对互联网的设计思想进行扩展,用户在任何地方、任何时间、以及利用任何设备能访问所需的信息、文件和程序。用户不需要知道这些文件放在什么地方,只需要发出请求,然后就可以接受处理的结果,后台的复杂处理过程对用户而言是透明的[1]。
.NET开发平台包括.NET框架和.NET开发工具等组成部分,.NET框架(Framework)是整个开发平台的基础,包括公共语言运行库和框架类库,.NET开发工具包括Visual Studio .NET集成开发环境和.NET编程语言。其中,Visual Studio .NET集成开发环境用来开发和测试应用程序。.NET编程语言包括Visual Basic、Visual C++和新的Visual C#等用来创建运行在公共语言运行库(Common Language Run,CLR)上的应用程序[2]。
.NET框架包括公共语言运行库和.NET类库。公共语言运行库是.NET的基础,用户可以将公共语言运行库看做一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全检查,以确保代码运行的安全性和可靠性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码和为托管代码,而不以运行库为目标的代码称为非托管代码。.NET框架的另一个主要部件是类库,它是一个综合性的面向对象的可重用类型集合,用户使用它不仅可以开发传统的命令行或图形用户界面(GUI)应用程序,而且还可以开发所提供的创新的应用程序(如Web窗体和XML Web服务)。
1.2 Visual C#.NET简介
1.Visual C#.NET语言的产生背景
1995年,Sun公司正式推出面向对象的开发环境Java,并提出跨平台、跨语言的概念,之后,Java就逐渐成为企业及应用系统开发的首选工具[3]。
为技术Java语言,微软开发出基于Java语言的编译器Visual J++,并在很短的时间里由1.1版本升级到6.0版本,其中Visual J++ 6.0版集成在Visual Studio 6.0中。语言开
2
发程序不但在Java虚拟机上(Java Virtual Machine,JVM)的运行速度大大加快,而且增加了许多新特性,同时还支持调用Windows API,这些特性使得Visual J++成为强有力的Windows应用开发平台,并成为业界公认的优秀Java编译器[4]。
由于Visual J++主要应用在Windows平台的系统开发中,因此Sun公司认为Visual J++违反了Java的许可协议,违反了Java开发平台的中立性,并对微软提出了诉讼,这使得微软处于极为被动的局面。为了改变这种局面,微软决定推出其进军互联网领域的.NET计划,C#就是该计划中所要开发的一门重要的开发语言[5]。
.NET计划将是微软今后几年发展的战略核心,其内容非常庞大。它的技术开发平台是Visual Studio .NET,面C#作为Visual J++的替代语言也集成在该平台中。
C#语言的开发成功,对微软未来的发展有着非常重要的意义。微软在2000年6月份举行的“职业开发人员技术大会”上正式发布C#语言。微软公司对C#的定义是:“C#是一种类型安全的、现代的、简单的、由C和C++衍生出来的面向对象的编程语言,它是牢牢根植于C和C++语言之上的,并可立即被C和C++开发人员所熟悉。C#的目的就是综合Visual Basic的高生产率和C++的行动力。”
2. Visual C#.NET的特点
与C和C++相比,C#具有以下特点: (1)语法更简单;
(2)保留了C++的强大功能; (3)快速应用开发功能; (4)语言的自由性;
(5)强大的Web服务器控件; (6)支持跨平台; (7)与XML相融合。
1.3 SQL Server 2005数据库管理系统介绍
SQL Server 2005 是微软公司开发的中型关系数据库管理系统。由于其操作简单,价格相对较低,对于预算紧张、员工不多的中小企业比较有吸引力。SQL Server 2005 简单易学,与当前流行的Windows 操作系统有着天然的兼容性,SQL Server 2005在中小型企业中有着很大的市场份额,所以对读者就业后快速适应工作环境有很大的帮助,SQL Server 2005 是微软进军数据库市场的主要产品,而且可以预见,微软将推出更有
3
竞争力的SQL Server 系列软件。由于数据库软件在企业级软件中的重要性,同一家公司数据库软件将有着相同或相近的操作界面和良好的兼容性,所以通过学习SQL Server 2005,读者能够以不变应万变[6]。
SQL Server 2005是基于结构化查询语言的可伸缩的关系数据库,它支持Internet应用程序的可扩展标记语言、并由数据库、关系数据库、结构化查询语言和可扩展标记语言等部分组成。
SQL Server 2005 以其卓越的性能逐渐成为Windows操作系统平台下进行数据库应用开发中较为理想的选择之一。它是一个后台数据库管理系统,其功能强大、操作简便,日益为广大数据库用户所喜爱,越来越多的开发工具提供了与SQL Server的接口。了解和掌握SQL Server的功能,对于一个数据库开发管理人员来说非常必要的。
SQL Server 2005常见版本有: 1、企业版(Enterprise Edition) 2、标准版(Standard Edition) 3、个人版(Personal Edition) 4、开发者版(Developer Edition)
4
2 系统分析
2.1 开发背景及意义
人类社会正在向信息时代迈进,人们越来越重视用时少、效率高的工作质量。在这个信息化的时代,传统的手工图书借阅管理已经远远跟不上社会的步伐。
随着计算机技术的飞速发展,计算机在信息管理中应用的普及,面对大量借阅用户的图书馆来说,利用计算机实现图书借阅管理已变得尤为重要。利用计算机管理图书信息,是适应现代信息化的要求,提高借阅效率的必要条件。图书借阅管理是一项比较细致的工作,工作量大,一般不允许出错,如果实行手工操作,每天都需要较多的管理员手工记录用户的借阅信息,这样会使得管理员的工作非常的繁重。利用计算机进行借阅管理,不但准确率高,而且有很多优点:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。能够极大地提高图书借阅管理的效率,使管理员的工作简化,为前来借书的用户也节省了许多时间。
图书借阅管理系统是处理图书借阅的管理系统,囊括了读者从借走图书到归还图书的所有信息。其中还包括了管理员对各种图书的管理、读者的注册、读者管理、借书、还书、罚款等功能,并且可以快速地查询图书信息、用户信息、借阅信息等。
2.2 可行性研究
可行性研究的任务是从技术上、经济上、使用上、法律上分析应解决的问题是否有可靠的解,从而确定该软件是否值得去开发。其目的是用极少的代价在最短的时间内确定被开发的软件是否能开发成功。
技术可行性主要是根据系统分析得到的对需要开发的软件、支撑软件、硬件环境和操作人员的要求。
本系统是主要是图书借阅管理,结合实际所需,采用C#语言来开发程序,使用户界面的设计更加方便。后台使用SQL Server 2005数据库管理系统,保持数据的一致性、完整性、安全性。
经济可行性首先要进行待开发软件的成本估算和成本、效益分析,以确定待开发软件是否有开发的价值。
对于本系统来说在经济上是可行的,使用此图书借阅管理系统后,借阅管理的效率
5
是否提高了,相关的资金是否节省了。当然对于此管理系统的弄好恰好能满足这些要求。该系统对硬件的要求不高,可移植性好, 在一般的计算机上通过配置就能运行,所以在系统运行方面也不存在问题。
使用可行性是指使用方式(如操作方式)用户是否容易接受。管理员登录后可以便捷对图书信息管理、用户信息管理、借阅管理、归还管理等。每项管理都实现相应内容的录入、查询、修改、删除。用户登录后也可便捷地查询自己的借阅信息。
法律可行性是指待开发的产品软件是否在在知识产权等法律有关的问题,如有这类问题,该软件即使开发成功,也难以作为产品销售。
2.3 功能需求
图书借阅管理系统主要实现对读者借书和还书操作的管理,管理员主要负责对图书基本信息管理、读者基本信息管理、读者借阅、查询等操作,读者只能实现查询图书的基本信息,查询自己的借阅信息等功能。 用例分析
用例图主要用来图示化系统的主事件流程,它主要用来描述需求,即希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,是设计系统分析阶段的起点,设计人员根据需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图图符如表2.1所示。
表 uml用例图图符
可视化图符
名称
系统
描述
用来表示系统边界,所有用例放在系统之中 用来表示用例图中的用例
用例
执行者
用于描述与系统功能有关的外部实体,可以是用户,
也可以是外部系统
关联 连接执行者和用例
6
通过对图书借阅管理系统的功能需求分析,系统的执行者为管理员、读者和数据库系统,系统的主要用例有图书管理、读者管理、借书、还书、查询等,系统总体用例图如图2.1所示。
图 系统总体用例图
图书管理:是管理员对新到图书馆的图书的基本信息进行管理。可以将图书的基本信息添加到数据库中,核实或修改填写有误的图书信息,删除已丢失的图书的基本信息,使信息更加准确,方便用户查询和借阅,图书信息可以通过水晶报表显示,产生的报表能够打印或导出。图书管理的用例图如图所示。
图2.2图书管理用例图
读者管理:管理员对第一次来借书的读者进行详细的注册,为读者提供唯一的帐号,这是借书的一个必要条件,对于填写有误的读者信息可以及时进行修改,如果读者已经
7
注销,就删除该读者的信息,同时读者的所有信息都将从库中彻底删除,也可以对读者信息进行报表显示,产生的报表能够打印或导出。读者管理的用例图如图2.3如所示。
图2.3 读者管理用例图
借书:对于前来借书的读者,管理员要根据读者的帐号和所借书的唯一编号执行借阅操作,确定借阅信息无误进行借阅,将借阅信息添加到数据库中租借表中,同时该图书在图书表中库存量更新为减去被借出的图书的数量,读者在读者表中的借书量自动增加所借的图书数量。借书用例的用例如图2.4所示。
图2.4 借书用例图
还书:对于还书的读者,管理员要根据读者的帐号和所还书的唯一编号执行归还操作,如果还书读者的不慎将书丢失或者损坏较严重,管理员会对该读者进行合理罚款,如果借阅超期也要根据超期天数进行罚款。确定归还后,系统将归还信息更新到数据库中租借表中,同时该图书在图书表中库存量更新为增加还书的数量,读者在读者表中的借书量自动减去所还的图书数量。还书用例的用例如图2.5所示。
8
图2.5 还书用例图
查询:管理员可以对图书基本信息、读者信息、借阅信息、罚款信息等进行查询,而读者只能对图书基本信息和自己的借阅信息进行查询,其中读者的借阅查询包括查询自己所借过的全部图书,查询自己未还的图书或借阅超期的图书等。查询的用例图如图2.6所示。
图2.6 查询用例图
2 实体关系设计
实体关系图又称E-R图(Entity Relationship Diagram),提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系,E-R图图符如表所示。
9
表2.2 E-R图图符
可视化图符
名称 实体
描述
矩形框内写明实体名,即表名
属性
椭圆内写明属性名,即字段名
联系
菱形内写明联系名
直线 将实体、属性、联系连接起来
图书借阅管理的E-R图如图所示。
图 图书借阅管理E-R图
图书管理信息E-R图如图所示,其中图书的属性如上图所示。
10
图 图书管理信息E-R图
2 行为描述
系统的行为是通过对象的动作来描述的,可以通过程序流程图来描述对象之间如何进行消息的传递。流程图(FlowChart)是描述进行某一项活动所遵循顺序的一种图示方法。它虽然不是统计学的范畴,但在很多质量专家仍把它纳入统计技术的范围之内,在质量管理的过程中,流程图是经常使用的一个工具。一个好的流程图可以直观地描述整个活动中所有过程的物流、信息流,让人很容易知悉整个过程。流程图图符如表2.3所示。
表2.3 流程图图符
可视化图符
名称 开始或结束 活动
描述
表示一个过程的开始或结束 表示在过程的一个单独的步骤 表示过程中的一项判定或一个分岔点 表示步骤在顺序中的进展 表示过程中所需要的数据 表示属于该过程的书面信息 表示流程图的待续
判定
流线 数据
文件 连接
系统的主要功能是管理员执行借书和还书操作,读者执行查询操作,根据此主要功能和上表中的符合绘制程序流程图,系统整体流程图如图2.9所示。
11
图2.9 系统整体流程图
2.4 环境需求
2.4.1 硬件环境
服务器端的最低配置是由建立站点所需的软件来决定的,在最低配置的情况下,服
12
务器的往往不尽如人意,现在的硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器端配置高性能的硬件,本系统服务器端的配置如下:
处理器:Inter Pentium 4 1.6GHz 或更高 内存:4GB 硬盘空间:1000GB 显卡:SVAG显示适配器。
因为客户端主要用于操作数据,所以对客户端的硬件要求不高,不过现在的电脑很高的性价比,因此需要的配置应该高于下面的配置:
处理器:Inter Pentium 2.0GHz 或更高 内存:512MB 硬盘空间:120GB 显卡:SVAG显示适配器。 2.4.2 软件环境
服务器端要求如下:
操作系统:Windows 2000 Server 数据库:Mircrosoft SQL Server 2005 用户端要求如下:
操作系统:Windows 2000/XP 数据库:Mircrosoft SQL server 2005
13
3 系统设计
3.1 软件设计的原则
1.模块化
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。评价一种设计方法定义有效的模块系统能力的标准为:模块可分解性、模块可组装性、模块可理解性、模块连续性、模块保护性。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。
2.抽象
抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。人类在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面,把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。
3.逐步求精
逐步求精是人类解决复杂问题时采用的基本技术,是许多软件工程技术的基础。可把逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑”。
4.信息隐藏
应用模块化原理时,自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解软件”。信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
3.2 系统功能模块图
系统功能模块设计是管理信息系统总体设计的重要内容,为了使所设计的系统有合理的结构和良好的维护性,模块设计应遵循以下原则。
1.高内聚,是模块内部各组成部分之间的高联系程度。 模块的聚合程度越高, 其独立性也就越高。独立性好的程序具有好的可变性和可维护性。
2.低耦合,系统模块之间的相互联系程度叫耦合。模块耦合程度越低,说明模块
14
之间的联系越少,相互间的影响也就越小,产生连锁反应的概率就越低,在对一个模块进行修改和维护时,对其他模块的影响程度就越少,系统可修改性就越高。
3.模块分解是指把一个模块分解成若干个从属于它的新模块。这种做法主要是使得系统更容易被人理解, 更容易修改和维护。模块分解时既要考虑到模块的聚合度, 又要考虑到模块之间的耦合程度,必须在这两者之间权衡利弊,选择一个最佳的方案。
4.模块的扇入和扇出。模块的扇入(Fan In)表达了一个模块与其直属上级模块的关系。模块的扇入系数是指其直接上级模块的个数。模块的扇入系数越大,表明它要被多个上级模块所调用,其公用性很强,说明模块分解得较好。模块的扇出(Fan Out)表达了一个模块对它的直属下级模块的控制范围。模块的扇出系数是指其直属下级模块的个数。
图书借阅管理系统功能模块图如图所示。
图书借阅管理系统功能模块图
每一个管理模块都包含添加、修改、删除功能,如图书管理模块,可以实现添加图书记录、修改图书记录、删除图书记录的功能,每个查询模块都可实现模糊查询。
15
3.3 数据库设计
3. 数据库概念设计
1.管理员表:存储管理员的基本信息。 2.用户信息表:存储用户的基本信息。 3.出版社信息表:存储出版社的基本信息。 4.图书类别表:存储图书的类别信息。 5.图书信息表:存储图书的基本信息。
6.借阅信息表:存储用户借书和还书的基本信息。 7.罚款信息表:存储用户被罚款的基本信息。 3.3.2 数据库逻辑设计
管理员表是用来存放管理员信息的数据表,里面存有管理员登录系统的帐号、密码等信息,只有登录系统后,方可进行相应的管理操作,内容如表3.1所示。
表3.1 管理员表
字段名 帐号 姓名 密码 性别
类型 varchar varchar varchar varchar
长度 6 8 6 2
允许空 N N N N
备注 主健
用户信息表是用来存放借阅用户相关信息的数据表,里面存有用户的帐号、密码、姓名、性别、电话号码、地址、借书量等信息,用户登录系统后,可查寻自己的借阅信息等,内容如表3.2所示。
表3.2 用户信息表
字段名 用户帐号 用户姓名 性别 客户密码 电话号码 地址 借书量
类型 varchar varchar varchar varchar varchar varchar int
长度 6 8 2 6 11 30 4
允许空 N N N N Y Y Y
备注 主键
出版社信息表是用来存放出版社的相关信息,包含的字段有出版社名称、出版社地址等信息,内容如表3.3所示。
16
表3.3 出版社信息表
字段名 出版社名称 出版社地址 电子邮箱
类型 varchar varchar varchar
长度 50 50 30
允许空 N N Y
备注 主键
图书类别表是用来存放图书类别的相关信息,包含的字段有图书的类别名和类别号,内容如表3.4所示。
表3.4 图书类别表
字段名 类别号 类别名
类型 char char
长度 2 10
允许空 N N
备注 主键
图书信息表是用来存放图书的相关信息,包含的字段有图书编号、图书名称、图书作者、索引号、出版社名称、出版日期、图书定价等,内容如表3.5所示。
表3.5 图书信息表
字段名 图书编号 图书名称 图书作者 索引号 出版社名称 出版日期 图书定价 图书类别 现在库存数量 图书总数量 文字类型
类型 varchar varchar varchar char varchar datetime int char int int varchar
长度 8 50 50 13 50 8 4 10 4 4 4
允许空 N N N N N N Y N N N Y
备注 主键
借阅信息表是用来存放用户借阅的相关信息,包含的字段有用户编号、图书编号、租借日期、应归还日期、实际归还日期、租借数量等,内容如表3.6所示。
表3.6 借阅信息表
字段名 用户编号 图书编号 租借日期 应归还日期 实际归还日期 租借数量 还书量
类型 varchar varchar datetime datetime datetime int int
长度 6 8 8 8 8 4 4
允许空 N N N N N N Y
备注 主键 主键
罚款信息表是:当用户违反借阅规则时存放罚款记录的相关信息,包含的字段有用户编号、图书编号、罚款日期、罚款金额等,内容如表3.7所示。
17
表3.7 罚款信息表
字段名 用户编号 图书编号 罚款日期 罚款金额 备注
类型 varchar varchar datetime decimal nchar
长度 6 8 8 5, 1 10
允许空 N N N N Y
3.4 人机界面设计
人机界面设计是接口设计的一个组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计、过程设计一样重要。近年来,人机界面在系统中所占的比例越来越大,在个别系统中人机界面的设计工作量甚至占设计总量的一半以上。
人机界面的设计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,因此,必须对人机界面设计给以足够重视。 3.4.1 人机界面设计指南
用户界面设计主要依靠设计者的经验。总结众多设计者的经验而得出的设计指南,有助于设计者设计出友好、高效的人机界面。
1.一般交互
一般交互指南涉及信息显示、数据输入和整体系统控制,因此,这些指南是全局性的,忽略它们将承担较大风险。下面叙述一般交互指南。
(1)保持一致性。为人机界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式。
(2)提供有意义的反馈。向用户提供视觉的和听觉的反馈,以保证在用户和界面之间建立双向通信。
(3)在执行有较大破坏性的动作之前要求用户确认。 (4)允许取消绝大多数操作。
(5)减少在两次操作之间必须记忆的信息量。不应该期望用户能记住一大串数字或名字,以便在下一步操作中使用它们。应该尽量减少记忆量。
(6)提高对话、移动和思考的效率。
(7)允许犯错误。系统应该保护自己不受致命错误的破坏。
(8)按功能对动作分类,并据此设计屏幕布局。下拉菜单的一个主要优点就是能
18
按动作类型组织命令。实际上,设计者应该尽力提高命令和动作组织的“内聚性”。
(9)提供对工作内容敏感的帮助设施。
(10)用简单动词或动词短语作为命令名。过长的命令名难于识别和记忆,也会占据过多的菜单空间。
2.界面显示
屏幕布局因功能不同考虑的侧重点不同。各功能区要重点突出,功能明显。无论哪一种功能设计,其屏幕布局都应遵循如下五项原则:
平衡原则。注意屏幕上下左右平衡。不要堆挤数据,过分拥挤的显示也会产生视觉疲和接收错误。
预期原则。屏幕上所有对象,如窗口、按钮、菜单等处理应一致化,使对象的动作可预期。经济原则。即在提供足够的信息量的同时还要注意简明,清昕。特别是媒体,要运用好媒体选择原则。顺序原则。对象显示的顺序应依需要排列。通常应最先出现对话,然后通过对话将系统分段实现。规则化。画面应对称,显示命令、对话及提示行在一个应用系统的设计中尽量统一规范。
颜色的调配对屏幕显示也是重要的一项设计,颜色除是一种有效的强化技术外,还具有美学价值。使用颜色时应注意如下几点:
限制同时显示的颜色数。一般同一画面不宜超过4或5种,可用不同层次及形状来配合颜色,增加变化。画面中活动对象颜色应鲜明,而非活动对象应暗淡。对象颜色应尽量不同,前景色宜鲜艳一些,背景则应暗淡。尽量避免不兼容的颜色放在一起,如黄与蓝,红与绿等,除非作对比时用。若用颜色表示某种信息或对象属性,要使用户懂得这种表示,且尽量用常规准则表示。总之,屏幕显示设计最终应达到令人愉悦的显示效果,要指导用户注意到最重要的信息,但又不包含过多的相互矛盾的刺激。
3.数据输入
用户的大部分时间用在选择命令、键入数据和向系统提供输入。在许多应用系统中,键盘仍然是主要的输入介质,但是,鼠标、数字化仪和语音识别系统正迅速地成为重要的输入手段。下面是关于数据输入的设计指南。
(1)尽量减少用户的输入动作。
(2)保持信息显示和数据输入之间的一致性。显示的视觉特征(例如,文字大小、颜色和位置)应该与输入域一致。
(3)允许用户自定义输入。
19
(4)交互应该是灵活的,并且可调整成用户最喜欢的输入方式。用户类型与喜欢的输入方式有关,秘书可能非常喜欢键盘输入,而经理可能更喜欢使用鼠标之类的点击设备。
(5)使在当前动作语境中不适用的命令不起作用。这可使用户不去做那些肯定会导致错误的动作。
(6)让用户控制交互流。用户应该能够跳过不必要的动作,改变所需做的动作的顺序(在应用环境允许的前提下),以及在不退出程序的情况下从错误状态中恢复正常。
(7)对所有输入动作都提供帮助。(8)消除冗余的输入。 3.4.2 用户界面设计
管理员在使用该系统时,首先要对管理员登录模块对帐号和密码进行验证,只有在输入的帐号和密码绝对正确时,才能进入系统的主界面。
系统的主界面要包含登录、图书信息、出版社信息、读者信息、借阅信息、归还信息、报表等菜单模块,其中登录菜单下提供了管理员登录和读者登录模块的链接,图书信息菜单下提供了图书类别管理、图书信息管理、图书查寻模块的链接,出版社信息菜单下提供了出版社管理和出版社查寻模块的链接,读者信息菜单下提供了读者注册、读者管理、读者查寻模块的链接,借阅信息菜单下提供了借书、借书管理、借书查寻模块的链接,还书信息菜单下提供了还书、还书管理、还书查寻模块的链接,报表菜单下提供了图书报表、读者报表、借阅报表模块的链接。每个模块都具有自己的界面和功能,根据人机界面设计指南和模块功能可以设计用户界面。
由于系统的用户界面众多,不可能将所有的用户界面都进行简介,为了能看到直观的用户界面,在此仅以用户主界面、读者借阅查询界面等为例,进行简介。系统主界面如图3.2所示。
20
图3.2 系统主界面
单击系统主界面登录菜单下的读者登录,输入读者的帐号和密码后,便可进入读者借阅查询界面,此界面主要是面向读者的,方便读者对图书、自己的借阅信息等进行查询。读者借阅查询界面如图3.3所示。
图3.3 读者借阅查询界面
系统详细设计
建立设计文档的目的,是为了把设计师的思想告诉其他的有关人员。程序是由计算机执行的,但可读性提高便于维护,它是对程序运行过程的描述。
PAD 是问题分析图(Problem Analysis Diagram)的英文缩写,它用二维树形结构的
21
图来表示程序的控制流,是一种用结构化程序设计思想表现程序逻辑结构的图形工具,将这种图翻译成程序代码比较容易。
PAD图的主要优点如下:
(1)使用表示结构化控制的PAD符号所设计出来的程序必然是结构化程序。 (2)PAD图描述的程序结构十分清晰。
图中最左面的竖线是程序的主线,即第一层结构。随着程序层次增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线,PAD图中竖线的总条数就是程序的层次数。
(3)用 PAD 图表现程序逻辑易读、易懂、易记。 PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左到右顺序执行,遍历所有结点。
(4)有利于提高软件的可靠性和软件生产率。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可以省去人工编码的工作,有利于提高软件的可靠性和软件生产率。
(5)既可用于表示程序逻辑,也可用于描述数据结构。 (6)PAD 图的符号支持自顶向下、逐步求精方法的使用。
由于系统的功能模块比较多,有些模块包含子模块,在此不能对每一个模块都详细设计其PAD图,所以仅对图书查询操作、借书操作、还书操作的PAD图来进行详细的说明。
图书查询PAD图
管理员经过登录模块验证成功后可以进行系统主界面,然后进入图书查询界面,在相应的文本框中输入查询条件,单击“查询”按钮后,如果有记录则显示相应结果,否则无查询结果,图书查询的PAD图如图3.4所示。
22
图3.4 图书查询PAD图
3.5.2 借书PAD图
管理员在执行借书操作时,首先要输入借书用户的帐号,再选择所借书的编号,填写所借的数量,借书后,系统会将产生的记录更新到数据库中,借书的PAD图如图3.5所示 。
图3.5借书PAD图
3.5.3 还书PAD图
管理员执行还书操作时,首先要看所还的书是否损坏,是否超期,若损坏较大或借阅超期则对还书用户进行罚款,输入相应的还书信息,将记录更新到数据库,还书PAD图如图3.6所示。
23
图3.6 还书PAD图
24
4 系统实现
4.1 语言选择原因
本系统在实现能时主要使用的是C#.NET语言,与其它语言相比它有一定的优势,其特有的好处如下:
1.简洁的语法。在缺省的情况下,C#的代码在.NET框架提供的“可操纵”环境下运行,不允许直接地内存操作。它所带来的最大的特色是没有了指针。与此相关的是,那些在C++中被疯狂使用的操作符已经不再出现。C#只支持一个”.”,对于我们来说,现在需要理解的一切仅仅是名字的嵌套而已。
2.精心地面向对象设计。C#具有面向对象的语言所应有的一切特性:封装、继承与多态性。在C#的类型系统中,每种类型都可以看作一个对象。C#提供了一个叫做装箱(boxing)与拆箱(unboxing)的机制来完成这种操作,而不给使用者带来麻烦。借助于从VB中得来的丰富的RAD经验,C#具备了良好的开发环境。结合自身强大的面向对象功能,C#使得开发人员的生产效率得到极大的提高。
3. 完整的安全性与错误处理。C#的先进设计思想可以消除软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全性能。变量是类型安全的。C#中不能使用未初始化的变量,对象的成员变量由编译器负责将其置为零,当局部变量未经初始化而被使用时,编译器将做出提醒;C#不支持不安全的指向,不能将整数指向引用类型,例如对象,当进行下行指向时,C#将自动验证指向的有效性;C#中提供了边界检查与溢出检查功能。
4. 因为它是专门为.netFramework开发提供全新的语言。所以在开发windows下的程序有相当好的性价比,开发成本小。
4.2 软件开发环境
软件开发环境(Software Development Environment)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。
系统开发主要所用的软件工具有:Microsoft Visual Studio 2005 程序开发开具、SQL
25
Server 2005数据库开发工具、Photo Shop图片处理工具等。
4.3 系统功能实现
4.3.1 登录
登录包括管理员登录和读者登录,主要实现的是对登录用户合法性的验证。此处以管理员的登录为例,在相应的文本框中输入帐号和密码,单击“确定”按钮后,判断合法后,会弹出欢迎界面显示登录成功。登录界面如图4.1所示,欢迎界面如图4.2所示。
图 4.1 管理员登录界面
图 4.2 欢迎界面
功能实现:
用户在登录系统时,可能会有某些信息忘记输入,输入的帐号或密码不正确,这时就会弹出错误提示信息对用户发出警告。系统是自动将输入的内容与对应的后台数据库中的记录进行对比,只有完全正确时才能进入系统,加强系统的安全性。 4.3.2 信息管理
信息管理主要对图书的基本信息、图书类别、出版社信息、读者信息等模块进行管
26
理。此功能主要是由管理员进行准确管理,对图书馆来说也是非常重要的环节。管理员要及时对新进的图书进行录入,新来的读者进行注册,使其添加到数据库中。对于出现错误的记录,管理员要对其进行恰当的修改,加强信息的准确性,方便读者查询图书、借阅图书等,当然对于图书馆中已没有的书目、不再使用的图书类别、已经注销的读者等信息应及时彻底删除。以图书信息管理为例,如图4.3所示。
图 4.3 图书信息管理界面
功能实现:
1.添加一本图书时,先清空文本框中的内容,方便管理员录入,其中带有*号的为必填项。首先选择图书类别,如果要添加的图书是数据库中已有的图书,可直接选择图书名称,其它文本中会自动显示此图书对应的相关信息,这时只要改一下图书编号的后几位数字,使其编号唯一,这时单击“添加”按钮,此记录便会自动更新到数据库相应的表中。添加完成后,系统会弹出添加成功对话框,如果不添加,则单击“取消”按钮。
2.修改图书信息时,可以从列表中选取要修改的图书记录,或者直接输入要修改的图书编号,其它文本中会自动显示此图书的相应信息,单击“确定记录”按钮后,方可进行修改,填写好要修改的信息后,单击“修改”按钮,如果输入的内容合法,此时会弹出修改成功对话框,系统自动更新数据库中的内容。如果不修改,则单击“取消”按钮。
3.删除图书信息时,可以从左则的列表中选取要修改的图书记录,或者直接输入要修改的图书编号,其它文本中会自动显示此图书的相应信息,单击“删除”按钮,此
27
时会弹出寻问信息对话框,寻问用户是否要删除此记录,可以让用户再考虑一下,如果确定删除,单击“确定”按钮,否则单击“取消”。删除记录后,系统会自动更新数据库。
4.3.3 借书管理
借书管理主要实现管理员对读者借书的管理。管理员要根据读者的帐号和图书的编号执行借阅过程,当然也可实现读者的续借过程。不过,根据借阅规则,读者最多只能借5本书,所以,对于已借有5本书的读者不能进行借阅,但可以进行续借。借书管理界面如图4.4所示。
图 4.4 借书管理界面
功能实现:
1.读者借书时,管理员输入读者的帐号按回车键后,读者的基本信息则自动显示在相应的文本框中,读者所借未还的借阅信息自动显示在列表中,选择读者所借书籍的图书类别,再选择图书编号或者输入图书编号后,图书的基本信息则自动显示在相应的文本框中,确定信息无误时便可进行借阅。借阅信息添加到数据库中,列表自动更新当前用户的借阅信息,而图书信息表中此书的库存量更新为减去借出图书的数量。
2.读者续借图书时,按照同上方法输入读者帐号,这时可按照同上方法填写图书编号,也可直接从列表中选取要续借的图书,图书的基本信息则自动显示在相应的文本框中,如果此书的借阅未超期,便可进行续借,若超期管理员会对其收取罚款。续借成功后,当前读者对于此书中借阅信息的应归还日期会从原来的应归还日期再增加30天,
28
续借信息更新回数据库,列表自动更新当前用户的借阅信息。 4.3.4 还书管理
还书管理主要是读者还书时管理员对其执行的操作。管理员要根据还书读者的帐号和所还书籍的编号实现还书功能,如果所还的图书有比较大的损坏,管理员就要按照借阅规则对其进行合理的罚款,如果超过了应归还日期,要对其进行超期罚款。交罚款后,方可进行还书。还书管理界面如图4.5所示。
图4.5 还书管理界面
功能实现:
1.读者进行还书时,管理员在相对的文本框中输入还书读者的帐号,按回车键后,读者的基本信息会自动显示在对应的文本框,读者的所借未还的借阅信息自动显示在列表中。管理员从图书编号对应的下拉框中选取要还书籍的编号,此书的基本信息会自动显示在相应的文本框中,如果此书的已超过了应归的还日期,在相应的文本框中会自动显示超期罚款金额,此时,管理员会对读者收取合理的罚款。读者交罚款后,才可进行还书。还书后,系统会自动将借阅信息更新回数据库,列表会自动更新当前还书用户的借阅信息,而图书信息表中此书的库存量更新增加还书的数量。
2.还书读者如果不小心把所借图书丢失了,管理员要对此读者进行其它罚款,如果还书读者赔偿一本与所丢失的图书一样的书籍,并且此书的借阅时间未超期,读者可不交任何罚款。如果还书读者无法赔偿同样的书,管理员就要按照借阅规则收取罚款。
29
在还书时,管理员如果发现还书读者所还的书籍损坏比较严重,会按照借阅规则对还书读者进行合理的罚款。若超过了应归还日期,就要再加上超期罚款金额。系统会自动将罚款信息更新到数据库中。
3. 借阅规则:读者所借的书籍应在30天内可归还或续借,否则按每元罚款;读者续借后可将还书日期从原来的应还书日期延迟30天,在这30天内仍可续借;读者应保管好所借的书籍,如果损坏,则按书籍原价的十分之一交罚款;读者不慎将所借书籍丢失,则需赔偿一本同样的书,或者按照书籍原价的二倍交罚款。 4.3.5 报表显示
水晶报表(Crystal Report)是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。本系有图书报表、读者报表、借阅报表,图书报表可以按图书类别进行查寻,读者报表显示读者的基本信息,借阅报表可以统计每个读者的借书量等信息。以图书报表为例,界面如图4.6所示。
图4.6 图书报表界面
功能实现:
1.管理员进入图书报表界面后,单击“浏览”按钮后,系统会自己关联指定的水晶报表,显示图书的基本信息,其中对图书名称相同的书籍进行统计,方便管理员查看。 2.如果管理员想要查看某类图书时,可以选取下拉列表框中的类别,单击“查询”按钮后,就会显示相应的图书信息。如果管理员想要查看某本图书时,可以在相应的文
30
本框中输入图书编号,由于可以进行模糊查询,所以还需输入完整的图书编号,单击“查询”按钮后,就会显示相应的图书信息。
3.水晶报表提供了简单易用的界面来根据需要创建、格式化并操纵报表,能够更容易的创建复杂的报表,并且降低了编码量。它强大的报表引擎将处理指定的格式化、分组和制图标准。对于此报表界面内显示图书信息,可以直接进行打印,也能够动态地将报表导出成为.pdf、.doc、.xls、.html、.rtf等多种格式。 查询
管理员可以对所管理的信息进行查询,读者可以对图书和自己的借阅信息进行查询,所以系统的查询界面比较多。管理员进入系统后,能够执行图书查询、出版社查询、读者查询、借书查询、还书查询、罚款查询等。读者进入系统后,主要实现的就是查询功能,对图书可以简单查询和复合查询,复合查询可以输入多个条件进行,查询自己所借的书是否超期等。下面以读者登录后的简单查询为例,简单查询界面如图4.7所示。
图4.7 简单查询界面
功能实现:
1.读者在登录系统后,会在主界面显示当前读者的姓名,也会记下读者的登录帐号。读者如果想要查询自己所借过的图书,只要单击“所借图书”按钮,系统会根据记下的读者帐号从数据库中提取相应条件的信息,显示在dataGridView中。同理,读者如果想要查询自己还未的图书信息时,就单击“未还图书”按钮,dataGridView中则显示
31
当前读者的未还的图书信息。
2.读者在查询图书时,可以在下拉列表框中选取自己所习惯的查询类型,如:图书类别,文字类型可以为中文或外文,查询方式为绝对匹配或部分匹配,如果是部分匹配可实现模糊查询,where条件用and 连接like '%\" + textBox1.Text + \"%' ,文本框中输入合适的内容后,单击“条件查询”按钮,系统会根据查询条件与数据库中的相应信息进行对比,然后将所匹配的图书信息显示在dataGridView中。 附加功能
为了提高系统中密码的安全性和电话号码格式的准确性,用正则表达式进行了限定,增强了系统的准确性。
在系统中涉及到数字的计算,为了使计算更加方便快捷,用到了API函数,实现了对计算器的控件的调用。API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在WindowsXP和Windows NT操作系统上的应用程序。
32
5 软件测试
5.1 测试计划的制定
测试计划就是对测试的范围、方式、资源及测试所需的时间,做出一个预先的指定方针[7]。
5 测试计划实现的目标
测试计划作为指导测试项目秩序渐进的基础,帮助我们安排合适的资源和进度,避免可能的风险,有助于实现以下目标:
(1)确定现有项目的信息和应测试的软件构件。 (2)列出推荐的测试需求。 (3)推荐可采用的测试策略。
(4)确定测试所需的时间和资源,以保证其可获得性和有效性。 (5)确立每个测试阶段的测试完成及测试成功的标准和实现的目标。 5 定义软件测试的标准
组织者在指定范围内选择软件测试遵循的标准,并结合本软件系统的具体要求,使之贯彻到整个软件测试的计划、实现和管理过程之中[8]。 5 测试实施策略的制定
测试策略描述当前测试项目的目标和所采用的测试方法。这个目标不是测试计划的目标,而是针对某个应用软件系统或程序、具体的测试项目要达到的预期结果,包括在规定的时间内哪些测试内容要完成、软件产品的特性或质量在哪些方面得到确认。 5.1.4 测试计划的要点
(1)计划的目的:项目的范围和目标,各阶段的测试范围、技术约束和管理特点。 (2)项目估算:使用的历史数据、评估技术作为工作量、成本、时间的估算依据。 (3)风险计划:测试可能存在的风险分析、识别以及风险的回避监控和管理。 (4)计划的日程:项目工作分解结构,并采用时限图、甘特图等方法制定时间和资源表。
(5)项目资源:对人员、硬件和软件等资源的组织和分配,人力资源是重点,而
33
且和日程安排联系紧密。
(6)跟踪和控制机制:质量保证和控制、变更管理和控制。
5.2 测试的基础
5.2.1 测试的目标
测试是为了发现程序中的错误而执行程序的过程,好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案,成功的测试是发现了至今为止尚未发现的错误的测试。
5 白盒测试和黑盒测试
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一个方法称为黑盒测试,后一个方法称为白盒测试。
白盒测试,所关注的是:测试用例执行的程度或覆盖程序逻辑结构的程度,也可以认为是逻辑覆盖测试。具体方法有五个,按其逻辑覆盖的从弱到强依次为:语句覆盖(面)、判定/分支覆盖(线)、条件覆盖(点)、判定/条件覆盖(点线结合)、多重条件覆盖(点线组合)。
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。 5 测试的原则
软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。
中国软件评测中心的测试原则就是从用户和开发者的角度出发进行软件产品测试的,通过的测试,可以为用户提供放心的产品,并对优秀的产品进行认证。
34
5.3 测试用例设计
5 等价类测试用例设计
验证管理员的规格说明
在图书借阅管理系统中对管理员的信息的规定:“管理员帐号可以是任意数字、字母的组合,帐号长度为6-8个字符。管理员密码可以为字母和数字的组合,密码长度要求为6-20个字符”。
用等价类划分的方法得到上述规格说明的要求,建立输入等价类表格。
表5.1 管理员帐号等价类表
输入条件 管理员帐号组成 管理员字符个数
有效等价类
数字(1),字母(2) 6-8个(4)
无效等价类
非数字或字母(3) 0个(5),>8个(6)
下面选取了6个测试用例,其中前两个覆盖了所有的有效等价类,其他的覆盖了4个无效等价类。
输入:abc123 }覆盖(1),(2),(4)等价类 输入:001001 }覆盖(1),(4)等价类
输入:ab#1234 }管理员帐号有非法字符,覆盖(3)等价类 输入:空 }管理员帐号为0个字符,覆盖(5)等价类 输入:123455q6q7q5 }管理员帐号多于8个字符,覆盖(6)等价类
表5.2 管理员密码等价类表
输入条件
管理员密码组成
管理员密码字符个数
有效等价类
数字(1),字母(2) 6-20个(4)
无效等价类
非数字或字母(3) 0个(5),>20个(6)
下面选取了4个测试用例,其中第一个覆盖了所有的有效等价类,其他的覆盖了3个无效等价类。
输入:abc123 }覆盖(1),(2),(4)等价类 输入:qqs*123 }密码有非法字符,覆盖(3)等价类 输入:空 }密码为0个字符,覆盖(5)等价类 输入:123456asdaaasdfghhhfssee }密码多于20个字符,覆盖(6)等价类 5 边界值测试用例设计
图书借阅的规格说明:输入文件由图书的借书信息组成,其中重要信息组成如下:
35
(1)图书编号。这是图书的唯一编号,一般由数字或字母组成,长度为8个字符。 (2)读者帐号。这是读者的唯一帐号,一般数字或字母组成,长度为6-8个字符。 (3)借书量。是指读者当前所借书的数量与未还书的数量之和。一个读者最多只能借5本书,否则不可借阅。
根据输入条件和边界条件所选择的测试用例,如表所示。
表5.3 图书借阅的测试用例
输入条件 图书编号
测试用例
无编号
图书编号只有一个字符 图书编号有8个字符
图书编号有非数字或字母的字符 无帐号
读者帐号只有一个字符 读者帐号有6个字符 读者帐号有8个字符
读者帐号有非数字或字母的字符 借书量为0 借书量为1 借书量为5 借书量为6
借书量中含有非数字字符
读者帐号
借书量
5 功能图法测试用例设计
管理员查询图书信息的功能图,如图5.1所示。其规格说明如下。
图5.1 图书查询功能图
36
其规格说明如下。
(1)初始时要求管理员进行登录。
(2)进入登录界面后要求管理员输入其贴号和密码信息。
(3)后台数据库对管理员的信息进行比对。若相同,则可以入系统进行查询操作;若不同,则管理可以重新进行登录。
(4)管理员输入要查询商品的信息后,后台数据库检查表中是否有与其对应的记录,若没有管理员可以重新输入查询信息;否则显示相应的查询结果。
根据功能图和规格说明,设计出了测试用例,如图5.2所示。
图5.2 图书查询测试用例
5.4 软件可靠性
5.4.1 基本定义
1.软件可靠性
37
1983年美国IEEE计算机学会对“软件可靠性”作出了明确定义,此后该定义被美国标准化研究所接受为国家标准,1989年我国也接受该定义为国家标准。该定义包括两方面的含义:一是在规定的条件下,在规定的时间内,软件不引起系统失效的概率;二是在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。
2.软件的可用性
软件可用性的一个定义是:软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
可靠性和可用性之间的主要差别是可靠性意味着在0到t这段时间间隔内系统没有失效,而可用性只意味着在时刻t,系统是正常运行的。因此,如果在时刻t系统是可用的,则有下述种种可能:在0到t这段时间内,系统一直没失效(可靠);在这段时间内失效了一次,但是又修复了;在这段时间内失效了两次修复了两次如此反复进行。
如果在一段时间内,软件系统故障停机时间分别为td1,td2…,正常运行时间分别为:tu1, tu2….,则系统的稳态可用性,如式(5.1)所示。
Ass=Tup/(Tup+Tdown) (5.1)
Tup为成功运行的时间总和;Tdown为失败的时间总和。
如果引人系统平均无故障时间MTTF和平均维修时间MTTR的概念,则(5.1)式将会改变,如式(5.2)所示。
Ass=MTTF/(MTTF+MTTR) (5.2)
5.4.2 估算平均无故障时间的方法
软件的平均无故障时间MTTF是一个重要的质量指标,往往作为对软件的一项要求,由用户提出来。为了估算 MTTF,首先引入一些有关的量。
在估算MTTF的过程中使用下述符号表示有关的数量:
ET——————测试之前程序中错误总数;
IT——————程序长度(机器指令总数);
————————测试(包括调试)时间; Ed()——————在0至期间发现的错误数; Ec() ————在0至期间改正的错误数;
经验表明,平均无故障时间与单位长度程序中剩余的错误数成反比,如式(5.3)所
38
示。
MTTF=1/(K*(Et/It-Ec/It)) (5.3)
其中K为常数,它的值应该根据经验选取。美国的一些统计数字表明,K的典型值是200。估算平均无故障时间的公式,可以评价软件测试的进展情况。 5.4.3 MTTF和ASS的估算
对图书借阅管理系统进行为期8天的集成测试,平均每天测试4个小时。在测试期间记录了数据如下:
(1)在测试之前程序存在40条错误。 (2)程序中指令的长度为35000行。
(3)测试了8天每天4个小时共32小时,期间维护了5次共花费4小时。 (4)在测试期间发现并改正了37条错误。
综合上述测试数据,根据式5.1可计算系统的稳态可用性。
Ass= Tup/(Tup+Tdown)=32/(32+4)=0.89
作时间。
MTTF=1/(200*(40/35000-37/35000))=58小时
39
结 论
经过一段时间的设计和开发,图书借阅管理系统基本开发完毕,系统功能基本符合借阅管理的需求,其主要功能如下。
管理员正确登录后,能够执行图书管理、出版社管理、图书类别管理、读者注册、读者管理、借书、还书、罚款、报表显示以及对图书、出版社、图书类别、读者、借书信息、还书信息、罚款信息等进行查询,并且可以实现模糊查询,其中每个管理模块都包括对该信息的添加、修改、删除功能。读者成功登录后,可以查看图书的借阅规则,对图书进行简单查询和复合查询,查看自己所借过的图书、未还的图书、罚款的图书及罚款金额等信息。
由于时间比较紧迫,该系统还有些不足之处,比如有的报表只能实现将数据库中对应表的全部信息显示出来,没有实现按日期查询信息、按月份统计罚款金额等。因为对图书馆的调研不够精确,所以有些问题没有考虑到,导致有些已实现的功能不够周全,有些出错处理不够恰当等多方面问题,还需要进一步的完善。对于一些复杂的代码还需要进一步的修改,使之更加简捷易懂。
40
致 谢
41
参考文献
[1] 邹建.中文版SQL Server 2005开发管理实例.人民邮电出版社.:P20-28. [2] 刘卫宏.SQL SERVER 2005实用教程.科学出版社.:P60-123.
[3] 东方人华.SQL与C#.NET数据库入门与提高.清华大学出版社.2006.4:P13-26. [4] 张龙志.Visual C#.NET实用数据库编程.中国科学技术大学出社.2003.5:P9-32. [5] 彭明明.C#.NET数据库实用编程100例.人民邮电出版社.:P300-315. [6] 萨师煊 王珊.数据库系统概论.高等教育出版社.2002.4:P203-242 [7] 覃征 杨利英.《软件项目管理》.清华大学出版社.2004:P70-89 [8] 张海藩.软件工程导论.北京清华大学出版社.2003:P66-75
42
附 录
附录A VS2005 Introduction
Today, the enterprises to be successful, we must face up to build and maintain increasingly complex information technology (IT) solutions to needs. In addition, they also help of new technologies to expand their business functions, and develop new business opportunities. Since the IT departments have received technical support tasks that moment, they will become the most critical role in business strategy.
Companies want from their IT investments in the project to obtain the maximum profits, which means that IT departments need increasing pressure, the sooner the better to complete the work. Because of the higher pursuit of cost-effectiveness, making predictability of demand for IT projects is growing. However, this often result in cumbersome processes and monitoring of cost consumption, it is only fees should be shifted to a different question. Opportunity to pay the development costs of a large investment of time, resulting in the expansion of IT budgets.
Complex applications generally require the development of well-trained team of multi-vessel to achieve. Development team to make a commitment to any commitment for the major terms, exchange of information is an essential element of success. The new Visual Studio Team System extends the Microsoft of the outstanding features, namely, providing tightly integrated with business, scalable, and can increase the probability of success of the life-cycle tools to provide users with more efficient tools. The success depends largely on the complexity of the solution, in order to reduce the complexity of the delivery of solutions, the team between the need for a full exchange.
IT solutions for the challenges of building
Although many IT solutions, project work products are software, but software is not generating the project objectives.On the contrary, software is a means to achieve its objectives, namely, driving a different business value. Need to respond to different risk and increase predictability of success, most IT departments turning to a variety of tools and processes to support SDLC. Were designed to improve the efficiency of software development are not
43
satisfactory attempts. These attempts, some because the implementations are too complicated, so I did not achieve the desired objectives, and some simply can not find the team development in the crucial issue.
Information exchange: It is important to build large applications from the team, this one may never write off a large number of participants in the code, including business sponsors, project managers, architects and testers. What's more, the team itself has evolved into a broader and more specialized geographical distribution. Differences in the role led to many problems can not be resolved, or unconsciously produced differences on the plan. In order to make the team function effectively, it must streamline the information exchange process, and must be members of it with the consistent behavior of the daily work.
Tool bundle: In recent years, in the field of SDLC tool has been extensive use of bundled approach. However, just bundled collection of tools and tool integration can not be achieved. This is just the establishment of kit. Because of the role of restrictions to enable the non-integrated tools (can not support the automatic data flow between tools) between the leads to contradictions. The lack of integration must be carried out through manual intervention to make up, this may produce some other problems. Integrated in the data layer, enabling data flow automation tools and the achievement of regular reports.
Inappropriate process: making the process complicated by the adoption of the reason is that there is a contradiction, that developers in a number of life cycle is the most critical part, but also the weakest link. Not suitable for team members (in particular, the development of groups) work style of the process would be met with resistance obviously. The challenge is to balance the predictable, repeatable process, production efficiency and innovation. When this balance is not formed, each person will be at the cost of consumption and the achievement of objectives contradiction. Most processes are document-centric. In this case, they need to pay extra beyond the maintenance of the normal flow of daily activities outside of work. Whether the team to use a specific procedure, a flexible process, or a conventional process, can be integrated in the software development process.
Another disappointing return on investment (ROI): stand CIO's point of view, a painful choice lies in the development activities and tools to keep investing, and an astronomical amount of IT budgets in return is another disappointing return on investment. Most of the
44
adoption process and SDLC tools, try to reason difficult, because of its steep learning curve, lack of tool integration, high initial investment costs, ongoing maintenance, special skills requirements, and to the specific needs of administrators. The results, including SDLC tools, total cost of ownership is difficult to afford. Therefore, CIO faces a challenge - to prove since the expense will not touch any of the factors that can be estimated, their expenses are reasonable.
Improve the software development life cycle
When Microsoft first released Visual Basic, when, on the adoption of reducing its complexity so that Windows software can be widely applied. The use of Visual Basic 6.0, Microsoft let hundreds of millions of developers to quickly develop client / server applications. Recently, the use of Visual Studio. NET, Microsoft also provides developers with an easy tool for developing distributed applications and technology. Through the Visual Studio 2005 Team System, Microsoft is addressing the increasing complexity of the application and its design, development and deployment of the necessary life-cycle issues. This is by providing the necessary tools and guidance to be able to foresee, repeat the results (without paying the cost of production efficiency and innovation) achieved.
Information exchange: report of the operation by reducing overhead and team members to find new channels of communication, Visual Studio Team System focuses on better communication.
From the team members through automated tools used to gather information, you can simplify the reporting process. From the Visual Studio Team System collected data stored in the data warehouse, which makes the project status reports and visibility can be oriented to all members of the software development team, even outside the project team stakeholders.
Distributed System Designers (Distributed System Designer) will be demand for application development and deployment into enables developers and operators to communicate common language (SDM).
Integrated tools: Visual Studio's success has been confirmed that the developers preference for one to possess the tools they need to provide an integrated interface development environment. By developers in the development environment need to test and performance tools (for example, unit testing, code analysis and performance analysis) are
45
combined, Visual Studio Team System is also looking forward to this success. This allows developers to an earlier stage in the life cycle to improve the quality of their code without having to interrupt their work. By as early as possible for the developers they need to identify and solve quality problems for the tools, more defects can pose a hazard they have not yet discovered and resolved before the Jibei.
Simplified, integrated workflow and process: With Visual Studio Team System, then the process is not just documents. It also can reflect the actual tools for their own behavior change. When you are early in the project selection process, you also need to select the workflow and work products, they will drive the system behavior.
Support of the SDLC process, built-in, which makes workflow support is seamless. Through the process will be integrated into the team members the basic tools for everyday use, Visual Studio Team System greatly eliminates barriers to the adoption process and make cross-functional project automatically collects standard to be possible, without having to report on the implementation of the relevant manual overhead.
Increase the return on investment: the use of information exchange and productivity improvements, enterprises will be obvious that for their SDLC tools and processes to increase investment in the ROI. Visual Studio Team System to provide a cost-effective solution, which through the use of a wide range across all SDLC tools, integration, implementation of the software development life-cycle management. By providing an integrated tool set, and based on existing knowledge to build, Visual Studio Team System to provide a friendly environment to help development teams to improve efficiency without having to master an unnecessary, complex concepts and rigid tools.
Integration: By SDLC tools integrated into the UI-level surface, Visual Studio Team System to improve the efficiency of team work and enhance the predictability of the project, below the surface of the data-level and process level of the project context.
User Interface Integration: Seamless integration between tools is to enhance the productivity of the key. Visual Studio Team System suite of tools available across the entire SDLC, consistent user experience. For developers, it may be in their current development environment in the use of certain activities (for example, unit testing, work item tracking, code profiling and code analysis).
46
Data Integration: By using a common tool set across the data warehouse, Visual Studio Team System solves most of SDLC tools to build a data warehouse of this issue and launched a converged view of project status. The team can be collected according to the rules to manage the project. Today, the data largely confined to defect tracking. Visual Studio Team System in the integrated data will open a new way - by balancing the use of a large number throughout the SDLC, a variety of data to manage the project rules. Visual Studio Team System will collect accurate data - is not limited to defect tracking, but includes test results, code coverage, code generation, the task progress of these teams throughout the regular work flow of data. The data is based on certain standards of reporting presented, customers and Microsoft internal team has been established in the report, the key to a successful project management rules. In addition, the team can also create custom reports. Only when the context of the project view of a wide range of data, the team will be able to accurately report project status.
Process Integration: In the Visual Studio Team System, the tool acts from the start of the project selection process of the decision. By integrating processes and tools, Visual Studio Team System to help ensure that the project or between the various stages between the roles of a variety of projects to avoid losing anything. Through the automatic processing of work between team members to adjust, can improve team efficiency. Company by making the process of standardization, process improvement can be corrected throughout the system problems, without increasing the workload of the team. In addition, the process of integration does not increase the workload, usually adopted in the reduction and SDLC process-related costs.
Scalability: Although there are some basic tools can be composed of SDLC tools (for example, architect tools, testing tools, etc.), but the number of SDLC is not locked into tools. When the integration of tools to support SDLC, the team will find in improving team efficiency, while reducing the complexity of these benefits. Visual Studio Team System will provide the basic platform for all providers to a common public in the form of exchange of information intelligible. This is a matter of course cast a vibrant ecosystem of partners, partners to build a fully integrated tools that simplify the complexity of building IT solutions, as well as promote information exchange and encourage teamwork. To obtain the cross-UI,
47
data and process integration of the maximum value, you need scalability. Scalability to promote interactivity.
Visual Studio Team System design basis is to extend the model. Microsoft provides third-party SDLC tool to use and scalability features available in the expansion of the same features. Scalability is reflected in the integrated three levels: UI, data and processes.
User Interface Extensibility: Visual Studio Team System use the existing Visual Studio Industry Partner (VSIP) program, will complement the products and services to plug into the Visual Studio Integrated Development Environment (IDE) into.
Data Extensibility: Visual Studio Team System using Visual Studio Team Foundation Core Services (TFCS) to integrate these tools. TFCS provides a set of tools able to integrate tools, without tight coupling between tools. For data collection, TFCS can also be used by third-party tools used by Visual Studio Team System data warehouse.
Process Extensibility: Visual Studio Team System to use the template to define the methodology for each project will follow the process. Does not exist for all organizations, as well as all projects within an organization a common process. Do not worry about, Visual Studio Team System is a flexible set of tools, it uses that is flexible and informal process. Microsoft's Global Solution Integrator partners will provide their own methodology template products; Or, you can create your own templates. Extensibility to allow the process of custom work item types, check-in policy, custom reporting, and project management templates.
Architect: Visual Studio 2005 Team Architect Edition includes integrated and efficient tool for the visually construct service-oriented solutions, these solutions from the deployment of the initial state of the environment start designing.
Developer: Visual Studio 2005 Team Developer Edition provides developers with advanced static analysis, code analysis, code coverage and unit testing tools that enable the team throughout the entire life cycle as early as possible, frequently the quality of planning.
Testers: Visual Studio 2005 Team Test Edition Developer Edition is built on top of, and better provide for testing for the management and operation of a variety of testing (including unit testing, manual testing and Web testing) tools, and to make the team before the application can be deployed to test its performance, advanced load testing tools.
Project Manager: Visual Studio 2005 Team Foundation provides a software-based project
48
management personnel are known to the contents of project management tools: Microsoft Excel, Microsoft Project, and Windows SharePoint Services. With Microsoft Office integration, project management staff no longer need to manually map data from these applications to the data used for the engineering team. The project site provides DashBoard view of project status, as well as those risks down the back function. The report provides a rich regular team work from the entire stream collection of rules. Since the project process is based on industry-accepted definition of the practice to drive the life cycle.
Team Development: Visual Studio 2005 Team Foundation also provides team collaboration tools that enable organizations to effortlessly you can manage and track the process and the operational status of software projects. Portfolio Explorer will be able to get from the project site, these same project work products integrated into the Visual Studio IDE, so that the team can be an effective visit. Visual Studio 2005 Team Foundation also provides an extensible work item tracking system and enterprise-level source code management.
Shortcut keys function as follows: CTRL + SHIFT + B generates solutions CTRL + F7 to compile generated CTRL + O to open the file
CTRL + SHIFT + O to open the project CTRL + SHIFT + C Show Class View window F4 Display Properties window
SHIFT + F4 displays the Project Properties window CTRL + SHIFT + E Show resource view F12 Go to the definition of CTRL + F12 to the statement CTRL + ALT + J Object Browser CTRL + ALT + F1 Help Contents CTRL + F1 Dynamic Help F1 Help
SHIFT + F1 help the current window CTRL + ALT + F3 Help – Search
49
SHIFT + ALT + ENTER full screen display CTRL + - backward positioning CTRL + SHIFT + - forward positioning CTRL + F4 Close document window
CTRL + PAGE DOWN cursor to the window at the top of CTRL + PAGE UP to the window beneath the cursor position CTRL + F6
CTRL + TAB for the next document window CTRL + SHIFT + F6
CTRL + SHIFT + TAB on a document window ALT + F6 Next pane window CTRL + K, CTRL + L cancel remark
CTRL + K, CTRL + C Note code of their choice
CTRL + K, CTRL + U cancel the selection of the code comments CTRL + M, CTRL + O folding code definitions CTRL + M, CTRL + L start code definitions CTRL + DELETE to delete to the ending CTRL + BACKSPACE to delete the prefix SHIFT + TAB cancel tabs CTRL + U switch to lower-case CTRL + SHIFT + U turn caps
CTRL + SHIFT + END Select to the document at the end of
CTRL + SHIFT + HOME Select from the document at the end of the beginning SHIFT + END Select to the end of the line SHIFT + HOME Select to the beginning of the line
SHIFT + ALT + END to the last end of the vertical selection SHIFT + ALT + HOME perpendicular to choose to go to top CTRL + A Select All
Select the current word CTRL + W
CTRL + SHIFT + PAGE UP Select to front page
50
CTRL + SHIFT + PAGE DOWN Select from the back page Locate the document CTRL + END to the last Locate a document CTRL + HOME to the most pre – CTRL + G Go to ...
CTRL + K, CTRL + P on a label CTRL + K, CTRL + N under a label ALT + F10 to debug-ApplyCodeChanges CTRL + ALT + Break to stop debugging CTRL + SHIFT + F9 to remove all breakpoints CTRL + F9 to allow interrupts
CTRL + SHIFT + F5 to debug - start again F5 to run debug
CTRL + F5 to run without debugging F10 across the program execution F11 step into single-step
CTRL + J lists the members of the CTRL + PAGE DOWN Next view CTRL + B format - bold
CTRL + SHIFT + T format - text indent Debugging Shortcut Keys F6: Build the solution
Ctrl + F6: Build the current project F7: View Code
Shift + F7: See Form Designer F5: Start Debugging
Ctrl + F5: Start the implementation (not debugging) Shift + F5: Stop Debugging Ctrl + Shift + F5: Reset Debugging F9: Toggle Breakpoint
Ctrl + F9: Enable / stop Breakpoint
51
Ctrl + Shift + F9: Delete All Breakpoints F10: by the process of Ctrl + F10: Run to Cursor F11: Statement by Editing Shortcuts
Shift + Alt + Enter: toggle full-screen editing Ctrl + B, T / Ctrl + K, K: Switching bookmarks Switch Ctrl + B, N / Ctrl + K, N: Move to the next bookmark Ctrl + B, P: Move to the previous one bookmark Ctrl + B, C: Clear All Tags Ctrl + I: Incremental Search
Ctrl + Shift + I: Reverse Incremental Search Ctrl + F: Find
Ctrl + Shift + F: Find in files F3: Find next
Shift + F3: Find previous Ctrl + H: Replacement
Ctrl + Shift + H: Replace in the document Alt + F12: Find symbol (list all search results) Ctrl + Shift + V: clipboard cycle
Ctrl + left arrow keys: one can move one word
Ctrl + up and down arrow keys: Scroll the code screen, but does not move the cursor position.
Ctrl + Shift + L: Delete the current row
Ctrl + M, M: hide or expand the current state of the nested folding Ctrl + M, L: to all processes set to the same hidden or expanded state of the Ctrl + M, P: Stop Outlining Ctrl + E, S: see Blank Ctrl + E, W: Word Wrap Ctrl + G: Go to specified line
52
Shift + Alt + arrow key: Select the Rectangle Text Alt + left mouse button: Select the Rectangle Text Ctrl + Shift + U: All into uppercase Ctrl + U: All to Lower Case Code Shortcuts
Ctrl + J / Ctrl + K, L: lists the members of the
Ctrl + Shift + Spacebar / Ctrl + K, P: Parameter Information Ctrl + K, I: Quick Info
Ctrl + E, C / Ctrl + K, C: Note the contents of the selected Ctrl + E, U / Ctrl + K, U: Cancel selection footnotes Ctrl + K, M: Generation of stubs Ctrl + K, X: Insert Code Snippets Ctrl + K, S: Insert outside code
F12: Go to the calling procedure or variable defined Window Shortcut Keys
Ctrl + W, W: the browser window Ctrl + W, S: Solution Manager Ctrl + W, C: Class View Ctrl + W, E: Error List Ctrl + W, O: Output View Ctrl + W, P: Properties Window Ctrl + W, T: task list Ctrl + W, X: Toolbox
Ctrl + W, B: Bookmarks Window Ctrl + W, U: Document Outline Ctrl + D, B: Breakpoint Window Ctrl + D, I: Immediate window Ctrl + Tab: switch the active form Ctrl + Shift + N: New Project Ctrl + Shift +O: Open Project
53
Ctrl + Shift + S: Save Al Shift + Alt + C: New Class Ctrl + Shift + A: New items From
54
附录B VS2005介绍
今天,企业要获得成功,就必须正视构建和维护日益复杂的信息技术(IT)解决方案的需求。此外,还要借助于新技术来拓展业务功能并开发全新的业务机会。自IT部门接受了技术支持任务的那一刻起,他们便成为绝大部分业务策略中的关键角色。
企业当然希望能从他们在IT项目的投资中获得最大利润,这就意味着IT部门需要在越来越大的压力下越快越好地完成工作。对更高成本效益的追求使得 IT 项目的预见性需求日渐增加。然而,这样做通常造成繁琐的过程和对成本消耗的监控,这只不过是将费用转嫁到了不同的问题上。付出的代价是开发项目的时间投入导致IT预算的膨胀。
复杂的应用程序需要多支训练有素的开发团队来实现。对于开发团队做出的任何承诺来说,信息交流都是走向成功的一个基本元素。新的Visual Studio Team System扩展了Microsoft的优秀功能,即通过提供与业务紧密集成的、可扩展的、能够增加成功几率的生命周期工具,从而为用户提供高效的工具。能否成功主要取决于解决方案的复杂性,为了降低解决方案的复杂性,团队间需要进行充分的交流。
构建IT解决方案的挑战
尽管许多IT解决方案项目的工作产品是软件,但生成软件并不是项目的目标。相反,软件是实现目标的手段,用来驱动不同的业务价值。要应对风险增加成功的可预见性,大多数 IT 部门转而采用各种各样的工具和过程来支持SDLC。大部分旨在提高软件开发效率的尝试均不尽如人意。这些尝试要么在实现时过于繁琐,并未达到预期的目标,要么根本无法切中团队开发中的要害问题。
信息交流:重要的大型应用程序由团队构建,这其中可能有大量从未编写过代码的参与者,包括:业务发起人、项目管理者、架构师以及测试人员。更甚之,团队本身已演变为更专业化。角色的差异导致许多问题无从解决,或者无意识地对计划产生了分歧。为了使团队有效地运转,就必须理顺信息交流流程,而且必须让它与成员的日常工作行为相吻合。
工具捆绑:近些年来,在 SDLC 工具领域中已经大量使用了捆绑手法。但是,仅仅是捆绑工具集合并不能实现工具集成。这只是建立工具包。由于角色限制,
55
非集成工具(无法支持工具间的自动数据流)之间就产生了矛盾。集成性的匮乏就必须通过手工干预进行弥补,而由此可能产生其它一些问题。在数据层进行集成,能够使数据流自动使用工具显示常规报告。
不合适的过程:由于过程中存在的矛盾使得过程采纳变得复杂,即开发人员在许多生命周期过程中既是最关键的一环,又是最薄弱的一环。不适合团队成员(特别是整个开发团体)工作行为的过程,将遭遇到明显地排斥。面临的挑战就是将可预见、可重复过程的生产效率进行平衡创新。当未形成这种平衡时,每一个人都挣扎于成本消耗与实现任务目标的矛盾之中。多数过程都以文档为中心。在这种情况下,他们需要额外付出超出维护日常活动之外的努力。无论团队使用特定的、灵活的或者常规的过程,每一支团队都可以受益于集成的软件开发过程。
另人失望的投资回报 (ROI):站在 CIO 的角度看,存在痛苦的抉择,在开发活动和工具方面不断投入的、天文数字的IT 预算换来的却是另人失望的投资回报。大多数采纳过程和 SDLC 工具的尝试之所以困难重重,原因在于其陡峭的学习曲线、缺乏工具集成、高额的前期投入费用、持续的维护、特殊技能需求以及对专门的管理员的需求。结果,包含SDLC工具拥有难以负担的成本。因此,CIO 面临一个难题 — 证明既然费用支出不会再涉及任意可估计到的因素,那么他们的费用支出就是合理的。
改进软件开发生命周期
当Microsoft首先发布Visual Basic之时,就通过降低其复杂度从而使Windows 软件开发得以广泛应用。利用,Microsoft让数以百万计的开发人员能够快速开发客户端/服务器应用程序。最近,利用,Microsoft 又为开发人员提供了轻松开发分布式应用程序的工具与技术。通过Visual Studio 2005 Team System,Microsoft正在解决日益增加的应用程序复杂性及其设计、开发和部署所必需的生命周期问题。这一点是通过提供必需的工具和指导从而能够预见、重复结果(无需付出生产效率和创新的代价)实现的。
信息交流:通过降低报告的运转开销和寻觅团队成员间新的交流渠道,Visual Studio Team System 着重于能够更好地进行交流。
通过从团队成员使用的工具里收集信息,可以简化报告过程。从Visual Studio Team System采集到的数据保存在数据仓库中,这使项目状态报告和可见性能够面向软件开发团队的所有成员,甚至是项目组之外的联系人。
56
项目经理能够将客户需求转化为开发团队中的工作项,然后跟踪工作项的状态以实现项目状态的监控。
分布式系统设计器 (Distributed System Designer) 将应用程序开发和部署需求转化为能够让开发人员和操作进行交流的公共语言 (SDM)。
集成的工具:Visual Studio 的成功已被证实,即开发人员偏爱一个具备对他们需要的工具提供接口的集成开发环境。通过将开发人员在开发环境中需要的测试和性能工具(例如,单元测试、代码分析和性能分析)合并在一起,Visual Studio Team System 也期待着这种成功。这使开发人员能够在生命周期的较早阶段就改善其代码的质量,而无需中断他们的工作。通过尽早地为开发人员提供他们需要用于识别和解决质量问题的工具,更多的产品缺陷就能够在它们还未构成危害之前即被发现并解决。
简化的、集成的工作流和过程:有了Visual Studio Team System,那么过程就不仅仅是文档了。它还能将自己体现为实际的工具行为更改。当您在项目初期选择过程时,还需要选择工作流和工作产品,它们会驱动系统的行为方式。对 SDLC 过程的支持是内置的,这使得对工作流的支持是无缝的。通过将过程集成到团队成员日常使用的基本工具中,Visual Studio Team System大大消除了过程采纳的障碍,并使自动收集跨职能的项目标准成为可能,而无需实施人工报告的相关开销。
增加的投资回报:利用信息交流和生产效率的改进,企业将明显地看到针对其在 SDLC 工具和过程方面的投资而增加的 ROI。Visual Studio Team System 提供一个具有成本效益的解决方案,从而通过使用跨所有 SDLC 工具的广泛集成,实现对软件开发生命周期的管理。通过提供集成的工具集并基于现有知识进行构建,Visual Studio Team System 提供一个友好的环境来帮助开发团队提高效率,而无需掌握不必要的、复杂的概念和僵化的工具。
集成:通过将 SDLC 工具集成到 UI 级别的表面,Visual Studio Team System 提高了团队工作效率并增强了项目的可预见性,下面描述项目数据级别表面以及过程级别。
用户界面集成:工具间的无缝集成是增强生产效率的关键。Visual Studio Team System 提供跨整个 SDLC 工具套件的、一致的用户体验。对于开发人员而言,可以在他们当前的开发环境中使用某些活动(例如,单元测试、工作项跟踪、代码剖析以及代码分析)。
57
数据集成:通过使用一个公共的跨工具集的数据仓库,Visual Studio Team System解决了在大多数 SDLC 工具中建立数据仓库这一问题,并启动了一个聚合的项目状态视图。团队根据能够收集到的规则来管理项目。今天,数据主要限于缺陷跟踪。Visual Studio Team System 中集成的数据将开创一条新路,通过平衡利用贯穿于 SDLC 的大量、多样的数据来管理项目规则。Visual Studio Team System 会收集精确的数据 — 不仅限于缺陷跟踪,而是包括测试结果、代码涵盖、代码生成、任务进度等这些贯穿于团队常规工作流程的数据。该数据以某些标准的报告方式呈现,客户和 Microsoft 内部团队已在报告中建立了成功项目管理的关键规则。此外,团队还能够创建自定义报告。仅当以项目的大范围查看数据时,团队才能够精确地报告项目状态。
过程集成:在Visual Studio Team System中,工具行为由项目开始时选择的过程决定。通过将过程与工具相集成,Visual Studio Team System帮助确保在项目各阶段之间或各种项目角色之间避免丢失任何内容。通过自动处理团队成员之间的工作调整,可以提高团队效率。公司通过使过程标准化,能够纠正贯穿于过程改进中的系统问题,而无需增加团队的工作量。此外,过程集成并不增加工作量,而通常能够降低与SDLC中所采纳过程相关的开销。
扩展性:尽管存在一些基本的工具可组成SDLC工具(例如,架构师工具、测试工具等),但是SDLC并未限制工具的数量。当集成支持SDLC的工具时,团队会发现在提高团队效率,同时降低复杂性这些方面的好处。Visual Studio Team System 将提供基本的平台,让所有提供商能够以一种普通的、公众可理解的形式交换信息。这理所当然地铸造了一个充满活力的合作伙伴体系,合作伙伴能够构建完全集成的工具,简化构建IT解决方案的复杂性,以及推动信息交流和鼓励团队协作。要获得跨 UI、数据和过程集成的最大价值,就需要扩展性。扩展性促成交互性。
Visual Studio Team System 设计基础是扩展性模型。Microsoft 提供的 SDLC 工具利用与第三方可用的扩展性功能相同的扩展性功能。扩展性体现在集成的三个层次:UI、数据和过程。
用户界面扩展性:Visual Studio Team System利用现有的Visual Studio Industry Partner (VSIP) 计划,将补充的产品和服务插入到Visual Studio集成开发环境 (IDE) 之中。
58
数据扩展性:Visual Studio Team System利用Visual Studio Team Foundation Core Services (TFCS) 将这些工具集成在一起。TFCS 提供一组能够将工具集成在一起的工具,无需工具间的紧密耦合。对于数据收集,TFCS 还能够将第三方工具用于由 Visual Studio Team System 使用的数据仓库。
过程扩展性:Visual Studio Team System使用方法论模板来定义每个项目将遵循的过程。不存在适用于所有组织、以至一个组织内的所有项目的通用过程。不要为此担心,Visual Studio Team System是一个灵活的工具集,它采用即灵活又正规的过程。Microsoft 的 Global Solution Integrator 合作伙伴将提供他们自己的方法论模板产品;或者,您可以自己创建模板。过程扩展性允许自定义工作项类型、签入策略、自定义报告以及项目管理模板。
架构师:Visual Studio 2005 Team Architect Edition 包括集成、高效的工具,用于直观地构建面向服务的解决方案,这些解决方案从部署环境的初始状态开始设计。
开发人员:Visual Studio 2005 Team Developer Edition 为开发人员提供高级的静态分析、代码剖析、代码涵盖以及单元测试工具,使团队能够在整个生命周期中尽早、频繁地规划质量。
测试人员:Visual Studio 2005 Team Test Edition 构建于开发人员版本之上,更好地为测试人员提供了用于管理和运行各种测试(包括单元测试、手工测试和 Web 测试)的工具,以及使团队能够在应用程序部署之前检验其性能的高级负载测试工具。
项目管理人员:Visual Studio 2005 Team Foundation 提供一套基于软件项目管理人员已知内容的项目管理工具:Microsoft Excel、Microsoft Project和Windows SharePoint Services。与Microsoft Office集成,项目管理人员不再需要手工将数据从这些应用程序映射到供工程团队使用的数据。项目站点提供仪表盘式的项目状态视图,以及向下追溯风险承担者的功能。丰富的报告提供了从整个常规的团队工作流中收集的规则。自定义项目过程基于业界公认的实践来驱动生命周期。
团队开发:Visual Studio 2005 Team Foundation 还提供团队协作工具,使组织能够不费吹灰之力即可管理并跟踪过程和软件项目的运行状况。Portfolio Explorer 将可从项目站点获得的这些相同的项目工作产品集成到Visual Studio IDE,从而让团队能够进行有效的访问。Visual Studio 2005 Team Foundation还提供一个可扩展
59
的工作项跟踪系统和企业级别的源代码管理。
快捷键功能如下:
CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口
SHIFT + F4显示项目属性窗口 CTRL + SHIFT + E显示资源视图 F12 转到定义 CTRL + F12转到声明 CTRL + ALT + J对象浏览 CTRL + ALT + F1帮助目录 CTRL + F1 动态帮助 F1 帮助
SHIFT + F1当前窗口帮助 CTRL + ALT + F3帮助-搜索 SHIFT + ALT + ENTER全屏显示 CTRL + -向后定位
CTRL + SHIFT + -向前定位 CTRL + F4关闭文档窗口
CTRL + PAGE DOWN光标定位到窗口上方 CTRL + PAGE UP光标定位到窗口下方 CTRL + F6
CTRL + TAB下一个文档窗口 CTRL + SHIFT + F6
CTRL + SHIFT + TAB上一个文档窗口 ALT + F6下一个面板窗口 CTRL + K,CTRL + L取消remark
60
CTRL + K,CTRL + C注释选择的代码 CTRL + K,CTRL + U取消对选择代码的注释 CTRL + M,CTRL + O折叠代码定义 CTRL + M,CTRL + L展开代码定义 CTRL + DELETE删除至词尾 CTRL + BACKSPACE删除至词头 SHIFT + TAB取消制表符 CTRL + U转小写
CTRL + SHIFT + U转大写
CTRL + SHIFT + END选择至文档末尾 CTRL + SHIFT + HOME选择至文档末尾开始 SHIFT + END选择至行尾 SHIFT + HOME选择至行开始处 SHIFT + ALT + END垂直选择到最后尾 SHIFT + ALT + HOME垂直选择到最前面 CTRL + A全选
CTRL + W选择当前单词
CTRL + SHIFT + PAGE UP选择至本页前面 CTRL + SHIFT + PAGE DOWN选择至本页后面 CTRL + END文档定位到最后 CTRL + HOME文档定位到最前 CTRL + G转到…
CTRL + K,CTRL + P上一个标签 CTRL + K,CTRL + N下一个标签 ALT + F10调试-ApplyCodeChanges CTRL + ALT+ Break停止调试 CTRL + SHIFT + F9 取消所有断点 CTRL + F9允许中断
CTRL + SHIFT + F5调试-重新开始 F5运行调试
61
CTRL + F5运行不调试 F10跨过程序执行 F11单步逐句执行 CTRL + J列出成员
CTRL + PAGE DOWN下一个视图 CTRL + B格式-粗体
CTRL + SHIFT + T格式-文字缩进 调试快捷键 F6生成解决方案 Ctrl + F6生成当前项目 F7查看代码
Shift + F7查看窗体设计器 F5启动调试
Ctrl + F5开始执行(不调试) Shift + F5停止调试 Ctrl + Shift + F5重启调试 F9切换断点
Ctrl + F9启用/停止断点 Ctrl + Shift + F9删除全部断点 F10逐过程
Ctrl + F10运行到光标处 F11逐语句 编辑快捷键
Shift + Alt + Enter切换全屏编辑 Ctrl + B,T / Ctrl + K,K切换书签开关 Ctrl + B,N / Ctrl + K,N移动到下一书签 Ctrl + B,P移动到上一书签 Ctrl + B,C清除全部标签 Ctrl + I渐进式搜索
Ctrl + Shift + I反向渐进式搜索
62
Ctrl + F查找
Ctrl + Shift + F在文件中查找 F3查找下一个 Shift + F3查找上一个 Ctrl + H替换
Ctrl + Shift + H在文件中替换
Alt + F12查找符号(列出所有查找结果) Ctrl + Shift + V剪贴板循环
Ctrl + 左右箭头键:一次可以移动一个单词
Ctrl + 上下箭头键:滚动代码屏幕,但不移动光标位置。 Ctrl + Shift + L删除当前行
Ctrl + M,M隐藏或展开当前嵌套的折叠状态 Ctrl + M,L将所有过程设置为相同的隐藏或展开状态 Ctrl + M,P停止大纲显示 Ctrl + E,S查看空白 Ctrl + E,W自动换行 Ctrl + G转到指定行
Ctrl + Alt +箭头键:选择矩形文本 Alt + 鼠标左按钮:选择矩形文本 Ctrl + Shift + U全部变为大写 Ctrl + U全部变为小写 代码快捷键
Ctrl + J / Ctrl + K,L列出成员
Ctrl + Shift + 空格键Ctrl + K,P参数信息 Ctrl + K,I快速信息
Ctrl + E,Ctrl + K注释选定内容
Ctrl + E,Ctrl + K,U 取消选定注释内容 Ctrl + K,M 生成方法存根 Ctrl + K,X 插入代码段 Ctrl + K,S 插入外侧代码
63
F12 转到所调用过程或变量的定义 窗口快捷键
Ctrl + W,W 浏览器窗口 Ctrl + W,S 解决方案管理器 Ctrl + W,C 类视图 Ctrl + W,E 错误列表 Ctrl + W,O 输出视图 Ctrl + W,P 属性窗口 Ctrl + W,T 任务列表 Ctrl + W,X 工具箱 Ctrl + W,B 书签窗口 Ctrl + W,U 文档大纲 Ctrl + D,B 断点窗口 Ctrl + D,I 即时窗口 Ctrl + Tab 活动窗体切换 Ctrl + Shift + N 新建项目 Ctrl + Shift + O 打开项目
Ctrl + Shift + S 全部保存 Shift + Alt + C 新建类 Ctrl + Shift + A 新建项 摘自
64
附录C核心代码
//图书管理
private void 图书信息管理_Load(object sender, EventArgs e)
{cn = new SqlConnection(\"data source=.;initial catalog=图书;integrated security=true;\"); cn.Open();
display();cmd1 = new SqlCommand(\"select 类别名 from 类别\SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read()) comboBox1.Items.Add(dr1.GetString(0)); dr1.Close(); cmd2 = new SqlCommand(\"select 出版社名称 from 出版社\SqlDataReader dr2 = cmd2.ExecuteReader();
while (dr2.Read()) comboBox2.Items.Add(dr2.GetString(0)); dr2.Close();} private void button5_Click(object sender, EventArgs e) { int i1=1;decimal dc; try
{DateTime dt = Convert.ToDateTime(dateTimePicker1.Text);
if (textBox5.Text != \"\") dc = Convert.ToDecimal(textBox5.Text); else dc = 0;
if (textBox1.Text == \"\" || comboBox4.Text == \"\" || textBox3.Text == \"\" || textBox4.Text == \"\" ||
comboBox1.Text == \"\") MessageBox.Show(\"带有“*”号的文本框不能为空,请填写正确的内容!\提示信息\else
{string t3=textBox3.Text; try
{if( Regex.IsMatch(t3,@\"^(/d{13})$\"))
{cmd = new SqlCommand(\"insert into 图书 values('\" + textBox1.Text + \"','\" + comboBox4.Text + \"','\" + textBox4.Text + \"','\" + textBox3.Text + \"','\" + comboBox2.Text + \"','\" + dt + \"',\" + dc + \comboBox1.Text + \"',\" + i1 + \cmd.ExecuteNonQuery();
MessageBox.Show(\"图书添加成功!\信息提示\MessageBoxIcon.Information);display();}
65
else MessageBox.Show(\"索引号格式错误\错误信息!\MessageBoxIcon.Error);} catch (Exception sql)
{MessageBox.Show(sql.Message, \"错误信息!\}}}
catch (Exception sql)
{MessageBox.Show(\"图书定价格式错误!\错误信息\MessageBoxIcon.Error); }}
private void button6_Click(object sender, EventArgs e) {DateTime dt = Convert.ToDateTime(dateTimePicker1.Text);
cmd = new SqlCommand(\"update 图书 set 图书名称='\" + comboBox4.Text + \"',索引号='\" + textBox3.Text + \"',图书作者='\" + textBox4.Text + \"',图书定价='\" + textBox5.Text + \"',出版社名称='\" + comboBox2.Text + \"',出版日期='\" + dt + \"',文字类型='\" + comboBox3.Text + \"' where (图书编号='\" + textBox1.Text + \"' and 图书名称='\"+ss+\"')\cmd.ExecuteNonQuery();
MessageBox.Show(\"图书信息修改成功!\信息提示\MessageBoxIcon.Information); }
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {DataTable dt = new DataTable();da.Fill(dt); if (dataGridView1.Rows.Count <= 0){return; } DataRow[] selectRow = dt.Select(\"图书编号='\" +
dataGridView1.CurrentRow.Cells[0].Value.ToString().Trim() + \"'\"); if (selectRow.Length >= 1)
{textBox1.Text = selectRow[0][\"图书编号\"].ToString().Trim(); comboBox4.Text = selectRow[0][\"图书名称\"].ToString().Trim(); textBox3.Text = selectRow[0][\"索引号\"].ToString().Trim(); textBox4.Text = selectRow[0][\"图书作者\"].ToString().Trim(); textBox5.Text = selectRow[0][\"图书定价\"].ToString().Trim();
66
comboBox1.Text = selectRow[0][\"图书类别\"].ToString().Trim(); comboBox2.Text = selectRow[0][\"出版社名称\"].ToString().Trim(); dateTimePicker1.Text = selectRow[0][\"出版日期\"].ToString().Trim(); comboBox3.Text = selectRow[0][\"文字类型\"].ToString().Trim(); }}
private void button3_Click(object sender, EventArgs e)
{if (MessageBox.Show(\"确实要要删除此记录吗?\询问\MessageBoxIcon.Question) == DialogResult.Yes) {SqlCommand cmd4;
cmd4 = new SqlCommand(\"delete from 租借信息 where 图书编号='\" + textBox1.Text + \"' \cmd = new SqlCommand(\"delete from 图书 where 图书编号='\" + textBox1.Text + \"' \cmd4.ExecuteNonQuery(); cmd.ExecuteNonQuery(); }}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {if (e.KeyChar == 13 && textBox1.Text != \"\") {try
{ds1 = new DataSet();
da1 = new SqlDataAdapter(\"select * from 图书 where 图书编号='\" + textBox1.Text + \"'\da1.Fill(ds1, \"book\");
if (ds1.Tables[\"book\"].Rows.Count > 0)
{dr1 = ds1.Tables[0].Rows[this.BindingContext[ds1, \"book\"].Position];
comboBox4.Text= dr1[\"图书名称\"].ToString().Trim();textBox3.Text = dr1[\"索引号\"].ToString().Trim(); textBox4.Text = dr1[\"图书作者\"].ToString().Trim();textBox5.Text = dr1[\"图书定价\"].ToString().Trim(); comboBox1.Text = dr1[\"图书类别\"].ToString().Trim(); comboBox2.Text = dr1[\"出版社名称\"].ToString().Trim(); dateTimePicker1.Text = dr1[\"出版日期\"].ToString().Trim();
comboBox3.Text = dr1[\"文字类型\"].ToString().Trim();button6.Enabled = true; } else
{MessageBox.Show(\"没有此帐号的客户\提示信息\
67
MessageBoxIcon.Information);}} catch (SqlException sql)
{MessageBox.Show(sql.Message, \"错误提示\}}} //借书管理
private void button1_Click(object sender, EventArgs e)
{SqlCommand cmd3, cmd4;string a1, a2, n1=\"1\d = Convert.ToDateTime(dateTimePicker1.Text); d = d.AddDays(30);
a1 = textBox1.Text; a2 = comboBox2.Text.Trim() ; d2 = Convert.ToDateTime(dateTimePicker1.Text); cn.Open();
cmd3 = new SqlCommand(\"select 借书量 from 客户 where 客户编号='\" + a1 + \"'\n3 = cmd3.ExecuteScalar().ToString(); if (Convert.ToInt32(n3) >= 5)
MessageBox.Show(\"读者最多只能借5本书,不能再借了!\提示信息\MessageBoxIcon.Information); else
{cmd3 = new SqlCommand(\"select 库存数量 from 图书 where 图书编号='\" + a2 + \"' \n1 = cmd3.ExecuteScalar().ToString(); if (n1 == \"0\")
MessageBox.Show(\"此书已被借完\提示信息\MessageBoxIcon.Information); else
{SqlCommand cmd1 = new SqlCommand(\"update 客户 set 借书量=借书量+ 1 where 客户编号='\" + a1 + \"'\
cmd3 = new SqlCommand(\" update 图书 set 库存数量=0 where 图书编号='\" + a2 + \"'\cmd3.ExecuteNonQuery();
ss = \"insert into 租借信息 (客户编号,图书编号,租借日期,应归还日期,借书量) values('\" + a1 + \"','\" + a2 + \"','\" + d2 + \"','\" + d + \"',1)\";
cmd4 = new SqlCommand(ss, cn);cmd4.ExecuteNonQuery();
da = new SqlDataAdapter(\"select * from 租借信息 where 客户编号='\" + a1 + \"'\
68
DataSet ds = new DataSet();da.Fill(ds);dataGridView1.DataSource = ds.Tables[0];
MessageBox.Show(\"借书成功!\信息提示\}}cn.Close();} //还书管理
private void button1_Click(object sender, EventArgs e) {string a1, a2;DateTime d;
d = Convert.ToDateTime(dateTimePicker1.Text);a1 = textBox1.Text; a2 = comboBox1.Text; cn.Open(); if (textBox9.Text != \"\")
{decimal t = Convert.ToDecimal(textBox9.Text);
SqlCommand cmd = new SqlCommand(\"insert into 罚款 values('\" + a1 + \"','\" + a2 + \"','\" + d + \"',\" + t + \超期')\
SqlCommand cmd3 = new SqlCommand(\" update 图书 set 库存数量=1 where 图书编号='\" + a2 + \"'\cn);cmd3.ExecuteNonQuery();
SqlCommand cmd1 = new SqlCommand(\" update 客户 set 借书量=借书量-1 where 客户编号='\" + a1 + \"'\
SqlCommand cmd2 = new SqlCommand(\"update 租借信息 set 实际归还日期='\" + d + \"', 借书量=0 where 客户编号='\" + a1 + \"' and 图书编号='\" + comboBox1.Text.Trim() + \"'\cmd2.ExecuteNonQuery();
MessageBox.Show(\"还书成功!\信息提示\MessageBoxIcon.Information);cn.Close();
da = new SqlDataAdapter(\"select * from 租借信息 where 客户编号='\" + textBox1.Text + \"'\ds = new DataSet();da.Fill(ds);dataGridView1.DataSource = ds.Tables[0]; textBox9.Text = \"\"; }
//罚款管理
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{da = new SqlDataAdapter(\"select 租借信息.图书编号,图书.图书名称,图书.图书定价,租借日期,应归还日期 from 租借信息,图书 where 客户编号='\" + textBox1.Text + \"' and 租借信息.图书编号=图书.图书编号 and 实际归还日期 is null\DataTable dt = new DataTable();da.Fill(dt); if (dataGridView1.Rows.Count <= 0)
69
{return; } else
{DataRow[] selectRow = dt.Select(\"图书编号='\" +
dataGridView1.CurrentRow.Cells[0].Value.ToString().Trim() + \"'\"); if (selectRow.Length >= 1)
{s1 = selectRow[0][\"图书编号\"].ToString();
price = Convert.ToDouble(selectRow[0][\"图书定价\"].ToString()); switch (comboBox2.Text)
{case \"丢失\": textBox2.Text =Convert.ToString( price * 2); break; case \"损坏\": textBox2.Text =Convert.ToString( price * 0.1); break; case \"丢失赔偿图书\": textBox2.Text = \"0\"; break; case \"\": textBox2.Text = \"0\"; break; }}}}
private void button1_Click(object sender, EventArgs e) {cn.Open();
cmd1 = new SqlCommand(\"insert into 罚款 values('\" + textBox1.Text + \"','\" + s1 + \"','\" + d2 + \"',\" + price + \cmd1.ExecuteNonQuery();
MessageBox.Show(\"罚款成功!\提示信息\cn.Close();}
//API函数,调用计算器 [DllImport(\"Shell32.dll\")]
public extern static int ShellExecute(int hwnd, string operation, string Filename, string parameter, string directory, int showcmd);
private void pictureBox1_Click(object sender, EventArgs e)
{IntPtr p = this.Handle;int hwnd = p.ToInt32();string operation = \"open\"; string Filename = \"calc.exe\";ShellExecute(hwnd, operation, Filename, \"\}
//图书报表
private void 图书报表3_Load(object sender, EventArgs e)
70
{cn = new SqlConnection(\"data source=.;initial catalog=图书;integrated security=true;\");cn.Open(); cmd = new SqlCommand(\"select 类别名 from 类别\while (dr.Read()) comboBox1.Items.Add(dr.GetString(0));
dr.Close();cn.Close();da = new SqlDataAdapter(\"select * from 图书\}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {cn.Open();
cmd = new SqlCommand(\"select 类别号 from 类别 where 类别名='\" + comboBox1.Text + \"'extBox1.Text = cmd.ExecuteScalar().ToString();cn.Close(); }
private void button1_Click(object sender, EventArgs e) { try
{da = new SqlDataAdapter(\"select * from 图书 where 图书类别='\" + comboBox1.Text + \"' or 图书编号 like '%\" + textBox1.Text + \"%'\
DataTable MyTable = new DataTable();da.Fill(MyTable);
图书报表 book = new 图书报表();book.SetDataSource(MyTable); this.crystalReportViewer1.ReportSource = book; }
catch (Exception MyEx)
{ MessageBox.Show(MyEx.Message, \"信息提示\MessageBoxIcon.Information); }}
private void button2_Click(object sender, EventArgs e) {da = new SqlDataAdapter(\"select * from 图书\DataTable MyTable = new DataTable();da.Fill(MyTable);
图书报表 book = new 图书报表();book.SetDataSource(MyTable); this.crystalReportViewer1.ReportSource = book; }
71
因篇幅问题不能全部显示,请点此查看更多更全内容