太原理工大学毕业设计

继续教育学院综合作业报告

二〇一〇年五月十五日

摘 要

本文首先介绍了数据库管理系统(DBMS )的基本概念及关系模型等。然后对问题的来源进行深入分析,指出图书借阅者、图书馆工作人员和图书馆管理人员是问题主要来源, 并指出本数据管理系统的实用性功能就是管理好图书馆信息,提高工作效率,避免数据处理手工操作,工作量大,出错率高的弊端。接着对需求分析进行细致的分析, 特别对图书借阅者、图书馆工作人员和图书馆管理人员三者权限进行分配。接着对系统功能模块进行分析,指出本系统功能模块主要分为“图书资料管理”模块、“学生资料管理”模块、“借还书操作”模块。总的来说,本图书管理系统, 介绍了该系统组成结构、功能特点、使用原理和方法, 本系统实现了系统登陆、图书管理、学生管理图书的借阅与归还、图书借阅排行榜和查看逾期未还图书以及各种信息的打印等功能。有了这个系统就使图书馆的工作变得简单了许多,使图书馆的图书管理形成了一个整体自动化管理模式。

管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强对企业内部的各种资源(人、财、物等)的有效管理,建立与自身特点相适应的管理信息系统。图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要求建立数据的一致性和完整性,对于后者则要求应用程序功能的完备,易用等的特点。基于上述考虑本系统主要利用Microsoft Visual Studio 2005作前端的应用开发工具 ,利用SQL Server 2000 作为后台的数据库,利用WINDOWS 作为系统平台开发的图书管理系统。另外本图书馆管理系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面对对象的方法。

关键词:C#程序设计语言, SQL SERVER 2000,软件工程

目录

摘 要 ......................................................................................................................................................... 2

第1章 基础理论知识 ................................................................................................................................... 5

1.1 数据库应用系统开发简介 . ................................................................................................................. 5

1.2 数据库管理系统 ................................................................................................................................. 5

1.3 M ICROSOFT V ISUAL S TUDIO 2005简介 ..................................................................................................... 6

1.4 C#语言简介 ......................................................................................................................................... 6

1.4.1 C#中OOP 概述 . ............................................................................................................................ 6

1.4.2 面向对象的C# 编程 . ................................................................................................................. 8

1.4.3 接口与继承 . .............................................................................................................................. 12

第二章 系统开发背景 ................................................................................................................................. 14

第三章 需求分析 ......................................................................................................................................... 15

3.1 应用需求分析 ................................................................................................................................... 15

3.2实际需求分析 .................................................................................................................................... 15

第四章 可行性分析 ..................................................................................................................................... 16

4.1 环境可行性分析 ............................................................................................................................... 16

4.2 面向对象的程序分析........................................................................................................................ 16

第五章 系统概要设计 ................................................................................................................................. 17

5.1 模块分析 ........................................................................................................................................... 17

5.1.1 功能模块图 . .............................................................................................................................. 17

5.2 模块分析 ........................................................................................................................................... 17

5.2.1 “图书资料管理”模块 . .......................................................................................................... 17

5.2.2 “学生资料管理”模块 . .......................................................................................................... 18

5.2.3 “借还书操作”模块 . .............................................................................................................. 18

第六章 详细设计 ......................................................................................................................................... 18

6.1 设计创建数据库 ............................................................................................................................... 18

6.1.1 设计数据库 . .............................................................................................................................. 18

6.1.2 创建数据库 . .............................................................................................................................. 19

6.2 创建系统主程序 ............................................................................................................................... 22

6.3 创建系统常用类 ............................................................................................................................... 22

6.3.1 创建“移动记录工具栏”类 . .................................................................................................. 23

6.3.2 创建“命令按钮工具栏”类 . .................................................................................................. 23

6.4 创建登录表单 ................................................................................................................................... 23

6.4.1 系统主表单的功能 . .................................................................................................................. 23

6.4.2 创建系统主表单界面 . .............................................................................................................. 24

6.4.3. 新书入库 . ................................................................................................................................ 25

6.4.4 图书借阅 . .................................................................................................................................. 26

6.4.5 图书归还 . .................................................................................................................................. 27

6.4.6 图书信息查询 . .......................................................................................................................... 28

6.4.7 图书信息修改 . .......................................................................................................................... 29

6.4.8 旧书销毁 . .................................................................................................................................. 30

6.4.9 图书证的办理及证件信息修改 . .............................................................................................. 32

6.4.10证件挂失与注销 . ..................................................................................................................... 32

6.4.11 图书类别信息排行 . ................................................................................................................ 33

6.4.12 库存外借信息 . ........................................................................................................................ 34

6.4.13 图书借阅排行榜 . .................................................................................................................... 35

第七章 结果分析 ......................................................................................................................................... 36

项目学习心得体会 ....................................................................................................................................... 37

结 束 语 ................................................................................................................................................... 38

致 谢 ....................................................................................................................................................... 39

第1章 基础理论知识

1.1 数据库应用系统开发简介

在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。

数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。

数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,40多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着World Wide Web(WWW)的猛增及Internet 技术的迅速发展,使得数据库技术一时成为最热门技术之一。

1.2 数据库管理系统

数据库管理系统(DBMS )是指数据库系统中管理数据的软件系统。DBMS 是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制, 都是通过DBMS 进行的。DBMS 总是基于某种数据模型,可以把DBMS 看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS 可以分成层次型、网状型、关系型、面向对象型等。SQL Server 2000就是一种关系型数据库管理系统。

关系模型。关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。

关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL 语言是关系数据库的标准化语言,已得到了广泛的应用。

1.3 Microsoft Visual Studio 2005简介

2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的 Visual Studio Express 版本

运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。

1.4 C#语言简介

C#(C Sharp)是微软于2000年提出的一种源于C++、类似于Java 的面向对象编程语言,适合于分布式环境中的组件开发。C# 是专门为.NET 设计的,也是.NET 编程的首选语言。

1.4.1 C#中OOP 概述

程序设计语言,在思想上发展很快,在技术上也是不断创新。经历了手工操作(控制面板)、机器语言、汇编语言、宏汇编语言、高级语言和第4代语言等多个阶段。OOP 只是在高级程序设计语言中,流行的多种编程技术之一。

1.基本特征

面向对象编程的三个基本特征是:

封装(encapsulation )—— 是对问题的抽象,以达到信息隐藏的目的。通过

类和对象,将属性(数据/变量)和方法(操作/函数)封装在一个黑箱内,

将细节隐藏起来。既可以保护数据不被他人恶意或大意地修改,又能防止其他程序员编写高耦合度的代码,还方便了今后对对象内部的修改和升级。 ● 继承(inheritance )—— 利用问题和事物的相似性,通过类的(多层)继承

机制,可以达到减少软件开发难度和重用已有对象的属性和方法之目的。 ● 多态(polymorphism )—— 同一操作或响应,可以同时针对多个可选的类

型和对象,并且能够自动在它们中间选择最合适的来进行。多态可以分为: ⏹ 编译时多态:包括函数和运算符的重载(overload ),通过早期的静态绑

定(binding )来实现。

⏹ 运行时多态:通过继承结合晚期动态绑定来实现——用同一基类的指

针,可以访问各个不同派生类中的同名方法和函数。

2.基本概念

面向对象编程的基本概念(类似的概念多、表达不够准确、各处的用法各异): ● 抽象(abstraction )—— 一个问题的本质特征。忽略一个对象的细节,致力

于一般的合适级别的程序能力。抽象是在事物的周围绘制透明的盒子,是定义事物接口的行为。

● 信息隐藏(information hiding)—— 限制外部对类属性(数据成员)的访问。 ● 封装(encapsulation )—— 将某种保密和隐匿应用到类中的数据和一些方法

(函数或子例程)上。封装确保一个对象只能通过确定的渠道(即类的公用方法)才可被修改。封装意味着将数据及相关函数打包到一个单一的单元(类)中。每个对象暴露一个接口(公用方法),规定其他对象可以如何读取或修改它。

● 类(class )—— 问题的抽象,对象的模版,接口的实现。例如int 是整数的

模版、CPoint 是点的模版。

● 对象(object )—— 问题中的事物,类的实例(变量),拥有数据和功能。

若int i; CPoint p; 则i 是int 的实例变量,p 是CPoint 的实例对象。

● 实例(instance )—— 一个对象,是某个类的示例。

● 实例化(intantiate )—— 由类定义创建对象。

● 继承(inheritance )—— 创建子类的机制,一种“is a”或“is like”关系,

形成类层次结构。是OOP 中对象重用的核心概念。

● 子类(subclass )—— 继承自另一个类的派生类(derived class)。

● 超类(superclass 父类)—— 被另一个类继承的基类(base class)。

● 虚函数(virtual function)—— 可以在子类中被覆盖(override )的函数。 ● 纯虚函数(pure virtual function)—— 只有声明没有定义的函数,必须在派

生类中被覆盖。

● 抽象类(abstract class)—— 至少包含一个纯虚函数的类,不能被实例化。 ● 具体类(concrete class)—— 可以实例化的类,不包含纯虚函数。

● 接口(interface )—— 纯抽象的类,类的模版。接口中的所有的方法(成员

函数)都只有声明,没有定义(都是纯虚函数)。必须在接口的派生类中,实现接口的全部方法。接口可以看成是一个,定义了一套内部行为的,若干操作特征标记的集合。(在C++中,也把类的公用成员函数叫做接口)。

● 属性(attribute )—— 类和接口中的数据信息,又叫数据成员(data member)

或成员变量(member variable)。属性是类知道的事物。

● 方法(method )—— 类操作的实现,又叫成员函数(member function)。方

法是类要做的事情。(在C++中,也把虚函数叫做方法)。

● 重载(overload )—— 一个类中的,参数的数目、类型或排列顺序不同的多

个同名方法(成员函数)。

● 覆盖(override )—— 在子类中重新定义(与父类中的定义有区别的)属性

和方法。

● 持久化(persistence )—— 将对象存入永久存储中(如文件、数据库等)。 ● 持久对象(persistent object)—— 存入永久存储的对象。

1.4.2 面向对象的C# 编程

1.类

类类型定义包含数据成员、函数成员和嵌套类型的数据结构,其中数据成员包括常量和字段,函数成员包括方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。类类型支持继承,继承是派生类可用来扩展和专门化基类的一种机制。

功能与C++/CLI的可见性说明符类似,只是增加了static 修饰符。

partial (分部的)——用于定义分部类、结构和接口等对象类型,即将它们的定义分成多个部分,保存到多个代码文件中。这是C# 2.0新引进的功能,用于解决大型对

象类型的定义问题,因为C# 不支持类体之外的方法和函数体定义。

(1)访问修饰符

类成员可以有如下访问修饰符(access modifiers):

● public (公用的)——访问无限制。

● protected (保护的)——只可被包含类(containing class )或其派生的类型

访问。

● internal (内部的)——只能被此程序访问。

● protected internal(保护内部的)——只能被此程序或其包含类所派生的类

型访问。

● private (私有的)——只能被其包含类访问,为默认的。

