《软件设计案例分析》.docx

上传人:b****5 文档编号:12327626 上传时间:2023-04-18 格式:DOCX 页数:20 大小:46.64KB
下载 相关 举报
《软件设计案例分析》.docx_第1页
第1页 / 共20页
《软件设计案例分析》.docx_第2页
第2页 / 共20页
《软件设计案例分析》.docx_第3页
第3页 / 共20页
《软件设计案例分析》.docx_第4页
第4页 / 共20页
《软件设计案例分析》.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

《软件设计案例分析》.docx

《《软件设计案例分析》.docx》由会员分享,可在线阅读,更多相关《《软件设计案例分析》.docx(20页珍藏版)》请在冰豆网上搜索。

《软件设计案例分析》.docx

《软件设计案例分析》

华东交通大学

《软件设计案例分析》课程大作业

——图书管理系统设计方案

 

专业班级:

软件工程+会计3班学院:

软件学院

学生姓名:

曾立欢学号:

20082110090305

分数:

学期:

2011-2012

(1)

任课教师:

彭仁夔

系统设计方案

一、系统总体需求

项目名称:

图书管理系统

1)功能性需求

在图书管理系统中,管理员要为每个读者建立借阅账户,并给读者发放不同类别的借阅卡(借阅卡可以提供卡号、读者姓名),账户内存储的个人信息和借阅记录信息。

持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。

借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者基本信息(包括照片),供管理员人工核对,然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。

最后提交借阅请求,若被系统接受存储借阅记录,并修改其可借阅图书的数量。

归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有些借阅记录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。

如有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。

然后提交还书请求,系统接受后删除借阅记录,并登记和修改可借阅图书的数量。

图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。

为系统维护人员提供权限管理、数据备份等通用功能。

2)非功能性需求

性能需求

编号

性能名称

使用部门

性能描述

输入

系统响应

输出

1

相应的图书查询

会员、管理员

在数据库中查找相应的图书

图书的相关信息(如书名、出版社、作者等)

在3秒内列出所有的记录

输出符合要求的记录

2

信息的录入、修改、删除

会员、管理员

检查录入、修改、删除相应的信息

录入、修改、删除的信息

在0.5秒内对数据进行录入、修改和删除并输出提示信息

输出提示信息

3

检查信息的规范性

会员、管理员

检查录入、修改、删除信息的正确性

输入各种信息

在0.1秒内对信息进行检查

输出信息是否符合规范

4

报表输出

会员、管理员

用报表形式显示出数据库的所有记录

输入需要显示的报表

在10秒内显示所有数据库中的记录

输出需要显示的报表

用户界面需求

用户界面:

这是人机接口,定义用户输入控制(命令)和数据(参数)的内容和方式以及计算机提供的命令处理结果(如报表)的内容和格式等,例如需要向提供何种命令,带哪些参数,通过命令驱动方式还是菜单驱动方式,使用图形界面还是文本界面等。

输入设备:

键盘,鼠标。

输出设备:

显示器。

显示风格:

IE界面。

显示方式:

1024*768.

输出格式:

网页方式。

软硬件环境需求

硬件环境需求:

CPU:

586以上,内存:

16M以上,I/O设备,鼠标、键盘、显示器

软件环境需求:

运行环境,DOS以上操作系统。

二、系统设计方案

1、系统数据库设计

●管理员基本信息表

字段名称

数据类型

可否为空

约束条件

说明

adminID

int

NOTNULL

主键

ID

adminName

VARCHAR

NOTNULL

姓名

password

VARCHAR

NOTNULL

密码

●图书信息表

字段名称

数据类型

可否为空

约束条件

说明

bookID

VARCHAR

NOTNULL

主键

书籍ID

bookName

VARCHAR

NOTNULL

书名

author

VARCHAR

NOTNULL

作者

Press

VARCHAR

NOTNULL

出版社

price

float

NOTNULL

单价

buyDate

datetime

NOTNULL

