1、太原理工大学高等教育自学考试 继续教育学院综合作业报告课程名称: 图书管理系统 考 号: 姓 名: 专 业: 计算机及应用 单 位: 山西计算机科技学院 指导老师: 成 绩: 优 良 中 及格 不及格 二一年五月十五日摘要本文首先介绍了数据库管理系统(DBMS)的基本概念及关系模型等。然后对问题的来源进行深入分析,指出图书借阅者、图书馆工作人员和图书馆管理人员是问题主要来源,并指出本数据管理系统的实用性功能就是管理好图书馆信息,提高工作效率,避免数据处理手工操作,工作量大,出错率高的弊端。接着对需求分析进行细致的分析,特别对图书借阅者、图书馆工作人员和图书馆管理人员三者权限进行分配。接着对系统
2、功能模块进行分析,指出本系统功能模块主要分为“图书资料管理”模块、“学生资料管理”模块、“借还书操作”模块。总的来说,本图书管理系统,介绍了该系统组成结构、功能特点、使用原理和方法,本系统实现了系统登陆、图书管理、学生管理图书的借阅与归还、图书借阅排行榜和查看逾期未还图书以及各种信息的打印等功能。有了这个系统就使图书馆的工作变得简单了许多,使图书馆的图书管理形成了一个整体自动化管理模式。管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强对企业内部的各种资源(人、财、物等)的有效管理,建立与
3、自身特点相适应的管理信息系统。图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要求建立数据的一致性和完整性,对于后者则要求应用程序功能的完备,易用等的特点。基于上述考虑本系统主要利用Microsoft Visual Studio 2005作前端的应用开发工具 ,利用SQL Server 2000 作为后台的数据库,利用WINDOWS作为系统平台开发的图书管理系统。另外本图书馆管理系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面对对象的方法。关键词:C#程序设计语言,
4、SQL SERVER 2000,软件工程目录 摘要2第1章 基础理论知识51.1 数据库应用系统开发简介51.2 数据库管理系统51.3 Microsoft Visual Studio 2005简介61.4 C#语言简介61.4.1 C#中OOP概述61.4.2 面向对象的C# 编程81.4.3 接口与继承12第二章 系统开发背景14第三章 需求分析153.1 应用需求分析153.2实际需求分析15第四章 可行性分析164.1 环境可行性分析164.2 面向对象的程序分析16第五章 系统概要设计175.1 模块分析175.1.1 功能模块图175.2 模块分析175.2.1 “图书资料管理”模
5、块175.2.2 “学生资料管理”模块185.2.3 “借还书操作”模块18第六章 详细设计186.1 设计创建数据库186.1.1 设计数据库186.1.2 创建数据库196.2 创建系统主程序226.3 创建系统常用类226.3.1 创建“移动记录工具栏”类236.3.2 创建“命令按钮工具栏”类236.4 创建登录表单236.4.1 系统主表单的功能236.4.2 创建系统主表单界面246.4.3. 新书入库256.4.4 图书借阅266.4.5 图书归还276.4.6 图书信息查询286.4.7 图书信息修改296.4.8 旧书销毁306.4.9 图书证的办理及证件信息修改326.4.
6、10证件挂失与注销326.4.11 图书类别信息排行336.4.12 库存外借信息346.4.13 图书借阅排行榜35第七章 结果分析36项目学习心得体会37结束语38致谢39第1章 基础理论知识1.1 数据库应用系统开发简介在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。数据库技术在计算机软件邻域研究中一
7、直是非常重要的主题,产生于60年代,40多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着WorldWideWeb(WWW)的猛增及Internet技术的迅速发展,使得数据库技术一时成为最热门技术之一。1.2 数据库管理系统数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。S
8、QL Server 2000就是一种关系型数据库管理系统。关系模型。关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。1.3 Microsoft Visual Studio 2005简介2005 年,微软发布了 Visual Studio 2005。.NET 字眼从
9、各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的 Visual Studio Express 版本运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全
10、策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。1.4 C#语言简介C#(C Sharp)是微软于2000年提出的一种源于C+、类似于Java的面向对象编程语言,适合于分布式环境中的组件开发。C# 是专门为.NET设计的,也是.NET编程的首选语言。1.4.1 C#中OOP概述程序设计语言,在思想上发展很快,在技术上也是不断创新。经历了手工操作(控制面板)、机器语言、汇编语言、宏汇编语言、高级语言和第4代语言等多个阶段。
11、OOP只是在高级程序设计语言中,流行的多种编程技术之一。1基本特征面向对象编程的三个基本特征是:l 封装(encapsulation) 是对问题的抽象,以达到信息隐藏的目的。通过类和对象,将属性(数据/变量)和方法(操作/函数)封装在一个黑箱内,将细节隐藏起来。既可以保护数据不被他人恶意或大意地修改,又能防止其他程序员编写高耦合度的代码,还方便了今后对对象内部的修改和升级。l 继承(inheritance) 利用问题和事物的相似性,通过类的(多层)继承机制,可以达到减少软件开发难度和重用已有对象的属性和方法之目的。l 多态(polymorphism) 同一操作或响应,可以同时针对多个可选的类型
12、和对象,并且能够自动在它们中间选择最合适的来进行。多态可以分为:n 编译时多态:包括函数和运算符的重载(overload),通过早期的静态绑定(binding)来实现。n 运行时多态:通过继承结合晚期动态绑定来实现用同一基类的指针,可以访问各个不同派生类中的同名方法和函数。2基本概念面向对象编程的基本概念(类似的概念多、表达不够准确、各处的用法各异):l 抽象(abstraction) 一个问题的本质特征。忽略一个对象的细节,致力于一般的合适级别的程序能力。抽象是在事物的周围绘制透明的盒子,是定义事物接口的行为。l 信息隐藏(information hiding) 限制外部对类属性(数据成员)
13、的访问。l 封装(encapsulation) 将某种保密和隐匿应用到类中的数据和一些方法(函数或子例程)上。封装确保一个对象只能通过确定的渠道(即类的公用方法)才可被修改。封装意味着将数据及相关函数打包到一个单一的单元(类)中。每个对象暴露一个接口(公用方法),规定其他对象可以如何读取或修改它。l 类(class) 问题的抽象,对象的模版,接口的实现。例如int是整数的模版、CPoint是点的模版。l 对象(object) 问题中的事物,类的实例(变量),拥有数据和功能。若int i; CPoint p; 则i是int的实例变量,p是CPoint的实例对象。l 实例(instance) 一个
14、对象,是某个类的示例。l 实例化(intantiate) 由类定义创建对象。l 继承(inheritance) 创建子类的机制,一种“is a”或“is like”关系,形成类层次结构。是OOP中对象重用的核心概念。l 子类(subclass) 继承自另一个类的派生类(derived class)。l 超类(superclass父类) 被另一个类继承的基类(base class)。l 虚函数(virtual function) 可以在子类中被覆盖(override)的函数。l 纯虚函数(pure virtual function) 只有声明没有定义的函数,必须在派生类中被覆盖。l 抽象类(ab
15、stract class) 至少包含一个纯虚函数的类,不能被实例化。l 具体类(concrete class) 可以实例化的类,不包含纯虚函数。l 接口(interface) 纯抽象的类,类的模版。接口中的所有的方法(成员函数)都只有声明,没有定义(都是纯虚函数)。必须在接口的派生类中,实现接口的全部方法。接口可以看成是一个,定义了一套内部行为的,若干操作特征标记的集合。(在C+中,也把类的公用成员函数叫做接口)。l 属性(attribute) 类和接口中的数据信息,又叫数据成员(data member)或成员变量(member variable)。属性是类知道的事物。l 方法(method)
16、 类操作的实现,又叫成员函数(member function)。方法是类要做的事情。(在C+中,也把虚函数叫做方法)。l 重载(overload) 一个类中的,参数的数目、类型或排列顺序不同的多个同名方法(成员函数)。l 覆盖(override) 在子类中重新定义(与父类中的定义有区别的)属性和方法。l 持久化(persistence) 将对象存入永久存储中(如文件、数据库等)。l 持久对象(persistent object) 存入永久存储的对象。1.4.2 面向对象的C# 编程1类类类型定义包含数据成员、函数成员和嵌套类型的数据结构,其中数据成员包括常量和字段,函数成员包括方法、属性、事件
17、、索引器、运算符、实例构造函数、析构函数和静态构造函数。类类型支持继承,继承是派生类可用来扩展和专门化基类的一种机制。功能与C+/CLI的可见性说明符类似,只是增加了static修饰符。partial(分部的)用于定义分部类、结构和接口等对象类型,即将它们的定义分成多个部分,保存到多个代码文件中。这是C# 2.0新引进的功能,用于解决大型对象类型的定义问题,因为C# 不支持类体之外的方法和函数体定义。(1)访问修饰符类成员可以有如下访问修饰符(access modifiers):l public(公用的)访问无限制。l protected(保护的)只可被包含类(containing class
18、)或其派生的类型访问。l internal(内部的)只能被此程序访问。l protected internal(保护内部的)只能被此程序或其包含类所派生的类型访问。l private(私有的)只能被其包含类访问,为默认的。C# 类的public、protected、private等成员修饰符,每次只能修饰一个成员,直接位于成员声明的开始处,而且没有冒号分隔符。而不是像C+那样,一个修饰符可以修饰位于其后(直到下一个修饰符为止)的若干成员。(2)数据成员类的数据成员(data member)有: 属性 常量修饰符 const标识符 = 常量表达式 , ;其中,常量修饰符有:new、public、
19、protected、internal、private及它们的有效组合。类的数据成员可以是静态数据(使用了static修饰符),也可以是实例数据(未使用static修饰符)。静态数据为类的所有实例对象所共有,而实例数据则每个实例对象都自己的副本。常量默认是(总是)静态的。字段还可以是只读的(使用了readonly关键字,这是C# 新增的)和易变的(使用了volatile关键字,字段值一般位于CPU中的寄存器中,高效但是有效期短暂)。(3)函数成员类的函数成员(function member)有:l 属性(property)提供对对象或类的特性(characteristic)进行访问的成员。声明格
20、式为:其中,属性修饰符与方法修饰符相同,访问修饰符有protected、internal、private、protected internal和internal protected,与类成员的普通访问修饰符相比,没有public、多了internal protected(内部保护的)。l 事件(event)定义该类可生成的通知(notifications)。在发生某些行为时,可让对象通知程序。客户程序可以调用事件处理程序代码来响应该事件。声明格式为:其中,事件修饰符与方法修饰符相同。l 索引器(indexer)允许对象像数组一样被索引的一种成员。声明格式为:其中,索引器修饰符与方法修饰符类似,
21、只是少了static。l 用户定义的运算符(operator)运算符重载函数。声明格式为:l 构造函数(constructor)包括实例构造函数和静态构造函数。n 实例构造函数(instance constructor)实现初始化一个类实例所需的行为,会在创建每个类实例时被系统调用。注意:因为C# 会自动给字段初始化,所以构造函数在C# 中的作用没有在C+的大。格式为:类型名(参数列表);注意:即使调用没有任何参数的默认构造函数,也不能省去后面的圆括号“()”,不然是语法错误。例如:A a = new A();n 静态构造函数(static constructor)实现初始化一个类所需的行为,
22、会在程序装入时被系统调用。为类编写无参数的具体构造函数是C# 的一个新特征,主要用于类的静态字段或属性的运行时初始化。格式为:static 类型名(参数列表);l 终结器(finalizer)在C# 的旧版本中叫析构函数(destructor),但由于引用类型的对象是位于具有垃圾内存自动回收功能的CLR堆上,所以C# 中的析构函数的功能与C+的很不一样。为了与C+的析构函数有所区别,在C# 的新版本中,改叫终结器。格式(与C+的析构函数相同)为:类型名();。2结构C# 中的结构(struct)与C+中的类似,也可以封装数据和函数(属性和行为),是一种轻量级的类。但是它与C# 的(位于CLR堆
23、中的)类(为引用类型)不同,它是一种(位于局部栈中的)值类型。1)结构与类的区别C# 中的结构与类的区别有:l 结构是值类型,而类是引用类型。l 结构是密封的(sealed),因此不能被继承。l 结构不能继承类和其他的结构。l 结构隐式地继承了System.ValueType类型。l 结构的(无参数)默认构造函数不能被自定义的构造函数取代。l 结构的自定义的构造函数,必须初始化结构中全部成员的值。l 结构没有析构函数。l 不允许初始化结构的字段,但是可以初始化结构的常量成员。2)结构声明结构的完整声明格式为:其中,结构的修饰符与枚举修饰符相同:new、public、protected、inte
24、rnal、private,但是与类的有所不同:因为C# 的结构不支持继承,所以没有类的sealed和abstract修饰符;也没有static修饰符;还与C+一样,结构的默认修饰符为public(类的默认修饰符为private)。结构成员声明与类的基本相同,只是没有finalizer-declaration(终结器声明,即析构函数定义)。C# 的结构和类一样,其public、protected、private等成员修饰符,每次只能修饰一个成员,也是直接位于成员声明的开始处,而且也没有冒号分隔符。而不是像C+那样,一个修饰符可以修饰位于其后(直到下一个修饰符为止)的若干成员。3分部类和静态类分部
25、类和静态类都是C# 所特有的,而且都是C# 2.0版新增加的。前者允许将一个类、结构或接口的定义,放到多个文件中;后者则是仅包含静态成员的类。1)分部类分部类和结构是在类和结构的声明中,使用了partial修饰符的类和结构。位于不同文件中的同一个分部类,必须位于同一个命名空间或包含类型(对嵌入式分部类)之中,而且在所有类修饰符必须完全一致。对泛型类,还要求声明中的类型参数和对类型参数的约束也完全一致。但是类的属性、基类和实现接口的列表却可以不同。另外,分部类也可以用作嵌套类,不过其包含类必须也是分部类。编译时,编译器会合并位于不同文件中的同一个分部类的XML注释、属性、基类、接口和成员。2)静
26、态类静态类是在类的声明中,使用了static修饰符的类。静态类中只能包含静态成员,可以用静态构造函数来初始化这些静态成员。静态类是密封的(不能派生其他类),静态类不能被实例化,也不能包含实例构造函数。静态类一般用于定义公用的常数和方法(如.NET中的Math类),使用时不需要创建实例,直接用“类名.字段”或“类名.方法”即可。例如:1.4.3 接口与继承继承(inheritance)是面向对象的基本特征,所有的C# 类和结构都是直接或间接地从类Object派生的。C# 中没有明确指出基类的类,都以Object作为其默认基类。C# 中的结构不支持继承,但是C# 支持类的单一继承(single i
27、nheritance),多重继承的问题(与Java一样)需通过接口来解决。1接口接口(interface,界面)的概念来源于组件编程的思想。接口定义统一的公用方法的原型,但是不包含方法的具体实现代码,方法体(代码)由实现接口的类来定义(编写)。所以接口定义的是一种契约(contract),实现该接口的类则遵守(adhere)此契约。接口相当于组件的界面,供使用组件的用户查询和调用,而实现接口的类则是组件的编码模块本身。在C# 中,一个接口可以继承自多个接口,一个类也可以实现多个接口。实现某个接口的类,必须实现该接口中的所有方法。2继承的种类C# 中的继承有两种类型:l 实现继承(类继承)派生类
28、型继承了基类型的所有成员,包括方法、属性、事件和索引的实现代码,派生类既可以直接调用基类的各种函数成员的实现代码,也可以自己编写代码来覆盖或重写它们,还可以为派生类添加新的数据和函数成员。l 接口继承(非实现继承)派生类型只继承了基类型中的函数签名(signature of a function),包括函数名、类型参数的个数、每个形参(formal parameter)的类型和种类(kind,值、引用、输出),从左到右的顺序,但是不包括函数的返回类型、参数名称、类型参数的名称、以及可对最右边的参数指定的参数修饰符。而没有继承基类型中的实现代码。接口继承主要用于指定派生类应该具有什么特性和功能。
29、接口继承相当于接口的实现。C+只支持实现继承,VB则只支持接口继承,C+/CLI、Java和C# 都既支持实现继承,也支持接口继承,所以非常适用于编写基于组件的分布式软件。C# 中的结构,支持(多重)接口继承,但是不支持实现继承。即,你可以在结构中实现多个接口中定义的函数成员,但是你却不能从类或结构来派生新的结构,也不能从结构派生新的类。不过,用户定义的结构,总是自动派生于System.ValueType抽象类,还可以派生于(实现)多个接口。C# 中的类,则支持单一实现继承和多重接口继承。3方法的继承C# 中方法的继承关系非常多样,除了传统C+的虚函数(C# 增加了override修饰符)和纯
30、虚函数(即C# 的abstract抽象函数)外,还增加了隐藏方法(new)、密封方法(sealed)和基类方法的调用指令(base.方法名)等诸多新方式。1)虚方法override虚函数是面向对象编程中实现运行时多态性的标准途径,而编译时的多态性则是由具有同样函数名,但是函数签名不同的多个重载(overload)函数来实现的。与C+不同的是,在C# 中重写基类的虚方法时,必须使用C# 特有的重写修饰符override(覆盖)。2)隐藏方法new在C+中,不需要添加任何修饰符,就可以任意重载或覆盖基类的虚函数和非虚函数,但是在C# 中,这样做会得到一个编译警告。目的是,为了避免程序员的笔误,也为
31、了适应代码的维护与升级。解决办法是,上面介绍过的使用override修饰符来明确重载基类的虚方法,以及使用new修饰符来显式隐藏(覆盖)基类中具有同样签名的(非虚)方法。第二章 系统开发背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。图书馆作为一种信息资源的
32、集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统、规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工
33、操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这些问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。第三章 需求分析3.1 应用需求分析图书管理系统需
34、要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护及系统状态的查看、维护并生成催还图书报表。3.2实际需求分析图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的
35、借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删
36、除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息。 第四章 可行性分析4.1 环境可行性分析由于本系统管理的对象单一,都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。本系统的设计是在Windows XP操作系统环境下,使用Visual Studio.NET 2003中文版开发成功的。Visual Studio具有以下特点:4.2 面向对象的程序分析1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何
37、创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作
38、所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。4、面向对象设计的核心是类的设计。例如:可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。第五章 系统概要设计5.1 模块分析5.1.1 功能模块图 图示 3.2.15.2 模块分析5.2.1 “图书资料管理”模块“图书资料管理”模块主要实现图书资料的分条浏览、添加、修改、删除、查询和打印功能。在表单的“书籍资料”页框中可以通过“移动记录工具栏”分条查看系统内所有的图书的详细资
39、料,包括图书的名称、类别、作者、出版社、购买日期等。单击“命令按钮工具栏”中的按钮可以对 “书籍资料”页框中的记录进行相应的操作。5.2.2 “学生资料管理”模块“学生资料管理”模块主要实现学生资料的分条浏览、添加、修改、删除、查询和打印功能。在表单的“学生资料”页框中可以通过“移动记录工具栏”分条查看系统内所有的学生详细资料,包括学生姓名、性别、系别、班级等资料。单击“命令按钮工具栏”中的按钮可以对“学生资料”页框中的记录进行相应的操作。5.2.3 “借还书操作”模块“借还书操作”模块主要实现读者借书记录的查看、借还书操作、图书借阅排行榜、查看逾期未归还图书和记录打印等功能。读者借书记录查看
40、功能可以查看所有的借书记录 ,也可以只查看目前尚未归还的借书记录。在“读者借书记录”表单中单击“借书”按钮 ,在打开的“输入”表单中 ,输入要借出的图书编号 ,如果该图书在馆中而且该读者还能借书 , 则借书成功。“读者借书记录”表单中单击“还书”按钮 , 在打开的“输入”表单中输入要归还的图书的图书编号 ,如果该图书是被当前读者借出 ,则还书成功。当表单中显示的是读者未归还的图书列表时 , 在列出借书记录的表格中双击要归还的图书的“图书编号”栏即可将此图书还入。在“读者借书记录”表单中 , 单击“过期”按钮 , 可以查看系统内到了归还日期而未归还的图书的借阅记录。在“读者借书记录”表单中 ,单
41、击“排行”按钮 ,可以查看系统内借阅次数在所有图书内排行前10名的图书的列表。第六章 详细设计6.1 设计创建数据库6.1.1 设计数据库本系统实现了系统登录功能 , 而系统登录需要账号和密码 , 这就需要 创建一个“系统帐号”(Accounts) 数据表 , 用来存储系统登录用的账号和密码。本系统要实现图书资料和学生资料的管理 , 所以需要创建 “学生信息” (Student)数据表和“图书信息 ”(Book) 数据表。 “学生信息 ”(Student) 数据表中包含了学生的“系别”信息 , 在本系统中为了简化系别的管理 , 另外创建了一个“系别”(Xibie)数据表用来存储系别的信息 ,
42、在“学生信息”(Student) 数据表中只存储系别的编号。由于系统要实现读者借还书功能、还要实现读者借还书记录的查看 ,所以还需创建一个“读者借书记录 ”(JyRec) 数据表来保存读者的借阅记录。6.1.2 创建数据库“图书借阅管理系统”作为一个完整的数据库管理系统 , 在创建阶段利用项目管理器可以更好组织管理各种格式的文件 , 因此首先需要创建一个项目 , 然后在项目管理器创建其他格式的文件。在 VFP 主窗口中选择“文件”菜单下“新建”子菜单 , 在打开的“新建”对话框的“文件类型“区域中选中”项目”,然后单击右侧的”新建文件”按钮,打开”创建“对话框中的”项目文件“文本框中输入项目名
43、称 , 在此输入 Tushu”,单击“保存”按钮即创建了一个项目。在项目管理器的“数据”选项卡中选中“数据库”单击右侧的“新建”按钮,在弹出的“新建数据库”对话框中单击“新建数据库”, 在弹出的“创建”对话框的“数据库名”文本框中输入数据库的名称 , 在此输入“Tushu”作为数据库名 , 单击“保存“按钮即创建了一个空的数据库。在项目管理器的“数据”选项卡中打开刚才创建的“Tushu”数据库的目录树,选中“数据表”,单击右侧的“新建”按钮即可开始数据表的创建。系统关系图如下图所示图示 4.1.2本系统中要用到的数据表的字段的属性设置分别设置如下。“系统账号”(图书卡号) 数据表的宇段属性设置
44、如表 1 所示。表1“图书卡号”(LentCardType)数据表字段属性设置字段名数据类型说明帐号字符型字段宽度20,主索引字段,不能为空姓名字符型字段宽度20密码字符型字段宽度20创建“系统账号”(图书卡号) 数据表后向数据库中添加一条记录作为系统的默认帐号,该记录的各字段的值如下 :“cyr”,“cyr”,“楚雅茹”。“学生信息”(BookInformation) 数据表各字段的属性设置如表 2 所示。表2“图书类型”( BookInformation)数据表字段属性设置图书Id数据类型说明图书编号字符型字段宽度6,主索引字段,输入掩码为“999999”书名字符型字段宽度20作者名字符型
45、字段宽度20出版社字符型字段宽度4,为普通索引出版日期字符型字段宽度10图书价格字符型字段宽度12,输入掩码为“999#9999999”邮件字符型字段宽度30借出次数数据类型整数据;图书状态字符型字段宽度10“系别信息”(图书类别)数据表各字段的属性设置如表3所示表3“图书类别”( 图书类别)数据表字段属性设置类型编号字符型字段宽度4,主索引字段,输入掩码为“9999”类型名称字符型字段宽度20“图书信息”(Book)数据表各字段的属性设置如表4所示表4“图书信息”(Tushu)数据表字段属性设置字段名数据类型说明图书编号字符型字段宽度6,主索引字段,输入掩码为“AA9999”图书类别字符型字段宽度10图书名称字符型字段宽度40图书作者字符型字段宽度20出版社字符型字段宽度40购买日期日期型字段宽度8购买价格货币型字段宽度8借阅次数数值型字段宽度4,默认值0是否借出逻辑型字段宽度1,默认值“.F.”对“图书信息”(Book)数据表的字段属性设置需要说明的是“借阅次数”和“是否借出”字段的默认值一定要设置,因为对于新添加的图书,其一定是没有被借出的,而且其借阅次数一定是0,所以在表单中向数据表添加记录时,这两个字段应该是不需要添加的,可以由默认值生成。“读者借书记录”(JyRec)数据表的字段属性如表5所示。表5“读者借书记录”(ReaderInfor)数据表字段属性设置字段
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100