软件工程综合课程设计报告图书管理系统.doc

上传人:仙人指路1688 文档编号:2885120 上传时间:2023-03-01 格式:DOC 页数:28 大小:2.69MB
返回 下载 相关 举报
软件工程综合课程设计报告图书管理系统.doc_第1页
第1页 / 共28页
软件工程综合课程设计报告图书管理系统.doc_第2页
第2页 / 共28页
软件工程综合课程设计报告图书管理系统.doc_第3页
第3页 / 共28页
软件工程综合课程设计报告图书管理系统.doc_第4页
第4页 / 共28页
软件工程综合课程设计报告图书管理系统.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《软件工程综合课程设计报告图书管理系统.doc》由会员分享,可在线阅读,更多相关《软件工程综合课程设计报告图书管理系统.doc(28页珍藏版)》请在三一办公上搜索。

1、目 录一、可行性研究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、实体E-R图62.4.2、数据流程图8三、概要设计93.1、系统层次图93.2、数据库设计概述93.3、数据字典103.4、数据库物理设计10四、详细设计124.1、图书管理124.1.1、新书入库124.1.2、旧书销毁124.1.3 图书信息修改124.2图书借还管理124.2.1、图书借阅124.2.

2、2、图书归还134.3、借阅证管理13五、编码135.1用户登录模块135.2主页面及图书信息模块155.3图书信息添加模块175.4图书信息修改模块185.5图书信息删除模块195.6图书借阅办理模块205.7图书借阅模块225.8图书归还模块235.9数据库基本结构图25六、测试266.1、系统测试的定义266.2、测试的内容266.3、测试案例27七、总结27参考文献28一、可行性研究1.1、可行性研究的目的可行性分析是为“图书管理系统”开发的可能性、可行性、必要性提供论据,为开发人员进行系统总体规划设计及具体实施开发工程提供必要的参考资料,在系统开发完成后为系统的测试、验收提供帮相。图

3、书管理系统是一个高度集成的图书信息处理系统,通过将图书信息的各种功能进行整合,从而达到告诉检索信息、提高工作效率、降低管理成本等。一个典型的图书管理系统应该有所有的图书种类、图书信息、及读者信息,还需要提高各种图书的查询检索功能。该系统还要对图书进行借阅和归还管理,并对读者的罚款进行管理。通过系统的自动化管理,能减少图书管理人员的,还能减少管理人员的工作任务,从而减少管理的开销成本1.2、可行性分析1.2.1、技术可行性技术可行性包括以下几个方面:硬件、系统软件、应用软件、技术人员。本系统采用JAVA编程语言和SQL Server数据库。目前数据库产品较多,每个产品都具有各自的特点和适用范围。

4、考虑到图书管理系统数据量大的特点个,故选用SQL Server数据库。通过研究这四个方面是可行的。1.2.2、经济可行性对于图书馆这样的商业性质较小的场所,其经济成分比重相对较少。主要是支出的费用包括设备购置费,软件开发费用,管理和维护费,人员工资和培训费等.由于各个图书馆实行统一操作,系统共享,其设备购置,人员工资,维护费用相对较少,前期的资金投入主要集中于购置图书上,建立信息中心,可将来自各方面的信息集中管理,提高图书管理的计划性和预见性,快速地反馈市场信息。1.2.3、社会可行性社会可行性有时也称为操作可行性, 主要验证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构

5、的影响, 即组织内外是否具备接受和使用新系统的条件。在当前信息技术飞速发展的环境下, 计算机技术和软件技术的更新是图书馆完全有可能也有能力采用这样先进的管理技术。它对图书馆带来的影响有:(a)、对传统管理理念的冲击,可能引起管理层的变动和人员的调整。(b)、对图书馆工作人员的要求提高,使图书馆在一定的可能下进行机构精简,迫使工作人员继续学习新知识,拓宽图书馆在市场环境下的生存空间,对图书馆与读者之间业务方式的转变和扩充。1.2.4、法律可行性系统的研制和开发都选用正版软件,不侵犯他人、集体和国家的利益,不会违反国家相关的政策和法律。1.3、可行性研究的结论该图书管理系统不管是从技术、经济、社会

