信息与管理科学学院计算机科学系
实验报告
课程名称:软件开发生命周期与建模
实验名称:【实验5】基于UML和OOAD的系统分析与设计
姓名:杨现阳,张泽浩,张金庚,张俊超,杨波,王秋波
组号: 3 班级:2014级计应4班指导教师:张浩实验室:兰亭机房2 日期: 2016年06月01日
一、实验目的
通过常用的基于UML和OOAD的系统分析与设计实例实验,理解OOAD 分析过程,熟悉UML9大视图,掌握基于OOAD的软件系统分析与设计方法,达到举一反三解决实际问题的目的。
二、实验环境
一台PC机,所需软件Win7/10、UML工具(Rose/Visio/EclipseUML/ StartUML/)、Eclipse/MyEclipse、JDK6.0等。
三、实验内容
基于UML和OOAD的系统分析与设计【任选一题】,建立用例模型、类图、对象图、时序图、活动图等。
●图书信息管理系统:角色用户包括系统管理员、采编录入管理员、借书管理员、
还书管理员、学生用户、教师用户。系统主要功能包含:角色权限管理、用户信
息管理(增删改查)、图书信息采编入库、基础信息管理(增删改查)、基础信息
统计、借书管理与统计、还书管理与统计等。
●大学生选课管理系统:角色用户包括系统管理员、基础信息管理员(教师信息
管理员、学生信息管理员、教室信息管理员、实验室信息管理员、课表信息管理、
课程信息管理员、教学任务信息管理员)、教师、学生、教室管理者、实验室管
理者等。系统主要功能包含:角色权限管理、用户信息管理、基础信息管理、教
师选报教学任务、教学管理者排课、学生选课(必修课、选修课)、学生补选课、
周课表查看与打印、课程信息查询与打印、选课信息统计等。
四、实验操作过程
1.对系统进行需求分析,形成准确、完整的用户需求描述文档。
?系统的功能需求主要包括以下几个方面:
①借阅者可以通过网络查询书籍信息和预定书籍。
②借阅者能够借阅书籍和还书。
③图书管理员能够处理借阅者的借阅和还书请求。
④系统管理员可以对系统的数据进行维护,如增加、删除和更新
书目,增加、删除和更新借阅者帐户,增加和删除书籍。
?用户提出的需求包括下列内容:
1. 这是一个图书馆支持系统;
2. 图书馆将图书和杂志借给借书者。借书者已经预先注册,图书和杂志也预
先注册;
3. 图书馆负责新书的购买。每一本图书都购进多本书。当旧书超期或破旧不
堪时,从图书馆中去掉。
4. 图书管理员是图书馆的员工。他们的工作就是和读者打交道并在软件系统
的支持下工作。
5. 借阅人可以预定当前没有的图书和杂志。这样,当他所预定的图书和杂志
归还回来或购进时,就通知预定人。当预定了某书的借书者借阅了该书后,预
定就取消。或者通过显式的取消过程强行取消预定。
6. 图书馆能够容易地建立、修改和删除标题、借书者、借阅信息和预定信息。
7. 系统能够运行在所有流行的技术环境中,包括Unix, Windows和Linux,并
应有一个良好的人机交互图形用户界面(GUI)。
8. 系统容易扩展新功能。系统可以不必考虑预定的图书到达后通知预定人的
功能。
9.如果读者还书超过期限(本科生1个月,研究生2个月,教师3个月),需
扣款。
2.正常事件流与异常事件流描述。
书管理系统的用例事件流描述: 1.借阅物理书刊(Borrow Book) 1.1 前置条件(Pro-Conditions)在这个用例开始前,Librarian 必须登录到系统中 1.2 后置条件(Post-Conditions)
如果这个用例成功,在系统中建立并存储借阅记录,如果必要还要删除预定记录。否则,系统的状态没有变化。
1.3 扩充点(Extension Points)没有
1.4 事件流
1.4.1 基流(Basic Flow)
当借阅者从图书馆借阅物理书刊时,用例启动。如果Librarian 选择“借书”,则执行分支流S-1:借阅物理书刊。
如果所借的物理书刊是经过预定的,则执行分支流S-2:通过预定借阅物理书刊。 1.4.2 分支流(Subflows) S-1:借阅物理书刊
(1)提供书刊种类、借阅者信息(2)检索书刊种类(Title)(E-1)
(3)确定所借阅的物理书刊是否可以获得(E-2),即物理书刊是否都已借出(4)检索借阅者(E-3)(5)图书馆将物理书刊借给借阅者(6)创建借阅记录(7)存储借阅记录
S-2:通过预定借阅物理书刊
(1)提供书刊种类、借阅者信息(2)检索书刊种类(Title)(E-1)(3)检索借阅者(E-3)
(4)确定该类书刊的物理拷贝是否可以获得(E-2)(5)将物理书刊发给借阅者(6)创建借阅记录(7)存储借阅记录(8)删除预定记录
1.4.3 替代流(Alternative Flow)
E-1:该种书刊不存在,系统显示提示信息,用例终止 E-2:物理书刊都已借出,系统显示提示信息,用例终止 E-3:系统中不存在该借阅者,系统显示提示信息,用例终止 2.返回物理书刊(Return Book) 2.1 前置条件(Pre-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 2.2后置条件(Post-Conditions)
如果这个用例成功,系统删除借阅记录。否则,系统的状态没有变化。 2.3 扩充点(Extension Points)没有书管理系统的用例事件流描述: 1.借阅物理书刊(Borrow Book) 1.1 前置条件(Pro-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 1.2 后置条件(Post-Conditions)
如果这个用例成功,在系统中建立并存储借阅记录,如果必要还要删除预定记录。否则,系统的状态没有变化。
1.3 扩充点(Extension Points)没有
1.4 事件流
1.4.1 基流(Basic Flow)
当借阅者从图书馆借阅物理书刊时,用例启动。如果Librarian 选择“借书”,则执行分支流S-1:借阅物理书刊。
如果所借的物理书刊是经过预定的,则执行分支流S-2:通过预定借阅物理书刊。 1.4.2 分支流(Subflows) S-1:借阅物理书刊
(1)提供书刊种类、借阅者信息(2)检索书刊种类(Title)(E-1)
(3)确定所借阅的物理书刊是否可以获得(E-2),即物理书刊是否都已借出(4)检索借阅者(E-3)(5)图书馆将物理书刊借给借阅者(6)创建借阅记录(7)存储借阅记录
S-2:通过预定借阅物理书刊
(1)提供书刊种类、借阅者信息(2)检索书刊种类(Title)(E-1)(3)检索借阅者(E-3)(4)确定该类书刊的物理拷贝是否可以获得(E-2)(5)将物理书刊发给借阅者(6)创建借阅记录(7)存储借阅记录(8)删除预定记录
1.4.3 替代流(Alternative Flow)
E-1:该种书刊不存在,系统显示提示信息,用例终止 E-2:物理书刊都已借出,系统显示提示信息,用例终止 E-3:系统中不存在该借阅者,系统显示提示信息,用例终止 2.返回物理书刊(Return Book) 2.1 前置条件(Pre-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 2.2后置条件(Post-Conditions)
如果这个用例成功,系统删除借阅记录。否则,系统的状态没有变化。 2.3 扩充点(Extension Points)没有 2.4 事件流
2.4.1 基流(Basic Flow)
当借阅者返回所借阅物理书刊时,用例启动。(1)提供所还物理书刊信息(2)检索物理书刊(E-1)(3)查询物理书刊的借阅记录(E-2)(4)删除借阅记录
2.4.2 替代事件流(Alternative Flow)
E-1:物理书刊不存在,系统显示提示信息,用例终止 E-2:若借阅记录不存在,系统显示提示信息,用例终止 3.预定书刊(Reserve Title) 3.1 前置条件(Pre-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 3.2后置条件(Post-Conditions)
如果这个用例成功,系统建立预定记录。否则,系统的状态没有变化。 3.3 扩充点(Extension Points)没有
3.4 事件流
3.4.1 基流(Basic Flow)
当Librarian为借阅者预定物理书刊时,用例启动。(1)提供书刊种类、借阅者信息(2)检索书刊种类(E-1)(3)检索借阅者(E-2)
(4)系统接受预定,创建预定记录(5)将预定记录存储在系统中
3.4.2 替代事件流(Alternative Flow)
E-1:该种书刊不存在,系统显示提示信息,用例终止 E-2:系统不存在该借阅者,系统显示提示信息,用例终止 4.取消预订(Cancel Reservation) 4.1 前置条件(Pre-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 4.2后置条件(Post-Conditions)
如果这个用例成功,系统删除预定记录。否则,系统的状态没有变化。 4.3 扩充点(Extension Points)没有
4.4 事件流
4.4.1 基流(Basic Flow)
(1)提供所预定的书刊种类、借阅者信息(2)检索所预定书刊种类(E-1)(3)检索借阅者(E-2)(4)从系统删除预定记录(E-3) 4.4.2 替代事件流(Alternative Flow)
E-1:该种书刊不存在,系统显示提示信息,用例终止 E-2:系统不存在该借阅者,系统显示提示信息,用例终止 E-3:预定信息不存在,系统显示提示信息,用例终止
5.维护借阅者信息(Maintain Borrower Info) 5.1 前置条件(Pre-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 5.2后置条件(Post-Conditions)
如果这个用例成功,系统添加、修改、删除借阅者信息。否则,系统的状态没有变化。 5.3 扩充点(Extension Points)没有
5.4 事件流
5.4.1 基流(Basic Flow)
系统要求Librarian选择所要执行的活动(添加、修改、删除借阅者信息)如果所选择的活动是“添加借阅者”,则执行分支流S-1:添加借阅者如果所选择的活动是“删除借阅者”,则执行分支流S-2:删
除借阅者如果所选择的活动是“修改借阅者”,则执行分支流S-3:修改借阅者 5.4.2 分支流(Subflows) S-1:添加借阅者
(1)提供借阅者的信息,如姓名、地址、邮政编码和身份证号码等。(2)系统存储借阅者信息(E-1)。 S-2:删除借阅者
(1)提供借阅者的信息(2)查询借阅者(E-2)
(3)查询借阅者的借阅记录(E-3)
(4)从系统中删除借阅者的信息,以及借阅者的预定记录 S-3:更改借阅者
(1)提供借阅者的信息
(2)查询并显示借阅者信息(E-2),修改相应的信息(3)更新系统中借阅者的信息 5.4.3替代流(Alternative Flow)
E-1:若借阅者已存在,系统显示提示信息,用例终止 E-2:若查询不到借阅者,系统显示提示信息,用例终止 E-3:若存在借阅记录,系统显示提示信息,用例终止
6.维护书刊信息(Maintain Title Info) 6.1 前置条件(Pre-Conditions)
在这个用例开始前,Librarian 必须登录到系统中 6.2后置条件(Post-Conditions)
如果这个用例成功,系统添加、修改、删除书刊种类信息。否则,系统的状态没有变化。 6.3 扩充点(Extension Points)没有
3.识别参与者及关系。
系统的参与者主要有三类:
①读者(也可称为借阅者)
②图书馆管理员
③图书馆管理系统维护者
4.识别用例及关系。
1. 借阅者请求服务的用例图
2. 图书馆管理员处理借书、还书等的用例图
3. 系统管理员进行系统维护的用例图
5.画出综合用例图,并进行用例描述【参考用例描述模板】。
6.识别所有类(含类名、属性、方法)和对象,进行类抽象,建立类之间的关系、对象之间的关系。
(1)参与者相关的类
(2)系统中用到的其他类
3 各个类之间的关系
7.分别就用户注册、用户登录、角色及用户管理、【图书信息采编入库、借书管理与统计、还书管理与统计】/【教学管理者排课、学生选课(必修课、选修课)、课程信息查询与打印】,完成对应的时序图。
1. 系统管理员添加书籍的时序图
:
2. 系统管理员添加借阅者帐户的时序图
:
: Borrower
3. 系统管理员删除书目的时序图
4.
:
图书管
理员处理书籍借阅的时序图
5. 图书管理员处理书籍归还的时序图
6.借阅者查询书籍信息的时序图
: Borrower
7. 借阅者预留书籍的时序图
: Borrower
8.给出3个关键模块的活动图。
1. 借阅者的活动图
2. 图书管理员的活动图
3系统管理员维护借阅者帐户的活动图
4系统管理员进行书目信息维护的活动图
5系统管理员维护书籍信息的活动图
9.给出对应3个关键模块的代码。public class User {
private int id;
private String username;
private String password;
private String phone;
private String email;
private int type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) { https://www.doczj.com/doc/424673297.html,ername = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) { this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
public class Title {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) { https://www.doczj.com/doc/424673297.html, = name;
}
}
public class Book {
private int id;
private int title_id;
private String name;
private String status;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getTitle_id() {
return title_id;
}
public void setTitle_id(int title_id) { this.title_id = title_id;
}
public String getName() {
return name;
}
public void setName(String name) { https://www.doczj.com/doc/424673297.html, = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) { this.status = status;
}
}
六、心得体会
本实验报告以一个图书馆图书管理系统开发为背景,针对图书馆对图书资源进行有效利用和管理的功能需求,采用统一建模语言(UML)对图书资源进行面向对象的描述,通过利用统一建模语言UML中的各种图形,分析和设计图书管理系统,建起了图书管理的面向对象模型,探讨了基于UML的体系结构建模及其实现问题。由建模过程可以看出UML在体系结构建模方面存在很好的优势,不但从整体上正确描述了该图书管理系统的体系结构,并且可以充分利用UML面向对象的优势,从而实现整个软件系统面向对象的分析、设计与开发,大大缩短开发周期,最终使得项目成功完成,此管理系统节省了管理人员和读者的大量时间,有利于信息处理效率的提高。鉴于篇幅和水平有限,本实验报告只对主要部分和主要过程做了介绍,限于水平,希望老师对本实验报告的缺点、错误提出批评,指正。
七、组内打分
八、指导教师评分
成绩:(百分制)
指导教师:张浩
注:纸质版实验报告编辑后打印,以组为单位交给学习委员,以班为单位交给老师