C# 类的public 、protected 、private 等成员修饰符,每次只能修饰一个成员,直接位于成员声明的开始处,而且没有冒号分隔符。而不是像C++那样,一个修饰符可以修饰位于其后(直到下一个修饰符为止)的若干成员。

(2)数据成员

类的数据成员(data member)有:

[ [属性] ] [常量修饰符] const 标识符[ = 常量表达式] [, „„] ;

其中,常量修饰符有:new 、public 、protected 、internal 、private 及它们的有效组合。

类的数据成员可以是静态数据(使用了static 修饰符),也可以是实例数据(未使用static 修饰符)。静态数据为类的所有实例对象所共有,而实例数据则每个实例对象都自己的副本。常量默认是(总是)静态的。

字段还可以是只读的(使用了readonly 关键字,这是C# 新增的)和易变的(使用了volatile 关键字,字段值一般位于CPU 中的寄存器中,高效但是有效期短暂)。

(3)函数成员

类的函数成员(function member)有:

● 属性(property )——提供对对象或类的特性(characteristic )进行访问的成

员。声明格式为:

其中,属性修饰符与方法修饰符相同,访问修饰符有protected 、internal 、private 、protected internal 和internal protected ,与类成员的普通访问修饰符

相比,没有public 、多了internal protected(内部保护的)。

● 事件(event )——定义该类可生成的通知(notifications )。在发生某些行为

时,可让对象通知程序。客户程序可以调用事件处理程序代码来响应该事件。声明格式为:

其中,事件修饰符与方法修饰符相同。

● 索引器(indexer )——允许对象像数组一样被索引的一种成员。声明格式为:

其中,索引器修饰符与方法修饰符类似,只是少了static 。

● 用户定义的运算符(operator )——运算符重载函数。声明格式为:

● 构造函数(constructor )——包括实例构造函数和静态构造函数。

⏹ 实例构造函数(instance constructor)——实现初始化一个类实例所需的

行为,会在创建每个类实例时被系统调用。注意:因为C# 会自动给字

段初始化,所以构造函数在C# 中的作用没有在C++的大。格式为:类

型名([参数列表]);

注意:即使调用没有任何参数的默认构造函数,也不能省去后面的圆括

号“()”,不然是语法错误。例如:A a = new A();

⏹ 静态构造函数(static constructor)——实现初始化一个类所需的行为,

会在程序装入时被系统调用。为类编写无参数的具体构造函数是C# 的

一个新特征,主要用于类的静态字段或属性的运行时初始化。格式为:

static 类型名([参数列表]);

● 终结器(finalizer )——在C# 的旧版本中叫析构函数(destructor ),但由于

引用类型的对象是位于具有垃圾内存自动回收功能的CLR 堆上,所以C# 中的析构函数的功能与C++的很不一样。为了与C++的析构函数有所区别,在C# 的新版本中,改叫终结器。格式(与C++的析构函数相同)为:~类型名();。

2.结构

C# 中的结构(struct )与C++中的类似,也可以封装数据和函数(属性和行为),是一种轻量级的类。但是它与C# 的(位于CLR 堆中的)类(为引用类型)不同,它是一种(位于局部栈中的)值类型。

1)结构与类的区别

C# 中的结构与类的区别有:

● 结构是值类型,而类是引用类型。

● 结构是密封的(sealed ),因此不能被继承。

● 结构不能继承类和其他的结构。

● 结构隐式地继承了System.ValueType 类型。

● 结构的(无参数)默认构造函数不能被自定义的构造函数取代。

● 结构的自定义的构造函数,必须初始化结构中全部成员的值。

● 结构没有析构函数。

● 不允许初始化结构的字段,但是可以初始化结构的常量成员。

2)结构声明

结构的完整声明格式为:

其中,结构的修饰符与枚举修饰符相同:new 、public 、protected 、internal 、private ,但是与类的有所不同:因为C# 的结构不支持继承,所以没有类的sealed 和abstract 修饰符;也没有static 修饰符;还与C++一样,结构的默认修饰符为public (类的默认修饰符为private )。

结构成员声明与类的基本相同,只是没有finalizer-declaration (终结器声明,即析构函数定义)。

C# 的结构和类一样,其public 、protected 、private 等成员修饰符,每次只能修饰一个成员,也是直接位于成员声明的开始处,而且也没有冒号分隔符。而不是像C++那样,一个修饰符可以修饰位于其后(直到下一个修饰符为止)的若干成员。

3.分部类和静态类

分部类和静态类都是C# 所特有的,而且都是C# 2.0版新增加的。前者允许将一个类、结构或接口的定义,放到多个文件中;后者则是仅包含静态成员的类。

1)分部类

分部类和结构是在类和结构的声明中,使用了partial 修饰符的类和结构。位于不同文件中的同一个分部类,必须位于同一个命名空间或包含类型(对嵌入式分部类)之中,而且在所有类修饰符必须完全一致。对泛型类,还要求声明中的类型参数和对类型参数的约束也完全一致。但是类的属性、基类和实现接口的列表却可以不同。另外,分部类也可以用作嵌套类,不过其包含类必须也是分部类。

编译时,编译器会合并位于不同文件中的同一个分部类的XML 注释、属性、基类、接口和成员。

2)静态类

静态类是在类的声明中,使用了static 修饰符的类。静态类中只能包含静态成员,可以用静态构造函数来初始化这些静态成员。静态类是密封的(不能派生其他类),静态类不能被实例化,也不能包含实例构造函数。

静态类一般用于定义公用的常数和方法(如.NET 中的Math 类),使用时不需要创建实例,直接用“类名. 字段”或“类名. 方法”即可。例如:

1.4.3 接口与继承

继承(inheritance )是面向对象的基本特征,所有的C# 类和结构都是直接或间接地从类Object 派生的。C# 中没有明确指出基类的类,都以Object 作为其默认基类。C# 中的结构不支持继承,但是C# 支持类的单一继承(single inheritance),多重继承的问题(与Java 一样)需通过接口来解决。

1.接口

接口(interface ,界面)的概念来源于组件编程的思想。接口定义统一的公用方法的原型,但是不包含方法的具体实现代码,方法体(代码)由实现接口的类来定义(编写)。

所以接口定义的是一种契约(contract ),实现该接口的类则遵守(adhere )此契约。接口相当于组件的界面,供使用组件的用户查询和调用,而实现接口的类则是组件的编码模块本身。

在C# 中,一个接口可以继承自多个接口,一个类也可以实现多个接口。实现某个接口的类,必须实现该接口中的所有方法。

2.继承的种类

C# 中的继承有两种类型:

● 实现继承(类继承)——派生类型继承了基类型的所有成员,包括方法、属

性、事件和索引的实现代码,派生类既可以直接调用基类的各种函数成员的实现代码,也可以自己编写代码来覆盖或重写它们,还可以为派生类添加新的数据和函数成员。

● 接口继承(非实现继承)——派生类型只继承了基类型中的函数签名

(signature of a function),包括函数名、类型参数的个数、每个形参(formal

parameter )的类型和种类(kind ,值、引用、输出),从左到右的顺序,但是不包括函数的返回类型、参数名称、类型参数的名称、以及可对最右边的参数指定的参数修饰符。而没有继承基类型中的实现代码。接口继承主要用于指定派生类应该具有什么特性和功能。接口继承相当于接口的实现。

C++只支持实现继承,VB 则只支持接口继承,C++/CLI、Java 和C# 都既支持实现继承,也支持接口继承,所以非常适用于编写基于组件的分布式软件。

C# 中的结构,支持(多重)接口继承,但是不支持实现继承。即,你可以在结构中实现多个接口中定义的函数成员,但是你却不能从类或结构来派生新的结构,也不能从结构派生新的类。不过,用户定义的结构,总是自动派生于System.ValueType 抽象类,还可以派生于(实现)多个接口。

C# 中的类,则支持单一实现继承和多重接口继承。

3.方法的继承

C# 中方法的继承关系非常多样,除了传统C++的虚函数(C# 增加了override 修饰符)和纯虚函数(即C# 的abstract 抽象函数)外,还增加了隐藏方法(new )、密封方法(sealed )和基类方法的调用指令(base. 方法名)等诸多新方式。

1)虚方法override

虚函数是面向对象编程中实现运行时多态性的标准途径,而编译时的多态性则是由具有同样函数名,但是函数签名不同的多个重载(overload )函数来实现的。

与C++不同的是,在C# 中重写基类的虚方法时,必须使用C# 特有的重写修饰符override (覆盖)。

2)隐藏方法new

在C++中,不需要添加任何修饰符,就可以任意重载或覆盖基类的虚函数和非虚函数,但是在C# 中,这样做会得到一个编译警告。目的是,为了避免程序员的笔误,也为了适应代码的维护与升级。解决办法是,上面介绍过的使用override 修饰符来明确重载基类的虚方法,以及使用new 修饰符来显式隐藏(覆盖)基类中具有同样签名的(非虚)方法。

第二章 系统开发背景

当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。

图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统、规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。

数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。

基于这些问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

第三章 需求分析

3.1 应用需求分析

图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护及系统状态的查看、维护并生成催还图书报表。

3.2实际需求分析

图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。

图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。

图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息。

第四章 可行性分析

4.1 环境可行性分析

由于本系统管理的对象单一, 都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。

本系统的设计是在Windows XP 操作系统环境下,使用Visual Studio.NET 2003中文版开发成功的。

Visual Studio具有以下特点:

4.2 面向对象的程序分析

1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。

2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。

3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。

4、面向对象设计的核心是类的设计。例如:可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。

第五章 系统概要设计

5.1 模块分析

5.1.1 功能模块图

图示 3.2.1

5.2 模块分析

5.2.1 “图书资料管理”模块

“图书资料管理”模块主要实现图书资料的分条浏览、添加、修改、删除、查询和打印功能。在表单的“书籍资料”页框中可以通过“移动记录工具栏”分条查看系统内所有的图书的详细资料,包括图书的名称、类别、作者、出版社、购买日期等。单击“命令按钮工具栏”中的按钮可以对 “书籍资料”页框中的记录进行相应的操作。

5.2.2 “学生资料管理”模块

“学生资料管理”模块主要实现学生资料的分条浏览、添加、修改、删除、查询和打印功能。在表单的“学生资料”页框中可以通过“移动记录工具栏”分条查看系统内所有的学生详细资料,包括学生姓名、性别、系别、班级等资料。单击“命令按钮工具栏”中的按钮可以对“学生资料”页框中的记录进行相应的操作。

5.2.3 “借还书操作”模块

“借还书操作”模块主要实现读者借书记录的查看、借还书操作、图书借阅排行榜、查看逾期未归还图书和记录打印等功能。

读者借书记录查看功能可以查看所有的借书记录 ,也可以只查看目前尚未归还的借书记录。在“读者借书记录”表单中单击“借书”按钮 ,在打开的“输入”表单中 ,输入要借出的图书编号 ,如果该图书在馆中而且该读者还能借书 , 则借书成功。

“读者借书记录”表单中单击“还书”按钮 , 在打开的“输入”表单中输入要归还的图书的图书编号 ,如果该图书是被当前读者借出 ,则还书成功。

当表单中显示的是读者未归还的图书列表时 , 在列出借书记录的表格中双击要归还的图书的“图书编号”栏即可将此图书还入。