6、、法律方面考虑都具有一定的可行性。因此系统的开发可以立即开始进行。二、需求分析阶段2.1、功能需求随着图书的日益增多,传统的手工图书管理不仅工作量大,而且容易出现问题。图书管理设计的内容非常复杂而且繁琐,比如拥有图书信息录入管理、用户信息管理、图书借阅和归还管理等功能。由于系统主要是为了方便管理员定制开发的,因此针对图书管理的实际工作而言,经过反复论证,最终确定了图书管理系统的设计方案,图书管理系统的主要功能为:(1)用户登录:管理员会根据用户名和密码登录系统进行身份验证。(2)新书入库:只有管理员登录成功后才能添加图书。通过点击导航条上的“添加”超链接添加图书。(3)修改图书信息:只有管理员

7、登录成功后才能修改图书。通过通过点击导航条上的“修改”超链接添加图书。(4)删除图书信息:只有管理员登录成功后才能删除图书。通过通过点击导航条上的“删除”超链接添加图书。(5)办理借书证:通过通过点击 “办理借书证”超链接办理借书证。(6)借阅图书:输入借书证号和图书编号进行借书。(7)归还图书:输入图书编号进行还书。(8)注销系统:点击“注销系统”超链接,退出系统。2.2、性能需求为了保证系统能够长期、安全、稳定、可靠、高校的运行,图书管理系统应该满足以下的性能需求:(1)系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑当前和将来可能承受的

8、工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。(2)系统的开放性和可扩充性图书管理系统在开发过程中,应充分考虑以后的可扩充性。例如:用户查询的需求会不断的更新和完善,要求系统提供足够的功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,即系统应是一个开放的系统,只要符合一定的规定,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补,替换完成系统的升级和更新换代。(3)系统的易用性和易维护性图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不一定非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这些,系统应该尽量使用用户熟悉的术

9、语和中文信息的界面。针对用户使用过程中可能出现的问题,要提供在线帮助,缩短用户对系统熟悉的过程。(4)系统的标准性系统在设计开发使用过程中涉及到很多计算机硬件和软件,所有这些都要符合国际、国家和行业标准。2.3、接口需求(1)服务器:处理器(CPU): Pentium 900M内存容量(RAM):至少256M(2) 客户端处理器(CPU):Pentium 133M内存容量(RAM):64M2.4、数据需求2.4.1、实体E-R图(1)管理员实体E-R图管理员(user表)管理员ID用户名密码管理员信息E-R图(2)图书信息实体类别E-R图图书信息表(bookinfo表)图书编号书 名作 者出版

10、时间关 键 字ISBN书号图书信息E-R图(3)借书证信息实体E-R图借 书 证 表(certificateinfo表 )借书证id证件名称姓 名所在部门标 记借书证信息E-R图(4)图书借还信息实体E-R图图书借阅表(loan表)借书证ID图书编号标 记借书日期还书日期图书借阅信息E-R图2.4.2、数据流程图管理员登陆验证用户是否合法显示主界面选择操作图书管理新书入库办理借书证借阅图书归还图书注销系 统结 束开 始NOYES三、概要设计3.1、系统层次图图书信息管理新书入库图书借/还管理借书证管理图书信息管理办理新证旧书销毁借阅图书归还图书图书信息修改注销系统层次图3.2、数据库设计概述计

11、算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新等操作。为了使现实世界的信息计算机化,并对计算机化的信息进行各种常用操作,如:如何利用数据库管理系统软件和相关硬件系统,将用户的要求转化成有效的数据结构,并使数据库结构易于实现用户新的要求的过程。确切的说,数据库设计是指对一个给定的应用环境,确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起即能反应现实世界信息和信息联系,满足用户数据要求,又能被某个数据库管理系统所接受的数据库。根据软件工程的设计思想:数据库设计可划分为六个阶段:规划阶段、需求分析阶段、设计阶段

