2《JavaEE架构与程序设计》课程设计说明书模板.docx
《2《JavaEE架构与程序设计》课程设计说明书模板.docx》由会员分享,可在线阅读,更多相关《2《JavaEE架构与程序设计》课程设计说明书模板.docx(26页珍藏版)》请在冰豆网上搜索。
![2《JavaEE架构与程序设计》课程设计说明书模板.docx](https://file1.bdocx.com/fileroot1/2023-5/16/08460fcb-1bb0-42d3-ba68-1a6f44340cee/08460fcb-1bb0-42d3-ba68-1a6f44340cee1.gif)
2《JavaEE架构与程序设计》课程设计说明书模板
《JavaEE架构与程序设计》
课程设计说明书
题目:
电子书城
学院:
计算机与信息工程学院
专业:
计算机科学与技术
班级:
姓名:
学号:
起止时间:
2012.6.25-2012.7.6
课程设计任务书
一、设计题目:
《电子书城》
二、设计内容:
完成用户管理、图书分类、搜索图书、查看购物车功能。
三、设计要求:
1.掌握软件开发的基本思想和学习方法,培养团队合作能力和自学能力;
2.掌握JSP技术开发流程,包括需求分析、概要设计、详细设计、编码、测试等;
3.掌握大型网站的数据库设计技巧,及mysql数据库的使用;
4.熟悉B/S架构软件的封装技巧,深入理解MVC的思想;
5.熟悉大型购物网站的业务流程,提升学员分析能力;
6.实践主流编程工具,提升JSP网站制作的动手开发能力;
7.熟练使用Tomcat等中间件;
8.课程设计说明书选择在线购书系统的部分功能模块,详细阐述从分析到设计实现的全过程。
摘要
Internet时代的到来已经形成了势不可挡的趋势,越来越多的人已经开始应用三大框架,而此时三大框架个性化不是原来的网页个性化,本设计首先介绍了Struts2、Spring和Hibernate三大框架相关技术,针对书店的实际需求,设计开发了一个基于SSH的小型电子商务网站(网上书店)。
在设计开发中,采用基于Browser/Server的三层数据库应用体系结构,三层结构自成体系,任何一层的变化,不需要其他另外两层的变化,适宜于任何底层操作系统。
通过对大型购物网站的业务流程的分析产生自身的理念思想,形成自己的电子书城。
并应用大型网站的数据库设计技巧和B/S架构软件的封装技巧的学习,对电子书城程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
同时形成一个功能(其中功能包括查询图书功能、管理购物车、提交订单)比较全面、系统相对稳定的电子书城。
本设计采用面向对象的软件工程的思想,介绍了网上书店的整体规划和数据库的设计,并将图书等实体封装成相应的类和与其对应的操作类,提高了对数据库操作的安全性和系统的可扩展性。
本设计最后重点介绍了图书管理、用户登录管理等类中主要方法的实现,以及网站主页和图书浏览等页面的JSP实现细节。
该网上书店系统采用的技术方案SSH、JSP、Tomcat和MySQL。
基于SSH的网上书店系统主要完成的功能有两部分:
前台用户可以在网上进行注册、登录、书籍查询、图书购买和添加购物车等操作;后台管理员可以对图书进行添加、修改、删除等操作。
关键词:
Java、SSH、jsp、Tomcat、面向对象
目录
课程设计任务书II
摘要III
目录V
一、设计内容6
二、设计过程2
2.1需求分析2
2.2概要设计5
2.3详细设计7
2.4代码实现10
2.5程序运行与发布18
三、总结19
主要问题及解决办法19
心得体会20
四、参考文献21
一、设计内容
本次项目我们小组主要做的是网上书店用户操作界面,用户操作界面主要有四个大模块:
用户管理、图书分类、搜索图书、查看购物车。
其中用户管理分为:
查看用户资料、修改用户资料、删除用户。
图书分类分为:
程序设计、外语学习、网络通信。
查看购物车分为:
生成订单、清空购物车。
搜索图书分为:
程序设计、外语学习、网络通信。
除了应用模块以外,还完成了管理员登陆部分的验证,还有一些防止SQL注入的方法等等。
我主要是完成搜索图书的异常处理、用户登录异常处理、生成订单添加到数据库异常处理、XML文件的配置。
我们用两种方式来搜索图书,两种方式分别是根据图书名关键字搜索图书、根据图书类型编号返回该类型的图书。
所以在无法搜索到图书时会有两种返回方式。
在生成订单方面若无法生成订单则返回重新生成订单。
目标
1.掌握软件开发的基本思想和学习方法,培养团队合作能力和自学能力;
2.掌握SSH技术开发流程,包括需求分析、概要设计、详细设计、编码、测试等;
3.掌握大型网站的数据库设计技巧,及mysql数据库的使用
4.熟悉B/S架构软件的封装技巧,深入理解MVC的思想;
5.熟悉大型购物网站的业务流程,提升学员分析能力;
6.实践主流编程工具,提升SSH框架网站制作的动手开发能力
7.熟练使用Tomcat等插件。
二、设计过程
2.1需求分析
1.背景
信息时代的来临标志着人类生活方式的改变。
在人们还没有意识到Internet的威力的时候,它就已经开始遍及全球。
随着Internet的迅速发展,各种各样的讯息都迅速的蔓延,如今人们更加接受互联网,更加依赖互联网。
人们不但在网上可以看见琳琅满目的商品信息,同时可以快速的寻找到自己想要的东西。
从此就出现了网购,当然不仅仅只有时装、电器、生活物品等可以在网上买到,图书也可以在网上买到。
现今是“速度”的社会,时间就是金钱,有很多人已经厌倦了浪费时间在路上或者是在书店选择图书的过程,不但浪费时间精力,供选择的图书款式也很有限。
而在网上不但可以快速的显示出多款相同方面不同作者的书,还可以在全国各地多家卖家中选择你所喜欢的卖家,实用性能十分强大。
当然在线购书也可以为你省去携带现金去买书的麻烦,可以在网上直接交易,不但方便而且省时。
同时,现在的物流公司也是应有尽有,全国各地数不胜数。
方便的物流也是人们选择网上购书的重要原因之一。
当然,凡事都有两面性,网上购书有有利的一面也就有弊端,比如说所购图书的质量问题,买家并不知道多买的图书是否是正品。
还有安全问题等等诸多问题都有待完善,但是总体上说是利大于弊的。
所以,在线购书已经是一个时代的开始,越来越多的人们开始网上购书,不单单是青年人和中年人,就连老年人都开始网上购书。
网上购书的人群已经开始扩张,在没有所谓的年龄问题。
而且,现在已经有各种各样的在线购书系统出现,各有各的优点,但都不是很成功,多少都会有些瑕疵,因此,电子书城系统还是有很大的市场需求的。
2.参考资料
1.JAVA语言程序设计案例教程人民邮电出版社陈伟
2.JSP动态网站开发实践教程清华大学出版社张银鹤刘志国
3.JSP基础教程(第2版)清华大学出版社耿祥义张跃平
4.赵池龙,杨林,孙伟.实用软件工程,第2版.北京:
电子工业出版社,2006.
5.肖汉.软件工程理论与实践,北京:
科学出版社,2006.
3.定义
E-commercesites
4.用户特点
a.主流人群为经常上网的读书爱好者,拥有能够上网的条件,以青年和中年人为主。
b.部分用户持有信用卡,可在网上直接付款;无信用卡的用户可以汇款进行交易。
c.从职业划分来看,一部分用户是高校学生,追求时尚快捷的购物方式,购买力有限;另一部分则为工作人群,追求高效经济的购物方式,购买力较强。
5.网站结构(图)
6.功能模块
用户登录:
图书分类、搜索图书、查看购物车等模块。
S
7.网站流程(描述)
用户登录是第一个页面,当用户登录进去显示的是主操作页面主要分为四大模块:
店面首页、图书分类、搜索图书、查看购物车。
2.2概要设计
1.系统框架
系统对运行环境的要求:
1.1.硬件环境:
处理器:
InterPentium41.6GHz或更高
内存:
256MB或以上。
硬盘空间:
80GB或以上。
光驱:
CD-ROM、DVD-ROM
显卡:
ATI显卡
1.2.软件环境:
服务器:
Tomcat6.0版本。
操作系统:
Windows7
网络协议:
本机
浏览器InternetExplore6.0以上,建议分辨率为1024*768像素。
数据库:
mysql。
开发环境:
Eclipse3.5
2.技术框架
主要是:
Struts2、Spring、Hibernate、数据库设计、MVC、JSP技术、Servlet技术、JAVABEAN、JDBC、cookie、session、中间等
3.功能模块(模块清单)
4.数据库设计(E-R图)
5.网站流程(流程图)
2.3详细设计
首先将我们组的整体设计的系统整体包资源管理图展现出来
通过上图可以对我们的电子书城的整个结构有所了解,其中我负责的是图书搜索,订单生成和过滤器是我完成的,同时也配置了struts.xml文件。
2.3.1图书搜索、订单生成、登录验证
图书搜索有两种形式:
根据图书名关键字返回该类型的图书、根据图书类型编号返回该类型的图书。
可以搜索出书籍列表、书籍类型等。
若搜索过程中无法正常搜索则会报出异常并要求重新搜索。
之后是订单的生成,订单生成正确会生成订单,如下图。
同时,我还对用户登录做了验证,如果用户名密码正确则可进入,不正确会返回。
2.3.2过滤器
过滤器是用来在用户请求和处理程序之间的一个处理程序,我用它来对关联的URL请求和响应进行检查和修改。
我供应用了2个过滤器。
当请求过滤器是会依次发生作用。
2.3.2XML文件的配置
在应用Tomcat中XML文件的配置是非常重要的,配置正确才会在浏览器中运行,我配置的是struts.xml文件。
2.4代码实现
2.4.1BookDetailControlImpl.java
packagecom.org.service.impl;
importcom.org.service.*;
importcom.org.dao.*;
importcom.org.model.*;
importjava.util.List;
publicclassBookDetailControlImpl
implementsBookDetailControl{
privateBookDetailDaobookdao;
publicvoidsetBookdao(BookDetailDaobookdao){
this.bookdao=bookdao;
}
/**
*根据图书名关键字返回该类型的图书
*/
publicListSearchBooks(Stringbookname)throwsException{
try{
returnbookdao.SearchBooks(bookname);
}catch(Exceptione){
thrownewException("搜索图书出现异常,请重试");
}
}
/**
*根据图书类型编号返回该类型的图书
*/
publicListShowBookList(intbooktypeid)throwsException{
try{
returnbookdao.ShowBookList(booktypeid);
}catch(Exceptione){
thrownewException("返回书籍列表出现异常,请重试");
}
}
/**
*返回所有图书类型
*/
publicListShowBookTypeList()throwsException{
try{
returnbookdao.ShowBookTypeList();
}catch(Exceptione){
thrownewException("返回书籍类型出现异常,请重试");
}
}
/**
*返回一本图书信息
*/
publicBookBookContent(intbookid)throwsException{
try{
returnbookdao.BookContent(bookid);
}catch(Exceptione){
thrownewException("返回书籍介绍出现异常,请重试");
}
}
/**
*返回指定编号的图书
*/
publicListSearchBooks(intbookid)throwsException{
try{
returnbookdao.SearchBooks(bookid);
}catch(Exceptione){
thrownewException("返回书籍出现异常,请重试");
}
}
/**
*添加订单到数据库
*/
publicvoidCreateOrder(Orderorder)throwsException{
try{
bookdao.CreateOrder(order);
}catch(Exceptione){
System.out.print(e.getMessage());
thrownewException("添加订单错误,请重试");
}
}
2.4.2UserControlImpl.java
packagecom.org.service.impl;
importcom.org.service.*;
importcom.org.model.*;
importcom.org.dao.*;
//importcom.org.dao.hibernate.*;
publicclassUserControlImplimplementsUserControl
{
privateUserDaouserdao;
publicvoidsetUserdao(UserDaouserdao){
this.userdao=userdao;
}
publicbooleanvalidNamandPass(Stringusername,Stringpassword)throwsException
{
try
{
Useru=userdao.getAdminUserByNameAndPass(username,password);
if(u!
=null)
{
returntrue;
}
}
catch(Exceptione)
{
e.printStackTrace();
thrownewException("验证用户登陆时出现异常");
}
returnfalse;
}
}
2.4.3BookDetailControl.java
packagecom.org.service;
importjava.util.List;
importcom.org.model.*;
publicinterfaceBookDetailControl{
ListSearchBooks(Stringbookname)throwsException;
ListSearchBooks(intbookid)throwsException;
ListShowBookList(intbooktypeid)throwsException;
ListShowBookTypeList()throwsException;
BookBookContent(intbookid)throwsException;
voidCreateOrder(Orderorder)throwsException;
}
2.4.4UserControl.java
packagecom.org.service;
publicinterfaceUserControl
{
/**
*验证用户登陆,数据库表为admin
*@paramusername需要登陆的用户名
*@parampassword需要登陆的密码
*@return是否登陆成功
*/
booleanvalidNamandPass(Stringusername,Stringpassword)throwsException;
}
2.4.5EncodingFilter.java
packagecom.org.filter;
importjavax.servlet.*;
importcom.sun.org.apache.xalan.internal.xsltc.dom.Filter;
importjava.io.IOException;
publicclassEncodingFilterimplementsFilter{
protectedStringencoding=null;
protectedFilterConfigfilterConfig=null;
publicvoiddestroy(){
this.encoding=null;
this.filterConfig=null;
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
//Selectandset(ifneeded)thecharacterencodingtobeused
Stringencoding=selectEncoding(request);
if(encoding!
=null){
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
}
//Passcontrolontothenextfilter
chain.doFilter(request,response);
}
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
}
protectedStringselectEncoding(ServletRequestrequest){
return(this.encoding);
}
publicbooleantest(intnode){
//TODOAuto-generatedmethodstub
returnfalse;
}
}
2.4.6SetCharacterEncodingFilter.java
packagecom.org.filter;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
publicclassSetCharacterEncodingFilterimplementsFilter{
protectedStringencoding=null;
protectedFilterConfigfilterConfig=null;
protectedbooleanignore=true;
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
Stringvalue=filterConfig.getInitParameter("ignore");
if(value==null)
this.ignore=true;
elseif(value.equalsIgnoreCase("true"))
this.ignore=true;
else
this.ignore=false;
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{
if(ignore||(request.getCharacterEncoding()==null)){
Stringencoding=selectEncoding(request);
if(encoding!
=null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request,response);
}
publicvoiddestroy(){
this.encoding=null;
this.filterConfig=null;
}
protectedStringselectEncoding(ServletRequestrequest){
return(this.encoding);
}
}
2.4.7struts.XML
xmlversion="1.0"encoding="GBK"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">