在“读者借书记录”表单中 , 单击“过期”按钮 , 可以查看系统内到了归还日期而未归还的图书的借阅记录。

在“读者借书记录”表单中 ,单击“排行”按钮 ,可以查看系统内借阅次数在所有图书内排行前10名的图书的列表。

第六章 详细设计

6.1 设计创建数据库

6.1.1 设计数据库

本系统实现了系统登录功能 , 而系统登录需要账号和密码 , 这就需要 创建一个“系统帐号”(Accounts) 数据表 , 用来存储系统登录用的账号和密码。

本系统要实现图书资料和学生资料的管理 , 所以需要创建 “学生信息”

(Student)数据表和“图书信息 ”(Book) 数据表。 “学生信息 ”(Student) 数据

表中包含了学生的“系别”信息 , 在本系统中为了简化系别的管理 , 另外创建了一个“系别”(Xibie)数据表用来存储系别的信息 , 在“学生信息”(Student) 数据表中只存储系别的编号。

由于系统要实现读者借还书功能、还要实现读者借还书记录的查看 ,所以还需创建一个“读者借书记录 ”(JyRec) 数据表来保存读者的借阅记录。

6.1.2 创建数据库

“图书借阅管理系统”作为一个完整的数据库管理系统 , 在创建阶段利用项目管理器可以更好组织管理各种格式的文件 , 因此首先需要创建一个项目 , 然后在项目管理器创建其他格式的文件。

在 VFP 主窗口中选择“文件”菜单下“新建”子菜单 , 在打开的“新建”对话框的“文件类型“区域中选中”项目”, 然后单击右侧的”新建文件”按钮, 打开”创建“对话框中的”项目文件“文本框中输入项目名称 , 在此输入 "Tushu”,单击“保存”按钮即创建了一个项目。

在项目管理器的“数据”选项卡中选中“数据库”单击右侧的“新建”按钮,在弹出的“新建数据库”对话框中单击“新建数据库”, 在弹出的“创建”对话框的“数据库名”文本框中输入数据库的名称 , 在此输入“Tushu ”作为数据库名 , 单击“保存“按钮即创建了一个空的数据库。

在项目管理器的“数据”选项卡中打开刚才创建的“Tushu ”数据库的目录树,选中“数据表”, 单击右侧的“新建”按钮即可开始数据表的创建。

系统关系图如下图所示

图示 4.1.2

本系统中要用到的数据表的字段的属性设置分别设置如下。

“系统账号”(图书卡号) 数据表的宇段属性设置如表 1 所示。

表1 “图书卡号”(LentCardType )数据表字段属性设置

创建“系统账号”(图书卡号) 数据表后向数据库中添加一条记录作为系统的默认帐号,该记录的各字段的值如下 :“cyr ”, “cyr ”, “楚雅茹”。

“学生信息”(BookInformation) 数据表各字段的属性设置如表 2 所示。

表2 “图书类型”( BookInformation)数据表字段属性设置

“系别信息”(图书类别)数据表各字段的属性设置如表3所示

表3 “图书类别”( 图书类别)数据表字段属性设置

“图书信息”(Book )数据表各字段的属性设置如表4所示

表4 “图书信息”(Tushu )数据表字段属性设置

对“图书信息”(Book )数据表的字段属性设置需要说明的是“借阅次数”和“是否借出”字段的默认值一定要设置,因为对于新添加的图书,其一定是没有被借出的,而且其借阅次数一定是0,所以在表单中向数据表添加记录时,这两个字段应该是不需要添加的,可以由默认值生成。

“读者借书记录”(JyRec )数据表的字段属性如表5所示。

表5 “读者借书记录”(ReaderInfor )数据表字段属性设置

数据表之间的关系,将在具体表单的数据环境中设置。

将“借书卡”(LentBookCard )数据表、“借书卡类别”(LentCardType )数据表、“图书信息”(BookInformation )数据表、“读者借书记录”(LentNoteInfor )数据表添加到表单的数据环境中,用主外键建立关联。

6.2 创建系统主程序

WinForm 是.Net 开发平台中对Windows Form的一种称谓。.Net 为开发WinForm 的应用程序提供了丰富的Class Library (类库)。这些WinForm 类库支持RAD(快速应用程序开发) ,这些类库被封装在一个名称空间之中,这个名称空间就是System.Windows.Forms 。在此名称空间中定义了许多类,在开发基于.Net 的GUI 应用程序的时候,就是通过继承和扩展这些类才使得我们的程序有着多样的用户界面。

将一个文件设为项目主文件的方法是在项目管理器中选中该文件 , 然后在右键快捷菜单中选择“设为主文件”子菜单或者选择“项目”菜单下“设为主文件”子菜单即可。一个文件设为项目的主文件后 , 该文件的将以粗体显示

LibraryLogin 程序的代码为:(见附表)

6.3 创建系统常用类

系统主表单中“学生资料”和“书籍资料”页框控件中都需要用到“移动记录工具栏”和“命令按钮工具栏”, 这两个命令按钮工具栏如果在表单中分别创建会

使工作变得繁琐,可以采用创建工具栏类 , 然后在表单中用实例化的方式来简化工作。

6.3.1 创建“移动记录工具栏”类

“移动记录工具栏”类基于“CommandGroup ”基类,存储于“AdminButton ”可视类库中,命名为“MoveRecord ”。

“移动记录工具栏”类包括“首记录”、“上一个”、“下一个”和“末记录”4个按钮,在表单中可以利用这 4 个按钮定位数据表中的记录指针。

需要指出的是,在本系统中当鼠标移动到按钮上时,鼠标指针变为一个特定指针,这就需要一个鼠标指定文件,在本系统中使用“H_point.cur”文件,将该鼠标指针文件放在系统的根目录下,添加按钮“MouseMove ”事件如下:(见附表)

6.3.2 创建“命令按钮工具栏”类

与“移动记录工具栏”类相同,为了改变鼠标停留在按钮时的指针,还需添加按钮的“MouseMove ”事件,代码与“移动记录工具栏”类中的相同。

6.4 创建登录表单

6.4.1 系统主表单的功能

为了系统有安全, 一般系统都设有登录窗体, 登录该系统除了输入正确的用户名和密码外, 还必须选择用户登录的权限. 不同权限的用户登录系统分别执行不同有操作. 本系统登录权限分为四类:

图书管理员:能够对图书进行增加, 删除, 修改, 查询, 以及图书证件的查询操作. 证件管理员:能对图书证件进行增加, 删除, 修改, 查询操作等.

普通管理员:能对图书信息进行增, 删, 改, 查, 并能对图书证件进行增, 删, 改, 查. 高级管理员:能执行本系统全部功能.

图示6.4.1

6.4.2 创建系统主表单界面

设计Winform 父窗体,命名为“LibraryMainWindow ”。创建好的表单效果中有两个页框,其中“学生资料”页面效果如下图所示。

图示6.4.2

图书管理主窗体主窗体主要包括:

标题栏:图书管理系统;

菜单栏:图书管理(新书入库,图书查询,图书借阅,图书归还,图书信息修改,旧书销毁) ,证件管理(新证办理,证件信息修改,图书证挂失、注销),图书预览(热门图书排行),信息统计(库存借出比例,类别信息统计),系统设置(用户设置),帮助(关于窗体)。

工具栏:相当于工具栏的快捷方式,包括图书信息(图书查询,图书借阅,图书归还),修改信息(图书修改,证件修改,添加代码),新书入库,新政办理,证件挂失、注销,旧书销毁,借出比例,图书类别信息,用户设置,

窗体容器区:存放子窗体;

状态栏(初始化信息,系统当前时间);

6.4.3. 新书入库

当图书馆新进一批图书时,管理员要通过该系统将所有图书添加到系统数据库中。

为了保证系统的安全性和 健壮性,该系统的文本框。 使用设置掩码控件限制用户的输入。从而保证系统的安全性。

该窗体用TabCotrol 控件将同类型的信息层叠在一个窗体以方便操作。如果用户输入有误将给出提示,不得将错误信息插入数据库。可以点击重置按钮清空文本框。以便重新输入。

如果用户输入正确无误,单击保存,将输入的图书信息插入库存中。如果用户要退出系统,单击退出按钮,用户还可以通过点击page 页查看其它页面。也可以点击下一页按钮跳到下一页。

控件中的数据处于可修改状态,“移动记录工具栏”处于不可用状态,“命令按钮工具栏”中除了“保存”和“取消”按钮外其他按钮都处于不可用状态,“借还书”按钮处于可用状态,“书籍信息”页面处于不可用状态。

图示6.4.3

6.4.4 图书借阅

在“学生信息”(StuPage )被激活时,应该将“学生信息”(Student )数据表所在工作区作为表单的当前工作区,取消由其他表单设置的过虑条件,并且使页面进入浏览状态。

添加“学生信息”页面的Activate 事件代码如下:(见附表)

“学生信息”页面中的“系别”组合框中选择某一个系编号后,要在“名称”栏显示系统编号所代码的系别名称,由于在数据环境中将两者做了关连,所以在选择了某个系编号后只需要刷新表单即可。

图书借阅介绍:首先用户先选定自己要借阅的图书, 然后通过管理员输入用户的卡号,然后要判断用户的卡号是否正确,如果不正确给出提示,其次判断用户的卡号是普通卡还是贵宾卡,是否能满足用户借阅图书的数量。如果不能满足用户的借阅将给出提示。

当用户借阅图书成功后,将更新图书信息,用户图书证件性息。

单击退出将退出此窗体。单击上一页可以跳转至图书查询。单击下一页可以跳至图书归还。

图示6.4.4

6.4.5 图书归还

在“书籍信息”(BookPage )页面被激活时,表单中的当前数据工作期应该变为“图书信息”数据表所在的工作期,将可能由其他表单对该数据表设置的过虑条件去掉,同时要使该页面进入浏览状态。

用户归还图书时,管理员先输入图书编号,点击显示图书信息。显示图书的其他信息。然后输入用户的图书证件号, 点击显示图书证件信息,显示图书证件的其他信息。检查用户信息无误后,点击还书。点击还书后,系统将更改用户的图书卡的借阅信息。并修改图书信; 。上一页跳至图书借阅; 下一页跳至旧书销毁; 点击退出将退出该窗体。单击“还书”按钮 ,可以调用“输入”表单用来输入要归还的图书编号,如果该图书由当前读者借出, 则还书成功,否则失败。另外,当表单中的表格控件中显示的是当前读者的“已借出”图书记录时,可以通过双击列表中的某本书的“图书编号”栏来快速还书。

图示6.4.5

6.4.6 图书信息查询

左边采用树控件显示图书信息》当用户单击该数节点是将展开以下信息。如果用户单击图书编号节点以及字节点后,单击工具栏上对应的按钮将在表里显示对应的图书信息。右边的图书信息表采用分页技术将成千上百条信息分成多页,管理员上一页按钮,下一页按钮,首页按钮,尾页按钮,分别浏览图书所有信息。左上角按钮上一页可以跳至图书归还,下一页跳至旧书销毁; 退出-退出窗体。

