VB+Access毕业生管理信息系统
课程设计任务书内容
设计要求:若图片无法显示请联系站长QQ3710167
(1)信息要求
本系统应该包含与毕业生管理相关的信息,如毕业生基本信息、毕业生就业信息、其中毕业生基本信息应该包括:毕业生的编号、姓名、性别、民族、籍贯、毕业时间、专业、政治面貌等信息;毕业生就业信息应该包括:毕业生的编号、就业时间、工作单位、工作性质、职务、地址等。
(2)功能要求
本系统的基本功能要求如下:
毕业生基本信息维护;
毕业生就业信息维护;
毕业生就业情况查询(不确定查询);
按专业划分的就业情况统计;
用户管理(含用户权限的设置)。
第一章 系统设计概述
1.1系统开发的目的与意义
本系统是为了管理好毕业生的信息而设计的。学校作为一种信息资源的集散地,学生数量比较多,包含很多的信息数据的管理,现今,有很多的学校都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于毕业生情况的统计和查询等往往采用人工操作进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管学校都有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。学校采取手工方式对毕业生信息进行人工管理,由于信息比较多,管理工作混乱而又复杂;一般毕业生的信息只是记录在文件上,每次在文件资料中翻阅查找都费时、费力。如要对很长时间以前的毕业生信息进行更改或查询就更加困难了。
基于这些问题,我认为有必要建立一个毕业生管理信息系统,使毕业生信息管理工作规范化,系统化,程序化,避免毕业生信息管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改毕业生的情况。
1.2系统开发背景
随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大,从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。数据库技术已成为信息社会中对大量数据进行组织与管理的重要技术手段及软件技术,是网络信息化管理系统的基础。它不仅有完整的理论基础,而且随着硬件技术与软件技术的飞快发展,它的应用也越来越广泛。
第二章 可行性研究与需求分析
2.1可行性研究
2.1.1技术可行性
一个完备的毕业生管理信息系统具有以下优越性:
方便校领导查询毕业生的就业情况,节省时间,可以提高系统的工作效率和准确性。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在查询毕业生信息时发挥高效、便捷的作用,把系统管理员从繁重的工作中解脱出来!
该毕业生管理信息系统是以ACCESS数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和管理维护,为毕业生信息提供管理。
2.1.2经济可行性
经济可行性主要依据是成本/效益分析,该系统的目标是以最低的成本,在最短的期限内开发出毕业生管理信息系统。系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大大节省了学校能源。并且计算机的存储与快速查询功能大大提高了毕业生信息管理的效率,并且还提高了毕业生信息管理的精确度。
方便快速的操作,可减少毕业生信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支。为学校增加了财富。
目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上比较低。而且,目标系统并不是十分的复杂。当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时,也为系统的进一步推广创造了条件。这带来的经济回报将远超过支出,并且最重要的是该软件的开发可以使我们对系统的开发有全面的认识。从经济角度考虑,此毕业生管理信息系统开发可行。
2.1.3操作可行性
用户仅需具有基本的电脑操作能力即可。
2.1.4社会因素可行性
从法律因素和安全用正版和免费角度考虑,所有技术参考资料都经授权,所有软件都选。
2.1.5可行性研究结论
依据以上因素,本毕业生管理信息系统开发项目不仅方便快捷、高效,而且社会效
VB+Access毕业生管理信息系统
益比较好,从而使本系统开发者相信该系统开发出来之后将取得的成功。
综上所述,此项目在技术、经济、操作和社会效益上是完全可行的。
2.2需求分析
2.2.1系统的目的
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。
学校的规模不断扩大,毕业生数量急剧增加,有关毕业生的各种信息量也成倍增加。面对庞大的信息量,需要有专门的毕业生管理系统来提高工作的效率。本系统为毕业生管理信息系统,通过这样的系统,可以做到信息的规范管理,快速查询毕业生的就业信息。其开发主要包括数据库的建立和维护以及前端应用程序的开发两个方面。
2.2.2系统功能及用户需求分析
毕业生管理信息系统需要满足来自三方面的需求,这三个方面分别是教育局领导、校领导以及学生。教育局领导可以查询某学校总的就业情况以及各个专业分别的就业人数情况。校领导可以查询某毕业生的基本情况及各个专业的就业情况。学生可以对毕业生就业信息进行查询及相关专业毕业生的就业人数进行查看。学生可以根据本人学号和密码登录系统,还可以进行本人基本情况的查询和维护部分个人信息。一般情况下,学生只应该查询和维护本人的基本情况和个人信息,若查询和维护其他学生的信息,就要知道其他学生的学号和密码。这些是很难得到的,特别是密码,所以不但满足了学生的要求,还保护了学生的个人隐私。
1.功能需求
1)用户管理:用于对用户的添加,更新及修改。
2)毕业生基本信息管理:用于对毕业生基本信息的输入、查询、添加。
3)毕业生就业信息管理:用于对毕业生就业信息、相关专业就业情况的查询,添加。
2.用户需求
本系统把用户划分为3类:教育局领导、校领导以及学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。
教育局领导在本系统的功能有:查询某学校总的就业情况以及各个专业分别的就业人数情况。
校领导在本系统的功能:查询某毕业生的基本情况及各个专业的就业情况。
学生在本系统的功能:查询毕业生就业信息以及相关专业毕业生的就业人数。
2.2.3数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据流图的基本目的是利用它作为交流信息的工具,还有一个重要的作用就是作为分析和设计的工具。
一个完整的软件系统需要有一个完整的、系统化的数据流向,数据的输入输出以及数据在整个过程中经过哪些路径,都尽可能的在数据流图中表示出来,数据流是处于运动中的数据。下面就是针对本开发系统而设计的“数据流程图”
顶层数据流图:
图2.1 顶层数据流图
二层数据流图:
图2.2 二层数据流图
2.2.4数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。
VB+Access毕业生管理信息系统
下面用数据字典来定义数据流图中各元素的确切内容:
1)数据项定义:
表2-1专业信息数据表
数据名称
数据类型
长度
说明
专业编号
字符型
3
英文字母或数字
专业名称
字符型
15
小于10个汉字
就业人数
字符型
5
英文字母或数字
就业率
数值型
10
数字
表2-2学生信息数据表
数据名称
数据类型
长度
说明
学号
数值型
12
头四位代表入学年份
姓名
字符型
8
小于10个汉字
性别
字符型
2
男或女
出生日期
日期型
8
家庭住址
字符型
10
小于15个汉字
联系电话
字符型
4
仅限数字
备注
字符型
30
表2-3单位信息数据表
数据名称
数据类型
长度
说明
单位编号
数值型
5
英文字母或数字
单位名称
字符型
10
小于15个汉字
2)数据流定义:
名称:学生信息
别名:
描述:用来说明学生的基本信息
定义:学生信息=学号+姓名+性别+出生日期
位置:学生信息表
名称:基本信息
别名:分类后的毕业生基本信息
描述:用来说明毕业生的基本信息
定义:毕业生基本信息=学号+姓名+性别+出生日期+家庭住址+联系电 话+备注
位置:毕业生基本信息表
名称:就业信息
别名:分类后的毕业生就业信息
描述:用来说明毕业生的就业信息
定义:毕业生就业信息=姓名+单位编号+单位名称+就业人数
位置:毕业生就业信息表
名称:更新后的就业信息
别名:
描述:用来说明更新后的就业信息
定义:更新后的就业信息=姓名+单位编号+单位名称+就业人数
位置:更新后的就业信息表
名称:专业信息
别名:归类后的就业信息
描述:用来说明根据专业信息归类后的就业信息
定义:专业信息=专业系号+专业系名+就业人数
位置:归类后的就业信息表
3)数据存储定义:
名称:学生信息表
编号:D1
输入: 输出:1,2
数据结构:学号+姓名+性别+出生日期
说明:学生学号唯一
名称:毕业生基本信息表
编号:D2
输入: 1,2,3.1 输出:
数据结构:学号+姓名+性别+出生日期+家庭住址+联系电话+备注
说明:学生学号唯一
名称:毕业生就业信息表
编号:D3
输入: 1,2,3.2 输出:
数据结构:姓名+单位编号+单位名称+就业人数
说明:学生学号和单位编号唯一
名称:新的毕业生信息表
编号:D4
输入:4.1 输出:
数据结构:学号+姓名+性别+出生日期+家庭住址+联系电话+备注
说明:学生学号唯一
名称:新的毕业生就业信息表
编号:D5
输入:4.2 输出:
数据结构:姓名+单位编号+单位名称+就业人数
说明:学生学号唯一
名称:分类后的就业信息表
编号:D6
输入:5 输出:
数据结构:专业系号+专业系名+就业人数
说明:专业系号唯一
2.2.5安全性、完整性需求
本软件作为毕业生信息管理设备,它的规模比较小,不需要保密技术;只需限定一个程序中某些区域的规约,给不同的模块分配不同的功能即可。本系统的源程序采用VB编写,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
VB+Access毕业生管理信息系统
第三章 项目设计的基本原理和采用的主要方法与技术
3.1项目设计的基本原理
软件工程是一门从技术和组织管理两个角度研究如何用系统化、规范化和数量化等工程原理与方法去进行软件开发和维护的学科。软件工程学研究的范围非常广泛,包括技术方法、工具、和管理等许多方面。软件生命周期的各个阶段可分为:
问题定义: 确定系统的基本功能
可行性研究: 确定系统是否能够实现及是否值得实现
需求分析: 确定系统必须完成的各种功能
总体设计: 确定如何实现软件
详细设计: 详细设计实现系统
编码和单元测试: 写出正确的容易理解和维护的程序模块
综合测试:通过各种类型的测试及调试使软件达到预定的要求
软件维护:通过各种必要的维护活动使系统持久地满足用户需要
采用软件工程的技术方法开发本系统,通过以上八个阶段组成软件的生存期。它是指从提出开发要求开始直到该软件报废为止的整个时期。分阶段进行,就把规模庞大、结构复杂和管理复杂的软件变得容易控制和管理。正是基于此思想,本系统开发实际可行的软件,方便毕业生信息的管理。
3.2项目设计采用的主要技术
本系统主要利用Visual Basic作为前端的应用开发工具 ,利用Access作为后台的数据库,利用Windows XP作为系统平台。
Windows XP以其友好的图形界面、易学易用的操作方法、强大的多任务功能、健全的内在管理以及先进的程序设计方法为广大数据库软件开发人员所熟悉。对它的操作环境的熟悉,使得我们在其上开发数据库应用程序更加方便、可靠。
1)Access数据库
在办公软件Office套件中,最为广大用户熟悉的是Word和Excel,因为它们功能强大且方便易用,更因为它们不仅可用于办公,还可用于个人写作和家庭记帐理财等。同为Office套件中一部分的Access,虽然有着同样强大的功能,但使用的人却相对少些,不像Word和Excel那样广泛。Access97 数据库管理系统是Microsoft Office97 套件的重要组成部分,是Access的最新版本,可在Windows 95环境下运行。Access97适用于小型商务活动,用以存贮和管理商务活动所需要的数据。Access97不仅是一个数据库,而且它具有强大的数据管理功能,它可以方便地利用各种数据源,生成窗体(表单),查询,报表和应用程序等。与Access以前的版本比较,Access97新增了许多功能,字段类型增加了OLE对象和超级链接,特别是与Internet的融合,在数据库中可以直接链接到指定的Web页面或网络文件,也可以把Web页面上的表格导入到数据库。Access 97可以方便地利用各种数据源,包括dBASE, FoxBase,FoxPro,Excel,Word 等。Access 97增加了数据库访问的安全机制,可对表一级设置访问许可权。Access97还可以方便地利用FoxPro数据库、Excel电子表格的数据,还可以和Word混合使用,打印通用信函或信封。
2)Visual Basic语言
Visual Basic是一种可视化的、面对对象和调用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
Visual Basic的特点:
可视化编程:最直观的编程方法,程序人员只需绘制界面,无需编程, VB自动产生界面代码,就可以完成许多步骤。这样大大的提高了程序设计的效率。这些在以前的编程语言下是要经过相当复杂的工作的。
面向对象的程序设计思想:
对象:现实世界中的实体,如汽车。
属性:描述对象的特征,如车的颜色。
方法:向对象实施的动作,如启动车。
事件:动作所触发的操作,如红灯亮。
事件驱动的编程机制:
由事件来引发程序的运行。
结构化的程序设计语言。
支持多种数据库系统的访问。
3.3 数据访问技术
ADO.NET 提供对 Microsoft SQL Server 等数据源以及通过OLE DB和XML公开的数据源的一致访问。数据共享使用者应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据。ADO.NET有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET包含用于连接到数据库、执行命令和检索结果的.NET Framework数据提供程序。您可以直接处理检索到的结果,或将其放入ADO.NET DataSet对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。ADO.NET DataSet 对象也可以独立于.NET Framework 数据提供程序使用,以管理应用程序本地的数据或源自XML的数据。
3.4 数据库系统设计及范式分析
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
数据库设计的步骤是:
(1)数据库结构定义:目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有联机分析处理CLAP(指为支持决策的制定对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的DBMS,进行数据库结构定义。
(2)数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。
VB+Access毕业生管理信息系统
(3) 存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。
(4) 数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。
(5) 数据字典设计:用数据字典描述数据库的设计,便于维护和修改。
为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:
规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。
关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。
建立关系数据结构涉及三方面内容:确定关联的关键指标项并建立关联表;确定单一的父系记录结构;建立整个数据库的关系结构。
(1)链接关系的确定
在进行了上述数据规范化重组后,已经可以确保每一个基本数据表(我们简称为表)是规范的,但是这些单独的表并不能完整地反映事物,通常需要通过指标体系整体指标数据才能完整全面地反映问题。也就是说在这些基本表的各宇段中,所存储的是同一事物不同侧面的属性。那么计算机系统如何能知道哪些表中的哪些记录应与其它表中的哪些记录相对应,它们表示的是同一个事物呢?这就需要在设计数据结构时将这种各表之间的数据记录关系确定下来。这种表与表之间的数据关系一般都是通过主或辅关键词之间的连接来实现的。因为在每个表中只有主关键词才能唯一地标识表中的这一个记录值(因为根据第三范式的要求,表中其它数据字段函数都依赖于主关键词),所以将表通过关键词连接就能够唯一地标识出某一事物不同属性在不同表中的存放位置。
(2)确定单一的父子关系结构所谓确定单一的父系关系结构就是要在所建立的各种表中消除多对多(以下用M:N来表示)的现象,即设法使得所有表中记录之间的关系呈树状结构(只能由一个主干发出若干条分支,而不能有若干条主干交错发出若干条分支状况)。
所谓的“父系”就是指表的上一级关系表。消除多对多关系可以借助于E-R图的方法来解决,也可以在系统分析时予以注意,避免这种情况的发生。
第四章 总体设计
4.1总体设计原理
总体设计的基本目的就是回答“概括的说,系统应该如何实现?”这个问题。因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互之间的关系。
总体设计工程通常有两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计确定软件结构,也就是要确定系统中每个程序拥有哪些模块组成的,以及这些模块之间的关系。在详细设计之前进行总体设计可以站在全局的高度上,花较少的成本,从中选出最佳方案和最合理的软件结构,从而用较低的成本开发出高质量的软件系统。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序的错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试。应而有助于提高系统的可靠性。并且模块化还能够提高软件的可修改性,也有助于软件开发工程的组织管理。因此,在进行软件结构设计时应该遵循的最主要的原理就是模块化独立原理。
4.2 运行环境与系统结构
为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛用于内部的局域网。其运行要求如下:
软件环境:
客户端: Windows98/NT/XP,Internet Explorer(IE)等
服务器端:Windows NT/Windows2000,Internet Information Server (IIS)4.0及其以上版本,IE等;或者Windows98,Personal Web Server(PWS),IE等。
数据库:采用SQL Server,运行于服务器端。
硬件环境:
服务器 CPU:PIII 500以上 ,内存:256M以上
客户机 CPU:P200MMX以上,内存:32M以上
4.3系统流程图
系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
图4.1系统流程图
4.4系统功能模块图与设计
模块化就是把程序划分成独立命名且可独立访问的的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因
VB+Access毕业生管理信息系统
而有助于提高软件的可靠性。一个好的电子系统要有一些必要的模块组成,若缺少了某些模块那么这个系统就会有缺陷。
1)毕业生管理信息系统需要实现的功能主要有三大块,系统的功能模块图如下图所示:
图4.2功能模块图
2)功能的实现:
用户管理模块:用于对用户的添加,更新及修改。
毕业生基本信息管理模块:用于对毕业生基本信息的输入、查询、添加、修改、删除。
毕业生就业信息管理模块:用于对毕业生就业信息、相关专业就业情况的查询,添加、修改、删除。
本系统性能力求易于使用, 具体有较高的扩展性和可维护性。
4.5系统功能分析
权限功能:为用户设置权限功能,可分为普通用户,一般用户,超级用户。普通用户只是查询不能修改,一般用户只能对授权范围内进行相应修改及删除,超级用户能修改、删除所有信息。
录入功能:为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功能。
查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。
维护功能:为一般用户提供查询及相应的修改,删除功能,为超级用户提供对所有信息的修改删除功能。
帮助功能:能帮助初次使用者对本系统的应用及处理常见的问题。
退出功能:结束并关闭系统。
4.6关系模型
毕业生(学号、姓名、性别、出生日期、家庭住址、联系电话、备注、专业编码、单位编码)
专 业(专业编码、专业名称、就业人数)
单 位(单位编码、单位名称)
4.7系统安全与维护措施
本系统采用直接方式添加记录,该方法直接而简单,为了避免输入有错误,该功能界面对用户容易出错的地方都给出了输入提示,同时也使用了更新和取消按钮来确认数据的取消输入,如果输入数据与实际数据不相复,则系统会给出提示信息,让你重新输入正确的数值。
安全策略:此管理系统也为系统用户提供了一定的安全性,该系统可以多人使用,每人使用不同的用户名和密码进入系统,但只有系统管理员的权限可以进行用户的管理(如:用户的添加、用户的修改、用户的删除等),其它用户都不能对用户进行操作。
系统数据维护:一个好的信息管理系统,应该为系统提供处理系统故障,恢复系统数据的功能。该系统也同样提供了数据维护(包括对数据的备份、恢复)两项功能。建议用户定期备份系统数据,这样在系统出现问题时,可以进行有效地恢复。
第五章 详细设计
5.1数据库的概念设计
根据对数据流图和数据字典的分析,确定该应用中的实体、属性和实体之间的联系,并画出系统总体的E-R图。概念设计可分为三步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
5.1.1局部E-R模式设计
实体和属性的定义。ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。
利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
1) 局部ER模式的合并
合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。
2) 消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。
3) 全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还
VB+Access毕业生管理信息系统
应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
各个实体的E-R图如下所示:
图5.1 毕业生信息E-R图
图5.2 专业信息E-R图
图5.3 单位信息E-R图
5.2.2全局E-R设计
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
图5.4全局E-R图
5.2数据库的逻辑设计
数据库的逻辑设计的任务就是把概念结构设计阶段的基本E-R图转化为与选用具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,首先要实现的是E-R图关系模型的转化。而为此要解决的问题是如何将实体和实体之间的联系转化为关系模式,如何确定这些关系模式的属性和码。对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。
对于实体间的联系,可以分成三种情况:
1.若实体间的联系是1:1,可以在两个实体转换成的两个关系中任意一个关系的属性中加入另一个关系的码。
2.若实体间的联系是1:n,则在n端实体转换成的关系中加入1端实体转换成的关系码。
3.若实体间的联系是n:m,则将联系转换为关系,关系的属性为诸个实体的码加上联系具有的属性,而关系的码则为诸实体的码的组合。
本系统中所涉及到的关系的主码与外码如下所示:
专业信息(专业编码,专业名称,就业人数)
毕业生信息(学号,姓名,性别,出生日期,家庭住址,联系电话,备注,专业编码,单位编码)
单位信息(单位编号,单位名称)
5.3程序流程图
程序流程图也称程序框图,它的历史比较悠久,使软件开发者所熟悉和普遍采用的一种算法表达工具。
程序流程图的优缺点:
1)由于不支持逐步求精,它使程序员过早的考虑程序控制细节,而不考虑程序整体结构。
2)流程线转移不受限制,容易破坏程序的整体结构。
3)不适于表达数据结构和模块调用关系。
4)描述过于琐碎,不利于理解大型程序。
VB+Access毕业生管理信息系统
图5.5程序流程图
第六章 编码实现与调试
6.1登录界面
图6.1 登录界面图
Private Sub Command1_Click()
Form1.Hide
Form2.Show
End Sub
6.2密码窗口界面
图6.2 密码窗口界面图
Private Sub Command1_Click()
'检查正确的密码
If Text1 = "123456" Then
'将代码放在这里传递
'成功到 calling 函数
'设置全局变量时最容易的
LoginSucceeded = True
Me.Hide
Form3.Show
Else
MsgBox "无效的密码,请重试!", , "登录"
Text1.SetFocus
SendKeys "{Home}+{End}"
End If
Text1.Text = ""
End Sub
Private Sub Command2_Click()
Form2.Hide
Form1.Show
End Sub
6.3主窗口界面
图6.3 主窗口界面图
Private Sub Command1_Click()
frm毕业生基本信息表.Show
Form3.Hide
End Sub
Private Sub Command2_Click()
Form3.Hide
frm专业信息表.Show
End Sub
Private Sub Command3_Click()
Form3.Hide
frm单位信息表.Show
End Sub
Private Sub Command4_Click()
Form3.Hide
Form2.Show
End Sub
6.4毕业生信息表界面
图6.4 毕业生基本信息表界面图
Private Sub Form_Load()
Set grdDataGrid.DataSource = datPrimaryRS.Recordset("ChildCMD").UnderlyingValue
End Sub
Private Sub Form_Resize()
On Error Resume Next
'当窗体调整时会调整网格
grdDataGrid.Width = Me.ScaleWidth
grdDataGrid.Height = Me.ScaleHeight - grdDataGrid.Top - datPrimaryRS.Height - 30 - picButtons.Height
End Sub
Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End Sub
Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
'错误处理程序代码置于此处
'想要忽略错误,注释掉下一行
'想要捕获它们,在此添加代码以处理它们
MsgBox "Data error event hit err:" & Description
End Sub
VB+Access毕业生管理信息系统
Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'为这个 recordset 显示当前记录位置
datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition)
End Sub
Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'验证代码置于此处
'下列动作发生时该事件被调用
Dim bCancel As Boolean
Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
If bCancel Then adStatus = adStatusCancel
End Sub
Private Sub cmdAdd_Click()
On Error GoTo AddErr
datPrimaryRS.Recordset.AddNew
Exit Sub
AddErr:
MsgBox Err.Description
End Sub
Private Sub cmdDelete_Click()
On Error GoTo DeleteErr
With datPrimaryRS.Recordset
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub
Private Sub cmdRefresh_Click()
'只有多用户应用程序需要
On Error GoTo RefreshErr
datPrimaryRS.Refresh
Set grdDataGrid.DataSource = datPrimaryRS.Recordset("ChildCMD").UnderlyingValue
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub
Private Sub cmdUpdate_Click()
On Error GoTo UpdateErr
datPrimaryRS.Recordset.UpdateBatch adAffectAll
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub
Private Sub cmdClose_Click()
frm毕业生基本信息表.Hide
Form3.Show
End Sub
6.5专业信息表界面
图6.5 专业信息表管理界面图
Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End Sub
Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
'错误处理程序代码置于此处
'想要忽略错误,注释掉下一行
'想要捕获它们,在此添加代码以处理它们
MsgBox "Data error event hit err:" & Description
End Sub
Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'为这个 recordset 显示当前记录位置
datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition)
End Sub
Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'验证代码置于此处
'下列动作发生时该事件被调用
Dim bCancel As Boolean
Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
If bCancel Then adStatus = adStatusCancel
End Sub
Private Sub cmdAdd_Click()
On Error GoTo AddErr
datPrimaryRS.Recordset.AddNew
Exit Sub
AddErr:
MsgBox Err.Description
End Sub
Private Sub cmdDelete_Click()
On Error GoTo DeleteErr
With datPrimaryRS.Recordset
.Delete
.MoveNext
VB+Access毕业生管理信息系统
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub
Private Sub cmdRefresh_Click()
'只有多用户应用程序需要
On Error GoTo RefreshErr
datPrimaryRS.Refresh
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub
Private Sub cmdUpdate_Click()
On Error GoTo UpdateErr
datPrimaryRS.Recordset.UpdateBatch adAffectAll
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub
Private Sub cmdClose_Click()
Form3.Show
frm专业信息表.Hide
End Sub
6.6单位信息表界面
图6.6单位信息表界面图
Private Sub Form_Resize()
On Error Resume Next
'当窗体调整时会调整网格
grdDataGrid.Height = Me.ScaleHeight - datPrimaryRS.Height - 30 - picButtons.Height
End Sub
Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End Sub
Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
'错误处理程序代码置于此处
'想要忽略错误,注释掉下一行
'想要捕获它们,在此添加代码以处理它们
MsgBox "Data error event hit err:" & Description
End Sub
Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'为这个 recordset 显示当前记录位置
datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition)
End Sub
Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'验证代码置于此处
'下列动作发生时该事件被调用
Dim bCancel As Boolean
Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
If bCancel Then adStatus = adStatusCancel
End Sub
Private Sub cmdAdd_Click()
On Error GoTo AddErr
datPrimaryRS.Recordset.MoveLast
grdDataGrid.SetFocus
SendKeys "{down}"
Exit Sub
AddErr:
MsgBox Err.Description
End Sub
Private Sub cmdDelete_Click()
On Error GoTo DeleteErr
With datPrimaryRS.Recordset
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub
Private Sub cmdRefresh_Click()
'只有多用户应用程序需要
On Error GoTo RefreshErr
datPrimaryRS.Refresh
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub
Private Sub cmdUpdate_Click()
On Error GoTo UpdateErr
datPrimaryRS.Recordset.UpdateBatch adAffectAll
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub
Private Sub cmdClose_Click()
Form3.Show
frm单位信息表.Hide
End Sub
VB与Access数据库连接通过在模块中定义连接函数实现,具体代码如下:
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public Function ConnectToServer() As Boolean
On Error GoTo ConnectErr
cn.Provider = "sqloledb"
cn.Properties("data source").Value = "KJ-A96E6B514C66"
cn.Properties("initial catalog").Value = "student"
cn.Properties("Integrated Security").Value = "SSPI"
cn.ConnectionTimeout = 30
cn.Open
ConnectToServer = True
Exit Function
ConnectErr:
ConnectToServer = False
MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接错误"
End Function
Public Function DisConnect() As Boolean
If cn.State = adStateOpen Then
cn.Close
End If
DisConnect = True
End Function
Public Sub crs(ByVal strsql As String)
On Error GoTo err1
Set rs = Nothing
rs.Open strsql, cn, adOpenDynamic, adLockOptimistic, -1
Exit Sub
err1:
MsgBox "错误信息:" & Err.Number & vbCrLf & _
"错误描述:" & Err.Description, vbCritical
Call DisConnect
End
End Sub
VB+Access毕业生管理信息系统
第七章 测试与运行记录
软件测试阶段的主要任务是发现并排除在分析、设计、编程各阶段中产生的各种类型的错误,以得到可使用的软件系统。
关于软件测试,很多人认为“测试是证实程序中不存在错误”、“测试的目的是要证实程序正确地执行了预期的功能”、“测试的过程是使人们确信程序可完成预期要完成的工作过程”等。但这些定义是有缺陷的。因为进行测试不应该只是为了证实程序的质量有多好,而应该从程序本身存在错误这个假定出发,从中发现尽可能多的错误。因此,软件测试的定义应该是:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。从这个定义出发,我们应该发发现了错误的测试看作是成功的测试,而没有发现错误的测试应该看作是失败的测试。
软件测试的目的:
(1) 测试是程序的执行过程,目的在于发现错误。
(2) 一个好的测试用例在于能发现至今未发现的错误。
(3) 一个成功的测试是发现了至今未发现的错误的测试。
因此,测试一般不可能发现程序中的所有错误,测试只能证明程序中存在错误,但不能证明程序中不存在错误。
7.1测试目的
在软件的开发过程中存在许多复杂的问题,为了保证软件在投入运行中;保证软件的质量和运行的安全行,测试过程是必不可少的,同时也是关键的。测试是为了发现软件在运行过程中所出现的问题,并在出现问题时能够及时的做出相应的修改。
7.2 测试目标
测试的目标是保证软件在投入运行中的安全性和稳定性。
7.3 测试方法
测试方法是测试过程中至关重要的环节,采用的测试方法不同所产生的效果和所用的测试经费也是不同的。一个好的测试方法能够提高测试的效率,缩短测试的时间,也能够减少测试的经费。
7.4 测试项目
测试的项目主要有以下几个方面的内容:
1)管理员登录测试
2)基本的输入和输出操作测试
3)输入错误时系统的正确反应
4)插入、删除及查询测试
7.5 测试记录与运行结果
7.5.1添加管理员测试
当输入新用户不存在时,如两次密码输入不一致,提示用户输入密码不一致,见下图:
图7.1 添加管理员测试
7.5.2修改管理员测试
当输入修改的用户名存在且原始密码正确,新密码两次输入一致,密码修改成功,见下图:
图7.2修改管理员测试(1)
当输入修改的用户名不存在,提示用户信息,见下图:
图7.3 修改管理员测试(2)
当修改用户原始密码正确,且输入新密码两次不一致时,提示用户密码不一致,见下图:
图7.4 修改管理员测试(3)
当输入原始密码错误时,不能修改用户密码,见下图:
图7.5 修改管理员测试(4)
7.5.3删除管理员测试
当输入原始密码错误时,不能删除用户,见下图:
图7.6 删除管理员测试(1)
当输入用户不存在时,提示用户不存在,见下图:
图7.7 删除管理员测试(2)
当输入用户名存在并且密码正确时,删除用户信息成功,见下图:
图7.8 删除管理员测试(3)
VB+Access毕业生管理信息系统
总 结
在需求分析阶段与总体设计阶段对各图形所代表含义有些模糊,导致经常出现使用错误,并多次修改。
在需求分析阶段,由于对过程的不熟悉和对软件需求理解不深,在画数据流图和编写数据字典时出现大量错误。
在软件程序编写阶段,对数据库和VB中调用及存储图片资料的方法不了解,导致功能无法实现。
在毕业生管理信息系统的设计过程中,我遇到了不少的难题。其中一些是因为缺少编程经验而出现的简单错误。而其中也有较为复杂的,通过自己的钻研和同学的帮助得到绝大部分的解决,这对我在编程有一定的帮助和积累经验作用。
在毕业生管理信息系统的完成过程中,首先遇到的就是数据库的建立问题。怎样合理地建表,设定几个字段名称,数据类型以及其他属性需要根据运行功能不断修改完善。第二个问题时由于时间的仓促,很多信息的输入没有做好有效字符的限定设置,就显得没有那么地正规。
这些问题虽然解决了不少,但我也发现了自身存在的很多问题:首先就是一个系统的需求分析阶段时,数据库的设计占有很重要的位置,要考虑地详细周全就要作好充分的调查,一个设计比较好的数据库可以减少数据的冗余,简化查询的过程和代码,方便查询,还可以提供较好的维护手段。这些在我以后的工作中都很有启发的价值。其次,就是程序设计的模块化的问题,一个好的软件,都将一些较为常用的功能模块化,使用于整个工程,很方便地实现调用,不但减少了代码的重复性,还使程序简洁易懂。这些都是我的程序中有待改善的地方。
本次数据库课程设计让我弥补了许多以前的不足和知识遗漏点,并对已经掌握的知识点进一步实践了一次。理解了软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,可行性分析也是如此。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,计算机的应用在生活中可以说得是无处不在。因此作为二十一世纪的计算机专业毕业的大学生来说是十分重要的。
在整个设计过程中,遇到我们不能解决的问题时,张继福老师和赵旭俊老师给予了我们很大的指导与帮助,从对系统的深刻分析,总体设计和详细设计的分析,使得我整个设计得以有了一个总体的完整框架。加深了我对软件工程理论和基础知识的理解。在这里再次表示深深感谢!
以下是本系统的操作流程:
1.新用户的增加和权限的管理在用户管理窗口进行,只有系统管理员才有用户管理窗口的操作权限,系统管理员不能被删除,第一个用户就是系统管理员。用户权限操作步骤:输入用户名及登陆密码,并选择用户类别,点确定。进入系统主界面。
2.根据需要进行系统管理或者简单查询,点击系统管理进入下拉菜单并选择所需要的管理,出现相应的管理界面,界面上有添加,编辑,删除,刷新等功能键,根据需要进行操作。
主要完毕业生管理系统首页的录入、删除、修改与查询工作,是整个系统的一个重要数据入口。为了完成统计工作,该首页的要比其他界面的内容更为丰富,接着下一个界面则更细化,分为三个表。
最后点击返回退出主界面,再点击取消退出系统。
但是由于经验不足和所学知识有限,本系统在查询,索引等方面还存在着很大的不足,还有一些功能没能完全实现,本人还在今后的学习中继续努力,还请老师多多指点。
对各种图形在各阶段流程图中的具体含义有了进一步的理解,并发现原来记忆中的不少错误认识。
在软件开发前要深入了解类似软件的具体功能要求,并认真听取客户要求及意见,并在开发过程中及时与客户进行交流。这将会节省大量的时间及人力物力,提高开发效率,并使软件更符合客户要求。
在本次课程设计过程中还学会了在VB和数据库中存储图片资料的方法。
通过本次课程设计发现自己在各方面还有很多不足,在今后的学习实践中,还需不断学习,努力充实自己,开拓眼界,转换思维,不断提升自身能力。
参考文献
[1] 萨师煊. 王珊编.数据库系统概论. 北京:高等教育出版社,2003年
[2] 杨志强. Visual Basic程序设计教程.北京:高等教育出版社,2003年
[3] 范立南. SQL Server 2000 实用教程.北京:清华大学出版社,2004年
[4] 张海藩.软件工程导论.北京:清华大学出版社,2004年
[5] 徐士良.常用算法程序集.北京:清华大学出版社 2004年
[6] 周志刚. 软件工程. 北京:机械工业出版社 2001年9月
VB+Access毕业生管理信息系统
目录
第一章 系统设计概述. 1
1.1系统开发的目的与意义. 1
1.2系统开发背景. 1
第二章 可行性研究与需求分析. 2
2.1可行性研究. 2
2.1.1技术可行性. 2
2.1.2经济可行性. 2
2.1.3操作可行性. 2
2.1.4社会因素可行性. 2
2.1.5可行性研究结论. 2
2.2需求分析. 3
2.2.1系统的目的. 3
2.2.2系统功能及用户需求分析. 3
2.2.3数据流图. 4
2.2.4数据字典. 5
2.2.5安全性、完整性需求. 8
第三章 项目设计的基本原理和采用的主要方法与技术. 9
3.1项目设计的基本原理. 9
3.2项目设计采用的主要技术. 9
3.3 数据访问技术. 11
3.4 数据库系统设计及范式分析. 11
第四章 总体设计. 13
4.1总体设计原理. 13
4.2 运行环境与系统结构. 13
4.3系统流程图. 14
4.4系统功能模块图与设计. 14
4.5系统功能分析. 16
4.6关系模型. 16
4.7系统安全与维护措施. 16
第五章 详细设计. 17
5.1数据库的概念设计. 17
5.1.1局部E-R模式设计. 17
5.2.2全局E-R设计. 18
5.2数据库的逻辑设计. 19
5.3程序流程图. 20
第六章 编码实现与调试. 22
6.1登录界面. 22
6.2密码窗口界面. 22
6.3主窗口界面. 23
6.4毕业生信息表界面. 24
6.5专业信息表界面. 26
6.6单位信息表界面. 28
第七章 测试与运行记录. 32
7.1测试目的. 32
7.2 测试目标. 32
7.3 测试方法. 32
7.4 测试项目. 33
7.5 测试记录与运行结果. 33
7.5.1添加管理员测试. 33
7.5.2修改管理员测试. 33
7.5.3删除管理员测试. 35
总 结. 37
参考文献. 39