图书管理系统的架构设计_第1页
图书管理系统的架构设计_第2页
图书管理系统的架构设计_第3页
图书管理系统的架构设计_第4页
图书管理系统的架构设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生学号实验课成绩学生实验报告书实验课程名称软件设计与体系结构开课学院计算机科学与技术学院指导教师姓名陈明俊学生姓名学生专业班级软件14022016--2017学年第一学期TOC\o"1-3"\h\u实验课程名称:_软件设计与体系结构_图书管理系统的架构设计成绩实验者专业班级软件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完成图书管理系统的数据库设计。数据库的设计是以领域模型为基础的,经过分析类图和设计类图的细化,找出需要持久化的类,转化为关系模型。第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)用例模型用例文档登录SCENARIOSBasicPath.BasicPath1.用户进入图书馆的登录页面2.用户输入用户名和密码Alternate:2a.用户输入用户名错误Alternate:2b.用户输入的密码错误3.登陆成功Alternate.用户输入用户名错误1.显示用户名错误2.用户重新输入用户名Alternate.用户输入的密码错误1.显示密码错误2.用户重新输入用户名借出书目BasicPath.BasicPath1.图书管理员请求系统处理借书业务2.系统显示借书处理界面3.图书管理员输入借阅证信息4.系统验证借阅证的有效性Exception:4a.借书证不合法5.图书管理员输入图书信息6.系统添加新的借阅记录Exception:6a.借阅者借书数量已达到上限Alternate:6b.书籍库存为07.系统显示借书后的借阅信息,图书管理员重复5-7步,直到结束Exception.借书证不合法1.系统显示借书证不合法2.图书管理员进行确认Exception.借阅者借书数量已达到上限1.系统显示借书者借书详细信息并报警2.图书管理员处理报警并结束借书Alternate.书籍库存为01.显示库存为02.管理员结束借书取消预定SCENARIOSBasicPath.BasicPath1.借阅者取消预定图书Alternate:1a.系统收不到取消预定的信息2.图书管理员修改借阅者信息3.取消预定成功Alternate.系统收不到取消预定的信息1.取消预定失败2.提醒借阅者重新取消预定图书处理超期SCENARIOSBasicPath.BasicPath1.图书管理员检查到归还图书超期2.图书管理员根据超出的时间计算罚金3.图书管理员要求借书证缴纳罚金4.超期处理完成处理赔偿SCENARIOSBasicPath.BasicPath1.图书管理员检查到借阅的图书已损坏2.图书管理员根据图书的损坏情况要求借阅者赔偿3.处理赔偿完成预定SCENARIOSBasicPath.BasicPath1.借阅者登录图书管理系统2.借阅者预定图书Exception:2a.该图书库存为0,确定预定时间Exception:2b.该图书库存不为0,确定预定时间3.预定图书成功Alternate.图书库存为01.显示该图书库存为0Exception.该图书库存为0,确定预定时间1.显示该图书的预定时间Exception.该图书库存不为0,确定预定时间1.按规定显示预定时间返还书目SCENARIOSBasicPath.BasicPath1.学生携带图书借阅证,进入图书馆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(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('books')and='FK_BOOKS_管理书籍_ADMIN')altertablebooksdropconstraintFK_BOOKS_管理书籍_ADMINgoifexists(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('borrow_information')and='FK_BORROW_I_BORROW_IN_BOOKS')altertableborrow_informationdropconstraintFK_BORROW_I_BORROW_IN_BOOKSgoifexists(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('borrow_information')and='FK_BORROW_I_BORROW_IN_READER')altertableborrow_informationdropconstraintFK_BORROW_I_BORROW_IN_READERgoifexists(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('login')and='FK_LOGIN_LOGIN_ADMIN')altertablelogindropconstraintFK_LOGIN_LOGIN_ADMINgoifexists(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('login')and='FK_LOGIN_LOGIN2_READER')altertablelogindropconstraintFK_LOGIN_LOGIN2_READERgoifexists(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('reversation')and='FK_REVERSAT_REVERSATI_BOOKS')altertablereversationdropconstraintFK_REVERSAT_REVERSATI_BOOKSgoifexists(select1fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')wherer.fkeyid=object_id('reversation')and='FK_REVERSAT_REVERSATI_READER')altertablereversationdropconstraintFK_REVERSAT_REVERSATI_READERgoifexists(select1fromsysindexeswhereid=object_id('admin')andname='权限_FK'andindid>0andindid<255)dropindexadmin.权限_FKgoifexists(select1fromsysobjectswhereid=object_id('admin')andtype='U')droptableadmingoifexists(select1fromsysindexeswhereid=object_id('books')andname='管理书籍_FK'andindid>0andindid<255)dropindexbooks.管理书籍_FKgoifexists(select1fromsysindexeswhereid=object_id('books')andname='图书类型_FK'andindid>0andindid<255)dropindexbooks.图书类型_FKgoifexists(select1fromsysobjectswhereid=object_id('books')andtype='U')droptablebooksgoifexists(select1fromsysobjectswhereid=object_id('booktype')andtype='U')droptablebooktypegoifexists(select1fromsysindexeswhereid=object_id('borrow_information')andname='Association_2_FK'andindid>0andindid<255)dropindexborrow_information.Association_2_FKgoifexists(select1fromsysindexeswhereid=object_id('borrow_information')andname='Association_1_FK'andindid>0andindid<255)dropindexborrow_information.Association_1_FKgoifexists(select1fromsysobjectswhereid=object_id('borrow_information')andtype='U')droptableborrow_informationgoifexists(select1fromsysindexeswhereid=object_id('login')andname='login2_FK'andindid>0andindid<255)dropindexlogin.login2_FKgoifexists(select1fromsysindexeswhereid=object_id('login')andname='login_FK'andindid>0andindid<255)dropindexlogin.login_FKgoifexists(select1fromsysobjectswhereid=object_id('login')andtype='U')droptablelogingoifexists(select1fromsysindexeswhereid=object_id('reader')andname='用户权限_FK'andindid>0andindid<255)dropindexreader.用户权限_FKgoifexists(select1fromsysobjectswhereid=object_id('reader')andtype='U')droptablereadergoifexists(select1fromsysindexeswhereid=object_id('reversation')andname='reversation2_FK'andindid>0andindid<255)dropindexreversation.reversation2_FKgoifexists(select1fromsysindexeswhereid=object_id('reversation')andname='reversation_FK'andindid>0andindid<255)dropindexreversation.reversation_FKgoifexists(select1fromsysobjectswhereid=object_id('reversation')andtype='U')droptablereversationgocreatetableadmin(admin_idintnotnull,admin_namechar(20)null,admin_passwordchar(16)null,loginsintnull,last_loginchar(10)null,"right"intnull,constraintPK_ADMINprimarykeynonclustered(admin_id))gocreateindex权限_FKonadmin()gocreatetablebooktype(type_idintnull)gocreatetablebooks(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)gocreateindex图书类型_FKonbooks()gocreateindex管理书籍_FKonbooks(admin_idASC)gocreatetablereader(reader_idintnotnull,reader_namechar(20)null,sexchar(2)null,agetinyintnull,classchar(15)null,addresstextnull,memotextnull,maxborrowedintnull,reader_passwordchar(16)null,"right"intnull,constraintPK_READERprimarykeynonclustered(reader_id))gocreatetableborrow_information(book_idintnotnull,reader_idintnotnull,borrow_timedatetimenull,end_timedatetimenull,amountintnull,return_timedatetimenull,constraintPK_BORROW_INFORMATIONprimarykey(book_id,reader_id),constraintFK_BORROW_I_BORROW_IN_BOOKSforeignkey(book_id)referencesbooks(book_id),constraintFK_BORROW_I_BORROW_IN_READERforeignkey(reader_id)referencesreader(reader_id))gocreateindexAssociation_1_FKonborrow_information(book_idASC)gocreateindexAssociation_2_FKonborrow_information(reader_idASC)gocreatetablelogin(admin_idintnotnull,reader_idintnotnull,"right"intnull,constraintPK_LOGINprimarykey(admin_id,reader_id),constraintFK_LOGIN_LOGIN_ADMINforeignkey(admin_id)referencesadmin(admin_id),constraintFK_LOGIN_LOGIN2_READERforeignkey(reader_id)referencesreader(reader_id))gocreateindexlogin_FKonlogin(admin_idASC)gocreateindexlogin2_FKonlogin(reader_idASC)gocreateindex用户权限_FKonreader()gocreatetablereversation(book_idintnotnull,reader_idintnotnull,reservation_timedatetimenull,reservationcanceldatetimenull,constraintPK_REVERSATIONprimarykey(book_id,reader_id),constraintFK_REVERSAT_REVERSATI_BOOKSforeignkey(book_id)referencesbooks(book_id),constraintFK_REVERSAT_REVERSATI_READERforeignkey(reader_id)referencesreader(reader_id))gocreateindexreversation_FKonreversation(book_idASC)gocreateindexreversation2_FKonreversation(reader_idASC)go系统的顺序图顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。该图书馆管理系统主要含有以下几个重要的顺序图,其他对象的顺序图和这些也类似。借书顺序图还书顺序图罚款顺序图借书顺序图login():登录系统。checkstu_card():对读者信息进行验证,检查是否符合本图书馆借书条件。showinformation():显示该读者的基本信息函数。borrow():读者借书函数。getreaders():取得读者信息函数。看该读者是否符合借书条件,若符合,则返回可借信息。gettitle():取得书目信息。getreservation():检验书籍是否被预订函数。getnoreservation():书籍没被预订或取消预订函数。create(borrower,item):创建书籍外借函数。借书时,读者先将书拿予管理员,管理员对书籍和读者进行检验,若书籍和读者都符合借书条件,则借书成功。还书顺序图login():登录系统。getitem():取得书籍条目信息。update():对图书馆书籍条目和借阅者信息进行更新条目。还书时,读者先将书交给管理员,由管理员扫描书籍,若书籍没有过期等违规现象,则对书目和读者借阅信息进行更新,同时还书成功。罚款顺序图管理员对书籍进行扫描,若发现书籍已经超过了图书馆规定的还书期限,则按每天一定金额进行罚款,过期天数和罚款金额由系统自动计算。用户交完罚金后,则对读者借阅信息进行更新。系统的活动图活动图描述的是某流程中的任务的执行,活动图描述活动是如何协同工作的,当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。。在本图书馆管理系统中,我们主要描述了图书馆系统的借书、还书和预订的活动图。1.借书活动图管理员首先要扫描读者的借书证,检验证件是否符合图书馆借书条件,若该读者的借书数量还未达到最大规定数量,并且其所借书籍均未属于过期范围,则符合借书条件。则再扫描书籍条形码,检查书籍是否是不可借书籍或者已经被预订,若被预订,则取消预订,方可借书。在这些条件都符合时则更新书籍信息和读者的借阅信息,记录好借书的时间。2、还书活动图图书管理员对书籍进行扫描,若书籍已经过期,则要求读者还请欠款才能还书,读者缴应交罚款后,更新书目信息和读者信息。3、预订图书活动图读者先进入系统查询自己所需要的书籍,显示书籍信息,检验书籍是否属于可预订书籍,若符合条件则检查书籍是否已经被预订或已经被外借,若都未成立,则读者登录系统,并对该书籍进行预订。界面元素系统登录页面系统登录页面主要是用户进入系统验证的一种手段,通过登录页面对用户角色的判定,根据不同的用户角色,控制不同的功能权限。超级管理员进入超级管理员页面,管理员进入管理员页面,学生进入学生页面。管理员页面管理员系统实现页面主要包括对学生信息管理页面,图书信息管理页面,借阅信息管理页面以及系统信息管理页面四个方面,下面分别对这四个方面的系统实现作相关的介绍。3)学生管理信息页面本系统对学生管理包括:添加学生信息,修改学生信息、、删除学生信息,查询学生信息。在添加学生信息与修改学生信息时,进行相应的验证,主要是必填与唯一性验证。 学生管理主页面,主要是进行学生信息查询,删除学生信息操作。可以通过学院,专业,班级索引进行查询4)图书管理信息页面图书信息管理包括:添加图书信息、删除图书、修改图书信息、查询图书信息。在添加图书信息与修改图书信息时,进行相应的验证,主要是必填与唯一性验证。 在进行添加图书信息时,是在图书类型的编辑区里进行,先选择相应的图书类型,再添加图书信息。5)借阅管理信息页面学生借阅信息的管理,主要是对学生借阅图书以及归还图书登记。并判断有没有超期,如果超期,则进行相应的罚款。借阅信息是在学生借书或还书时,对学生的信息进入编辑。实现页面是通过查询到要借书学生的信息,在其借阅信息中增加相应的记录,其中学号与姓名为要借书学生的学号与姓名,根据学生信息会自动赋值,图书编号为必填项,书名会根据选择的图书编号自动生成。距到期天数默认为7天,续借情况默认为否。6)系统管理信息页面系统管理主要是管理员对图书馆信息、工作人员信息以及一些基础数据的录入。学院信息的录入,通过在学院信息主页面新增按钮进入新增编辑页面,学院信息主页面可以对学院信息进行增,删,查。具体实现如图2-1-2-5所示:7)学生页面学生页面主要包括基本信息,图书信息以及借阅信息。8)基本信息页面因为学生信息是以表结构呈现的,表里也含有他人的基本信息。为了防止用户可以看到他人的基本信息。在查看自己基本信息时,需要输入学号与姓名,并且学号与姓名必填。输入正确则会显示信息,输入有误则查出的是空表,没有任何数据。9)图书信息页面对图书的查询主要有三种查询方式:根据图书编号,书名,图书类型。当然,也可以选择混合查询。学生可以根据自己了解的情况任选择一种方式。10)借还信息页面图书的查询页面可以通过学号与姓名验证来查询用户的借阅信息,只有当学号与姓名都输入正确的情况下,才能查询到相应的图书借还记录。11)超级管理员页面超级管理员页面也就是超级管理的操作界面设计,超级管理员可以对系统进行任何操作,主要包括用户管理,角色管理,功能权限管理,菜单管理。三、实验小结、建议及体会通过本次实验,我完成了图书管理系统系统的架构设计,了解了架构设计的过程和方法,其中发现了很多上学期设计中的不足,并及时改正。这次的实验任务量非常大,但是我坚持下来了,正是这样的任务量,我从中学到了非常多知识,也锻炼了自己。而且队友的帮助对我来说也是非常的重要,以后的实验我会继续努力的。(廖锡峰)通过本次软件设计与体系结构实验,对本学期所学的软件设计知识进行了系统的梳理及综合运用。在软件开发活动中,架构是软件开发最重要的一步。因为进行完美的架构分析及确定,编写软件规格说明书,通过uml建模或者数据流图、数据字典、ER图来表达需求,有了这些东西,后续的开发过程有了指导,更加系统和容易。只有通过实践在能完全理解并掌握这些理论知识。需求分析建模有很多种方法,工具也繁多,需要不断的练习,才能更好地使用这些方法。(沙行)目录TOC\o"1-3"\u第一章总论 1一、项目提要 1二、可行性研究报告编制依据 2三、综合评价和论证结论 3四、存在问题与建议 4第二章项目背景及必要性 5一、项目建设背景 5二、项目区农业产业化经营发展现状 11三、项目建设的必要性及目的意义

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论