在对图书信息查询,为了能快速查询所要显示的图书信息,设置了多个条件查询,如按照作者信息查询,按照出版社信息查询,按照图书名称信息查询,按照图书类别信息查询等条件,查询显示页面为了美观,采取了分页功能,单击上一页,可以浏览上一页的信息,单击下一页能浏览下一页的信息,也可以直接浏览首页和尾页的信息。

图示6.4.6

6.4.7 图书信息修改

图书信息修改表采用分页技术。通过单击按钮分别浏览图书所有信息。并且在文本框能显示数据表的当前页数和总页数。在数据表可以执行增加,删除,修改等的批量更新。刷新按钮可以将修改的最新信息显示到表中。关闭按钮退出该窗体 图书管理系统示例代码:如下

1.MessageBox.Show(" 您确定要修改该图书信息吗?" , " 系统提示" , MessageBoxButtons.YesNo, MessageBoxIcon.Information)

图示6.4.7

6.4.8 旧书销毁

“书籍信息”页面的查询功能由“输入查询条件”表单和“图书信息查询结果”表单组成。图书高级管理员在城需求下要销毁一部分旧书,按照多个条件进行查询所有要销毁的图书信息,同样也提供了分页功能,单击按钮查询,根据图书编号查询到要删除的图书,单击销毁按钮即删除该图书。此“输入查询条件”表单也是用来向用户收集查询条件。 单击“过期”按钮可以查看系统中的逾期未归还的图书的列表。单击“排行”按钮可以查看系统中借出次数最多的 10 本书的列表。 void btnDestroyBook_Click(object sender, EventArgs e)

{

BookInformationModel objBookInformationmodel = new BookInformationModel(); objBookInformationmodel.BookId = this .txtOldBookID.Text.Trim().ToString(); string bookstatus = null ;

if

(BookInformationBll.SelectBookstatus(objBookInformationmodel).Tables["Booktype" ].Rows.Count > 0) {

foreach (DataRow row in

BookInformationBll.SelectBookstatus(objBookInformationmodel).Tables["Booktype" ].Rows) {

bookstatus = row["Status" ].ToString();

}

if (bookstatus.Equals(" 外借" )) {

MessageBox.Show(" 对不起!这本书正被读者借阅。不能销毁" , " 系统提示" , MessageBoxButtons.OK, MessageBoxIcon.Information); this .txtOldBookID.Text = "" ; }

//删除这本书; else {

if (BookInformationBll.Oldbookgo(objBookInformationmodel) > 0) {

MessageBox.Show(" 恭喜您! 图书销毁成功。" , " 系统提示" ,MessageBoxButtons.OK,MessageBoxIcon.Information); } } } else {

MessageBox.Show(" 对不起,库中不存在这本书。" , " 系统提示" ,MessageBoxButtons.OK,MessageBoxIcon.Information); } }

图示6.4.8

6.4.9 图书证的办理及证件信息修改

当用户想要申请办理一张图书证时,证件管理员首先要注册用户信息注册成功后,给出注册成功信息,可为用户办理一张图书卡。图书卡办理成功后给出提示。在右边表中显示出所有用户的图书卡信息、点击重置清空所有文本框。点击刷新可以将刚办理的图书卡显示到表中。点击退出按钮退出窗体,如果该学生想将自己的图书证审请会员证件,可以查询该学生的证件将信息修改。

图示6.4.9

6.4.10证件挂失与注销

用户丢失图书卡或其它原因要挂失图书证。管理员输入图书卡号,单击确定,

图书卡无误后,即单击可挂失。

用户由于借阅图书超出规定的时间或某些原因要注销图书,管理员输入该图书卡号,单击确定,如果图书卡号正确,即可单击注销。如果输入有误,可单击重置重新输入。

读者借书证记录”模块由1个主表单——“读者借书记录”表单和3个辅助表单——“输入”表单、“过期图书”表单和“图书借阅排行榜”表单组成。

“读者借书记录”表单首先用来显示读者借书的情况,可以显示读者当前已经借出并且尚未归还的图书的记录,还可以显示读者所有的借书记录。单击“学号”

后面的“... ”按钮可以调用“输入”表单输入学号来改变表单中显示的读者。

图示6.4.10

6.4.11 图书类别信息排行 通过图书信息类别排行 :

1. 管理员可以知道那种图书借阅最多,那一种图书是用户最关心的。

2. 管理员可以单击查询按钮查看图书的借阅比例。可以方便图书管理员得知那种图书是学生最喜爱的图书。 示例代码如下:

