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