入库时间

totalNO

int

NOTNULL

总量

currentNO

int

NOTNULL

现存量

●借阅者信息表

字段名称

数据类型

可否为空

约束条件

说明

userID

VARCHAR

NOTNULL

主键

借阅卡ID

userName

VARCHAR

NOTNULL

姓名

sex

VARCHAR

NOTNULL

性别

birthday

datetime

NOTNULL

出生日期

address

VARCHAR

NOTNULL

地址

IDCard

VARCHAR

NOTNULL

身份证号

telephone

VARCHAR

NOTNULL

电话号码

count

int

NOTNULL

现借书量

●借书信息表

字段名称

数据类型

可否为空

约束条件

说明

borrowID

int

NOTNULL

主键

借书ID

userID

VARCHAR

NOTNULL

外键

借书卡ID

BookID

VARCHAR

NOTNULL

外键

书籍ID

borrowDate

datetime

NOTNULL

借出时间

●罚单信息表

字段名称

数据类型

可否为空

约束条件

说明

PunishID

int

NOTNULL

主键

罚单ID

userID

VARCHAR

NOTNULL

借书卡ID

bookID

VARCHAR

NOTNULL

书籍ID

borrowDate

datetime

NOTNULL

借出时间

returnDate

datetime

NOTNULL

还书时间

punishMoney

float

NOTNULL

罚金

2、系统架构设计

采用的是Struts+Hibernate+JPA的架构,Struts负责显示层,JPA负责持久化层,Spring负责业务逻辑层。

该三大框架整体架构图如下:

三、系统详细设计

下面针对“还书”介绍三层代码

还书时,只需要刷一下书上的条码,若在时间范围内还即可,否则要交罚款。

1、显示层

command=returnBook">

在struts-config.xml中只需增加如下配置:

name="bookForm"

parameter="command"

>

2、模型层

2.1DAO层

@Transactional

publicabstractclassCommonDAOImplimplementsCommonDAO{

@PersistenceContextEntityManagerentityManager;

//添加对象

publicvoidadd(Objectobj){

entityManager.persist(obj);

}

//查找对象

@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

publicTfind(Classclazz,Objectid){

returnentityManager.find(clazz,id);

}

//更新对象

publicvoidupdate(Objectobj){

entityManager.merge(obj);

}

//根据where语句查找多个对象

@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

publicListgetAll(Classclazz,StringwhereSql,Object[]params){

Queryquery=entityManager.createQuery("from"+getBeanName(clazz)+""+whereSql);

setWhereParam(whereSql,query,params);

returnquery.getResultList();

}

//根据clazz返回不含包的实体名

@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

protectedStringgetBeanName(Classclazz){

StringentityName="";

Entityentity=clazz.getAnnotation(Entity.class);

if(entity!

=null){

entityName=clazz.getSimpleName();

}

returnentityName;

}

//设置传入where条件名的参数

@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

protectedvoidsetWhereParam(StringwhereSql,Queryquery,Object[]params){

if(whereSql!

=""&¶ms!

=null){

for(inti=0;i

query.setParameter(i+1,params[i]);

}

}

}

//获得当前时间

publicStringgetCurrentTime()

{

SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmss");

returnsdf.format(newDate());

}

…………

}

2.2service层

@Service("userService")

@Scope("prototype")