function myRefresh() {

var httpRequest = new ActiveXObject("microsoft.xmlhttp"); httpRequest.open("GET", "test.aspx", false); httpRequest.send(null); x++;

if(x

setTimeout("myRefresh()",30*1000); //30秒 } }

myRefresh();

图示4.4.11

6.4.12 库存外借信息 图书库存外界信息比例

库存外借信息将显示当前图书在库和外界的比例。以控制图书借阅的数量。管理员可以点击查看按钮将显示图书的库存信息

在显示些排序使用了Microsoft Visual Studio 2005自带的水晶报表,将数据库中的数据查询出来通过水晶报表安装向导就可就将数据导进去。

图示4.4.12

6.4.13 图书借阅排行榜

右窗格用树显示图书名称很图书的类别信息;

用户选择图书名称以及子节点时,在右窗格中显示出该类信息的的借出排行。

图示6.1.13

第七章 结果分析

以上是“图书管理系统”开发的主要过程,图书管理系统实现了对图书管理的科学化,快捷化,适应了现代社会图书馆内图书和用户借阅资料繁多,并且包含很多的信息数据的管理。面对这样庞大的信息量,图书管理系统有效的提高了图书管理工作的效率。通过这样的系统,可以做到信息的规范管理,科学统计和快速查询,从而减少了管理方面的工作量。

通过图书管理系统的应用,主要可以完成以下功能:

(1)在“图书资料管理”模块中图书资料的分条浏览、添加、修改、删除、查询。在“书籍资料”页框中查看系统内所有的图书的名称、类别、作者、出版社、购买日期等。

(2)在“图书证件信息管理”模块中实现学生资料的分条浏览、添加、修改、删除、查询。在表单的“学生资料”页框中查看系统内所有的学生详细资料,包括学生姓名、性别、系别、班级等资料。

(3)在“借还书操作”模块中实现读者借书记录的查看、借还书操作、图书借阅排行榜、查看逾期未归还图书和记录打印等功能。

经过测试,各主要功能均可以实现,并且各功能部件均能完成相应的各项功能。

项目学习心得体会

1. 通过做项目我们感受到开发项目的那种氛围,也感受到一个开发一个系统需求分析的重要性。

2. 通过做项目我们学会了怎样通过需求分析来开发项目,完成系统所要执行的所有功能。

3. 学会了如何使用Microsoft Visual Studio 2005开发工具。也体会到使用Microsoft Visual Studio 2005开发工具的快捷之处。

4. 通过做项目我们体会到设计一个数据库是十分重要的,如果数据库设计不合理,将直接影响到所开发的软件的质量。并且开发会带来很大的麻烦。会带来不必的损失。

5. 通过做图书管理系统这个项目,我们已经掌握了三层架构的原理和搭建,体会到三层架构让我们开发编写代码时思路非常清醒。

6. 通过做项目能学习到书上学不到的知识,比如:使用第三方控件,在之前想也没想过会有这个控件。

7. 通过做项目还学到如何使用存储过程,如何在窗体之间传递参数。 8. 通过做项目我们体会到如何设计一个系统的总体框架,如何让界面和数据库搭配起来. 如何让系统更安全,更健壮。

9. 通过做项目我们学会了如何限制用户输入系统非法的字符,如何进行逻辑判断。一个系统是否安全,是否健壮,逻辑测试是很重要的。 10. 通过组项目我们学会了如何检查系统的错误,漏洞。

结 束 语

经过两个多月的设计和开发,图书管理系统基本开发完毕。其功能基本符合用户需求,能够完成图书资料管理、学生资料管理和借还书操作。提供了部分系统维护功能,使用户方便进行数据添加、修改和删除。同时也考虑到了单位编码以减少冗余的问题,对于数据的一致性的问题也通过程序进行了有效的解决。可是在运用和进一步了解VFP 的同时遇到的困难是开始时没有想象到的,从中我学到的宝贵知识是对VFP 的了解和运用都有了很大的提高。当时遇到的困难和解决后的喜悦现在回想起来还是那么的有滋味,这对我今后的学习和工作都有着很大的帮助。

致 谢

本文的选题、研究和撰写都是在段利国老师细心指导下完成的。在整个课题的进行过程中,段利国老师给了我大量帮助,在他悉心的指导下,我顺利完成了本次毕业设计,这篇论文相关资料的收集和调研离不开段利国老师的热心帮助,在此向我的指导老师们致以崇高的敬意和衷心的感谢。

最后,向所有曾经在课题研究过程及撰写论文时给予我帮助的老师和同学致以真挚的谢意。

参考文献

⒈Microsoft Visual Studio 2005使用教程; [美] 克雷格·史奇博、马克·扬格、布赖恩·约翰逊

⒉C#高级编程及其应用系统开发, 机械工业出版社,2000

⒊王浩等. 精通《C#编程规范》中文版, 上海:上海科学技术出版社,1998

⒋王浩等. 中文》、《C#编程惯用法--高级程序员常用方法和技巧》开发指南. 上海: 上海科学技术出版社,1998

⒌王浩等. Microsoft Visual Studio 2005类和对象参考手册. 上海: 上海科学技术出版社,1998

⒍王浩等. Microsoft Visual Studio 2005命令参考手册. 上海: 上海科学技术出版社,1998

继续教育学院综合作业报告

二〇一〇年五月十五日

摘 要

本文首先介绍了数据库管理系统(DBMS )的基本概念及关系模型等。然后对问题的来源进行深入分析,指出图书借阅者、图书馆工作人员和图书馆管理人员是问题主要来源, 并指出本数据管理系统的实用性功能就是管理好图书馆信息,提高工作效率,避免数据处理手工操作,工作量大,出错率高的弊端。接着对需求分析进行细致的分析, 特别对图书借阅者、图书馆工作人员和图书馆管理人员三者权限进行分配。接着对系统功能模块进行分析,指出本系统功能模块主要分为“图书资料管理”模块、“学生资料管理”模块、“借还书操作”模块。总的来说,本图书管理系统, 介绍了该系统组成结构、功能特点、使用原理和方法, 本系统实现了系统登陆、图书管理、学生管理图书的借阅与归还、图书借阅排行榜和查看逾期未还图书以及各种信息的打印等功能。有了这个系统就使图书馆的工作变得简单了许多,使图书馆的图书管理形成了一个整体自动化管理模式。

管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强对企业内部的各种资源(人、财、物等)的有效管理,建立与自身特点相适应的管理信息系统。图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要求建立数据的一致性和完整性,对于后者则要求应用程序功能的完备,易用等的特点。基于上述考虑本系统主要利用Microsoft Visual Studio 2005作前端的应用开发工具 ,利用SQL Server 2000 作为后台的数据库,利用WINDOWS 作为系统平台开发的图书管理系统。另外本图书馆管理系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面对对象的方法。

关键词:C#程序设计语言, SQL SERVER 2000,软件工程

目录

摘 要 ......................................................................................................................................................... 2

第1章 基础理论知识 ................................................................................................................................... 5

1.1 数据库应用系统开发简介 . ................................................................................................................. 5

1.2 数据库管理系统 ................................................................................................................................. 5

1.3 M ICROSOFT V ISUAL S TUDIO 2005简介 ..................................................................................................... 6

1.4 C#语言简介 ......................................................................................................................................... 6

1.4.1 C#中OOP 概述 . ............................................................................................................................ 6

1.4.2 面向对象的C# 编程 . ................................................................................................................. 8

1.4.3 接口与继承 . .............................................................................................................................. 12

第二章 系统开发背景 ................................................................................................................................. 14

第三章 需求分析 ......................................................................................................................................... 15

3.1 应用需求分析 ................................................................................................................................... 15

3.2实际需求分析 .................................................................................................................................... 15

第四章 可行性分析 ..................................................................................................................................... 16

4.1 环境可行性分析 ............................................................................................................................... 16

4.2 面向对象的程序分析........................................................................................................................ 16

第五章 系统概要设计 ................................................................................................................................. 17

5.1 模块分析 ........................................................................................................................................... 17

5.1.1 功能模块图 . .............................................................................................................................. 17

5.2 模块分析 ........................................................................................................................................... 17

5.2.1 “图书资料管理”模块 . .......................................................................................................... 17

5.2.2 “学生资料管理”模块 . .......................................................................................................... 18

5.2.3 “借还书操作”模块 . .............................................................................................................. 18

第六章 详细设计 ......................................................................................................................................... 18

6.1 设计创建数据库 ............................................................................................................................... 18

6.1.1 设计数据库 . .............................................................................................................................. 18

6.1.2 创建数据库 . .............................................................................................................................. 19

6.2 创建系统主程序 ............................................................................................................................... 22

6.3 创建系统常用类 ............................................................................................................................... 22

6.3.1 创建“移动记录工具栏”类 . .................................................................................................. 23

6.3.2 创建“命令按钮工具栏”类 . .................................................................................................. 23

6.4 创建登录表单 ................................................................................................................................... 23

6.4.1 系统主表单的功能 . .................................................................................................................. 23

6.4.2 创建系统主表单界面 . .............................................................................................................. 24

6.4.3. 新书入库 . ................................................................................................................................ 25

6.4.4 图书借阅 . .................................................................................................................................. 26

6.4.5 图书归还 . .................................................................................................................................. 27

6.4.6 图书信息查询 . .......................................................................................................................... 28

6.4.7 图书信息修改 . .......................................................................................................................... 29

6.4.8 旧书销毁 . .................................................................................................................................. 30

6.4.9 图书证的办理及证件信息修改 . .............................................................................................. 32

6.4.10证件挂失与注销 . ..................................................................................................................... 32

6.4.11 图书类别信息排行 . ................................................................................................................ 33

6.4.12 库存外借信息 . ........................................................................................................................ 34

6.4.13 图书借阅排行榜 . .................................................................................................................... 35

第七章 结果分析 ......................................................................................................................................... 36

项目学习心得体会 ....................................................................................................................................... 37

结 束 语 ................................................................................................................................................... 38

致 谢 ....................................................................................................................................................... 39

第1章 基础理论知识

1.1 数据库应用系统开发简介

在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。

数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。

数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,40多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着World Wide Web(WWW)的猛增及Internet 技术的迅速发展,使得数据库技术一时成为最热门技术之一。

1.2 数据库管理系统

数据库管理系统(DBMS )是指数据库系统中管理数据的软件系统。DBMS 是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制, 都是通过DBMS 进行的。DBMS 总是基于某种数据模型,可以把DBMS 看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS 可以分成层次型、网状型、关系型、面向对象型等。SQL Server 2000就是一种关系型数据库管理系统。

关系模型。关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。

关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL 语言是关系数据库的标准化语言,已得到了广泛的应用。

1.3 Microsoft Visual Studio 2005简介

2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的 Visual Studio Express 版本

运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。

1.4 C#语言简介

C#(C Sharp)是微软于2000年提出的一种源于C++、类似于Java 的面向对象编程语言,适合于分布式环境中的组件开发。C# 是专门为.NET 设计的,也是.NET 编程的首选语言。

1.4.1 C#中OOP 概述

程序设计语言,在思想上发展很快,在技术上也是不断创新。经历了手工操作(控制面板)、机器语言、汇编语言、宏汇编语言、高级语言和第4代语言等多个阶段。OOP 只是在高级程序设计语言中,流行的多种编程技术之一。

1.基本特征

面向对象编程的三个基本特征是:

封装(encapsulation )—— 是对问题的抽象,以达到信息隐藏的目的。通过

类和对象,将属性(数据/变量)和方法(操作/函数)封装在一个黑箱内,

将细节隐藏起来。既可以保护数据不被他人恶意或大意地修改,又能防止其他程序员编写高耦合度的代码,还方便了今后对对象内部的修改和升级。 ● 继承(inheritance )—— 利用问题和事物的相似性,通过类的(多层)继承

机制,可以达到减少软件开发难度和重用已有对象的属性和方法之目的。 ● 多态(polymorphism )—— 同一操作或响应,可以同时针对多个可选的类

型和对象,并且能够自动在它们中间选择最合适的来进行。多态可以分为: ⏹ 编译时多态:包括函数和运算符的重载(overload ),通过早期的静态绑

定(binding )来实现。

⏹ 运行时多态:通过继承结合晚期动态绑定来实现——用同一基类的指

针,可以访问各个不同派生类中的同名方法和函数。

2.基本概念

面向对象编程的基本概念(类似的概念多、表达不够准确、各处的用法各异): ● 抽象(abstraction )—— 一个问题的本质特征。忽略一个对象的细节,致力

于一般的合适级别的程序能力。抽象是在事物的周围绘制透明的盒子,是定义事物接口的行为。

● 信息隐藏(information hiding)—— 限制外部对类属性(数据成员)的访问。 ● 封装(encapsulation )—— 将某种保密和隐匿应用到类中的数据和一些方法

(函数或子例程)上。封装确保一个对象只能通过确定的渠道(即类的公用方法)才可被修改。封装意味着将数据及相关函数打包到一个单一的单元(类)中。每个对象暴露一个接口(公用方法),规定其他对象可以如何读取或修改它。

● 类(class )—— 问题的抽象,对象的模版,接口的实现。例如int 是整数的

模版、CPoint 是点的模版。

● 对象(object )—— 问题中的事物,类的实例(变量),拥有数据和功能。

若int i; CPoint p; 则i 是int 的实例变量,p 是CPoint 的实例对象。

● 实例(instance )—— 一个对象,是某个类的示例。

● 实例化(intantiate )—— 由类定义创建对象。

● 继承(inheritance )—— 创建子类的机制,一种“is a”或“is like”关系,

形成类层次结构。是OOP 中对象重用的核心概念。

● 子类(subclass )—— 继承自另一个类的派生类(derived class)。

● 超类(superclass 父类)—— 被另一个类继承的基类(base class)。

● 虚函数(virtual function)—— 可以在子类中被覆盖(override )的函数。 ● 纯虚函数(pure virtual function)—— 只有声明没有定义的函数,必须在派

生类中被覆盖。

● 抽象类(abstract class)—— 至少包含一个纯虚函数的类,不能被实例化。 ● 具体类(concrete class)—— 可以实例化的类,不包含纯虚函数。

● 接口(interface )—— 纯抽象的类,类的模版。接口中的所有的方法(成员

函数)都只有声明,没有定义(都是纯虚函数)。必须在接口的派生类中,实现接口的全部方法。接口可以看成是一个,定义了一套内部行为的,若干操作特征标记的集合。(在C++中,也把类的公用成员函数叫做接口)。

● 属性(attribute )—— 类和接口中的数据信息,又叫数据成员(data member)

或成员变量(member variable)。属性是类知道的事物。

● 方法(method )—— 类操作的实现,又叫成员函数(member function)。方

法是类要做的事情。(在C++中,也把虚函数叫做方法)。

● 重载(overload )—— 一个类中的,参数的数目、类型或排列顺序不同的多

个同名方法(成员函数)。

● 覆盖(override )—— 在子类中重新定义(与父类中的定义有区别的)属性

和方法。

● 持久化(persistence )—— 将对象存入永久存储中(如文件、数据库等)。 ● 持久对象(persistent object)—— 存入永久存储的对象。

1.4.2 面向对象的C# 编程

1.类

类类型定义包含数据成员、函数成员和嵌套类型的数据结构,其中数据成员包括常量和字段,函数成员包括方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。类类型支持继承,继承是派生类可用来扩展和专门化基类的一种机制。

功能与C++/CLI的可见性说明符类似,只是增加了static 修饰符。

partial (分部的)——用于定义分部类、结构和接口等对象类型,即将它们的定义分成多个部分,保存到多个代码文件中。这是C# 2.0新引进的功能,用于解决大型对

象类型的定义问题,因为C# 不支持类体之外的方法和函数体定义。

(1)访问修饰符

类成员可以有如下访问修饰符(access modifiers):

● public (公用的)——访问无限制。

● protected (保护的)——只可被包含类(containing class )或其派生的类型

访问。

● internal (内部的)——只能被此程序访问。

● protected internal(保护内部的)——只能被此程序或其包含类所派生的类

型访问。

● private (私有的)——只能被其包含类访问,为默认的。

C# 类的public 、protected 、private 等成员修饰符,每次只能修饰一个成员,直接位于成员声明的开始处,而且没有冒号分隔符。而不是像C++那样,一个修饰符可以修饰位于其后(直到下一个修饰符为止)的若干成员。

(2)数据成员

类的数据成员(data member)有:

[ [属性] ] [常量修饰符] const 标识符[ = 常量表达式] [, „„] ;

其中,常量修饰符有:new 、public 、protected 、internal 、private 及它们的有效组合。

类的数据成员可以是静态数据(使用了static 修饰符),也可以是实例数据(未使用static 修饰符)。静态数据为类的所有实例对象所共有,而实例数据则每个实例对象都自己的副本。常量默认是(总是)静态的。

字段还可以是只读的(使用了readonly 关键字,这是C# 新增的)和易变的(使用了volatile 关键字,字段值一般位于CPU 中的寄存器中,高效但是有效期短暂)。

(3)函数成员

类的函数成员(function member)有:

● 属性(property )——提供对对象或类的特性(characteristic )进行访问的成

员。声明格式为:

其中,属性修饰符与方法修饰符相同,访问修饰符有protected 、internal 、private 、protected internal 和internal protected ,与类成员的普通访问修饰符

相比,没有public 、多了internal protected(内部保护的)。

● 事件(event )——定义该类可生成的通知(notifications )。在发生某些行为

时,可让对象通知程序。客户程序可以调用事件处理程序代码来响应该事件。声明格式为:

其中,事件修饰符与方法修饰符相同。

● 索引器(indexer )——允许对象像数组一样被索引的一种成员。声明格式为:

其中,索引器修饰符与方法修饰符类似,只是少了static 。

● 用户定义的运算符(operator )——运算符重载函数。声明格式为:

● 构造函数(constructor )——包括实例构造函数和静态构造函数。

⏹ 实例构造函数(instance constructor)——实现初始化一个类实例所需的

行为,会在创建每个类实例时被系统调用。注意:因为C# 会自动给字

段初始化,所以构造函数在C# 中的作用没有在C++的大。格式为:类

型名([参数列表]);

注意:即使调用没有任何参数的默认构造函数,也不能省去后面的圆括

号“()”,不然是语法错误。例如:A a = new A();

⏹ 静态构造函数(static constructor)——实现初始化一个类所需的行为,

会在程序装入时被系统调用。为类编写无参数的具体构造函数是C# 的

一个新特征,主要用于类的静态字段或属性的运行时初始化。格式为:

static 类型名([参数列表]);

● 终结器(finalizer )——在C# 的旧版本中叫析构函数(destructor ),但由于

引用类型的对象是位于具有垃圾内存自动回收功能的CLR 堆上,所以C# 中的析构函数的功能与C++的很不一样。为了与C++的析构函数有所区别,在C# 的新版本中,改叫终结器。格式(与C++的析构函数相同)为:~类型名();。

2.结构

C# 中的结构(struct )与C++中的类似,也可以封装数据和函数(属性和行为),是一种轻量级的类。但是它与C# 的(位于CLR 堆中的)类(为引用类型)不同,它是一种(位于局部栈中的)值类型。

1)结构与类的区别

C# 中的结构与类的区别有:

● 结构是值类型,而类是引用类型。

● 结构是密封的(sealed ),因此不能被继承。

● 结构不能继承类和其他的结构。

● 结构隐式地继承了System.ValueType 类型。

● 结构的(无参数)默认构造函数不能被自定义的构造函数取代。

● 结构的自定义的构造函数,必须初始化结构中全部成员的值。

● 结构没有析构函数。

● 不允许初始化结构的字段,但是可以初始化结构的常量成员。

2)结构声明

结构的完整声明格式为:

其中,结构的修饰符与枚举修饰符相同:new 、public 、protected 、internal 、private ,但是与类的有所不同:因为C# 的结构不支持继承,所以没有类的sealed 和abstract 修饰符;也没有static 修饰符;还与C++一样,结构的默认修饰符为public (类的默认修饰符为private )。

结构成员声明与类的基本相同,只是没有finalizer-declaration (终结器声明,即析构函数定义)。

C# 的结构和类一样,其public 、protected 、private 等成员修饰符,每次只能修饰一个成员,也是直接位于成员声明的开始处,而且也没有冒号分隔符。而不是像C++那样,一个修饰符可以修饰位于其后(直到下一个修饰符为止)的若干成员。

3.分部类和静态类

分部类和静态类都是C# 所特有的,而且都是C# 2.0版新增加的。前者允许将一个类、结构或接口的定义,放到多个文件中;后者则是仅包含静态成员的类。

1)分部类

