73
部部部部部 部部部部部 项项

部门通讯录

  • Upload
    dympna

  • View
    35

  • Download
    1

Embed Size (px)

DESCRIPTION

项目一. 部门通讯录. 学习目标. 软件开发项目的基本步骤 背景分析,需求分析,设计,构建,测试,移交和过渡,运行维护 基于 Oracle 数据库 的 Web 方式通讯录开发. 项目背景 3-1. - PowerPoint PPT Presentation

Citation preview

Page 1: 部门通讯录

部门通讯录 部门通讯录

项目一

Page 2: 部门通讯录

2home back first prev next last

学习目标学习目标• 软件开发项目的基本步骤

– 背景分析,需求分析,设计,构建,测试,移交和过渡,运行维护

• 基于 Oracle 数据库的 Web 方式通讯录开发

Page 3: 部门通讯录

3home back first prev next last

项目背景 项目背景 3-13-1

• 我院计算机系有四十几名教职工。教师工作不要求坐班,老师上完课不必呆在办公室里。为了工作中大家能够方便的进行联系,系里每年都统计大家的联系方式,包括手机号码、家庭电话, Email 地址等。原来的做法是将上述信息放在一个 Word 文件里,大家每人复制一份。但是现在大家的联系方式变化很快,特别是手机号码。这样,大家手里的文件很难一起更新。造成的结果是信息混乱。有的老师手机号换了很长时间,在其他人的通讯录里还是旧的号码。

Page 4: 部门通讯录

4home back first prev next last

项目背景 项目背景 3-23-2

Page 5: 部门通讯录

5home back first prev next last

项目背景 项目背景 3-33-3

所以,我们现在准备将通讯录信息集中存放在数据库里。老师可以通过互联网查看所有人的信息,并且可以更改联系信息

Page 6: 部门通讯录

6home back first prev next last

需求分析 需求分析 5-15-1

• 首先要解决的问题– 项目的任务和目标是什么?– 需要什么功能?– 需要保存什么样的数据?– 需要什么样的运行环境?– 需要什么样的开发工具?– 安全性有什么要求?– 效率有什么要求?– … …

Page 7: 部门通讯录

7home back first prev next last

需求分析 需求分析 5-25-2

• 本项目的任务和目标– 提供给计算机系职工一个可通过互联网使用的通讯录

– 通讯录内容必须可以及时更新,能反映本系教职工最新的联系方式

• 本项目产品必备功能– 查询所选员工信息。– 修改所选员工信息。– 删除所选员工信息。– 增加所选员工信息。

Page 8: 部门通讯录

8home back first prev next last

需求分析 需求分析 5-35-3

• 本项目需要保存的数据– 如左 实体关系图( ERD ) 所示

• 本项目运行环境– 服务端

操作系统 Windows2000/XP , Linux , UnixOracle 数据库(跨平台,可在不同厂家提供的计算机和不同

的操作系统上运行)– 客户端

IE 浏览器Firefox 浏览器

员工

# 编号* 姓名o 移动电话o 办公电话o 家庭电话o 电子邮件

Page 9: 部门通讯录

9home back first prev next last

需求分析 需求分析 5-45-4

• 本项目开发工具– Oracle XE 10g

Oracle 数据库的微型版。免费 , 只支持 4G 数据, 1 个 CPU 。与 Oracle 10g 企业版支持相同的基本功能,在 OracleXE 平台

下开发的应用可以直接移植到 Oracle 企业版的环境中去使用。

– 下载地址: http://www.oracle.com/technology/software/products/database/xe/index.html

– Oracle Application Express 。基于 Oracle 的快速开发工具,在 OracleXE 安装时,同时自动

安装 Oracle APEX 2.1 可升级到 Oracle APEX 3.0.1 。

Page 10: 部门通讯录

10home back first prev next last

需求分析 需求分析 5-55-5

• 安全性– 安全性要求不是非常高。– 实现简单的口令保护就可以。

由于部门人员有限,彼此互相信任,所以只设一统一的用户就可以。即大家共用同一用户名 / 口令,并规定对部门外人员保密即可。

• 效率– 由于使用人员有限,同时使用的情况更少,信息量很少,不需要特别考虑

Page 11: 部门通讯录

