资源描述
淮 海 工 学 院
课程设计报告书
题 目: 基于J2EE网上图书管理系统
系(院): 计算机工程学院
专 业: 计算机科学与技术
班 级: D计算机081
姓 名: 陆 麒
学 号: 510851123
2011年 6 月 9 日
基于J2EE网上图书管理系统
摘要:随着网络的发展,网民规模的不断壮大,电子商务的便利,电子商务高速发展。电子商务的壮大正在冲击着传统的销售方式,传统的销售方式有太多的资本浪费,销售过程中的中间环节过多,然而电子商务能够有效的突破这些局限。电子商务的发展必须有一套成熟的网络技术支持,J2EE规范随之形成。本文根据J2EE规范,采用SSH开发技术,构建了一套B2C网上书城系统。
关键词:B2C,SSH,J2EE
Abstract:
With the development of the network,unceasing expanding of the netizen scale , and the convenience of electronic commerce, e-commerce high-speedly develops. The growing e-commerce are hitting the traditional way of sale, the traditional marketing way has too many capital waste, and the intermediate link excessive sales process, but e-commerce could effectively break through these limitations. The development of e-commerce must have a mature network technonogy support, then J2EE specification formed. Based on the J2EE specification and useing SSH development of technology, this paper constructs a B2C online bookstore system.
Key words:B2C, SSH,J2EE
1、 引言
随着Internet/Intranet技术和电子商务的快速发展,以互联网为代表的全球信息化浪潮正以迅猛的态势冲击着各行各业,社会和经济的发展,网络作为现代的一种通迅方式,已经成为人们生活中不可缺少的一部分。网络已经在国内迅速普及,并且鉴于网络的快速,方便等特性,越来越多的人选择网络提供的服务。网上书城系统作为网络服务的一种,提供了比传统书城更方便,快速,安全的优越服务,越来越受到人们的青睐。用户不用出门便可以购得自已需要的图书,并且网上书城解决了传统书城空间狭小的问题,网上书城几乎可以容纳无穷位用户。
1.1 系统开发概述
1.11 系统开发的意义
近年来,随着信息的全球化和国际互联网的普及化,电子商务成为互联网应用的最大热点,越来越多的企业通过使用电子商务技术来进行商业上的交易以减少成本,企业通过Internet为消费者提供一个新兴的购物环境,消费者通过网络进行网上购物和网上支付等活动,这样即方便了消费者又给商家提供了更广阔的销售平台。
为了促进书籍销售的发展以及J2EE技术的普及,并使书店领导层能够及时得到准确的营销信息,由此做出正确的决策;客户能够在Internet上通过不同的条件查询自己需要的书籍,方便对比,最终找到真正适合自己的书籍。在充分分析了目前书籍销售系统的需求基础上,开发了这个基于J2EE中的Struts、spring、hibernate框架的设计模式的书籍营销系统的软件。
1.12 研究方法
通过对现有网上书城网站(如:当当网、卓越网)的分析调查,收集大量的相关实例,对所收集的例子进行分析比较,努力研制出一个易用的、查询准确、功能全面的网上书籍销售系统。在进行本系统的分析与设计中,综合采用了文献资料法、归纳统计法、案例分析法、比较法、设计科学方法、综合法及图表法等研究方法。
1.13 设计创新
基于Struts+Hibernate+Spring技术的营销系统的分析与设计是立足于当今的网络系统的发展趋势,本系统采用了目前企业开发应用中最流行的组合,系统可扩展性强,性能高。
本系统采用目前最流行的J2EE+MySQL进行系统的开发,采用了MD5加密算法,利用MySQL对Java的强大支持,以及Java的各种优点,能够在安全性、扩展性、效率性等各方面得到提升。
从功能层面来讲,此设计在能够实现目前流行的垂直搜索功能,从而能够很好的解决综合搜索数据多而不精的缺陷。当用户访问首页时,可以根据自己的需要,选择适当的分类进行垂直搜索,从而更快地定位自己的需求,并且能在对比中选出更适合自己的书籍。这种垂直搜索的思想从某些方面也为当今搜索引擎的发展道路提供了一定的借鉴。
2、 系统分析
2.1网上书城系统的可行性分析
2.1.1 管理上的可行性
把企业业务延伸到Internet上,建立电子商务网站,对运营商业企业来说,是企业对外展示信息,从事商务活动的窗口和界面。因此,高中层管理人员和主管领导也一定希望将自己的产品推向互联网,从而得到更多的商业机会,能够给予支持,另外消费者能足不出户的选择自己喜欢的书籍,而不受地理条件的约束。
2.1.2技术上的可行性
根据系统目标需求分析得结果来看,各类开发软件均为开源,其中以MyEclipse为开发工具,tomcat做服务器,采用 Java语言开发就可以解决相关的问题,从而保证系统功能的实现。
2.1.3经济上的可行性
传统书店在运营过程中 ,经常会遇到地理位置的因素而让宣传受到限制,采购商或客户只能通过上门咨询、电话沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。而本系统可以帮助企业正确认识电子商务技术在企业中的重要地位,以少量的时间和资金建立企业信息门户网站并架设一定范围的商务网络,以此来是企业与顾客间的商业活动变得更灵活、更主动,而且能节约大量的成本,从而带来很大的经济效益。
2.2 需求分析
需求分析关系到网上书城系统实现之后的投入运行阶段是否能满足消费者需求,是非常重要的,如果需求分析没做好,后面极可能会事倍功半,既不能满足消费者的购物需求,更不能提高销量。
2.2.1 网上书城系统的功能需求分析
客户对功能的需求主要是购买到自己想要的书籍,包括站内搜索书籍、查看书籍分类、查看推荐书籍、查看特价书籍、查看热点新闻、查看书籍详细信息介绍、会员注册及登录;会员登陆后查看收藏夹、购物车内书籍,并可在结账前进行撤销;会员登录后查看订单状态,是否付款成功;修改自己的资料。此外,该系统还允许用户执行其他任务,如:允许用户在系统中进行注册;提供用户登录入口,登录和非登录用户具备不同操作功能。
书店销售商主要是查看销售状况,查看订单详细信息的同时进行订单发货处理,进而实现在线预订;书籍管理,查询书籍,根据类别添加书籍、设置特价书籍、设置推荐书籍;管理会员,管理后台操作员、管理普通会员;新闻管理,修改、删除、添加、查看热点新闻;书籍栏目管理,管理一级栏目、管理二级栏目。
2.2.2 网上书城系统的性能需求分析
对于一个管理信息系统,特别是电子商务网站,是非常重视系统的可靠性与安全性的。系统的可靠性是指系统放置硬件失灵、软件错误、自然灾害等造成的失效的性能。安全问题是电子商务实施时的瓶颈,这不仅是技术问题,更是管理问题,具体涉及计算机网络安全和商务安全两大方面。为了保证网店的安全,要求保证:信息的保密性,即信息在传输和存储中不被窃取,为此需要采用安全技术对信息进行加密,本系统就采用MD5加密算法保护会员信息;信息的不可否认性,即发送方和接收方都不能否认自己发送或接收了信息;交易者身份的真实性,即网上交易双方应确认对方是真实的。
2.3 用户购书流程分析
通过对一般电子商务网站的业务调查分析,结合书籍营销系统的实际需求,分析出了书籍销售网站的用户购物流程。购书业务流程如图2-1所示。
图2-1 购书业务流程图
2.4 数据流程分析
数据流程图反应了网站数据之间的关系,数据流程图如图2-2所示。
图2-2 数据流程图
3、 系统设计
3.1 系统功能模块图
网上书城系统功能模块的设计是为了满足需求分析阶段所确定的功能性分析,分为前台功能模板和后台功能模块。
系统前台模块图如下:
系统后台模块图如下:
3.2 数据库设计
基于系统设计的物理配置方案,结合系统分析,采用E-R图建立了概念模型,设计了7个数据表文件。
3.2.1 E-R模型设计
网上书城系统E-R图
3.2.2 数据表结构
基于上述分析,在MySQL中设计了7个数据表文件[18],它们的结构及其说明如下:
管理员信息表(admin)
字段
字段名称
类型
长度
允许空
说明
1
Id
Int
11
N
编号
2
Loginname
varchar
16
N
登录名
3
password
varchar
40
N
密码
4
name
varchar
16
Y
姓名
书籍分类信息表(bookclassify)
字段
字段名称
类型
长度
允许空
说明
1
Id
int
11
N
编号
2
Pid
int
11
n
父类编号
3
Name
varchar
16
n
类别名称
书籍信息表(books`)
字段
字段名称
类型
长度
允许空
说明
1
Id
int
11
N
编号
2
Name
Varchar
16
N
书籍名称
3
Publishdate
Varchar
16
Y
出版日期
4
Classid
Int
11
N
书籍类别编号
5
Price
Decimal
10
N
价格
6
Introduction
Text
-
Y
书籍介绍
7
Author
Varchar
16
N
作者
8
Discount
Float
-
Y
是否打折
9
Issuggestion
Int
1
N
是否推荐
10
Picture
Varchar
200
Y
图片
收藏夹信息表(collection)
字段
字段名称
类型
长度
允许空
说明
1
Id
int
11
N
编号
2
Bookid
int
11
N
书籍编号
3
Memberid
int
11
N
会员编号
会员信息表(`members`)
字段
字段名称
类型
长度
允许空
说明
1
Id
int
11
N
编号
2
Loginname
Varchar
16
N
登录名
3
Password
Varchar
40
N
密码
4
Address
Varchar
200
Y
地址
5
Telphone
Int
11
Y
电话号码
6
Name
Varchar
16
Y
姓名
新闻信息表(news)
字段
字段名称
类型
长度
允许空
说明
1
Id
int
11
N
编号
2
Name
Varchar
50
N
标题
3
Time
Timestamp
-
N
时间
4
Author
Varchar
10
Y
作者
5
Keyword
Varchar
100
N
关键字
6
Content
Text
-
Y
内容
订单信息表(order)
字段
字段名称
类型
长度
允许空
说明
1
Id
int
11
N
编号
2
Orderno
Int
20
N
订单号
3
Bookid
Int
11
N
书籍编号
4
Memberid
Int
11
N
会员编号
5
Ispay
Char
1
N
是否付款
4、 系统实现
4.1 系统前台核心页面及其功能实现
4.1.1 系统首页
系统首页包括会员登录;按关键字搜索书籍;会员登陆后查看购物车、查看收藏夹;会员注册;书籍分类查看,查看书籍详情;热点新闻栏目,查看新闻详情;查看特价书籍;查看推荐书籍。运行效果图如下:
关键字搜索核心代码:
String search = this.model.getSearch();
String pageSize = ServletActionContext.getRequest().getParameter("pageSize");
String pageNo = ServletActionContext.getRequest().getParameter("pageNo");
int ps = 4;
int pn = 1;
if ((pageSize != null) && (pageSize.length() > 0)) {
ps = Integer.parseInt(pageSize);
}
if ((pageNo != null) && (pageNo.length() > 0)) {
pn = Integer.parseInt(pageNo);
}
List bookList = this.bookService.getClassifyBook((pn - 1) * ps, ps, "from Books where author like '%" + search + "%' or " +
"name like '%" + search + "%' or " + "introduction like '%" + search + "%'");
int totalcount = this.bookService.getCount("select count(*) from Books where author like '%" + search + "%' or " +
"name like '%" + search + "%' or " + "introduction like '%" + search + "%'");
int count = (totalcount - 1) / ps + 1;
ServletActionContext.getRequest().setAttribute("search", search);
ServletActionContext.getRequest().setAttribute("bookList", bookList);
ServletActionContext.getRequest().setAttribute("pageSize", Integer.valueOf(ps));
ServletActionContext.getRequest().setAttribute("pageNo", Integer.valueOf(pn));
ServletActionContext.getRequest().setAttribute("count", Integer.valueOf(count));
4.2 系统后台核心页面及其功能实现
4.2.1 书籍管理页面
后台管理员登录后管理书籍,管理员可以添加书籍信息,包括书籍名字、图片、价格、所属栏目、书籍简介、是否特价等等,修改书籍信息,查看书籍信息,删除书籍信息。运行效果如下图:
增加书籍核心代码:
public String addBook() {
if ((this.model.getId() != null) && (this.model.getId().intValue() > 0)) {
Books book = this.bookService.getBookById(this.model.getId());
if ((book != null) && (book.getId().intValue() > 0) &&
(book.getPicture() != null) && (book.getPicture() != "") && (book.getPicture().length() > 0) && (
(this.model.getPicture() == null) || (this.model.getPicture() == "") || (this.model.getPicture().length() <= 0))) {
this.model.setPicture(book.getPicture());
}
}
if ((this.pic != null) && (this.pic.length() > 0L)) {
int i = this.picFileName.lastIndexOf(".");
Calendar c = Calendar.getInstance();
String filename = "picture/" + c.get(1) + (c.get(2) + 1) + c.get(5) +
c.get(11) + c.get(12) + c.get(13) + c.get(14) + this.picFileName.substring(i);
try {
String path = ServletActionContext.getRequest().getRealPath("/");
String temName = path.replace("\\", "/") + filename;
System.out.println(temName);
FileOutputStream fos = new FileOutputStream(temName);
FileInputStream fis = new FileInputStream(getPic());
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) > 0) {
fos.write(buf, 0, len);
}
if (fos != null) {
fos.close();
}
if (fis != null) {
fis.close();
}
this.model.setPicture(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if (this.bookService.saveOrUpdateBook(this.model))
return "browseBook";
return "input";
}
4.2.2 订购单管理页面
后台管理员登录后管理书籍,点击订购单管理,可以查看已付款订单信息,包括订购单号、书名和订购人信息等,商家根据这些信息对订购单进行实际业务处理。运行效果如下图:
管理已付款订单页面核心代码:
public String orderManager() {
List orderList = this.orderService.getOrderByIspay();
List shopCar = new ArrayList();
if (orderList.size() > 0) {
Iterator orderit = orderList.iterator();
while (orderit.hasNext()) {
Order order = (Order)orderit.next();
Members member = this.adminService.getMemberById(order.getMemberid());
Books book = this.bookService.getBookById(order.getBookid());
ShopCar shop = new ShopCar();
shop.setIsPay(order.getIsPay().intValue());
shop.setBookId(order.getBookid().intValue());
shop.setBookName(book.getName());
shop.setOrderId(order.getId().intValue());
shop.setOrderno(order.getOrderno());
shop.setPrice(book.getPrice());
shop.setMemberid(order.getMemberid().intValue());
shop.setMemberName(member.getLoginname());
shopCar.add(shop);
}
ServletActionContext.getRequest().setAttribute("shopCar", shopCar);
return "success";
}
return "input";}
5、 系统总结
本次是《J2EE应用》这门课的一次大作业,也算是对先前所学内容的一种集中回顾与应用,本次课程设计我采用了struts+spring+hibernate的组合框架进行系统的开发,充分发挥了各个框架的优势,充分利用科技发展的优势和网络发展的良好前景来选题,该技术方案主要应用于系统的设计和开发,并应用于工程项目实践。该方案界面简洁,操作简单,运行稳定,为取得良好的实际应用效果和经济效益作出了很好的开始,并为以后进一步扩展提供了思想指导。
通过这次课程设计,使我进一步了解J2EE开发框架的优势,以及MySQL数据库对Java的良好支持。并了解到电子商务的理论以及平台开发的模式,掌握了网络开发的方法与模式。对团队的协作,软件开发方法和手段,有了一定的认识,丰富了我的软件开发的经验,提高了程序编写的水平,并加深理解了许多课程中学到的知识,使得理论与实践完美的结合起来了。同时,通过本次课程设计,我还基本掌握了软件文档的编写方法和书写格式。最后感谢朱敏老师这学期对这门课的精心讲解,和对我每次实验和课程设计的耐心指导!
参考文献:
[1]戚欣.基于J2EE架构的层次结构研究及应用[J].吉林大学学报,2008,26(3):295-29
[2] 卢瑜.基于J2EE的办公自动化系统的设计[J].现代计算机,2008,28(2):140-142.
[3] 胡峰松,熊建新.基于J2EE的办公自动化系统研究[J].江西科学,2008,26(2):300-302.
[4] 陈立岩.基于J2EE平台的B/S系统性能优化设计研究[J].计算机技术与发展,2008,18(6):122-124.
[5](美)Cay S.Horstmann,Gary CornellJAVA核心技术[M]北京:机械工业出版社,2005
[6]Boumphrye.F等,BeginingXHTML[M],北京:机械工业出版社,2002,01
[7]郑阿奇,j2EE应用实践教程,背景:电子工业出版社, 2008,09
展开阅读全文