publicclassUserServiceImplextendsCommonDAOImplimplementsUserService{

publicvoidreturnBook(intuserID,intbookID){

Useruser=this.find(User.class,userID);

Bookbook=this.find(Book.class,bookID);

//根据借阅者和图书来查找借书信息(由借阅者和图书只对应一个借书信息)

StringwhereSql="whereuserID=?

andbookID=?

";

Object[]params=newObject[]{userID,bookID};

ListborrowInfs=this.getAll(BorrowInf.class,whereSql,params);

BorrowInfborrowInf=borrowInfs.get(0);

//获得借书时间

DateborrowTime=borrowInf.getBorrowTime();

DatereturnTime=this.getCurrentDate();

//还书时间和借书时间大于60则需处罚,多一天0.1元的罚款,则要增加罚款数据

longbetweenDays=(returnTime.getTime()-borrowTime.getTime())/24*60*60*1000;

doublemoney=0;

PunishInfpunishInf=newPunishInf();

if(betweenDays>60){

money=(betweenDays-60)*0.1;

//添加罚款信息

punishInf.setReturnTime(returnTime);

punishInf.setBook(book);

punishInf.setBorrowTime(borrowTime);

punishInf.setUser(user);punishInf.setPunishMoney(money);

this.add(punishInf);

}else{

//按时还书

}

user.getBooks().remove(book);

user.setCount(user.getCount()+1);

book.getUsers().remove(user);

this.update(user);

}

……………

}

3、控制层

@Controller("/user")

@Scope("prototype")

publicclassUserActionextendsDispatchAction{

privateUserServiceuserService;

@Resource(name="userService")

publicvoidsetUserService(UserServiceuserService){

this.userService=userService;

}

publicActionForwardreturnBook(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse)

throwsException{

intuserID=Integer.parseInt(request.getParameter("userID"));

intbookID=Integer.parseInt(request.getParameter("bookID"));

userService.returnBook(userID,bookID);

ActionForwardactionForward=newActionForward();

actionForward.setPath("/getAllBook.jsp");

returnactionForward;

}

…………

}

四、系统测试及部署

说明

测试用例20111206-001软件版本:

V0.1

子系统:

注册字符操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、点击图书管理系统图标,进入登录界面,点击界面上的注册

输入

1、用户名zenglihuan,密码:

fendou,注册

2、用户名zenglihuan,密码:

空格,注册

3、用户名cj,密码:

fendou,注册

4、用户名cengjingFD,密码:

fendou,注册

5、用户名cengjingFD,密码:

@#&$,注册

6、用户名zenglihuan2,密码:

fendou,注册

预期结果

1、注册成功

2、提示密码不能为空

3、提示用户名过短

4、注册成功

5、提示密码不能全为字符

6、注册成功

实际结果通过()失败()

说明

测试用例20111206-003软件版本:

V0.1

子系统:

登录字符操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、打开图书管理系统,进入登录界面

输入

1、用户名zenglihuan,密码:

fendou,登录

2、用户名zenglihuan,密码:

空格,登录

3、用户名cj,密码:

fendou,登录

4、用户名cengjingFD,密码:

fendou,登录

5、用户名cengjingFD,密码:

@#&$,登录

6、用户名zenglihuan2,密码:

fendou,登录

预期结果

1、登录成功,进入系统主界面

2、提示密码不能为空,请重新登录

3、提示用户名过短

4、登录成功,进入系统主界面

5、提示密码不能全为字符,请重新登录

6、登录成功,进入系统主界面

实际结果通过()失败()

说明

测试用例20111206-003软件版本:

V0.1

子系统:

右击一本书籍的信息查看操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、登录界面后,点击借阅按钮,进入借阅界面

输入

1、在借阅界面中,右击一本书籍

预期结果

1、出现这本书的相关信息,如作者,出版社

实际结果通过()失败()

说明

测试用例20111206-004软件版本:

V0.1

子系统:

借阅书籍操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、登录界面后,点击借阅按钮,进入借阅界面

输入

1、读者借阅卡经过扫描仪

2、在借阅界面中,随便点击一本书籍

3、在界面下方点击借阅

预期结果

1、在借阅界面中,点击刚刚借出的书籍,可看到书籍库存减1

2、读者借阅书籍信息栏中显示出这本书的借出时间和应归还时间

实际结果通过()失败()

 

说明

测试用例20111206-005软件版本:

V0.1

子系统:

借阅书籍数量操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、登录界面后,点击借阅按钮,进入借阅界面

2、对读者借书卡进行扫描

输入

1、随便拖曳5本书籍

