1、目 录1 需求分析11.1 系统总体介绍11.2系统功能分析错误!未找到索引项。12 概念结构设计22.1需求分析的设计思想22.2.1 数据流图和数据字典31.1.12.2.1.1 数据流图32.2.1.2 数据字典42.2 概念结构设计42.2.1 局部概念模型设计42.2.2 总体概要设计42.3 CDM模型的生成过程53 逻辑结构设计73.1 E-R图向关系模型的转换73.2 PDM模型的生成过程83.3数据库设计8结论14致 谢14参考文献:151 需求分析1.1 系统总体介绍本系统主要是为了帮助企业的人事部门和财务主管部门提高工作效率,减少企业的不必要开销,从企业的根本利益出发,实
2、现企业人事信息管理的系统化、规范化和自动化。该课题是对学生数据库原理与应用、软件工程、Powerdesigner等多门学科知识的综合运用,是提高学生实际动手能力的有效方法。本课题模拟实际项目开发过程,使学生熟悉管理系统开发的方法和重要步骤,提高学生的数据库设计及系统分析能力,使学生积累一定的实战经验。1.2系统功能分析结合对企业对人事的管理,我们设计了企业人事管理系统,这个系统最终实现的主要功能如下:员工基本信息部分:主要完成对员工基本信息的添加、修改、删除、查询等管理。员工档案信息部分:主要完成员工档案信息的添加、修改、删除、查询等管理。员工部门信息部分:主要完成员工所属部门的添加、修改、删
3、除、查询等管理。员工工资信息部分:主要完成员工工资信息的添加、修改、删除、查询等管理。员工保险信息部分:主要完成员工保障信息的添加、修改、删除、查询等管理。2 概念结构设计 随着计算机技术的迅猛发展,企业与员工的联系变的越来越紧密,为了方便管理企业,我们开发此系统主要是满足日益增长的人员流动和变向的市场需求,利于企业的发展和人事部门的管理。本系统的主要目的是:为了帮助企业的人事部门和财务主管部门提高工作效率,减少企业的不必要开销,从企业的根本利益出发,实现企业人事信息管理的系统化、规范化和自动化。2.1需求分析的设计思想在现代化的企业当中,企业人事管理工作将发挥越来越重要的作用。企业人事管理工
4、作已经渗透到企业日常工作的方方面面,无论是其自身还是所发挥的作用。随着时代的进步,企业也逐渐变得庞大起来,为了企业的创新、发展以及经济效益,如何管理好企业内部员工的信息和员工的工资信息,成为企业管理中的一个大的问题。在这种情况下,一个可以提高工作效率、减少公司开资的具有经济效益的人事管理系统就显得是必要的。随着市场竞争的日趋激烈,人才成为实现企业自身战略目标的一个非常关键的因素。企业中人心向背和员工对工作的投入在很大程度上决定了该企业的兴衰成败。如何能保持本企业员工的工作责任感,激励他们的工作热情,减少人才流失,已成为困扰企业管理的一个日益尖锐的问题,可以说本系统从根本上来讲就是对人的管理。现
5、在“公平,公正”的企业管理原则已为不少企业所采纳。但是要“公平,公正,合理”绝非易事,它不是仅靠规章制度和政策就可以解决的。通过建立透明、一致、易查和全面的人事管理系统,将与人相关的信息统一管理起来,才有可能为“公平,公正,合理”原则的实现,以及企业在动作和劳资纠纷等方面的风险规避等建立一套科学保障体系.最初的人事管理,都是靠人力来完成的。当企业规模比较小的时候,人力可以完成,随着企业的规模越来越大,企业的员工越来越多,依然维持着人力进行人事管理,必然会造成工作效率低,工作错误增高的问题。如果增加人员就会增加公司的开资,这样增加了企业的经济负担。用户的需求具体体现在各种信息的提供、保存、更新和
6、查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。根据上述系统功能分析,针对各个功能模块的需求,总结出各个信息之间的联系如下:机构与部门之间的联系:一个机构基本信息对应多个部门信息,而一个部门信息对应一个机构信息,所以机构基本信息与部门信息之间是一对多的关系。部门与员工之间的联系:一个部门信息对应多个员工信息,而一个员工信息对应一个部门信息,所以员工信息与部门信息之间是一对多的关系。员工与档案之间的联系:一个员工信息对应一个档案信息,而一个档案信息对应一个员工信息,所以员工信息与档案信息之间是一
7、对一的关系。员工与工资之间的联系:一个员工信息对应多个工资信息,一个工资信息对应一个员工信息,所以员工信息与工资信息二者之间是一对多的关系,产生职务属性。员工与保险之间的联系:一个员工信息对应多个保险信息,一个保险对应一个员工信息,所以员工信息与保险二者之间是一对多的关系。员工与合同之间的联系:一个员工信息对应多个合同信息,一个合同信息对应一个员工工资信息,所以员工信息与合同信息二者之间是一对多的关系。合同与合同类别之间的联系:一个合同信息对应多个合同类别信息,一个合同类别信息对应一个合同信息,所以合同类别信息与合同信息二者之间是一对多的关系。2.2.1 数据流图和数据字典一个基于计算机信息处
8、理系统的逻辑模型由数据流和一系列数据转换构成,这些转换将输入数据变换为输出数据。数据流图就是用来刻画数据流和数据转换的信息系统建模技术。数据流图并不足以完整地描述软件的需求,因为它没有描述数据流的内容。一般地,数据流图必须与描述并组织数据条目的数据字典配合使用。1.1.1 2.2.1.1 数据流图数据流图(Data Flow Diagram,DFD)是用来描绘软件系统逻辑模型的图形工具,用于描绘信息在系统中的流动和处理情况。设计DFD只需考虑软件系统必须完成的基本逻辑功能,完全不需考虑如何具体地实现这些功能,即只考虑软件“做什么”,而不必考虑“怎么做”。数据流图是结构系统分析的主要工具,它表示
9、了系统内部信息的流向,并表示了系统的逻辑处理的功能,是一种功能模型。在数据流图中有四种基本符号,如表2-1所示。表2-1 数据流图基本符号的意义符号说明加工,输入数据在此进行变换产生输出数据,中间要注明加工的名字数据输入的源点和数据输出的终点,在其中要注明源泉点或终点的名字数据流,被加工的数据及数据流向,在箭头边要用名词或名词性短语给出数据流的名字数据存储文件,要用名词或名词性短语给出数据文件的名字由于企业人事管理系统主要是以“员工”为主体,所以该数据流图也是只针对员工的一系列信息在系统中的数据流向及存储进行设计。企业人事管理系统数据流图如图2-1所示若图片无法显示请联系QQ,本论文免费,转发
10、请注明源于2.2.1.2 数据字典数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。2.2 概念结构设计2.2.1 局部概念模型设计局部概念模型的设计思想是根据需求分析的内容用E-R图分别表示出各个实体及其属性,以及用E-R图表示出各实体之间的联系,如图所示。l 机构(机构代码,机构名称,机构地址)l 部门(部门编号,部门名称,部门简介)若图片无法显示请联系QQ,本论文免费,转发请注明源于l 员工(员工编号,员工姓名,性别,年龄,学历,家庭住址,
11、联系电话)l 工资(月份编号,基本工资,职务补助,奖励工资,缺勤次数,杂费,单次缺勤罚金)l 档案(档案编号,档案类别,存放位置,档案状态)l 保险(保险名称,保险编号,开始交费时间,交费年限,交费金额)l 合同(合同编号,合同名称)l 合同类别(合同类别编号,合同类别名称)2.2.2 总体概要设计各子系统的分E-R图设计好以后,下一步就是将所有的分E-R图综合成一个总的E-R图。由于各个局部所面向的问题不同,这就导致各个分E-R图之间必定会存在许多不一致的问题,称之为冲突。因此合并分E-R图并不能简单地将各个分E-R图画到一起,而是必须合理消除各分E-R图中的不一致,以形成一个能为全系统中所
12、有用户共同理解和接受的统一的概念模型,是合并E-R图的主要工作和关键。各E-R图之间的冲突主要有三种:属性冲突、命名冲突、结构冲突。在企业人事管理系统设计过程中,有属性冲突和结构冲突。属性域冲突,即属性值的类型、取值范围或取值集合不同。如员工编号在不同的关系中都要定义成相同的属性值的类型为字符型并且字长定义为6,才能避免属性冲突。2.3 CDM模型的生成过程1依次选择【开始】 【程序】 【Sybase】 【PowerDesigner 9 】 【PowerDesigner】选项,就会弹出【PowerDesigner】对话框,如图所示。图2-18 【PowerDesigner】对话框2在图2-18
13、中选择【file】 【new】得到对话框, 3选择“Conceptual Data Model”,单击“OK”按钮,出现CDM工作区,如图所示。图2-20 CDM工作区4工具选项板在CDM和PDM工作区中都存在着工具选项板,理解好各工具的含义对建立数据模型是十分重要的。工具选项板中包括制作模型的各种工具,使用这些工具能够快速地进行建模,CDM环境的工具板,如图所示。图2-21 CDM中的工具板5绘制实体(1)打开CDM工作区,选中工具选项板上“实体图标”。(2)在CDM工作区中单击任意处,产生实体图形。(3)双击CDM工作区中的实体图形,出现定义实体特征的窗口,如图2-21所示。(4)输入Na
14、me、Code内容。这里Name表示实体的描述名称,一般最好用中文描述(如:员工编号), Code表示实体的代码名称,最好用简化的英文描述(如:ygnumber)。(5)需要的话,输入实体表中可能存放的记录数(Number),这个数字用于统计数据库的尺寸。(6)需要的话,可以定义实体的规则(Rules)、描述(Description)、注释(Annotation)、属性(Attributes)。(7)单击“确定”按钮,当前CDM工作区就定义了一个实体。6在图2-21中选择第二项后,可以进行CDM模型的设计,图2-22 为建立实体名字,建立实体属性, 7定义实体属性实体属性是附加到实体上的数据项
15、。在DataArchitect环境下,定义一个实体属性需在图2-23所示的窗口上选择“Attributes”选项卡,出现定义实体属性的窗口,如图所示。若图片无法显示请联系QQ,本论文免费,转发请注明源于在窗口中必须完成如下工作:(1)确定实体属性的Name和Code。Name是对属性含义的具体描述,一般最好用中文描述,Code是属性的代码,与今后程序设计时有很大关系,所以定义时应特别谨慎。(2)确定实体属性的数据类型(Data Type列)。(3)确定一个属性是否为这个实体的标识符或标识符的一部分(Primary复选框),实体的标识符可以由一个或多个属性组成,它惟一标识实体中的一个实例,即它代
16、表了关系中的主键,在实体图形符号中,标识符(主键)属性带有下划线。(4)标识一个实体的属性是否为强制的(Mandatory复选框),强制特性表示属性是否需要一个值,如果属性是强制的,那么该属性在数据库表中的对应列上不允许空值,一般主键是不允许为空的。(5)标识一个实体属性是否在模型中显示(Display复选框)。需要指出的是,在图2-23的窗口上必须输入Name、Code和Data Type列的内容。输入完成后,单击“确定”按钮,此时完成了一个实体属性的定义。8绘制联系在DataArchitect环境下绘制联系分两种情况:(1)绘制不带属性的联系不带属性的联系通常是用实体之间的一条线,即使用“
17、实体到实体连接图标”来绘制。 建立“联系”过程首先选中工具板上“联系图标”,在CDM工作区中的两个实体之间画一条线即可。双击该线,出现该联系的属性窗口,如图所示。(2)绘制带有属性的联系带有属性的联系通常分两步,首先要使用“联合图标”建立一个“联合”,然后再使用“实体到联合连接图标”完成。 建立“联合”过程首先选中工具板上“联合图标”,在CDM工作区中单击任意处,产生“联合”;用鼠标双击“联合”图形,出现定义“带属性”联系即联合特性的窗口,如图所示。在“General”选项卡中,输入Name(即联系名,最好输入汉字名字)、Code(最好输入英文名)。在“Attributes”选项卡中,输入联系
18、的属性。单击“确定”按钮,在CDM工作区中产生一个“联合”(即带有属性的联系)。 建立实体到联合的连接“联合”建立好后,需要将该“联合”与相关实体连接,使用“实体到联合连接图标”来完成。其操作过程是:选中工具板上“实体到联合连接图标”,在CDM工作区中,将鼠标的十字箭头定位到一个“实体”,按住左键拖拉到“联合”中,松开鼠标,此时在该实体与联合之间出现一条“联合连接”线(也可以绘制另一个实体到联合的连接),这条线表明实体与联合之间建立了一种关联,然而这种关联的类型需要重新确定,双击“联合连接”线,出现定义“联合连接”线特性的窗口,如图所示。若图片无法显示请联系QQ,本论文免费,转发请注明源于在窗
19、口中,需要在从下拉列表中选择“Cardinality”的值(即实体到联合的连接类型,有“0,n”、“0,1”、“1,1”、“1,n”四种类型可选择),单击“确定”按钮,完成设置。需要强调的是,在进行概念结构设计时,联系一般用菱形框表示,有时它还连接着联系本身的属性。然而,在CDM环境里,仅当联系本身不带属性时,联系才可以用一条线来表示,否则,应该按照上述的第二种方法进行绘制。3 逻辑结构设计3.1 E-R图向关系模型的转换关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体,实体的属性和实体间的联系三个要素组成。所以将E-R图转换为关系模型实际上就是要将实体,实体的属性和实体间的联系转换
20、为关系模式。依照该规则将企业人事管理系统的E-R图转换为关系模型如下:1. 实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性及为关系模式的属性,实体标识符及为关系模式的键。2. 联系类型的转换,根据不同的情况做不同的处理。(1) 一个1:1联系可以转换为一个独立的关系模型,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系合并,则需要在该关系模式的属性中加如另一个关系模式的码和联系本身的属性。(2) 一个1:n联系可以转换为一个独立的关系模式,也
21、可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。(3)一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。(4) 三个或三个以上的实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。(5) 具有相同码的关系模式可合并。(1) 将每一个实体转换成一个关系(关系就是给出关系名,写出属性,并标明该关系的主键)。1 员工信息(员工编号、档案编号、
22、部门编号、员工姓名、性别、年龄、学历、家庭住址、联系电话)。在此联系中主码为员工编号,因为员工信息与部门是多对一的联系,所以将部门编号传入员工信息中做非主属性,而员工信息与档案是一对一的联系,所以将档案编号传入员工信息中做非主属性。2 员工工资信息(月份编号、员工编号、基本工资、职务补助、奖励工资、缺勤次数、单次缺勤罚金、杂费、工资合计、职务)在此联系中主码为月份编号,因为员工信息与工资信息是一对多的联系,所以将员工编号传入工资信息中做非主属性,联系本身的属性传入工资信息中做非主属性。3 保险信息(保险编号、员工编号、保险名称、开始缴费时间、缴费年限、缴费金额)在此联系中主码为保险编号,因为员
23、工信息与保险信息是一对多的联系,所以将员工编号传入保险信息中做非主属性。4 档案信息(档案编号、员工编号、档案类别、存放位置、档案状态)在此联系中主码为档案编号,因为员工信息与档案信息是一对一的联系,所以将员工编号传入档案信息中做非主属性。 合同信息(合同编号、合同类别编号、员工编号、合同名称)在此联系中主码为合同编号,因为合同类别信息与合同信息是一对多的联系,所以将合同类别编号传入合同信息中做非主属性。而员工信息与合同信息也是一对多的联系,所以员工编号传入合同信息中做非主属性。 部门信息(部门编号、机构代码、部门名称、部门简介)在此联系中主码为部门编号,因为机构信息与部门信息是一对多的联系,
24、所以将机构代码传入部门信息中做非主属性。 合同类别信息(合同类别编号、合同类别名称)在此联系中主码为合同类别编号。 机构信息(机构代码、机构名称、机构地址)在此联系中主码为机构代码。由E-R图可知,企业人事管理系统有八个实体和一个联系,又因为是员工信息与工资信息的一对多的联系,故可转换为八个关系模型。由关系依赖知,在员工信息、工资信息、部门信息、机构信息、合同信息、合同类别信息、档案信息、保险信息这八个关系模式中,这八个关系模式中其属性都是不能再分的,为一阶范式。并且都是由主码唯一决定关系中的其他属性,不存在部分函数依赖和传递函数依赖,所以这五个关系都是3NF。皆为最优,关系模型的优化结束。3
25、.2 PDM模型的生成过程选择生成CDM模型中的【TOOLS】 【GENERATE PHYSICAL DATA MODEL.】得到对话框,如图所示。 2选择Generate new Physical Data Model,再将 DBMS选择为QRACLE Version 9i,点击确定,最后形成PDM,3.3数据库设计create database PMS;use PMS;create table data_dictionary(id int primary key,name varchar(24),type int);create table offices(id int primary k
26、ey,name varchar(20),dept_id int,function varchar(20),manager varchar(10),detail text);create table department(id int primary key,name varchar(20),function varchar(20),manager varchar(10),company_id int,info text);create table company(id int primary key,name varchar(20),manager varchar(10),addr varch
27、ar(24),info text);create table arr(id int,date datetime,arrival int,primary key (id,date);create table insure(id int,insure_id int,name varchar(20),type varchar(20),money double,enddate datetime,primary key (id,insure_id);create table train(id int primary key,company_id int,dept_id int,dupt_id int,s
28、tartdate datetime,enddate datetime,name varchar(20),remark text);create table salary(id int primary key,date datetime,base double,extra double,assis double,award double,taxes double,deduct double,amount double);create table trans(id int primary key,company_id int,dept_id int,dupt_id int,startdate da
29、tetime,enddate datetime,addr varchar(24),remark text);create table files(id int primary key,feature int,sex int,nation_id int,birthdate datetime,photo_id int,place varchar(24),addr varchar(24),tele varchar(20),mail varchar(24),remark text);create table base(id int primary key,age int,edu_id int,comp
30、any_id int,dept_id int,dupt_id int,photo_id int);create table limits(id int primary key,name varchar(20),company_id int,dept_id int,limits int,pwd varchar(16);create table dels(id int primary key,company_id int,dept_name varchar(20),limits int,dels_id int);create table addUser(company_id int,dept_na
31、me varchar(20),limits int,last_id int,primary key (company_id,dept_name);insert into company values (11,河南新飞电器有限公司,张三,新乡市,主导产品:电冰箱);insert into company values (12,河南新飞家电有限公司,张三,新乡市,主导产品:电冰柜、家用空调器);insert into department values (11,销售部,销售,李四,11,公司销售);insert into department values (12,科研部,销售,王五,11,公司销
32、售);insert into department values (13,财务部,销售,马六,11,公司销售);insert into department values (14,售后部,销售,钱七,11,公司销售);insert into department values (15,销售部,销售,a,12,公司销售);insert into department values (16,科研部,销售,b,12,公司销售);insert into department values (17,财务部,销售,c,12,公司销售);insert into department values (18,售
33、后部,销售,d,12,公司销售);insert into data_dictionary values (101,经理,01);insert into data_dictionary values (102,职员,01);insert into data_dictionary values (103,汉族,02);insert into data_dictionary values (104,回族,02);insert into data_dictionary values (105,藏族,02);insert into data_dictionary values (106,博士,03);i
34、nsert into data_dictionary values (107,硕士,03);insert into data_dictionary values (108,本科,03);insert into data_dictionary values (109,大专,03);insert into data_dictionary values (110,无,04);insert into data_dictionary values (111,党员,04);insert into data_dictionary values (112,普通用户,05);insert into data_d
35、ictionary values (113,公司0管理员,05);insert into data_dictionary values (114,企业管理员,05);insert into data_dictionary values (11,中国人寿,06);insert into data_dictionary values (12,中国财险,06);insert into data_dictionary values (13,中国车险,06);insert into data_dictionary values (115,无,03);insert into data_dictionary
36、 values (116,02);insert into limits values (11110001,张三,11,11,112,zhangsan);insert into limits values (11110002,王五,11,11,112,zhangsan);insert into limits values (11110003,李四,11,11,112,zhangsan);insert into limits values (11110004,马六,11,11,112,zhangsan);insert into addUser values (11,销售部,112,11110004
37、);insert into base values (11110001,21,108,11,11,102,100002);insert into files values (11110001,110,0,103,now(),100002,河南新乡,河南新乡,155385657342,zhangsans,暂无);insert into trans values (11110001,11,11,102,now(),now(),安阳,出差);insert into salary values (11110001,now(),3000,500,200,2000,1200,600,3900);inser
38、t into train values (11110001,11,11,102,now(),now(),培训,培训);insert into insure values (11110001,11,中国人寿,人寿,2000,now();insert into arr values (11110001,now(),0);insert into base values (11110002,21,108,11,11,102,100001);insert into files values (11110002,110,0,103,now(),100001,河南新乡,河南新乡,155385657342,z
39、hangsans,暂无);insert into trans values (11110002,11,11,102,now(),now(),安阳,出差);insert into salary values (11110002,now(),3000,500,200,2000,1200,600,3900);insert into train values (11110002,11,11,102,now(),now(),培训,培训);insert into insure values (11110002,11,中国人寿,人寿,2000,now();insert into arr values (11
40、110002,now(),0);结论通过此次管理系统的开发过程,遵循其软件开发的标准,我深受不少启发,这些都是对我们大学相关知识学习的考验。1. 软件开发中系统分析的重要性。系统分析工作的主要任务是明确问题、确定问题,了解用户的信息需求。由于对用户信息需求的最大限度往往是软件开发成败的关键,而用户大都不是计算机专业人员,引导他们从规范和专业的角度考虑需求是重要的。由于明白这一点的重要性,我在软件开发前期就很重视这些问题,从而避免了多走弯路的情况,由此加快了系统开发的进程。2. 必须严格按照拟定的规划进行系统开发。在系统开发的前半部分工作,如系统分析、系统设计,为系统开发的后续工作制定了大量的规
41、范。因此,系统分析、系统设计需要经过大量的论证,需要与用户不断的协商、反复考虑后终能定稿,在系统的实施过程中就要严格遵循这些拟定的规范去做。3. 开发软件时要注重吸收商用软件的优点。商用软件普遍具有的人性化的界面,友好的操作方法,方便、易用,这样才能促进用户的选择。这些参考点在本次设计中起到至关重要的作用。4. 广泛的积累素材。一本好的参考资料往往能够使系统的开发工作事半功倍,并使我们的眼界不至于只局限在一个特定的框架体。虽然系统总体功能基本实现,但是由于时间的关系,知识的欠乏,数据的验证还不是很全面,还存在一些细小的问题,在某些功能上还不是很完善。这些都需要以后作出更多的努力,不断的学习,不
42、断的完善,最终开发出能在实际生活中适用的系统。致 谢首先我要感谢学校能够为我们毕业班的学生提供此次设计所需的软硬件设施,正因为在这样温馨的实验环境下,我们才能够全身心的投入到设计中去,最终顺利完成此次设计。其次向我的指导老师杨庆祥老师表示深深的敬意和由衷的感谢!无论是在学习期间还是在设计期间,杨老师都给我们极大的鼓励、支持与帮助,指导老师深厚的专业知识、渊博的人生阅历、严谨的学术作风让我受到深刻的启迪和教导,也将予我受用一生。在毕业设计期间,同学们的帮助对我的设计起到积极的作用,与同学一起相互探讨同时我深深的感到了团队精神在项目开发中的重要性,万事成功,都离不开团队的帮助与合作。最后,我还要感谢各位老师在百忙之中评阅我的论文,能得到您们的评审使我感到万分荣幸,您们的指导将使我受益匪浅。在此,向所有关心、帮助、支持我们的老师们送上一句深深的祝福:老师,您辛苦了!参考文献:1.数据库系统概论 王珊、萨师煊 高等教育出版社2.JSP动态网站开发基础与上机指导 范芸、范慧霞 清华大学出版社3java编程思想 Bruce Eckel 机械工业出版社4.软件测试与质量保证 袁玉宇 北京邮电大学出版社5.软件需求工程 毋国庆 梁正平 机械工业出版社14