11home back first prev next last

设计 设计 5-15-1

• 数据库设计

Page 12: 部门通讯录

12home back first prev next last

设计 设计 5-25-2

• 界面设计– 1. 登录

Page 13: 部门通讯录

13home back first prev next last

设计 设计 5-35-3

• 界面设计– 2. 联系人查找 / 创建

Page 14: 部门通讯录

14home back first prev next last

设计 设计 5-45-4

• 界面设计– 3. 详细信息修改及删除

Page 15: 部门通讯录

15home back first prev next last

设计 设计 5-55-5

• 测试设计– 怎样知道项目完成了预定功能?– 何时可以结束项目?

– 运行应用程序,并按如下测试计划进行测试。

Page 16: 部门通讯录

16home back first prev next last

构建 构建 13-113-1

• 创建数据库对象– 在 SQL Workshop 中执行:-- 创建表CREATE TABLE a01_employees(id NUMBER(5,0) PRIMARY KEY,name VARCHAR2(5 CHAR) NOT NULL,m_phone VARCHAR2(20 CHAR),o_phone VARCHAR2(20 CHAR),h_phone VARCHAR2(20 CHAR),email VARCHAR2(60 CHAR));

Page 17: 部门通讯录

17home back first prev next last

构建 构建 13-213-2• 创建数据库对象

– 在 SQL Workshop 中执行:

-- 创建序列,用于自动产生连续整数,作为 employees 表的主键CREATE SEQUENCE a01_employees_seq;-- 添加记录,增加员工信息INSERT INTO a01_employees values(a01_employees_seq.NEXTVAL,' 郭

靖 ','13705319999','0531 88888888','0531 77777777','[email protected]');INSERT INTO a01_employees values(a01_employees_seq.NEXTVAL,' 黄

蓉 ','13705319898','0531 88888888','0531 77777777','[email protected]');-- 查看所有员工的所有信息SELECT * FROM employees;-- 提交COMMIT;

Page 18: 部门通讯录

18home back first prev next last

构建 构建 13-313-3

• 创建应用程序

Page 19: 部门通讯录

19home back first prev next last

构建 构建 13-413-4

• 创建应用程序

Page 20: 部门通讯录

20home back first prev next last

构建 构建 13-513-5

• 创建应用程序

Page 21: 部门通讯录

21home back first prev next last

构建 构建 13-613-6

• 创建应用程序

Page 22: 部门通讯录

22home back first prev next last

构建 构建 13-713-7

• 创建应用程序

Page 23: 部门通讯录

23home back first prev next last

构建 构建 13-813-8

• 创建应用程序

Page 24: 部门通讯录

24home back first prev next last

构建 构建 13-913-9

• 创建应用程序

Page 25: 部门通讯录

25home back first prev next last

构建 构建 13-1013-10

• 创建应用程序

Page 26: 部门通讯录

26home back first prev next last

构建 构建 13-1113-11

• 创建应用程序

Page 27: 部门通讯录

27home back first prev next last

构建 构建 13-1213-12

• 添加验证– 标识验证级别 : 选择 项级验证– 标识要验证的项 : 选择 EMPLOYEES: 1.

P2_NAME (Name)– 选择验证方法 : 选择 项不为空– 错误消息 : 填写 name 不能为空,必须填写

Page 28: 部门通讯录

28home back first prev next last

构建 构建 13-1313-13• 添加处理

– 选择要创建的处理类别 : PL/SQL– 名称 Get PK – 输入 PL/SQL 页处理 : DECLARE

v_pk NUMBER;BEGIN SELECT A01_EMPLOYEES_SEQ.NEXTVAL next_val INTO FROM dual;

:P2_ID := v_pk;END;

– 失败消息 : 无法获取主键值– 在按下按钮时 : CREATE

• 修改处理– “处理 EMPLOYEES 的行”的序列为 大于 “ Get PK” 的值,比如 20– 注意:页面项的序列号决定其显示和处理的顺序

Page 29: 部门通讯录

29home back first prev next last

测试测试 .. 移交移交 .. 运行维护运行维护• 测试

– 按测试设计内容进行• 移交

– 制作数据库对象创建脚本– 导出应用程序– 在系网站服务器安装 OracleXE– 运行数据库对象创建脚本– 导入应用程序– 将现有通讯录内容核实,添加到数据库– 通知所有用户网址、用户名、口令

• 运行维护– 信息维护– 程序维护

Page 30: 部门通讯录

30home back first prev next last

熟悉 熟悉 Web Web 页面页面• 运行程序,认识下列页面项 (Item) ,了解其用法

– 按钮 (Button)激发处理或动作

– 文本条 (TextField)用户输入少量文本

– 下拉列表( Select List )用户输入选择

– 标签 (Tab)导航

– 面包屑 (BreadCrumb)导航

Page 31: 部门通讯录

31home back first prev next last

熟悉 熟悉 EditPage EditPage 页面页面• Web 页面开发环境

– 页 (Page) 、区域 (Region) 和项 (Item)都有一个序列号( Sequence ) ,决定其显示顺序和位置

– 页面显示和处理的顺序按序列号显示区域一个区域内,按序列号显示项

– 前置计算 (Computation) 和处理 (Process)页面可用前进行,如为项赋初值

– 后置计算 (Computation) 和处理 (Process)页面提交后进行,如根据用户输入查找、修改数据库

– 分支( Branch )页面跳转

Page 32: 部门通讯录

32home back first prev next last

总结 总结 2-12-1

• 软件开发项目的基本步骤– 背景分析,需求分析,设计,构建,测试,移交和过渡,运行维护

• 数据库设计– ERD 基本概念

实体、实例、属性、 UID– 数据库基本概念

表、行、列、主键序列

– ERD 和数据库关系

Page 33: 部门通讯录

33home back first prev next last

总结 总结 2-22-2

• SQL– 脚本制作与执行;– 简单的 SELECT,INSERT,DELETE ;– 主键约束;– 非空约束

• PL/SQL– 用序列获取主键;– PL/SQL 块结构,变量;

• OAE– 报表和表单 ;– 应用程序导入导出

Page 34: 部门通讯录

34home back first prev next last

实体实体• 了解实体非常之重要,因为这些实体关系到我们要存储什么样的数据

• 实体是:– 对业务活动很重要的“事物”,我们必须知道关于该“事物”的数据

– 一个您可以列举出一系列相似事物的名称– 通常为名词例如:对象、事件、人– 实体具有实例。

实例是实体的单一个体。

Page 35: 部门通讯录

35home back first prev next last

实体与实例实体与实例

Page 36: 部门通讯录

36home back first prev next last

实体与实例实体与实例• 实体可以是:

– 有形的,例如人物或商品。– 无形的,如技术级别。– 事件,如音乐会。

• 犬是实例还是实体?– 这要视情况而定

如果着眼于不同种类的动物,则动物应是实体,而犬、猫、马等是实例。

但是如果我们经营饲养犬类的业务呢?我们需要保存许多不同品种的犬(而不是其它动物种类)的数据。

对于犬饲养者来说,将犬作为实体似乎更为自然,而梗类犬、狮子犬、拉布拉多猎犬则为实例。

Page 37: 部门通讯录

37home back first prev next last

属性属性• 什么是属性?

– 像实体一样,属性可以表示一些对业务活动很重要的信息。

– 一个属性就是一条特定的信息,它用来:描述一个实体量化一个实体限定一个实体为实体分类指定一个实体

– 一个属性只有一个值。属性值可以是数字、字符串、日期、图像、音频等。这些被称

为“数据类型”或“格式”。每个属性都有一种数据类型。

Page 38: 部门通讯录

38home back first prev next last

属性属性• 属性是单值的。

– 对于实体的每个实例,每个属性只有一个值(在任何时间点)。

• 易失属性– 一些属性(如年龄)的值是时常变化的。这些属性称为易失属性。

• 非易失属性– 另外一些属性(如订单日期)则几乎不变。这些属性称为非易失属性。

• 如果可以选择属性,请使用非易失属性。– 例如,使用出生日期代替年龄。

Page 39: 部门通讯录

39home back first prev next last

属性属性• 必需属性

– 一些属性必须具有值。这些属性称为必需属性。– 例如:在大多数跟踪个人信息的业务活动中,“名字”是必需的。

• 可选属性– 其它属性可以有值,也可以为空。这些属性是可选属性。– 例如:除了在移动或无线应用产品中,移动电话号码通常不是必

需的。

• 对于员工– 如果要建模一个电子邮件应用程序,则电子邮件地址可能为必需属性。

– 如果要建模通讯录,则对于顾客电子邮件地址可能为可选属性。

Page 40: 部门通讯录

40home back first prev next last

唯一标识符唯一标识符 (UID)(UID)

• 实体的 UID – 是一个属性或多个属性的集合,用于区别同一实体的不同的实例。

– 通过哪个或哪些属性可以将一名学生与其他学生区别开来?这就是学生的 UID 。

Page 41: 部门通讯录

41home back first prev next last

实体关系图实体关系图• 实体关系图(缩写为 ERD )是一种可用来表示数据需求的一致性工具,而与所用的数据库类型,甚至是否使用数据库无关。

• 无论系统最终建立在什么类型的数据库上,一个出色的概念数据模型都会保持不变。这就是我们所说的模型的“实现自由”。

• 即使根本不使用数据库,数据模型也应保持不变,例如数据最终会存储在几张纸上,被放进档案柜里。

Page 42: 部门通讯录

42home back first prev next last

ER ER 绘图惯例绘图惯例• 实体由软式方框来表示。• 实体名显示在软式方框中。• 实体名总是单数,并且用全大写字母表示。

Page 43: 部门通讯录

43home back first prev next last

ER ER 绘图惯例 绘图惯例 <<返回返回>>

• 属性列在实体名的下方。

• 用星号标记必需的属性:“ *”

• 用圆圈标记可选属性:“ °”

• 用井号标记唯一标识符:“ #”

Page 44: 部门通讯录

44home back first prev next last

数据库 数据库 2-12-1

• 什么是数据库?– 存储在计算机系统中的一组集中的、结构化的数据。

• 数据库中的数据通过软件来管理– 这样专门管理数据库的软件称为数据库管理系统 DBMS– DBMS 可以提供在需要时检索、添加、修改和删除数据的功能。

– DBMS 还可以提供将检索到的数据转换成有用信息的功能。

• 专门负责数据库管理的人称为数据库管理员 (DBA) 。

Page 45: 部门通讯录

45home back first prev next last

数据库 数据库 2-2 2-2 <<返回返回>>

• 数据– 可以从中得出结论的原始资料。– 可以据此得出新事实的论据。

• 信息– 知识、才智、有特定意义或作用的一条特殊数据。

– 信息通常是对数据进行结合、比较与计算的结果。

Page 46: 部门通讯录

46home back first prev next last

关系数据库 关系数据库 5-15-1

• 关系数据库是目前应用最广泛的一种数据库– 目前,全世界的数据有 20% 存储在 RDBMS 中。

• Oracle 数据库支持关系数据库技术• 关系数据库就是由二维表组成的数据库

– 所有数据都存储在表中– 表中的数据通过外键(关系)关联到一起– 下边的表包含雇员数据。

Page 47: 部门通讯录

47home back first prev next last

关系数据库 关系数据库 5-25-2

• 列完整性– 列只能包含与其已定义 的数据格式一致的值。

Page 48: 部门通讯录

48home back first prev next last

关系数据库 关系数据库 5-35-3

• 主键– 主键 (PK) 是唯一地标识表中各行的一个列或一组列。

– 每个表都应有一个主键, 并且主键必须是唯一的。

– 主键的任何部分都不能 为空。

Page 49: 部门通讯录

49home back first prev next last

关系数据库 关系数据库 5-45-4

• 一个表可能会包含多个或一组可以作为其主键的列。其中 每个列都称为“候选”键。

Page 50: 部门通讯录

50home back first prev next last

关系数据库 关系数据库 5-55-5

• 选择一个要用作该表主键的候选键。其它候选键则变成可选键 (或唯一键)。

Page 51: 部门通讯录

51home back first prev next last

从从 ERDERD 到关系数据库 到关系数据库 3-13-1

• 在人们脑海里的希望或愿望是“概念模型”• 希望或愿望在现实中的具体实现是“物理模型”• ERD 是希望保存数据的“概念模型”• 数据库是希望保存数据的“物理模型”• 概念模型的作用在于

– 精确描述企业的信息需求– 有助于进行讨论– 避免错误与误解– 建立重要的“理想系统”文档– 为物理数据库设计建立一个完善的基础– 记录业务过程(也称为“业务规则”)– 考虑管理该行业的规章和法律

Page 52: 部门通讯录

52home back first prev next last

从从 ERDERD 到关系数据库 到关系数据库 3-23-2

• 将概念模型转换为物理模型。 在右边的示例中,物理实现 将是一个关系数据库。

Page 53: 部门通讯录

53home back first prev next last

从从 ERDERD 到关系数据库 到关系数据库 3-33-3 <<返回返回>>

Page 54: 部门通讯录

54home back first prev next last

创建表 创建表 3-13-1

• 其中– table 是表的名称– column 是列的名称– datatype 是列的数据类型和长度

– 可以用 DEFAULT 表达式指定一个默认值,如果添加行时省略了某列的值,则使用该默认值

CREATE TABLE table(column datatype [DEFAULT expression],(column datatype [DEFAULT expression],(……[ ] );

例如:

CREATE TABLE cd_collection(cd_number NUMBER(2),title VARCHAR2(14),artist VARCHAR2(13),purchase_date DATE DEFAULT SYSDATE);

Page 55: 部门通讯录

55home back first prev next last

创建表 创建表 3-23-2

• 表名和列名– 必须以字母开头– 长度必须为 1 到 30 个字符– 只能包含 A –Z 、 a –z 、 0 –9 、 _ (下划线)、

$ 和 #– 不能与同一用户拥有的其它对象重名– 不能是 Oracle Server 的保留字

• 删除表DROP TABLE 表名 ;

Page 56: 部门通讯录

56home back first prev next last

创建表 创建表 3-3 <3-3 < 返回返回 >>

• 使用 DESCRIBE 命令可以显示表的结构。 其语法如下:

DESCRIBE < 表名 >;

• 使用 SELECT * 命令可以返回表中的所有行。 其语法如下:

SELECT * FROM < 表名 >;

• 现在你的表里可能还没有任何数据。不要着急,一会儿我们就要学习往表里添加记录。

Page 57: 部门通讯录

57home back first prev next last

序列 序列 4-14-1

• 序列是一种数据库对象,用于自动生成唯一编号,一般用于创建主键值– 您可能会回想起来,每一行的主键都必须唯一

• 序列号的存储和生成与表无关。因此,同一序列可以用于多个表。

• 要创建序列,请执行以下操作:CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}];

Page 58: 部门通讯录

58home back first prev next last

序列 序列 4-24-2

CREATE SEQUENCE 序列名

[INCREMENT BY n][START WITH n][{MAXVALUE n |

NOMAXVALUE}][{MINVALUE n |

NOMINVALUE}][{CYCLE | NOCYCLE}];

Page 59: 部门通讯录

59home back first prev next last

序列 序列 4-34-3

CREATE SEQUENCE seq_runners

INCREMENT BY 1

START WITH 1

MAXVALUE 50000

NOCYCLE;

或者

CREATE SEQUENCE seq_runners

MAXVALUE 50000;

Page 60: 部门通讯录

60home back first prev next last

序列 序列 4-4 <4-4 < 返回返回 >>

• NEXTVAL– NEXTVAL 伪列用于从指定的序列中提取连续的序列号。

– 必须用序列名来限定 NEXTVAL 。– 在引用 sequence.NEXTVAL 时,会生成新的序列号

• 删除序列DROP SEQUENCE 序列名 ;

Page 61: 部门通讯录

61home back first prev next last

添加记录 添加记录 2-12-1

• 使用 INSERT 命令,可以将一行数据添加到表中。 其语法如下

INSERT INTO < 表名 >VALUES ( 值 1, 值 2, 值 3, 等等 );

• 注意– 值的顺序按表创建时列的顺序排列– 字符串用单引号包含,如 ‘郭靖’– 主键值可用序列产生,如 seq_runners.NEXTVAL

Page 62: 部门通讯录

62home back first prev next last

添加记录 添加记录 2-2 <2-2 < 返回返回 >>

• 删除所有记录– 如果你需要删除表里的所有数据,可用下面命令

DELETE FROM 表名 ;

Page 63: 部门通讯录

63home back first prev next last

查看表数据 查看表数据 <<返回返回 >>

• SELECT– SELECT * 命令可以返回表中的所有行和所有列。 其语法如下:

SELECT * FROM < 表名 >;

– 也可以返回指定的列,其语法如下:

SELECT < 列名 1, 列名 2, … …>

FROM < 表名 >

Page 64: 部门通讯录

64home back first prev next last

提交 提交 <<返回返回 >>

• COMMIT 命令– 提交数据,将数据永久保存到数据库,不会再丢失

Page 65: 部门通讯录

65home back first prev next last

验证 验证 <<返回返回 >>

• 对用户输入进行检查,对不符合要求的输入进行提示,要求重新输入

Page 66: 部门通讯录

66home back first prev next last

PL/SQL 5-1PL/SQL 5-1

• 块结构– 分为声明部分、执行部分和异常处理部分– 只有执行部分是强制的– 声明部分和异常处理部分都是可选的

DECLARE ( 可选 )-- 变量声明

BEGIN (强制 )-- SQL 语句-- PL/SQL语句

EXCEPTION ( 可选 ) -- 错误处理代码

END; (强制 )

Page 67: 部门通讯录

67home back first prev next last

PL/SQL 5-2PL/SQL 5-2

• 变量声明– identifier 变量名– CONSTANT 说明此变量为命名常量,不能被修改,必须初始化

(在定义时赋缺省值)– Datatype 数据类型– NOT NULL 变量必须有值,必须初始化– Expr 是 PL/SQL 表达式,结果为变量提供缺省值

– 语法图表示惯例斜体小写,如 expr 表示变量或占位符 中括号 [] 表示括号内部分可选 | 表示 “或”,即二者选一或多者选一的关系

Page 68: 部门通讯录

68home back first prev next last

PL/SQL 5-3PL/SQL 5-3

• 变量声明举例

Page 69: 部门通讯录

69home back first prev next last

PL/SQL 5-4PL/SQL 5-4

• 变量赋值– 在执行部分或异常处理部分进行

– 方法一,用赋值操作符 :=

v_myname := 'Steven';

Page 70: 部门通讯录

70home back first prev next last

PL/SQL 5-5 <PL/SQL 5-5 < 返回返回 >>

• 变量赋值– 方法二,用 SELECT … INTO…

SELECT 列 1 | 表达式 1,... INTO 变量 1,... FROM 表名 ;

将表中数据或表达式数据赋给变量一次可为多个变量赋值一次只能返回一行数据列或表达式按顺序给变量赋值,因此个数必须相等如SELECT 10,20,30 INTO a,b,c FROM dual;

Dual 表只有一行数据,谁都可以访问,专用于返回一行数据,且返回结果和具体数据表内容无关的情形。

Page 71: 部门通讯录

71home back first prev next last

SQL SQL 脚本 脚本 2-12-1

• SQL 脚本是一个文本文件– 文件中按需要的顺序存放多个 SQL 命令或语句

– 脚本文件可作为整体执行,执行脚本即是按顺序执行脚本中所有 SQL 命令或语句

– 如果脚本中某条语句执行出错,将继续执行下一条语句

– SQL 脚本可通过任意文本编辑器来制作、修改– OAE 的 SQL Workshop 可创建、上载、下载、执行脚本。

Page 72: 部门通讯录

72home back first prev next last

SQL SQL 脚本 脚本 2-2 <2-2 < 返回返回 >>

• SQL 脚本( Scripts )– 创建 (Create)

依次输入命令,建立新脚本– 上传 (Upload)

将已有脚本文件保存到数据库中,然后可以在 OAE 中执行、查看和修改

– 查看 (View)观察脚本内容

– 导出 (Export)将数据库中脚本保存为文本文件

– 导入 (Import)同上传 (Upload)

Page 73: 部门通讯录

73home back first prev next last

导出导出 // 导入应用程序 导入应用程序 <<返回返回 >>

• 导出 (Export)– 将应用程序保存到一个文本文件中(文件默认扩展名为 .sql )

• 导入 (Import)– 根据以前导出的程序文件重新建立应用程序