12、、程序编制阶段、调试阶段、运行和维护阶段。本系统的数据库设计是在MySql环境中,通过合理的逻辑设计和有效的物理设计,建立数据库。物理结构的设计原则如下:(1)尽可能减少数据冗余和重复;(2)结构设计与操作设计相结合;(3)数据结构具有相对的稳定性。3.3、数据字典(1)名称:管理员描述:记录管理员信息。定义:管理员信息=管理员ID+用户名+密码。输入数据:用户名、密码。输出数据:管理员信息。(2)名称:图书信息表 描述:记录所有图书信息定义:图书信息=图书编号+图书ISBN+书名+出版社+作者+摘要输入数据:图书信息输出数据:图书信息(3)名称:借书证信息表 描述:记录所有借书证信息定义:借

13、书证信息=借书证编号+证件名称+姓名+证件类型+标记输入数据:借书证信息输出数据:借书证信息(4)名称:借还、书信息表 描述:记录所有借、还书信息定义:借还书信息=图书编号+借书证编号+借书日期+还书日期输入数据:借还书信息输出数据:借还书信息3.4、数据库物理设计(1)user表记录管理员的信息(包括管理员ID、用户名、密码),如表3-4-1。字段名数据类型数据长度是否空值是否主键useriddecimal9否是usernamechar10是否passwordchar16是否表3-4-1(2)bookinfo表记录图书信息(包括图书编号、图书ISBN、书名、出版社、作者、摘要),如表3-4-

14、2。字段名数据类型数据长度是否空值是否主键bookidint9否是ISBNchar30是否titlechar40是否publishchar20是否authorchar30是否abstractvarchar200是否表3-4-2(3)certificateinfo表记录借书证信息(包括借书证ID、证件名称、姓名、证件类型、标记),如表3-4-3。字段名数据类型数据长度是否空值是否主键cert_idint9否是cert_namechar10是否namechar10是否departchar20是否flagchar4是否表3-4-3(4)loan表记录借还书信息(包括图书编号、借书证ID、借书日期、还

15、书日期、标记),如表3-4-4。字段名数据类型数据长度是否空值是否主键bookiddecimal9否是cert_iddecimal9否是loandatedecimal8否是Return1decimal8否是flagint4否是表3-4-4四、详细设计4.1、图书管理4.1.1、新书入库图书采购人员按照每年的采购计进行购书,(不在本系统考虑范围)图书购入后由图书管理人员将图书按类别分类后录入数据库。4.1.2、旧书销毁某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图书就要在图书库的除去。即从图书库中删除此图书记录。4.1.3 图书信息修改图书信息由于工作人员

16、的疏忽,而出现错误,提供其图书ID就可以修改其信息。4.2图书借还管理4.2.1、图书借阅主要功能是记录借阅证编号和图书编号,进行借书过程。在数据库中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、借阅编号、操作员。4.2.2、图书归还主要功能是输入借阅编号、借阅证编号、图书ID、还书日期,在借阅登记表中找到相应的记录,将借书记录删除,将该记录的相应数据更新到历史记录中。4.3、借阅证管理该模块实现的主要功能是办理借阅证、注销借阅证。五、编码5.1用户登录模块/如果登录成功 if(record!=null) message=alert(登陆成功); /将提示信息传给JSP页面(放入,

17、记住:有放必有取) request.setAttribute(message, message); /将用户的信息放入session(会话) HttpSession session=request.getSession(); /放入(放入,记住:有放必有取) session.setAttribute(userinfo, record); /跳转页面 request.getRequestDispatcher(adminIndex.jsp).forward(request, response); else message=alert(登陆失败); /将提示信息传给JSP页面(放入,记住:有放必有取

18、) 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);

19、 /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.Drive

20、r);/建立连接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);/关闭连

21、接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=re

22、quest.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(abst

23、ract_, 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=12

24、3&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(abs

25、tract_)+);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);/建立连接Conn

26、ection 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)+,p

27、ublish=+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

28、 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 st

29、mt=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.get

30、Parameter(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(f

31、lag, 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.

32、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.ge

33、t(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.getPa

34、rameter(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 fl

35、ag1=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

36、.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)+

37、,+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);/还书publi

38、c 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.set

39、Attribute(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);/发送

40、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();5.9数据库基本结构图Bookinfo表certificateinfo 表loan表user表六、测试6.1、系统测试的定义系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否能够提供

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号