1、 1、 请对你熟悉的软件系统写出其需求分析。 图书管理系统 1.对于读者在本系统的应用下可实现按照各种方式(如:书名,编号,作者)查询图书馆的藏书请客,方便的借阅图书,续借图书,归还图书,可以查询自己的借阅图书情况。 2.对于图书馆工作人员可以实现方便的对图书进行查询,方便的进行读者借阅情况查询,方便的进行借书还书解决等,便捷的对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。 3.对于系统管理员可以对图书馆信息进行修改更新操作,对系统用户进行添加、修改、删除、权限设立等操作,对图书馆的办证参数
2、进行修改维护等操作功能。 2、 根据上述需求分析开发出用例图,然后建立a、基于场景的模型(只需描述一个场景即可,也就是描述一个用户故事,如用户登录系统的故事等等)。B、建立行为模型(只需为你上述描述的用户故事画出DML的顺序图与活动图)。C、类模型(根据需求分析,你所能想到的开发本系统也许要用到的所有类,以及类的协作图)。D、数据模型(即数据建模,也就是完毕本系统所需要的数据表,至少三个以上的表)。 2)用例“图书归还” 用例名称 图书归还 标记符 UC-1 参与者 读者,图书管理员 描述 读者将自己借阅的图书归还图书馆。 前置条件 1. 登录;
3、2. 进入图书归还页面 后置条件 1. 更新图书归还列表; 主干过程 1.0 图书归还 1. 读者请求归还借阅的图书并提供自己的编号 2. 系统显示该读者的借阅信息表 3. 使用者填将要归还的图书交给管理员 4. 管理员输入图书编号,系统存储归还信息,并将之存储到数据库中 5. 系统更图书归还列表 分支过程 1.1 选择重置(第3步后分支出来) 1. 读者选择重置 2. 系统刷新该页面 异常 1.0.E.1 读者借阅超时(第4步) 1.该书超过了应当归还的时间范围 2. 系统将罚款信息显示在归还页面 3. 需要缴纳罚金 被包含用例 无 被扩展用例
4、 无 优先级 高 表3.5 读者类型信息表tb_readertype 字段名称 数据类型 字段长度 是否为空 说明 ID int 10 No Key readername varchar 50 No number int 4 No 可借图书本数 表 3.7图书归还信息表tb_giveback 字段名称 数据类型 字段长度 是否为空 说明 ID int 10 No Key readerID varchar 11 No bookID int
5、11 No backTime date No 归还时间 operator varchar 30 No 操作员 表 3.8系统用户信息表tb_user 字段名称 数据类型 字段长度 是否为空 说明 ID int 10 No Key name varchar 30 No password varchar 30 No 3、 为上述系统设定体系结构,并画出系统的歌模块层次结构图(至少三级)。 4、 选取具体一个类进行结构级的设计(即为类拟定属性与操作,并用你所熟悉的编程语言或自然语言为
6、该类的某一个操作写出算法或伪代码)。 private ActionForward bookborrow(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ //查询读者信息 //此处一定不能使用该语句进行转换 readerForm.setBarcode(
7、request.getParameter("barcode")); ReaderForm reader = (ReaderForm) readerDAO.queryM(readerForm); request.setAttribute("readerinfo", reader); //查询读者的借阅信息 request.setAttribute("borrowinfo",borrowDAO.borrowinfo(request.getParameter("barcode"))); //完毕借阅 Stri
8、ng f = request.getParameter("f"); String key = request.getParameter("inputkey"); if (key != null && !key.equals("")) { String operator = request.getParameter("operator"); BookForm bookForm=bookDAO.queryB(f, key); if (bookForm!=null){
9、 int ret = borrowDAO.insertBorrow(reader, bookDAO.queryB(f, key), operator); if (ret == 1) { request.setAttribute("bar", request.getParameter("barcode")); return mapping.findForward("b
10、ookborrowok"); } else { request.setAttribute("error", "添加借阅信息失败!"); return mapping.findForward("error"); } }else{ request.setAttribute("error", "没有该图书!"); return mapping.findFor
11、ward("error"); } } return mapping.findForward("bookborrow"); } 5、 为该系统中的某一模块进行界面设计(至少设计一个界面)。 6、 为该系统某一模块设计1—2个测试用例。 1)登录模块测试 表5.1登录模块用例测试 用例 测试数据 预期结果 UC1:输入对的的用户名和密码 用户名:admin密码:admin 系统跳转到登陆成功页面 UC2:输入空用户名 用户名: 请输入用户名 UC3:输入用户名和空密码
12、 用户名:admin 密码: 请输入密码 UC4:输入用户名和错误的密码 用户名:admin 密码:321ff 您输入的用户名或密码错误 当用户输入的用户名或密码错误是系统会跳转到犯错页面并提醒“您输入的用户名或密码错误”,用户点击拟定,系统会重新返回登陆页面,其中错误信息提醒页面如图5.1所示: 图5.2 系统犯错提醒页面 2)更改密码模块测试 用户登录系统后可对自己的登录密码进行更改,更改过程规定用户提供原始密码,输入新密码,重新输入新密码进行确认,假如用户输入的原始密码错误,或两次输入的新密码不一致将无法执行密码更新操作,系统会给出相应的提醒,起显示页面为: 图5.3 两次密码不一致提醒页面