分部类和结构是在类和结构的声明中,使用了partial 修饰符的类和结构。位于不同文件中的同一个分部类,必须位于同一个命名空间或包含类型(对嵌入式分部类)之中,而且在所有类修饰符必须完全一致。对泛型类,还要求声明中的类型参数和对类型参数的约束也完全一致。但是类的属性、基类和实现接口的列表却可以不同。另外,分部类也可以用作嵌套类,不过其包含类必须也是分部类。

编译时,编译器会合并位于不同文件中的同一个分部类的XML 注释、属性、基类、接口和成员。

2)静态类

静态类是在类的声明中,使用了static 修饰符的类。静态类中只能包含静态成员,可以用静态构造函数来初始化这些静态成员。静态类是密封的(不能派生其他类),静态类不能被实例化,也不能包含实例构造函数。

静态类一般用于定义公用的常数和方法(如.NET 中的Math 类),使用时不需要创建实例,直接用“类名. 字段”或“类名. 方法”即可。例如:

1.4.3 接口与继承

继承(inheritance )是面向对象的基本特征,所有的C# 类和结构都是直接或间接地从类Object 派生的。C# 中没有明确指出基类的类,都以Object 作为其默认基类。C# 中的结构不支持继承,但是C# 支持类的单一继承(single inheritance),多重继承的问题(与Java 一样)需通过接口来解决。

1.接口

接口(interface ,界面)的概念来源于组件编程的思想。接口定义统一的公用方法的原型,但是不包含方法的具体实现代码,方法体(代码)由实现接口的类来定义(编写)。

所以接口定义的是一种契约(contract ),实现该接口的类则遵守(adhere )此契约。接口相当于组件的界面,供使用组件的用户查询和调用,而实现接口的类则是组件的编码模块本身。

在C# 中,一个接口可以继承自多个接口,一个类也可以实现多个接口。实现某个接口的类,必须实现该接口中的所有方法。

2.继承的种类

C# 中的继承有两种类型:

● 实现继承(类继承)——派生类型继承了基类型的所有成员,包括方法、属

性、事件和索引的实现代码,派生类既可以直接调用基类的各种函数成员的实现代码,也可以自己编写代码来覆盖或重写它们,还可以为派生类添加新的数据和函数成员。

● 接口继承(非实现继承)——派生类型只继承了基类型中的函数签名

(signature of a function),包括函数名、类型参数的个数、每个形参(formal

parameter )的类型和种类(kind ,值、引用、输出),从左到右的顺序,但是不包括函数的返回类型、参数名称、类型参数的名称、以及可对最右边的参数指定的参数修饰符。而没有继承基类型中的实现代码。接口继承主要用于指定派生类应该具有什么特性和功能。接口继承相当于接口的实现。

C++只支持实现继承,VB 则只支持接口继承,C++/CLI、Java 和C# 都既支持实现继承,也支持接口继承,所以非常适用于编写基于组件的分布式软件。

C# 中的结构,支持(多重)接口继承,但是不支持实现继承。即,你可以在结构中实现多个接口中定义的函数成员,但是你却不能从类或结构来派生新的结构,也不能从结构派生新的类。不过,用户定义的结构,总是自动派生于System.ValueType 抽象类,还可以派生于(实现)多个接口。

C# 中的类,则支持单一实现继承和多重接口继承。

3.方法的继承

C# 中方法的继承关系非常多样,除了传统C++的虚函数(C# 增加了override 修饰符)和纯虚函数(即C# 的abstract 抽象函数)外,还增加了隐藏方法(new )、密封方法(sealed )和基类方法的调用指令(base. 方法名)等诸多新方式。

1)虚方法override

虚函数是面向对象编程中实现运行时多态性的标准途径,而编译时的多态性则是由具有同样函数名,但是函数签名不同的多个重载(overload )函数来实现的。

与C++不同的是,在C# 中重写基类的虚方法时,必须使用C# 特有的重写修饰符override (覆盖)。

2)隐藏方法new

在C++中,不需要添加任何修饰符,就可以任意重载或覆盖基类的虚函数和非虚函数,但是在C# 中,这样做会得到一个编译警告。目的是,为了避免程序员的笔误,也为了适应代码的维护与升级。解决办法是,上面介绍过的使用override 修饰符来明确重载基类的虚方法,以及使用new 修饰符来显式隐藏(覆盖)基类中具有同样签名的(非虚)方法。

第二章 系统开发背景

当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。

图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统、规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。

数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。

基于这些问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

第三章 需求分析

3.1 应用需求分析

图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护及系统状态的查看、维护并生成催还图书报表。

3.2实际需求分析

图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。

图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。

图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息。

第四章 可行性分析

4.1 环境可行性分析

由于本系统管理的对象单一, 都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。

本系统的设计是在Windows XP 操作系统环境下,使用Visual Studio.NET 2003中文版开发成功的。

Visual Studio具有以下特点:

4.2 面向对象的程序分析

1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。

2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。

3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。

4、面向对象设计的核心是类的设计。例如:可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。

第五章 系统概要设计

5.1 模块分析

5.1.1 功能模块图

图示 3.2.1

5.2 模块分析

5.2.1 “图书资料管理”模块

“图书资料管理”模块主要实现图书资料的分条浏览、添加、修改、删除、查询和打印功能。在表单的“书籍资料”页框中可以通过“移动记录工具栏”分条查看系统内所有的图书的详细资料,包括图书的名称、类别、作者、出版社、购买日期等。单击“命令按钮工具栏”中的按钮可以对 “书籍资料”页框中的记录进行相应的操作。

5.2.2 “学生资料管理”模块

“学生资料管理”模块主要实现学生资料的分条浏览、添加、修改、删除、查询和打印功能。在表单的“学生资料”页框中可以通过“移动记录工具栏”分条查看系统内所有的学生详细资料,包括学生姓名、性别、系别、班级等资料。单击“命令按钮工具栏”中的按钮可以对“学生资料”页框中的记录进行相应的操作。

5.2.3 “借还书操作”模块

“借还书操作”模块主要实现读者借书记录的查看、借还书操作、图书借阅排行榜、查看逾期未归还图书和记录打印等功能。

读者借书记录查看功能可以查看所有的借书记录 ,也可以只查看目前尚未归还的借书记录。在“读者借书记录”表单中单击“借书”按钮 ,在打开的“输入”表单中 ,输入要借出的图书编号 ,如果该图书在馆中而且该读者还能借书 , 则借书成功。

“读者借书记录”表单中单击“还书”按钮 , 在打开的“输入”表单中输入要归还的图书的图书编号 ,如果该图书是被当前读者借出 ,则还书成功。

当表单中显示的是读者未归还的图书列表时 , 在列出借书记录的表格中双击要归还的图书的“图书编号”栏即可将此图书还入。

在“读者借书记录”表单中 , 单击“过期”按钮 , 可以查看系统内到了归还日期而未归还的图书的借阅记录。

在“读者借书记录”表单中 ,单击“排行”按钮 ,可以查看系统内借阅次数在所有图书内排行前10名的图书的列表。

第六章 详细设计

6.1 设计创建数据库

6.1.1 设计数据库

本系统实现了系统登录功能 , 而系统登录需要账号和密码 , 这就需要 创建一个“系统帐号”(Accounts) 数据表 , 用来存储系统登录用的账号和密码。

本系统要实现图书资料和学生资料的管理 , 所以需要创建 “学生信息”

(Student)数据表和“图书信息 ”(Book) 数据表。 “学生信息 ”(Student) 数据

表中包含了学生的“系别”信息 , 在本系统中为了简化系别的管理 , 另外创建了一个“系别”(Xibie)数据表用来存储系别的信息 , 在“学生信息”(Student) 数据表中只存储系别的编号。

由于系统要实现读者借还书功能、还要实现读者借还书记录的查看 ,所以还需创建一个“读者借书记录 ”(JyRec) 数据表来保存读者的借阅记录。

6.1.2 创建数据库

“图书借阅管理系统”作为一个完整的数据库管理系统 , 在创建阶段利用项目管理器可以更好组织管理各种格式的文件 , 因此首先需要创建一个项目 , 然后在项目管理器创建其他格式的文件。

在 VFP 主窗口中选择“文件”菜单下“新建”子菜单 , 在打开的“新建”对话框的“文件类型“区域中选中”项目”, 然后单击右侧的”新建文件”按钮, 打开”创建“对话框中的”项目文件“文本框中输入项目名称 , 在此输入 "Tushu”,单击“保存”按钮即创建了一个项目。

