信息与电气工程学院
课程项目实践报告
(2018/ 2019 学年第一学期)
课程名称 :
软件工程
项目名称 : 图书漂流系统的面相对象分析与设计
专业班级 :
学生姓名 :
学 号:
任课教师 :
项目成绩 :
2018 年 10 月 20 日
目 录
1. 引言 ............................................................ 1
1.1 编写目的 .................................................... 1
2 .问题描述 ........................................................ 1
2.1 系统需求描述及分析 .......................................... 1
2.2 目标 ........................................................ 1
3. 系统需求分析 .................................................... 2
3.1 确定系统范围 ................................................ 2
3.2 定义参与者 .................................................. 2
3.3 定义用例 .................................................... 2
3.4 绘制用例图 .................................................. 3
3.5 建立用例详细流程 ............................................ 4
4.建立系统 OOA 模型 ................................................. 4
4.1 建立系统的静态模型 .......................................... 4
4.2 建立系统的动态模型 .......................................... 8
4.2.1 顺序图 ................................................ 8
4.2.2 活动图 ................................................ 9
5.建立系统的 OOD 模型 .............................................. 10
5.1 问题域子系统设计 ........................................... 10
5.2 数据管理子系统设计 ......................................... 10
6 结论意见 ........................................................ 11
信电学院 CDIO 试点班项目实践报告
1. 引言
1.1 编写目的
在进入到信息化的时代,计算机开始广泛用于图书馆的检索系统,将图书进行电子
计算机存储和提取成为现实。但图书馆对借阅的读者知识要求较高,读者要熟悉所利用
图书馆的图书分类法,会利用检索工具和机读目录找到相关图书的线索,在借阅时手续
比较复杂,需要出示相关证件,还要办理借阅手续,还书地点和日期都是固定的,破损
和超期都要受到相应的惩罚。相反,参与图书漂流的图书不以特定的图书分类法来编排,
只以书名作为选择的唯一标准,所有书目都是当下最新的且迎合社会趋势的。借书时无
须任何特殊的手续,只凭借个人诚信来完成漂流的链接,还书地点随意,可在漂流地点
设置还书处,没有惩罚规则,主要凭每个人的自觉和诚信,对于图书破损修补也凭每个
人的自觉和良知。在这种情况下,对于正需要广泛阅读获得知识的广大学生来说,为了
方便借阅图书,也为了创造更好的读书环境,开展班级图书漂流活动势在必行。
2 .问题描述
2.1 系统需求描述及分析
班级图书漂流管理系统的用户是班级里的学生。学生进入班级图书漂流系统后,注
册个人信息,系统通过班级学生管理表单审核学生信息,审核通过后,系统会为每个学
生建立一个账户,账户中存储学生的个人信息,借阅信息,上传书目信息。拥有账户的
学生登录后可以查询信息,借阅书目,归还书籍,预定书目并可取消预订。借阅书目时
需要输入所有借阅书的名称,提交后,系统会验证该学生账户信息是否合格,合格通过
后,系统会验证书籍的可借阅性,若库存文件中存在该书,则可借,最后将可借书目存
入借阅记录中,反之,则不可借,可返回去告知该生是否需要预约该书,预约成功后,
最后将可预约书目存入借阅记录中,返回给学生借书单。待学生还书时,系统会根据借
书记录的信息对该生进行信誉评分,并删除借书文件里关于该生所借书的借阅记录,更
新库存文件,返回给学生还书单。学生查询信息时,可选择个人信息查询,图书信息查
询,超期查询及库存查询,查询结果会以统计查询单的形式返回给学生。
同时,该系统需要一名书管,可由班级学生投票推举一名同学,该书管负责维护学
生账户信息和上传书籍信息也可同其他学生一样使用该系统。
2.2 目标
第 1 页
信电学院 CDIO 试点班项目实践报告
本系统目标在于提高学生借阅书籍的兴趣,同时方便学生对图书资料的查询。着重
提高系统安全性,保证图书信息的完整、正确。节省更多的人力与设备费用,让班级图
书管理成为一项很直接人性化的管理。
3. 系统需求分析
3.1 确定系统范围
班级图书漂流系统的职责范围包括班级学生可以通过这个系统共享书籍,自由的借
书还书,预约书籍,查询相关图书信息。除此之外的其他,如造成书籍损坏,超期不还
等都不属于该系统的职责范围,至于选举书管也不属于该系统的职责范围。
3.2 定义参与者
参与者是与系统有交互作用的人或事物。通过上面的需求描述可以确定班级图书漂
流系统中包含的 2 个参与者:学生,书管。对于每一个参与者,应当明确其业务活动的
内容及对系统的服务要求等。
“学生”参与者使用该系统登记注册,查询信息,进行借书还书,预约书操作。
“书管”参与者不仅使用该系统管理学生账户信息并管理上传图书信息,而且也同
为“学生”参与者。
上述班级图书漂流管理系统中各参与者的简要描述如下:
学生——该系统所面向的使用用户
书管——该系统所认同的维护人员
3.3 定义用例
每一个用例都是一个参与者与系统在交互中执行的有关事务序列。一般地,应当根
据系统需求,找出全部的用例,并从参与者的角度给出事件流。定义一个好的用例的首
要原则是:用例必须给参与者提供某些信息。
以下是班级图书漂流管理系统必须要处理的问题:
①学生需要使用该系统来注册个人信息并登录;
②学生登录后要利用该系统来查询信息,借书还书;
③当借阅的书籍没有时可以进行预约书籍的处理
④当归还书籍超过规定时间时要扣该学生的信誉分
⑤书管要管理书籍信息和登记学生信息
基于这些需要,可以生成以下用例:
第 2 页
信电学院 CDIO 试点班项目实践报告
①查询个人信息
②查看图书信息
③查看超期信息
④查看库存信息
⑤查询图书信息
⑥注册信息并登陆
⑦登记学生信息
⑧借书
⑨预约书籍
⑩还书
⑪扣信誉分
⑫管理图书信息
⑬上传书籍
⑭修改书库
3.4 绘制用例图
图 3-1 班级图书漂流系统的主用例图
第 3 页
3.5 建立用例详细流程
信电学院 CDIO 试点班项目实践报告
表 3-2 借书用例的详细流程
用例编号:
用例名称:
范围:
级别:
1
实现班里学生请求借书的功能
应用于软件系统的借书功能
用户目标级别
主要参与者:
学生
项目相关人员及其兴趣: 主要实现学生如何借书,没书时是否可以预约书
前置条件:
后置条件:
学生登录系统成功后,选择借书
借书成功
学生选择借书
判定学生信息合格
判定书库中存在该学生所借书目
生成借书单
将借书单返回给学生,借书成功
主要成功场景:
1
2
3
4
5
扩展(或替代流程):
*a.
2a.
*a.
3a.
特殊需求:
判定学生信息时,判定为不合格
返回学生信息有误不能借书并返回到登录界面,让该生进行登录(或注册)
判定书库中是否存在该学生所借书时,判定为不存在
学生可进行预约借书,预约成功后更新借书文件
学生借书成功后系统需返回给该生借书单
技术与数据的变化列表: 学生借书时需输入所有的借阅书目
发生频率:
待解决的问题:
结束成功后,输出一张借书单给学生
学生每选择一次借书,该功能执行一次
不清楚的问题:若无用户想借的书籍,是否应添加一个学生反馈
界面,让学生加入想看的书,这样有书的同学就能及时共享该书。
尚解决的问题:如果有很多名用户都预约同一本书,这时应限定
一个预约人数,可设为 3,这样也避免了后预定的读者需等待很
长时间。
4.建立系统 OOA 模型
4.1 建立系统的静态模型
系统的静态结构模型主要由对象类图和对象图来表达。发现对象类及其联系,确定
它们之间的静态结构和动态行为,是面向对象分析中的最基本任务。
针对该班级图书漂流系统,准备的问题有:
①学生要创建该系统的账户
第 4 页
信电学院 CDIO 试点班项目实践报告
②书管要维护学生信息并上传书籍
③学生要从该系统中借书,还书,预定书
④学生要从该系统中查询个人信息和图书信息
基于对以上问题的回答,可以确定其中出现的名词有“学生”,“书管”,“借书记录”,
“库存书籍”等;动词有“学生登记”,“上传书籍”,“借书”,“还书”,“预定”,“查询
统计”等。“学生”的属性有姓名,性别,学号,系别,专业班级,联系方式,上传的
书籍,信誉分数,普通账户等级等,对这些信息的服务操作有注册,查询,添加,修改
等;由于书管本就是一名学生,所以“书管”的属性与学生属性基本相同,只是没有普
通账户等级而是管理账户等级,相关的服务操作比学生多一个更新维护;“借书记录”
的属性有书籍名称,借书/预定时间,还书时间,借阅者姓名,学号,联系方式,对这
些信息的服务操作有添加,删除,修改,查询;“库存书籍”的属性有书籍名称,书籍
数量,上传者姓名和学号,对这些信息的服务操作有添加,删除,修改,查询;“学生
登记”类负责将学生信息添加至学生文件中,该类的属性有学生姓名,学号,性别,系
别,联系方式,专业班级,信誉分,上传的书籍,普通账户等级等,操作有加入学生,
修改,删除等;“上传书籍”类负责将库存文件中的书籍更新,该类的属性有书籍名称,
上传时间,上传学生的姓名和学号,联系方式,书籍数量等,操作有添加书籍记录,更
新记录等;“借书”类是该系统的主要业务,主要负责学生的借书处理,该类的属性有
书籍名称,借书时间,借阅学生姓名学号,联系方式等,操作有查询书籍状态,加入借
书记录,打印借书单等;“还书”类主要负责学生的还书处理,该类的属性有还书名称,
还书时间,还书人姓名,学号,联系方式等,操作有更新借书文件里的借书记录,评判
信誉得分,打印还书单等;“预定”类主要负责学生预约书籍的处理,该类的属性有书
籍名称,预约时间,预约人姓名,学号,联系方式等,操作有创建预约记录,删除预约
记录,修改预约记录;“查询统计”类负责学生个人信息和图书信息的查询处理,其属
性有学生学号,图书名称等,操作有查询个人信息,查询图书信息,打印统计查询表单
等。
在定义了对象类之后,需要进一步分析对象类之间的联系。一般地,对象类之间的
联系有多种类型,如关联,聚集,泛化,依赖等。在班级图书漂流管理系统中,各类之
间存在的关系可以描述如下。
①关联。在“借书”类,“还书”类,“预定”类,“查询统计”类与“借阅人”类
之间存在“选择”关联。相互关联的类之间不存在继承关系,而是通过消息的传递相互
联系,协同工作。
②聚集联系。“上传书籍”类与“库存书籍”类之间存在聚合关系,“上传书籍”类
是代表部分的对象类,“库存书籍”类是代表整体的对象类。
③泛化关系。因为书管本身就是有一名推举出来的班级学生,所以学生和书管之间
第 5 页
信电学院 CDIO 试点班项目实践报告
有许多共同的信息内容,如姓名,学号,系别,专业班级,联系方式等。因此,可以把
学生和书管的共同信息和共同操作抽取出来,组成一个新类“借阅者”,原来的“学生”
类中保留学生特有的属性“普通账户等级”,在“书管”类中保留书管的特有属性“管
理账户等级”。“学生”类,“书管”类与“借阅者”类的关系为泛化联系。“借阅者”类
为更一般地类,“学生”类和“书管”类是特殊类,它们继承“借阅者”类中的公共属
性。
④依赖联系。“统计查询”类与“学生登记”类,“库存书籍”类,“借书记录”类
之间存在依赖关系,“统计查询”类依赖于“学生登记”类,“库存书籍”类和“借书记
录”类。在定义联系时,需要同时分析和确定联系各端的对象类的多重性,角色,导航
等性质,这些内容都可以从需求分析,领域知识等来分析和确定。
第 6 页