软件工程综合课程设计报告基于uml的图书馆管理系统

上传人:仙*** 文档编号:63182715 上传时间:2022-03-17 格式:DOC 页数:31 大小:2.58MB
返回 下载 相关 举报
软件工程综合课程设计报告基于uml的图书馆管理系统_第1页
第1页 / 共31页
软件工程综合课程设计报告基于uml的图书馆管理系统_第2页
第2页 / 共31页
软件工程综合课程设计报告基于uml的图书馆管理系统_第3页
第3页 / 共31页
点击查看更多>>
资源描述
学 号: 04课 程 设 计课程名称软件工程组合课程设计论文题目基于uml的图书馆管理系统学 院计算机科学与技术学院专 业软件工程班 级1001班姓 名陈璞指导教师陈明俊20122013学年 第2学期31 / 31文档可自由编辑打印目 录一、可行性研究21.1、可行性研究的目的21.2、可行性分析31.2.1、技术可行性31.2.2、经济可行性31.2.3、社会可行性31.2.4、法律可行性31.3、可行性研究的结论4二、需求分析阶段42.1、功能需求42.2、性能需求52.3、接口需求52.4、数据需求62.4.1、系统UML模型62.4.2、系统时序图8三、概要设计93.1、系统层次图93.2、数据库设计概述9四、详细设计124.1、图书管理124.1.1、新书入库124.1.2、旧书销毁124.1.3 图书信息修改124.2图书借还管理124.2.1、图书借阅124.2.2、图书归还134.3、借阅证管理13五、编码135.1用户登录模块135.2主页面及图书信息模块155.3图书信息添加模块175.4图书信息修改模块185.5图书信息删除模块195.6图书借阅办理模块205.7图书借阅模块225.8图书归还模块23六、测试266.1、系统测试的定义266.2、测试的内容266.3、测试案例27七、总结27参考文献28一、可行性研究1.1、可行性研究的目的可行性分析是为“图书管理系统”开发的可能性、可行性、必要性提供论据,为开发人员进行系统总体规划设计及具体实施开发工程提供必要的参考资料,在系统开发完成后为系统的测试、验收提供帮相。图书管理系统是一个高度集成的图书信息处理系统,通过将图书信息的各种功能进行整合,从而达到告诉检索信息、提高工作效率、降低管理成本等。一个典型的图书管理系统应该有所有的图书种类、图书信息、及读者信息,还需要提高各种图书的查询检索功能。该系统还要对图书进行借阅和归还管理,并对读者的罚款进行管理。通过系统的自动化管理,能减少图书管理人员的,还能减少管理人员的工作任务,从而减少管理的开销成本1.2、可行性分析1.2.1、技术可行性技术可行性包括以下几个方面:硬件、系统软件、应用软件、技术人员。本系统采用JAVA编程语言和SQL Server数据库。目前数据库产品较多,每个产品都具有各自的特点和适用范围。考虑到图书管理系统数据量大的特点个,故选用SQL Server数据库。通过研究这四个方面是可行的。1.2.2、经济可行性对于图书馆这样的商业性质较小的场所,其经济成分比重相对较少。主要是支出的费用包括设备购置费,软件开发费用,管理和维护费,人员工资和培训费等.由于各个图书馆实行统一操作,系统共享,其设备购置,人员工资,维护费用相对较少,前期的资金投入主要集中于购置图书上,建立信息中心,可将来自各方面的信息集中管理,提高图书管理的计划性和预见性,快速地反馈市场信息。1.2.3、社会可行性社会可行性有时也称为操作可行性, 主要验证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构的影响, 即组织内外是否具备接受和使用新系统的条件。在当前信息技术飞速发展的环境下, 计算机技术和软件技术的更新是图书馆完全有可能也有能力采用这样先进的管理技术。它对图书馆带来的影响有:(a)、对传统管理理念的冲击,可能引起管理层的变动和人员的调整。(b)、对图书馆工作人员的要求提高,使图书馆在一定的可能下进行机构精简,迫使工作人员继续学习新知识,拓宽图书馆在市场环境下的生存空间,对图书馆与读者之间业务方式的转变和扩充。1.2.4、法律可行性系统的研制和开发都选用正版软件,不侵犯他人、集体和国家的利益,不会违反国家相关的政策和法律。1.3、可行性研究的结论该图书管理系统不管是从技术、经济、社会、法律方面考虑都具有一定的可行性。因此系统的开发可以立即开始进行。二、需求分析阶段2.1、功能需求随着图书的日益增多,传统的手工图书管理不仅工作量大,而且容易出现问题。图书管理设计的内容非常复杂而且繁琐,比如拥有图书信息录入管理、用户信息管理、图书借阅和归还管理等功能。由于系统主要是为了方便管理员定制开发的,因此针对图书管理的实际工作而言,经过反复论证,最终确定了图书管理系统的设计方案,图书管理系统的主要功能为:(1)用户登录:管理员会根据用户名和密码登录系统进行身份验证。(2)新书入库:只有管理员登录成功后才能添加图书。通过点击导航条上的“添加”超链接添加图书。(3)修改图书信息:只有管理员登录成功后才能修改图书。通过通过点击导航条上的“修改”超链接添加图书。(4)删除图书信息:只有管理员登录成功后才能删除图书。通过通过点击导航条上的“删除”超链接添加图书。(5)办理借书证:通过通过点击 “办理借书证”超链接办理借书证。(6)借阅图书:输入借书证号和图书编号进行借书。(7)归还图书:输入图书编号进行还书。(8)注销系统:点击“注销系统”超链接,退出系统。2.2、性能需求为了保证系统能够长期、安全、稳定、可靠、高校的运行,图书管理系统应该满足以下的性能需求:(1)系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。(2)系统的开放性和可扩充性图书管理系统在开发过程中,应充分考虑以后的可扩充性。例如:用户查询的需求会不断的更新和完善,要求系统提供足够的功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,即系统应是一个开放的系统,只要符合一定的规定,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补,替换完成系统的升级和更新换代。(3)系统的易用性和易维护性图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不一定非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这些,系统应该尽量使用用户熟悉的术语和中文信息的界面。针对用户使用过程中可能出现的问题,要提供在线帮助,缩短用户对系统熟悉的过程。(4)系统的标准性系统在设计开发使用过程中涉及到很多计算机硬件和软件,所有这些都要符合国际、国家和行业标准。2.3、接口需求(1)服务器:处理器(CPU): Pentium 900M内存容量(RAM):至少256M(2) 客户端处理器(CPU):Pentium 133M内存容量(RAM):64M2.4、数据需求2.4.1、系统的UML建模1、 系统的用例图创建用例图之前首先需要确定参与者在图书管理系统中,必不可少的是读者,读者可以进行借书,还书,续借书,修改登录密码等等操作。其次系统需要不定时维护更新,读者也需要管理,所以管理者也是必不可少的一个参与者。(1)系统用户参与的总的用例图系统用户参与的总的用例图如图所示。从图中可以清楚地看到泛化关系与各个参与者所参与的用例。(2)读者参与的用例图读者参与的用例图如下图所示。读者所包含的用例有:(1) 登录系统(Login)。(2) 借书(Borrow books):进行借书业务。(3) 还书(Return books):读者具有的还书业务。(4) 书籍查询(Books inquires):包含对个人信息和书籍信息的查询业务(5) 预订(Books scheduled):读者对书籍的预订业务。(6) 逾期处理(Overdue processing):就是书籍过期后的缴纳罚金等。(7) 书籍丢失处理(Books lost processing):对书籍丢失后的不同措施进行处理。(8) 查询读者信息(query readers information):读者可以查看自己的状态。(9) 密码修改(password changing):读者可以根据自我喜好修改自己的密码。(3)管理者参与的用例图管理者参与的用例图如下所示。(1) 登录系统(Login)。(2) 借书(Borrow books):管理读者借书业务。(3) 还书(Return books):管理读者还书业务。(4) 书籍查询(Books inquires):包含对个人信息和书籍信息的查询业务(5) 预订(Books scheduled):管理读者对书籍的预订业务。(6) 逾期处理(Overdue processing):管理读者所借书籍过期后的缴纳罚金等。(7) 书籍丢失处理(Books lost processing):对书籍丢失后的不同措施进行处理。(8) 读者管理(Reader management):对读者执行的帐号操作进行处理,并可对读者增删改。2、 系统的时序图时序图是显示对象之间交互的图,这些对象是按时间顺序排列的。该图书馆管理系统主要含有以下几个重要的顺序图,其他对象的顺序图和这些也类似。(1) 借书顺序图(2) 还书顺序图(3) 罚款顺序图2.1.借书顺序图【顺序图说明】(1) login():登录系统。(2) checkstu_card():对读者信息进行验证,检查是否符合本图书馆借书条件。(3) showinformation():显示该读者的基本信息函数。(4) borrow():读者借书函数。(5) getreaders():取得读者信息函数。看该读者是否符合借书条件,若符合,则返回可借信息。(6) gettitle():取得书目信息。(7) getreservation():检验书籍是否被预订函数。(8) getnoreservation():书籍没被预订或取消预订函数。(9) create(borrower,item):创建书籍外借函数。借书时,读者先将书拿予管理员,管理员对书籍和读者进行检验,若书籍和读者都符合借书条件,则借书成功。2.2还书顺序图图5:图书馆管理系统还书顺序图【顺序图说明】(1) login():登录系统。(2) getitem():取得书籍条目信息。(3) update():对图书馆书籍条目和借阅者信息进行更新条目。还书时,读者先将书交给管理员,由管理员扫描书籍,若书籍没有过期等违规现象,则对书目和读者借阅信息三、概要设计3.1、系统层次图图书信息管理新书入库图书借/还管理借书证管理图书信息管理办理新证旧书销毁借阅图书归还图书图书信息修改注销系统层次图3.2、数据库设计概述计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新等操作。根据软件工程的设计思想:数据库设计可划分为六个阶段:规划阶段、需求分析阶段、设计阶段、程序编制阶段、调试阶段、运行和维护阶段。本系统的数据库设计是在MySql环境中,通过合理的逻辑设计和有效的物理设计,建立数据库。物理结构的设计原则如下:(1)尽可能减少数据冗余和重复;(2)结构设计与操作设计相结合;(3)数据结构具有相对的稳定性。四、详细设计4.1、图书管理4.1.1、新书入库图书采购人员按照每年的采购计进行购书,(不在本系统考虑范围)图书购入后由图书管理人员将图书按类别分类后录入数据库。4.1.2、旧书销毁某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图书就要在图书库的除去。即从图书库中删除此图书记录。4.1.3 图书信息修改图书信息由于工作人员的疏忽,而出现错误,提供其图书ID就可以修改其信息。4.2图书借还管理4.2.1、图书借阅主要功能是记录借阅证编号和图书编号,进行借书过程。在数据库中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、借阅编号、操作员。4.2.2、图书归还主要功能是输入借阅编号、借阅证编号、图书ID、还书日期,在借阅登记表中找到相应的记录,将借书记录删除,将该记录的相应数据更新到历史记录中。4.3、借阅证管理该模块实现的主要功能是办理借阅证、注销借阅证。五、编码5.1用户登录模块/如果登录成功 if(record!=null) message=alert(登陆成功); /将提示信息传给JSP页面(放入,记住:有放必有取) request.setAttribute(message, message); /将用户的信息放入session(会话) HttpSession session=request.getSession(); /放入(放入,记住:有放必有取) session.setAttribute(userinfo, record); /跳转页面 request.getRequestDispatcher(adminIndex.jsp).forward(request, response); else message=alert(登陆失败); /将提示信息传给JSP页面(放入,记住:有放必有取) request.setAttribute(message, message); /跳转页面 request.getRequestDispatcher(login.jsp).forward(request, response);5.2主页面及图书信息模块BookServlet:/获取sessionHttpSession session=request.getSession();Map userinfo=(Map)session.getAttribute(userinfo);if(userinfo!=null)/1、转码 request.setCharacterEncoding(utf-8); /2、获取参数(看你有没有参数获取)(不一定有) /3、查数据库 BookDAO bookDAO=new BookDAO(); ListMap records=bookDAO.findAllBook(); /4、把数据传给JSP页面 request.setAttribute(records, records); /5、转发页面 request.getRequestDispatcher(listBook.jsp).forward(request, response);BookServlet:BookDAO: try /加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();ResultSet rs=stmt.executeQuery(select * from bookinfo);/将查询结果转为ListListMap records=ZqDBUtil.getHashMap(rs);/关闭连接if(rs!=null) rs.close();if(stmt!=null) stmt.close();if(cn!=null) cn.close();return records; catch (Exception e) e.printStackTrace();5.3图书信息添加模块BookServlet: String bookid=request.getParameter(bookid); String isbn=request.getParameter(isbn); String title=request.getParameter(title); String publish=request.getParameter(publish); String author=request.getParameter(author); String abstract_=request.getParameter(abstract_); Map record=new HashMap(); record.put(bookid, bookid); record.put(isbn, isbn); record.put(title, title); record.put(publish, publish); record.put(author, author); record.put(abstract_, abstract_); BookDAO dao=new BookDAO(); int flag=dao.addBook(record); String message=; if(flag0) message=alert(添加成功); else message=alert(添加失败); BookDAO:/加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();flag=stmt.executeUpdate(insert into bookinfo(bookid,isbn,title,publish,author,abstract_) values(+record.get(bookid)+,+record.get(isbn)+,+record.get(title)+,+record.get(publish)+,+record.get(author)+,+record.get(abstract_)+);5.4图书信息修改模块BookServlet:String bookid=request.getParameter(bookid);BookDAO dao=new BookDAO();Map record=dao.getBook(bookid);request.setAttribute(record, record); request.getRequestDispatcher(editBook.jsp).forward(request, response);BookDAO:/加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();flag=stmt.executeUpdate(update bookinfo set bookid=+record.get(bookid)+,isbn=+record.get(isbn)+,title=+record.get(title)+,publish=+record.get(publish)+,author=+record.get(author)+,abstract_=+record.get(abstract_)+ where bookid=+record.get(bookid)+);5.5图书信息删除模块BookServlet:String bookid=request.getParameter(bookid);BookDAO dao=new BookDAO();int flag=dao.delBook(bookid); String message=; if(flag0) message=alert(删除成功); else message=alert(删除失败); request.setAttribute(message, message); list(request,response);BookDAO:try/加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();flag=stmt.executeUpdate(delete from bookinfo where bookid=+bookid+);/关闭连接if(stmt!=null) stmt.close();if(cn!=null) cn.close(); return flag; catch (Exception e) e.printStackTrace();5.6图书借阅办理模块BookServlet:String cert_id=request.getParameter(cert_id); String cert_name=request.getParameter(cert_name); String name=request.getParameter(name); String depart=request.getParameter(depart); String flag=request.getParameter(flag); Map record=new HashMap(); record.put(cert_id, cert_id); record.put(cert_name, cert_name); record.put(name, name); record.put(depart, depart); record.put(flag, flag); BookDAO dao=new BookDAO(); int flag1=dao.addCert(record); String message=; if(flag10) message=alert(注册成功); else message=alert(注册失败); request.setAttribute(message, message); request.getRequestDispatcher(addCert.jsp).forward(request, response);BookDAO:try /加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();flag=stmt.executeUpdate(insert into certificateinfo (cert_id,cert_name,name,depart,flag) values(+record.get(cert_id)+,+record.get(cert_name)+,+record.get(name)+,+record.get(depart)+,+record.get(flag)+);/关闭连接if(stmt!=null) stmt.close();if(cn!=null) cn.close(); return flag; catch (Exception e) e.printStackTrace();5.7图书借阅模块BookServlet:String bookid=request.getParameter(bookid); String cert_id=request.getParameter(cert_id); Map record=new HashMap(); record.put(bookid, bookid); record.put(cert_id, cert_id); SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd); String loandates=sdf.format(new Date(); record.put(loandates, loandates); int flag=1; record.put(flag, flag); BookDAO dao=new BookDAO(); int flag1=dao.borrowBook(record); String message=; if(flag10) message=alert(借书成功); else message=alert(借书失败); request.setAttribute(message, message);request.getRequestDispatcher(borrowBook.jsp).forward(request, response);BookDAO:try /加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();flag=stmt.executeUpdate(insert into loan (bookid,cert_id,loandates,flag) values(+record.get(bookid)+,+record.get(cert_id)+,+record.get(loandates)+,+record.get(flag)+);/关闭连接if(stmt!=null) stmt.close();if(cn!=null) cn.close(); return flag; catch (Exception e) e.printStackTrace();5.8图书归还模块BookServlet:String bookid=request.getParameter(bookid);RbookDAO dao=new RbookDAO();Map record=dao.getLoan(bookid);request.setAttribute(record, record);/还书public void return_(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String bookid=request.getParameter(bookid);RbookDAO dao=new RbookDAO();int flag1=dao.returnBook(bookid); String message=; if(flag10) message=alert(还书成功); else message=alert(还书失败); request.setAttribute(message, message);request.getRequestDispatcher(returnBook.jsp).forward(request, response);RbookDAO:try /加载驱动Class.forName(com.mysql.jdbc.Driver);/建立连接Connection cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/book?user=root&password=123&useUnicode=true&characterEncoding=utf8);/发送SQL语句Statement stmt=cn.createStatement();flag=stmt.executeUpdate(delete from loan where bookid=+bookid+);/关闭连接if(stmt!=null) stmt.close();if(cn!=null) cn.close(); return flag; catch (Exception e) e.printStackTrace();六、测试6.1、系统测试的定义系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否能够提供方案说明中指定功能的有效方法。为了发现缺陷并度量产品质量,按照系统的功能和性能需求进行调试。6.2、测试的内容 (1)、功能测试对图书管理系统的所有页面进行链接测试。所有的页面都能链接到指定要链接到得页面,所链接的页面均存在,而且页面中不存在孤立的页面。对表单进行测试,如果输入信息不正确或者不输入信息就直接提交,会出现作物提示。通过填写正确的表单信息,数据库运行正常。(2)、性能测试通过宽带上网的方式对图书管理系统的链接速度进行测试,在可接受的范围之内。用图书管理系统压力测试Web-CT软件,对测试频率,持续时间等进行的、测试得出结论:图书管理系统压力测试结果较好。(3)、可用性测试图书管理系统导航结构清晰、目的明确、页面风格一致、页面使用颜色较少。有较好的视觉效果。图书管理系统整体界面布局合理,页面风格简洁,颜色搭配协调,可用性良好。6.3、测试案例方法:功能模块测试方法目的:测试录入功能的正确性预期结果:有出错警告过程:在书名栏中,没有选择任何项,直接提交输入:无输入项测试结果:无法保存,有出错警告比较:与预期结果相当结论:正确七、总结两周以来忙碌而又紧张的课程设计,我对软件工程的基本理论知识、专业知识和基本技术有了更深入的了解和体会,把学到的知识得到了系统的复习,真正达到了学以致用。图书管理系统的开发时一项复杂的工程,在设计过程中我严格按照需求分析、总体设计、详细设计、编码、测试的流程来开发系统。在系统开发前,我首先了解了系统的特点,使用范围以及要做成一个什么样的系统,以此作为基础开发系统并准确定位。系统的设计不仅要实现对数据处理的及时性与正确性。在建模的过程中,关键是对整个图书馆管理系统的程序结构没有一个好的构想,导致中间画时序图和协作图的时候出现了思路混乱的情况,经过上网查看相关设计范例和翻看有关书籍,才有了一个简单的勾画。图书馆管理系统是一个经典的程序范例,更是一个学习UML的经典项目。它能让学生在设计UML中掌握编程的设计思想和实现方法,通过这个作业,我学会了不少东西。参考文献1 张友生,软件体系结构,北京:清华大学出版社,2004年1月 2003年5月2 孙一林 彭波 JAVA数据库编程实例 清华大学出版社 2002年8月3 王少锋,面向对象技术UML教程,清华大学出版社,2004年2月4 赵文耘等译,需求工程,机械工业出版社,2003年本科生课程设计成绩评定表班级:软件1001班 姓名:陈璞学号:04序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2013年月日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!