网上书店 软件工程课程设计报告模板.docx
《网上书店 软件工程课程设计报告模板.docx》由会员分享,可在线阅读,更多相关《网上书店 软件工程课程设计报告模板.docx(24页珍藏版)》请在冰豆网上搜索。
网上书店软件工程课程设计报告模板
软件工程课程设计报告
(2010--2011学年第二学期)
课程名称:
软件工程课程设计
题目:
网上书店
院系:
控制与计算机工程学院
班级:
软件0801班
组号:
组长:
林仙龙
组员:
李帆、王浩宇
*******
设计周数:
两周
小组成绩:
日期:
2011年7月8日
《软件工程》课程设计
任务书
一、目的、要求
通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;
2.熟悉自动化的软件开发工具RationalRose,并将其运用于软件开发的全过程;
3.进一步加强和提高软件工程文档的编写能力;
4.培养协作能力和团队精神。
二、主要内容
1.运用面向对象技术、UML及可视化的建模工具完成系统的需求分析与设计。
2.使用JAVA语言进行代码编写。
3.运用MySql进行数据存储,读取。
4.掌握用JSP与Tomcat进行网页开发的方法。
三、任务分配
任务
负责人
参与人
备注
四、进度计划
序号
设计内容名称
完成时间
备注
1
分组及确定题目
1个工作日
2
初步的需求分析与设计建模,确定实现平台,并搭建环境
2个工作日
3
详细的需求分析与设计建模
2个工作日
进行中期检查
4
关键模块的实现与测试
3个工作日
5
编写课程设计报告
1个工作日
6
验收检查及评定成绩
1个工作日
五、设计成果要求
1.建立系统分析与设计模型;
2.初步建立系统原型,实现关键的功能;
3.编写课程设计报告。
六、考核方式
1.系统演示及讲解
占50%。
2.设计报告
占50%。
指导教师:
日期:
2011年6月24日
《软件工程》课程设计
成绩评定
一、指导教师评语
二、成绩
学号
姓名
成绩
备注
指导教师:
日期:
2011年7月8日
摘要:
随着网络信息的发展,网络在人们生活中的应用越来越广泛。
人们越来越想在最短的时间内购买到自己所需的图书。
但书目的繁多,给人们在繁忙的工作生活中购书带来了很大的麻烦,于是网上购书便成了人们向往的事情,此系统的开发为人们带来了很大的方便,使他们足不出户就可以轻轻松松地买到自己想要的书,既省时又省力。
在电子商务网站中,网上书店是目前应用最广、最成功的典范之一。
通过它用户可以在网络上通过Internet,突破时间和空间的限制而实现网上购书。
网上书店的崛起对传统的图书流通体系产生了强烈的冲击,有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。
它有着经营成本低、库存是虚拟的、用户检索方便、地域限制少等特点。
本系统运用面向对象技术、UML及可视化的建模工具RationalRose2007及2003完成系统的需求分析与设计。
并且以JSP为主要制作工具,实现了用户登陆、验证身份及用户数据的采集、书籍的预览查询、对书籍的购买通过购物车实现。
关键词:
网上书店,面向对象,RationalRose
一、课程设计的目的与要求
通过软件开发的实践训练,使学生进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;
2.熟悉自动化的软件开发工具RationalRose,并将其运用于软件开发的全过程;
3.进一步加强和提高软件工程文档的编写能力;
4.培养协作能力和团队精神。
二、设计正文
1.概述
1.1课题描述
随着网络信息的发展,网络在人们生活中的应用越来越广泛。
人们越来越想在最短的时间内购买到自己所需的图书。
但书目的繁多,给人们在繁忙的工作生活中购书带来了很大的麻烦,于是网上购书便成了人们向往的事情,此系统的开发为人们带来了很大的方便,使他们足不出户就可以轻轻松松地买到自己想要的书,既省时又省力。
1.2系统目标
网上书店既可以避免书目订货的局限和盲目,又可以克服看样订货投入大,费用高,管理难的不足,而且网上选择范围广能直观看样,可浏览内容,可随时添订,结算及时,快捷方便,周转高速。
这些优势是其它交易方式难以达到的。
图书网上交易是图书销售领域未来发展之必然,也是出版发行业摆脱困境,建立新的流通渠道,繁荣出版,繁荣市场的必由之路。
1.3环境
a)操作系统:
Windows7,WindowsXP,Vista
b)使用软件:
代码编写:
JSP
数据库:
MYSQL
建模工具:
RationalRose
文档编写:
MicrosoftWord2007.
c)开发语言:
JSP,JAVA
2.系统需求分析
网上书店是一种高质量,更快捷,更方便的购书方式。
网上书店不仅可用于图书的在线销售,也有音碟、影碟的在线销售。
而且网站式的书店对图书的管理更加合理化,信息化。
售书的同时还具有书籍类商品管理、购物车、订单管理,非常灵活的网站内容和文章管理功能。
根据宾馆的具体情况,系统的主要功能包括:
1.用户功能:
(1)注册功能:
注册、登录、退出、个人管理
(2)图书选购:
浏览图书、购物车得管理
(3)订单的管理:
查看订单、修改订单、撤销订单
2.管理员功能:
(1)登录
(2)用户管理:
删除用户、查询用户
(3)图书管理:
添加图书、删除图书、修改图书、查询图书
(4)订单管理:
查询订单、确认订单、删除订单
2.1用例图
a)管理者用例:
1.登录:
管理员登录。
图表a.1管理者登录用例图
2.订单管理:
包括对订单的增加删除以及查询订单功能。
图表a.2管理者对订单管理用例图
3.图书管理:
对图书的查询(通过年份、书名、作者查询)、删除、添加以及对图书的修改。
图表a.3管理者对图书管理用例图
.4.用户管理:
对用户的查询,删除用户。
图表a.4管理者对用户管理用例图
a)
b)客户用例图
1.登录:
用户登录。
图表b.1客户登录用例图
2.订单管理:
让用户可以对自己订单进行查看、撤销、订单的查询、订单的日期查询、修改订单等等。
图表b.2客户对订单管理用例图
3.图书选购:
通过刘丹图书的信息,当需要购买时创建购物车,通过购物车来进行对图书进行浏览、删除以及订单的生成和数量的修改等等。
图表b.3客户图书选购用例图
4.注册:
用户的注册。
图表b.4客户注册用例图
2.2类图
系统采用MVC三层架构,另将数据库操作提取为单独一层。
a)视图层:
控制用户界面,及用户与系统的交互,此处省略。
b)控制器层:
控制具体业务。
PersonRrcControl:
控制管理员及前台人员。
UserAction:
用户进行对网页的浏览以及对图书的选购。
AdminAction:
图书管理者对用户订单的处理。
图表1控制层类图
c)业务逻辑层:
包括登录,图书管理以及订单处理等等。
图表2业务逻辑层类图
d)持久层:
控制数据库的增删查改操作。
图表3持久层类图
系统中用到的所有模型类图如下:
Manager:
系统管理员,字段包括管理者得等级。
User:
用户,字段包括用户身份姓名、密码。
Order:
订单,字段包括订单号、订单人的姓名、订单的花费、订购人的手机号、订单的日期、订单的状态。
Book:
图书信息,字段包括图书号、图书名、作者名、图书价钱、图书的类型、图书的简介、图书的出版日期。
图表4模型类图
2.3顺序图
a)管理者进行登录:
管理者通过进行登录的动作响应(LoginAction),并且调用了登录服务函数(LoginService),通过姓名密码来对Person类进行核对来确定是否成功登录。
图表a管理者进行登录顺序图
b)管理者对图书管理:
这个顺序图里,由于功能较多用BookService()函数来进行查询图书、删除图书、添加图书、修改图书等等来进行对图书的管理,最后更行了BookDao。
图表b登录者对图书管理顺序图
c)用户订单处理:
用户通过UserAction进行对图书的查找,并且通过OrderService来进行对需要的图书加入购物车,进行对图书的修改等等,最终确定订单后对OrderDao进行结账。
图表c用户订单处理顺序图
3.系统总体设计
系统模块图:
1
2
3
3.1设计数据管理子系统
用户表:
User(username,password)
管理员表:
Admin(adminname,adminpsw)
书籍表:
Book(bookid,bookname,bookauthor,price,publish,publishtime,serialnum,info)
订单表:
Orders(orderid,username,ordernum,expense,address,phonenum,ordertime);
3.2设计人机交互子系统
1)管理者登录页面:
2)管理员添加书籍界面:
3)用户浏览图书页面
4)购物车页面
4.详细设计
5.系统实现
1)购物车类
importjava.util.*;
importcom.my.bookstore.model.Book
publicclassShoppingCart
{
MapitemMap=newHashMap();
doubleprice=0;
publicShoppingCart()
{
}
publicvoidupdatePrice()
{
price=0;
Iteratorit=itemMap.keySet().iterator();
while(it.hasNext()){
Bookb=it.next();
price=price+b.getPrice();
}
}
publicvoidaddItem(Bookbook)
{
if(itemMap.containsKey(book)){
intnum=itemMap.get(book);
itemMap.put(book,num+1);
}else{
itemMap.put(book,1);
}
updatePrice();
}
publicvoidremoveItem(Bookbook)
{
itemMap.remove(book);
updatePrice();
}
publicvoidprint()
{
Iteratorit=itemMap.ke