图书管理系统的架构设计.docx
- 文档编号:4203370
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:30
- 大小:370.20KB
图书管理系统的架构设计.docx
《图书管理系统的架构设计.docx》由会员分享,可在线阅读,更多相关《图书管理系统的架构设计.docx(30页珍藏版)》请在冰豆网上搜索。
图书管理系统的架构设计
学生学号
实验课成绩
学生实验报告书
实验课程名称
软件设计与体系结构
开课学院
计算机科学与技术学院
指导教师姓名
陈明俊
学生姓名
学生专业班级
软件1402
2016
--
2017
学年
第
一
学期
实验课程名称:
_软件设计与体系结构_
实验项目名称
图书管理系统的架构设计
实验成绩
实验者
专业班级
软件1402
组别
同组者
实验日期
年月日
一部分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
一实验目的
1、以图书管理系统为例,完成系统的架构设计,了解架构设计的过程和方法,并用UML建模工具正确的表达架构结果。
2、以图书管理系统为例,完成系统的详细设计,了解详细设计的过程和方法,程序运行流程的细节,检验设计的合理性。
二实验内容
第一部分
图书管理系统需求信息如下:
我们曾经在UML建模技术中对图书管理系统建模,本课程的实验是在此基础上对该系统提出更多的要求,并进行架构和详细设计。
在图书馆的图书管理系统中,学生要想借阅图书,必须先在系统中注册一个账号,然后系统为其生成一个借阅证,借阅证可以提供学生的姓名,系别和借阅证号。
持有借阅证的借阅者可以借阅图书,归还图书和查询借阅信息,但这些操作都是通过图书管理员代理与系统交互。
在借阅图书时,学生进入图书馆内首先找到自己要借阅的图书,然后到借书处将借书证和图书交给图书管理员办理借阅手续。
图书管理员进行借书操作时,首先需要输入学生的借书证号,系统验证借阅证是否有效(根据系统是否存在借阅证号所对应的账户),若有效,则系统还需要检验该账户中的借阅信息,以验证借书者借阅的图书是否超过了规定的数量,或者借阅者是否有超过规定借阅期限而未归还的图书;如果通过了系统的验证,则系统会显示借阅者的信息以提示图书管理员输入要借阅的图书信息,然后图书管理员输入要借阅的图书信息,系统记录一个借阅信息,并更新该学生账户完成借阅图书操作。
学生还书时只需要将所借的图书交给图书管理员,由图书管理员负责输入图书信息,然后由系统验证该图书是否为本馆藏书,若是则系统删除相应的借阅信息,并更新相应的学生账户。
在还书时也会检验该学生是否有超期未归还的图书,学生也可以查询自己的借阅信息。
为了系统能够正常运行和系统的安全性,系统还需要系统管理员进行系统的维护。
通过对上述图书管理系统的分析,可以获得如下的功能性需求:
1学生持有借书证
2图书管理员作为借阅者的代理完成借阅图书,归还图书和查询借阅信息工作
3系统管理员完成对系统的维护,对系统的维护主要包括办理借阅证,删除借阅证,添加管理员,删除管理员,添加图书,删除图书,添加标题信息,删除标题信息
4图书馆服务的对象扩充到老师和学生,学生又分为博士生,研究生,本科生,专科生等,不同类型的对象可以借阅的图书数量和期限都是不同的。
5图书的种类扩充到中外文图书,中外文杂志,论文等。
6学生和老师可以通过网络进行预约,查询
7超期罚款,各种类型的借出物罚款规则不同(超期时间的规定和罚金都不同)
第二部分
1以实验一的结果为基础,设计每个具体类的数据结构,算法和程序运行流程。
2界面元素的设计。
3用代码实现设计结果
界面设计原则:
1.简易性:
界面的简洁是要让用户便于使用、便于了解、并能减少用户发生错误选择的可能性。
2.用户语言:
界面中要使用能反应用户本身的语言,而不是游戏设计者的语言。
3.记忆负担最小化:
人脑不是电脑,在设计界面时必须要考虑人类大脑处理信息的限度。
人类的短期记忆极不稳定、有限,24小时内存在25%的遗忘率。
所以对用户来说,浏览信息要比记忆更容易。
4.一致性:
是每一个优秀界面都具备的特点。
界面的结构必须清晰且一致,风格必须与游戏内容相一致。
5.清楚:
在视觉效果上便于理解和使用。
6.用户的熟悉程度:
用户可通过已掌握的知识来使用界面,但不应超出一般常识。
7.从用户的观点考虑:
想用户所想,做用户所做。
用户总是按照他们自己的方法理解和使用。
8.排列:
一个有序的界面能让用户轻松的使用。
9.安全性:
用户能自由的作出选择,且所有选择都是可逆的。
在用户作出危险的选择时有信息介入系统的提示。
10.灵活性:
简单来说就是要让用户方便的使用,但不同于上述。
即互动多重性,不局限于单一的工具(包括鼠标、键盘或手柄)。
11.人性化:
高效率和用户满意度是人性化的体现。
应具备专家级和初级玩家系统,即用户可依据自己的习惯定制界面,并能保存设置。
三实验步骤
1采用用例驱动的分析方法,分析业务领域的需求,识别系统中的参与者和用例,写出用例的文本,建立用例模型。
要求正确识别系统的所有角色和用例;准确描述用例间的关系;描述系统中重要用例的基本事件流(正常情况),备选事件流和异常事件流。
2根据步骤1的结果,进一步建立领域模型(类图),完成静态模型的建立。
要求正确识别出领域类,并给类增加属性和关联。
3结合某一种具体的框架(比如Java的JavaEE,Spring等)设计系统的架构,要求采用分层的架构和MVC模式,用包图表达架构。
4根据1,2,3的结果以用例或用例的场景为基本单元,设计各层包含的类,接口及其交互(类图,顺序图等)以实现用例或场景,尽可能在设计中体现OO的设计原则,设计模式。
可以选择一步完成或分两步完成设计,如果选择一步完成,就没有分析类图,直接得出设计类图。
两步完成:
第一步不考虑界面和持久化类,只考虑领域类,建立分析类图及分析类之间的交互顺序图。
第二步考虑加入界面类和持久化类,在第一步的基础上增强和完善分析类图和交互图,得到设计类图和更精确的交互顺序图。
5完成图书管理系统的数据库设计。
数据库的设计是以领域模型为基础的,经过分析类图和设计类图的细化,找出需要持久化的类,转化为关系模型。
第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
用例模型
用例文档
登录
SCENARIOS
BasicPath.BasicPath
1.用户进入图书馆的登录页面
2.用户输入用户名和密码
Alternate:
2a.用户输入用户名错误
Alternate:
2b.用户输入的密码错误
3.登陆成功
Alternate.用户输入用户名错误
1.显示用户名错误
2.用户重新输入用户名
Alternate.用户输入的密码错误
1.显示密码错误
2.用户重新输入用户名
借出书目
BasicPath.BasicPath
1.图书管理员请求系统处理借书业务
2.系统显示借书处理界面
3.图书管理员输入借阅证信息
4.系统验证借阅证的有效性
Exception:
4a.借书证不合法
5.图书管理员输入图书信息
6.系统添加新的借阅记录
Exception:
6a.借阅者借书数量已达到上限
Alternate:
6b.书籍库存为0
7.系统显示借书后的借阅信息,图书管理员重复5-7步,直到结束
Exception.借书证不合法
1.系统显示借书证不合法
2.图书管理员进行确认
Exception.借阅者借书数量已达到上限
1.系统显示借书者借书详细信息并报警
2.图书管理员处理报警并结束借书
Alternate.书籍库存为0
1.显示库存为0
2.管理员结束借书
取消预定
SCENARIOS
BasicPath.BasicPath
1.借阅者取消预定图书
Alternate:
1a.系统收不到取消预定的信息
2.图书管理员修改借阅者信息
3.取消预定成功
Alternate.系统收不到取消预定的信息
1.取消预定失败
2.提醒借阅者重新取消预定图书
处理超期
SCENARIOS
BasicPath.BasicPath
1.图书管理员检查到归还图书超期
2.图书管理员根据超出的时间计算罚金
3.图书管理员要求借书证缴纳罚金
4.超期处理完成
处理赔偿
SCENARIOS
BasicPath.BasicPath
1.图书管理员检查到借阅的图书已损坏
2.图书管理员根据图书的损坏情况要求借阅者赔偿
3.处理赔偿完成
预定
SCENARIOS
BasicPath.BasicPath
1.借阅者登录图书管理系统
2.借阅者预定图书
Exception:
2a.该图书库存为0,确定预定时间
Exception:
2b.该图书库存不为0,确定预定时间
3.预定图书成功
Alternate.图书库存为0
1.显示该图书库存为0
Exception.该图书库存为0,确定预定时间
1.显示该图书的预定时间
Exception.该图书库存不为0,确定预定时间
1.按规定显示预定时间
返还书目
SCENARIOS
BasicPath.BasicPath
1.学生携带图书借阅证,进入图书馆
2.学生归还图书
3.图书管理员检查学生所借阅图书的情况
Alternate:
3a.学生借阅的图书超期
Alternate:
3b.学生借阅的图书已损坏
Exception:
3c.图书是否超期
Exception:
3d.图书是否损坏
Exception:
3e.学生是否缴纳罚金
Exception:
3f.图书是不是本馆的藏书
4.系统删除学生借阅信息
Alternate.学生借阅的图书超期
1.显示借阅的图书超期
2.图书管理员根据规定和图书的超期情况向学生收取相应的罚金
Alternate.学生借阅的图书已损坏
1.显示图书已损坏
2.图书管理员根据规定及图书的损坏情况向学生收取相应的罚金
Exception.图书是否超期
1.图书管理员检查学生所借阅的图书是否超期
Exception.图书是否损坏
1.图书管理员检查学生所借阅的图书是否损坏
Exception.学生是否缴纳罚金
1.图书管理员判断学生是否缴纳罚金
Exception.图书是不是本馆的藏书
1.图书管理员输入图书信息
2.系统验证该图书是不是本馆藏书
类图(领域模型)
包图(三层架构)
数据库设计
数据库概念数据模型CDM对象如下图,该图显示了各实体的属性及各实体之间的关系。
由PDM对象自动生成的数据库脚本文件代码如下:
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('books')ando.name='FK_BOOKS_管理书籍_ADMIN')
altertablebooks
dropconstraintFK_BOOKS_管理书籍_ADMIN
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('borrow_information')ando.name='FK_BORROW_I_BORROW_IN_BOOKS')
altertableborrow_information
dropconstraintFK_BORROW_I_BORROW_IN_BOOKS
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('borrow_information')ando.name='FK_BORROW_I_BORROW_IN_READER')
altertableborrow_information
dropconstraintFK_BORROW_I_BORROW_IN_READER
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('login')ando.name='FK_LOGIN_LOGIN_ADMIN')
altertablelogin
dropconstraintFK_LOGIN_LOGIN_ADMIN
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('login')ando.name='FK_LOGIN_LOGIN2_READER')
altertablelogin
dropconstraintFK_LOGIN_LOGIN2_READER
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('reversation')ando.name='FK_REVERSAT_REVERSATI_BOOKS')
altertablereversation
dropconstraintFK_REVERSAT_REVERSATI_BOOKS
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('reversation')ando.name='FK_REVERSAT_REVERSATI_READER')
altertablereversation
dropconstraintFK_REVERSAT_REVERSATI_READER
go
ifexists(select1
fromsysindexes
whereid=object_id('admin')
andname='权限_FK'
andindid>0
andindid<255)
dropindexadmin.权限_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('admin')
andtype='U')
droptableadmin
go
ifexists(select1
fromsysindexes
whereid=object_id('books')
andname='管理书籍_FK'
andindid>0
andindid<255)
dropindexbooks.管理书籍_FK
go
ifexists(select1
fromsysindexes
whereid=object_id('books')
andname='图书类型_FK'
andindid>0
andindid<255)
dropindexbooks.图书类型_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('books')
andtype='U')
droptablebooks
go
ifexists(select1
fromsysobjects
whereid=object_id('booktype')
andtype='U')
droptablebooktype
go
ifexists(select1
fromsysindexes
whereid=object_id('borrow_information')
andname='Association_2_FK'
andindid>0
andindid<255)
dropindexborrow_information.Association_2_FK
go
ifexists(select1
fromsysindexes
whereid=object_id('borrow_information')
andname='Association_1_FK'
andindid>0
andindid<255)
dropindexborrow_information.Association_1_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('borrow_information')
andtype='U')
droptableborrow_information
go
ifexists(select1
fromsysindexes
whereid=object_id('login')
andname='login2_FK'
andindid>0
andindid<255)
dropindexlogin.login2_FK
go
ifexists(select1
fromsysindexes
whereid=object_id('login')
andname='login_FK'
andindid>0
andindid<255)
dropindexlogin.login_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('login')
andtype='U')
droptablelogin
go
ifexists(select1
fromsysindexes
whereid=object_id('reader')
andname='用户权限_FK'
andindid>0
andindid<255)
dropindexreader.用户权限_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('reader')
andtype='U')
droptablereader
go
ifexists(select1
fromsysindexes
whereid=object_id('reversation')
andname='reversation2_FK'
andindid>0
andindid<255)
dropindexreversation.reversation2_FK
go
ifexists(select1
fromsysindexes
whereid=object_id('reversation')
andname='reversation_FK'
andindid>0
andindid<255)
dropindexreversation.reversation_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('reversation')
andtype='U')
droptablereversation
go
createtableadmin(
admin_idintnotnull,
admin_namechar(20)null,
admin_passwordchar(16)null,
loginsintnull,
last_loginchar(10)null,
"right"intnull,
constraintPK_ADMINprimarykeynonclustered(admin_id)
)
go
createindex权限_FKonadmin(
)
go
createtablebooktype(
type_idintnull
)
go
createtablebooks(
book_idintnotnull,
admin_idintnull,
titlechar(20)null,
type_idintnull,
authorchar(40)null,
pricemoneynull,
"bookconcern"char(50)null,
addtimedatetimenull,
amountintnull,
remainintnull,
constraintPK_BOOKSprimarykeynonclustered(book_id),
constraintFK_BOOKS_管理书籍_ADMINforeignkey(admin_id)
referencesadmin(admin_id),
constraintFK_BOOKS_BOOKTYPE_BOOKTYPEforeignkey()
referencesbooktype
)
go
createindex图书类型_FK
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 架构 设计