在项目管理器的“数据”选项卡中选中“数据库”单击右侧的“新建”按钮,在弹出的“新建数据库”对话框中单击“新建数据库”, 在弹出的“创建”对话框的“数据库名”文本框中输入数据库的名称 , 在此输入“Tushu ”作为数据库名 , 单击“保存“按钮即创建了一个空的数据库。

在项目管理器的“数据”选项卡中打开刚才创建的“Tushu ”数据库的目录树,选中“数据表”, 单击右侧的“新建”按钮即可开始数据表的创建。

系统关系图如下图所示

图示 4.1.2

本系统中要用到的数据表的字段的属性设置分别设置如下。

“系统账号”(图书卡号) 数据表的宇段属性设置如表 1 所示。

表1 “图书卡号”(LentCardType )数据表字段属性设置

创建“系统账号”(图书卡号) 数据表后向数据库中添加一条记录作为系统的默认帐号,该记录的各字段的值如下 :“cyr ”, “cyr ”, “楚雅茹”。

“学生信息”(BookInformation) 数据表各字段的属性设置如表 2 所示。

表2 “图书类型”( BookInformation)数据表字段属性设置

“系别信息”(图书类别)数据表各字段的属性设置如表3所示

表3 “图书类别”( 图书类别)数据表字段属性设置

“图书信息”(Book )数据表各字段的属性设置如表4所示

表4 “图书信息”(Tushu )数据表字段属性设置

对“图书信息”(Book )数据表的字段属性设置需要说明的是“借阅次数”和“是否借出”字段的默认值一定要设置,因为对于新添加的图书,其一定是没有被借出的,而且其借阅次数一定是0,所以在表单中向数据表添加记录时,这两个字段应该是不需要添加的,可以由默认值生成。

“读者借书记录”(JyRec )数据表的字段属性如表5所示。

表5 “读者借书记录”(ReaderInfor )数据表字段属性设置

数据表之间的关系,将在具体表单的数据环境中设置。

将“借书卡”(LentBookCard )数据表、“借书卡类别”(LentCardType )数据表、“图书信息”(BookInformation )数据表、“读者借书记录”(LentNoteInfor )数据表添加到表单的数据环境中,用主外键建立关联。

6.2 创建系统主程序

WinForm 是.Net 开发平台中对Windows Form的一种称谓。.Net 为开发WinForm 的应用程序提供了丰富的Class Library (类库)。这些WinForm 类库支持RAD(快速应用程序开发) ,这些类库被封装在一个名称空间之中,这个名称空间就是System.Windows.Forms 。在此名称空间中定义了许多类,在开发基于.Net 的GUI 应用程序的时候,就是通过继承和扩展这些类才使得我们的程序有着多样的用户界面。

将一个文件设为项目主文件的方法是在项目管理器中选中该文件 , 然后在右键快捷菜单中选择“设为主文件”子菜单或者选择“项目”菜单下“设为主文件”子菜单即可。一个文件设为项目的主文件后 , 该文件的将以粗体显示

LibraryLogin 程序的代码为:(见附表)

6.3 创建系统常用类

系统主表单中“学生资料”和“书籍资料”页框控件中都需要用到“移动记录工具栏”和“命令按钮工具栏”, 这两个命令按钮工具栏如果在表单中分别创建会

使工作变得繁琐,可以采用创建工具栏类 , 然后在表单中用实例化的方式来简化工作。

6.3.1 创建“移动记录工具栏”类

“移动记录工具栏”类基于“CommandGroup ”基类,存储于“AdminButton ”可视类库中,命名为“MoveRecord ”。

“移动记录工具栏”类包括“首记录”、“上一个”、“下一个”和“末记录”4个按钮,在表单中可以利用这 4 个按钮定位数据表中的记录指针。

需要指出的是,在本系统中当鼠标移动到按钮上时,鼠标指针变为一个特定指针,这就需要一个鼠标指定文件,在本系统中使用“H_point.cur”文件,将该鼠标指针文件放在系统的根目录下,添加按钮“MouseMove ”事件如下:(见附表)

6.3.2 创建“命令按钮工具栏”类

与“移动记录工具栏”类相同,为了改变鼠标停留在按钮时的指针,还需添加按钮的“MouseMove ”事件,代码与“移动记录工具栏”类中的相同。

6.4 创建登录表单

6.4.1 系统主表单的功能

为了系统有安全, 一般系统都设有登录窗体, 登录该系统除了输入正确的用户名和密码外, 还必须选择用户登录的权限. 不同权限的用户登录系统分别执行不同有操作. 本系统登录权限分为四类:

图书管理员:能够对图书进行增加, 删除, 修改, 查询, 以及图书证件的查询操作. 证件管理员:能对图书证件进行增加, 删除, 修改, 查询操作等.

普通管理员:能对图书信息进行增, 删, 改, 查, 并能对图书证件进行增, 删, 改, 查. 高级管理员:能执行本系统全部功能.

图示6.4.1

6.4.2 创建系统主表单界面

设计Winform 父窗体,命名为“LibraryMainWindow ”。创建好的表单效果中有两个页框,其中“学生资料”页面效果如下图所示。

图示6.4.2

图书管理主窗体主窗体主要包括:

标题栏:图书管理系统;

菜单栏:图书管理(新书入库,图书查询,图书借阅,图书归还,图书信息修改,旧书销毁) ,证件管理(新证办理,证件信息修改,图书证挂失、注销),图书预览(热门图书排行),信息统计(库存借出比例,类别信息统计),系统设置(用户设置),帮助(关于窗体)。

工具栏:相当于工具栏的快捷方式,包括图书信息(图书查询,图书借阅,图书归还),修改信息(图书修改,证件修改,添加代码),新书入库,新政办理,证件挂失、注销,旧书销毁,借出比例,图书类别信息,用户设置,

窗体容器区:存放子窗体;

状态栏(初始化信息,系统当前时间);

6.4.3. 新书入库

当图书馆新进一批图书时,管理员要通过该系统将所有图书添加到系统数据库中。

为了保证系统的安全性和 健壮性,该系统的文本框。 使用设置掩码控件限制用户的输入。从而保证系统的安全性。

该窗体用TabCotrol 控件将同类型的信息层叠在一个窗体以方便操作。如果用户输入有误将给出提示,不得将错误信息插入数据库。可以点击重置按钮清空文本框。以便重新输入。

如果用户输入正确无误,单击保存,将输入的图书信息插入库存中。如果用户要退出系统,单击退出按钮,用户还可以通过点击page 页查看其它页面。也可以点击下一页按钮跳到下一页。

控件中的数据处于可修改状态,“移动记录工具栏”处于不可用状态,“命令按钮工具栏”中除了“保存”和“取消”按钮外其他按钮都处于不可用状态,“借还书”按钮处于可用状态,“书籍信息”页面处于不可用状态。

图示6.4.3

6.4.4 图书借阅

在“学生信息”(StuPage )被激活时,应该将“学生信息”(Student )数据表所在工作区作为表单的当前工作区,取消由其他表单设置的过虑条件,并且使页面进入浏览状态。

添加“学生信息”页面的Activate 事件代码如下:(见附表)

“学生信息”页面中的“系别”组合框中选择某一个系编号后,要在“名称”栏显示系统编号所代码的系别名称,由于在数据环境中将两者做了关连,所以在选择了某个系编号后只需要刷新表单即可。

图书借阅介绍:首先用户先选定自己要借阅的图书, 然后通过管理员输入用户的卡号,然后要判断用户的卡号是否正确,如果不正确给出提示,其次判断用户的卡号是普通卡还是贵宾卡,是否能满足用户借阅图书的数量。如果不能满足用户的借阅将给出提示。

当用户借阅图书成功后,将更新图书信息,用户图书证件性息。

单击退出将退出此窗体。单击上一页可以跳转至图书查询。单击下一页可以跳至图书归还。

图示6.4.4

6.4.5 图书归还

在“书籍信息”(BookPage )页面被激活时,表单中的当前数据工作期应该变为“图书信息”数据表所在的工作期,将可能由其他表单对该数据表设置的过虑条件去掉,同时要使该页面进入浏览状态。

用户归还图书时,管理员先输入图书编号,点击显示图书信息。显示图书的其他信息。然后输入用户的图书证件号, 点击显示图书证件信息,显示图书证件的其他信息。检查用户信息无误后,点击还书。点击还书后,系统将更改用户的图书卡的借阅信息。并修改图书信; 。上一页跳至图书借阅; 下一页跳至旧书销毁; 点击退出将退出该窗体。单击“还书”按钮 ,可以调用“输入”表单用来输入要归还的图书编号,如果该图书由当前读者借出, 则还书成功,否则失败。另外,当表单中的表格控件中显示的是当前读者的“已借出”图书记录时,可以通过双击列表中的某本书的“图书编号”栏来快速还书。

图示6.4.5

6.4.6 图书信息查询

左边采用树控件显示图书信息》当用户单击该数节点是将展开以下信息。如果用户单击图书编号节点以及字节点后,单击工具栏上对应的按钮将在表里显示对应的图书信息。右边的图书信息表采用分页技术将成千上百条信息分成多页,管理员上一页按钮,下一页按钮,首页按钮,尾页按钮,分别浏览图书所有信息。左上角按钮上一页可以跳至图书归还,下一页跳至旧书销毁; 退出-退出窗体。

在对图书信息查询,为了能快速查询所要显示的图书信息,设置了多个条件查询,如按照作者信息查询,按照出版社信息查询,按照图书名称信息查询,按照图书类别信息查询等条件,查询显示页面为了美观,采取了分页功能,单击上一页,可以浏览上一页的信息,单击下一页能浏览下一页的信息,也可以直接浏览首页和尾页的信息。

图示6.4.6

6.4.7 图书信息修改

图书信息修改表采用分页技术。通过单击按钮分别浏览图书所有信息。并且在文本框能显示数据表的当前页数和总页数。在数据表可以执行增加,删除,修改等的批量更新。刷新按钮可以将修改的最新信息显示到表中。关闭按钮退出该窗体 图书管理系统示例代码:如下

1.MessageBox.Show(" 您确定要修改该图书信息吗?" , " 系统提示" , MessageBoxButtons.YesNo, MessageBoxIcon.Information)

图示6.4.7

6.4.8 旧书销毁

“书籍信息”页面的查询功能由“输入查询条件”表单和“图书信息查询结果”表单组成。图书高级管理员在城需求下要销毁一部分旧书,按照多个条件进行查询所有要销毁的图书信息,同样也提供了分页功能,单击按钮查询,根据图书编号查询到要删除的图书,单击销毁按钮即删除该图书。此“输入查询条件”表单也是用来向用户收集查询条件。 单击“过期”按钮可以查看系统中的逾期未归还的图书的列表。单击“排行”按钮可以查看系统中借出次数最多的 10 本书的列表。 void btnDestroyBook_Click(object sender, EventArgs e)