2、对选中的5本书籍进行借阅

预期结果

1、提示最多可借书籍数量为4本

实际结果通过()失败()

说明

测试用例20111206-006软件版本:

V0.1

子系统:

归还书籍操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、保证扫描仪正常运作

2、对读者借书卡进行扫描

3、对一读者借书卡进行2本书的借阅

输入

1、对读者借书卡再次进行扫描

2、进入借阅主界面,点击归还书籍按钮

3、把刚刚借出的其中一本经过扫描仪扫描

4、把不是用户所借出的其中一本经过扫描扫描

预期结果

1、归还成功,同生读者借阅信息中少了该本借阅书籍

2、提示归还书籍与用户所借阅的书籍信息不吻合

实际结果通过()失败()

说明

测试用例20111206-007软件版本:

V0.1

子系统:

新书入库操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、保证扫描仪正常运作

2、登录系统主界面

输入

1、点击书信息管理按钮,进入此界面

2、点击界面下方的新书入库按钮

3、把新书的条形码经过扫描仪扫描

预期结果

1、在书籍信息管理中增加了一个书籍,并可对其进行编辑,归类

实际结果通过()失败()

说明

测试用例20111206-008软件版本:

V0.1

子系统:

书籍下架操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、保证扫描仪正常运作

2、登录系统主界面

输入

1、点击书信息管理按钮,进入此界面

2、点击界面下方的书籍下架按钮

3、把要下架书籍的条形码经过扫描仪扫描

预期结果

1、在书籍信息管理中查询不到书籍和相关信息

实际结果通过()失败()

说明

测试用例20111206-009软件版本:

V0.1

子系统:

书籍查询搜索操作系统:

WindowsXP

测试人员姓名:

曾立欢测试日期:

2011-12-06

初始设置

1、登录系统主界面

2、书籍库中有《软件设计案例分析》和《软件设计模式》这2本书和相关信息

3、有马士兵写的2本相关书籍

4、有清华大学出版社的一本书籍

输入

1、点击书籍信息管理按钮,进入此界面

2、在界面下方的书籍搜索对话框中输入《软件设计案例分析》,选中按书名查询

3、再在对话框中输入“马士兵”,按作者查询

4、再在对话框中输入“清华大学出版社”,按出版社查询

5、再在对话框中输入“软件设计”选择高级查询,选中按关键字查询

预期结果

1、出现《软件设计案例分析》和这本书相关信息

2、出现“马士兵”所写的相关2本书籍

3、出现清华大学出版社的一本书籍

4、出现《软件设计案例分析》和《软件设计模式》2本书籍和相关信息

实际结果通过()失败()

测试结果

测试用例20111206-001

实际结果

1注册成功

2提示密码不能为空

3提示用户名过短

4注册成功

5提示密码不能全为字符

6注册成功

测试用例20111206-002

实际结果

1、登录成功,进入系统主界面

2、提示密码不能为空,请重新登录

3、提示用户名过短

4、登录成功,进入系统主界面

5、提示密码不能全为字符,请重新登录

6、登录成功,进入系统主界面

测试用例20111206-003

实际结果

1、出现这本书的相关信息,如作者,出版社

测试用例20111206-004

实际结果

1、在借阅界面中,点击刚刚借出的书籍,可看到书籍库存减1

2、读者借阅书籍信息栏中显示出这本书的借出时间和应归还时间

 

测试用例20111206-005

实际结果

1、提示最多可借书籍数量为4本

测试用例20111206-006

实际结果

1、归还成功,同生读者借阅信息中少了该本借阅书籍

2、提示归还书籍与用户所借阅的书籍信息不吻合

测试用例20111206-007

实际结果

1、在书籍信息管理中增加了一个书籍,并可对其进行编辑,归类

测试用例20111206-008

实际结果

1、在书籍信息管理中查询不到书籍和相关信息

测试用例20111206-009

实际结果

1出现《软件设计案例分析》和这本书相关信息

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1