{

BookInformationModel objBookInformationmodel = new BookInformationModel(); objBookInformationmodel.BookId = this .txtOldBookID.Text.Trim().ToString(); string bookstatus = null ;

if

(BookInformationBll.SelectBookstatus(objBookInformationmodel).Tables["Booktype" ].Rows.Count > 0) {

foreach (DataRow row in

BookInformationBll.SelectBookstatus(objBookInformationmodel).Tables["Booktype" ].Rows) {

bookstatus = row["Status" ].ToString();

}

if (bookstatus.Equals(" 外借" )) {

MessageBox.Show(" 对不起!这本书正被读者借阅。不能销毁" , " 系统提示" , MessageBoxButtons.OK, MessageBoxIcon.Information); this .txtOldBookID.Text = "" ; }

//删除这本书; else {

if (BookInformationBll.Oldbookgo(objBookInformationmodel) > 0) {

MessageBox.Show(" 恭喜您! 图书销毁成功。" , " 系统提示" ,MessageBoxButtons.OK,MessageBoxIcon.Information); } } } else {

MessageBox.Show(" 对不起,库中不存在这本书。" , " 系统提示" ,MessageBoxButtons.OK,MessageBoxIcon.Information); } }

图示6.4.8

6.4.9 图书证的办理及证件信息修改

当用户想要申请办理一张图书证时,证件管理员首先要注册用户信息注册成功后,给出注册成功信息,可为用户办理一张图书卡。图书卡办理成功后给出提示。在右边表中显示出所有用户的图书卡信息、点击重置清空所有文本框。点击刷新可以将刚办理的图书卡显示到表中。点击退出按钮退出窗体,如果该学生想将自己的图书证审请会员证件,可以查询该学生的证件将信息修改。

图示6.4.9

6.4.10证件挂失与注销

用户丢失图书卡或其它原因要挂失图书证。管理员输入图书卡号,单击确定,

图书卡无误后,即单击可挂失。

用户由于借阅图书超出规定的时间或某些原因要注销图书,管理员输入该图书卡号,单击确定,如果图书卡号正确,即可单击注销。如果输入有误,可单击重置重新输入。

读者借书证记录”模块由1个主表单——“读者借书记录”表单和3个辅助表单——“输入”表单、“过期图书”表单和“图书借阅排行榜”表单组成。

“读者借书记录”表单首先用来显示读者借书的情况,可以显示读者当前已经借出并且尚未归还的图书的记录,还可以显示读者所有的借书记录。单击“学号”

后面的“... ”按钮可以调用“输入”表单输入学号来改变表单中显示的读者。

图示6.4.10

6.4.11 图书类别信息排行 通过图书信息类别排行 :

1. 管理员可以知道那种图书借阅最多,那一种图书是用户最关心的。

2. 管理员可以单击查询按钮查看图书的借阅比例。可以方便图书管理员得知那种图书是学生最喜爱的图书。 示例代码如下:

function myRefresh() {

var httpRequest = new ActiveXObject("microsoft.xmlhttp"); httpRequest.open("GET", "test.aspx", false); httpRequest.send(null); x++;

if(x

setTimeout("myRefresh()",30*1000); //30秒 } }

myRefresh();

图示4.4.11

6.4.12 库存外借信息 图书库存外界信息比例

库存外借信息将显示当前图书在库和外界的比例。以控制图书借阅的数量。管理员可以点击查看按钮将显示图书的库存信息

在显示些排序使用了Microsoft Visual Studio 2005自带的水晶报表,将数据库中的数据查询出来通过水晶报表安装向导就可就将数据导进去。

图示4.4.12

6.4.13 图书借阅排行榜

右窗格用树显示图书名称很图书的类别信息;

用户选择图书名称以及子节点时,在右窗格中显示出该类信息的的借出排行。

图示6.1.13

第七章 结果分析

以上是“图书管理系统”开发的主要过程,图书管理系统实现了对图书管理的科学化,快捷化,适应了现代社会图书馆内图书和用户借阅资料繁多,并且包含很多的信息数据的管理。面对这样庞大的信息量,图书管理系统有效的提高了图书管理工作的效率。通过这样的系统,可以做到信息的规范管理,科学统计和快速查询,从而减少了管理方面的工作量。

通过图书管理系统的应用,主要可以完成以下功能:

(1)在“图书资料管理”模块中图书资料的分条浏览、添加、修改、删除、查询。在“书籍资料”页框中查看系统内所有的图书的名称、类别、作者、出版社、购买日期等。

(2)在“图书证件信息管理”模块中实现学生资料的分条浏览、添加、修改、删除、查询。在表单的“学生资料”页框中查看系统内所有的学生详细资料,包括学生姓名、性别、系别、班级等资料。

(3)在“借还书操作”模块中实现读者借书记录的查看、借还书操作、图书借阅排行榜、查看逾期未归还图书和记录打印等功能。

经过测试,各主要功能均可以实现,并且各功能部件均能完成相应的各项功能。

项目学习心得体会

1. 通过做项目我们感受到开发项目的那种氛围,也感受到一个开发一个系统需求分析的重要性。

2. 通过做项目我们学会了怎样通过需求分析来开发项目,完成系统所要执行的所有功能。

3. 学会了如何使用Microsoft Visual Studio 2005开发工具。也体会到使用Microsoft Visual Studio 2005开发工具的快捷之处。

4. 通过做项目我们体会到设计一个数据库是十分重要的,如果数据库设计不合理,将直接影响到所开发的软件的质量。并且开发会带来很大的麻烦。会带来不必的损失。

5. 通过做图书管理系统这个项目,我们已经掌握了三层架构的原理和搭建,体会到三层架构让我们开发编写代码时思路非常清醒。

6. 通过做项目能学习到书上学不到的知识,比如:使用第三方控件,在之前想也没想过会有这个控件。

7. 通过做项目还学到如何使用存储过程,如何在窗体之间传递参数。 8. 通过做项目我们体会到如何设计一个系统的总体框架,如何让界面和数据库搭配起来. 如何让系统更安全,更健壮。

9. 通过做项目我们学会了如何限制用户输入系统非法的字符,如何进行逻辑判断。一个系统是否安全,是否健壮,逻辑测试是很重要的。 10. 通过组项目我们学会了如何检查系统的错误,漏洞。

结 束 语

经过两个多月的设计和开发,图书管理系统基本开发完毕。其功能基本符合用户需求,能够完成图书资料管理、学生资料管理和借还书操作。提供了部分系统维护功能,使用户方便进行数据添加、修改和删除。同时也考虑到了单位编码以减少冗余的问题,对于数据的一致性的问题也通过程序进行了有效的解决。可是在运用和进一步了解VFP 的同时遇到的困难是开始时没有想象到的,从中我学到的宝贵知识是对VFP 的了解和运用都有了很大的提高。当时遇到的困难和解决后的喜悦现在回想起来还是那么的有滋味,这对我今后的学习和工作都有着很大的帮助。

致 谢

本文的选题、研究和撰写都是在段利国老师细心指导下完成的。在整个课题的进行过程中,段利国老师给了我大量帮助,在他悉心的指导下,我顺利完成了本次毕业设计,这篇论文相关资料的收集和调研离不开段利国老师的热心帮助,在此向我的指导老师们致以崇高的敬意和衷心的感谢。

最后,向所有曾经在课题研究过程及撰写论文时给予我帮助的老师和同学致以真挚的谢意。

参考文献

⒈Microsoft Visual Studio 2005使用教程; [美] 克雷格·史奇博、马克·扬格、布赖恩·约翰逊

⒉C#高级编程及其应用系统开发, 机械工业出版社,2000

⒊王浩等. 精通《C#编程规范》中文版, 上海:上海科学技术出版社,1998

⒋王浩等. 中文》、《C#编程惯用法--高级程序员常用方法和技巧》开发指南. 上海: 上海科学技术出版社,1998

⒌王浩等. Microsoft Visual Studio 2005类和对象参考手册. 上海: 上海科学技术出版社,1998

⒍王浩等. Microsoft Visual Studio 2005命令参考手册. 上海: 上海科学技术出版社,1998


    相关文章

    太原科技大学近3年分数线(各专业)

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 工业工程 机械电子工程 材料成型及控制工程 电气工程及其自动化 环境科学 材料科学与工程 534 山西 理科 2013 本科一批 538 ...

    太原理工大学毕业论文格式

    毕业设计(论文) 论文题目 应县广益华府二期第三标段投标文件 学生姓名 学 号 专 业 班 级 导师姓名职称 完成日期 [1**********] 2012工程造价 2014.9.19 2014年9月 19日 编号: 毕业设计(论文)答辩许 ...

    大学校园文化景观设计探讨--以太原理工大学中西广场设计为例

    建筑实践 ArcMe咖raIP旧cI融 一一以太原理工大学中西广场设计为例 InVestigation on CuItureLandscapeDesignofUniVersityCampus: as TakingtheMiddIeVVest ...

    大学生视觉设计大赛策划书

    活动宗旨 二〇一二年是太原大学专升本的跨越之年,我校在抓紧学校学风建设的同时,也突出了对本校应用实践特色的重视.秉着弘扬艺术文化,创造艺术学风氛围的目标,将结合校级相关文件和重要指导思想,举办 "世贸杯"视觉设计大赛. ...

    Gmrshy毕业生求职简历模板6

    生命是永恒不断的创造,因为在它内部蕴含着过剩的精力,它不断流溢,越出时间和空间的界限,它不停地追求,以形形色色的自我表现的形式表现出来. --泰戈尔 彩色个人求职简历模板下载 姓 名: 出生年月: 学 历: 住 址: 电子信箱: 世纪英才 ...

    黑龙江中医药大学精美个人简历模板-391

    求职意向:机械类技术岗位 茉莉花 自我评价 工作耐心. 认真负责个性谦和,有很强团队意识,跟同事之间能保持良好工作系并相互配合. 工作中上进心强,做事谨慎,熟悉船舶工艺和流程知识.焊接知识.船级社建造规范. 希望在这里能找到一个适合我的平台 ...

    网络中心升级改造招标书

    太原科技大学校园网 (校园网改造工程) 姓名: 班级: 学号: 招标单位:太原科技大学 招标时间:2011年1月11 日 目录 第一章 招标邀请函 .............................................. ...

    2010年大学学生实习报告

    目的: 毕业实习是本科学生在大学学习阶段重要的实践性教学环节之一,通过实习,学生将进一步掌握和强化对本专业理论知识的理解,了解社会需求,增强专业责任感、使命感,使理论与实践相结合,为实际工作打下良好基础。 要求: 1、遵守实习单位制度。服从 ...

    山西的学校有哪些

    山西的学校有哪些 伴随着2016年大一新生的军训,新一届的高三学生将要直面高考这一考验,每一年让正在或者即将进行高考志愿填报的高考生们犹豫不决的就是该选择哪门专业.这也是每个高考毕业生所必须经历的事情,以下是根据相关数据所整理的相关院校,希 ...

    2012年太原市教师资格证考试

    2012年太原教师资格证考试报名时间:1月4-11日 根据全省实施教师资格制度工作要求,现将2012年教师资格教育理论考试有关事宜通知如下: 一.申请认定教师资格教育理论考试人员范围 1.非学前教育专业或非幼儿师范学校幼儿教育专业毕业,现申 ...