网络编程实训网上购物系统Word文档下载推荐.docx
《网络编程实训网上购物系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网络编程实训网上购物系统Word文档下载推荐.docx(74页珍藏版)》请在冰豆网上搜索。
2.4搭建系统框架7
3注册、登录和注销16
4图书类别及新书展示31
4.1图书类别功能模块31
4.2新书展示模块33
5显示指定类别图书37
6图书查询44
7添加图书到购物车48
8显示购物车53
9结账57
10用Ajax为注册添加验证61
10.1配置web.xml61
10.2编写实现的方法61
10.3配置dwr.xml62
10.4在register.jsp中调用62
1
开展网上书店的可行性分析
1.1网上书店的优质低价的竟争优势
网上购物,具有价格低廉、高效、方便、种类齐全的特点,而且与传统的书店经营模式相比,网上书店可以节省商场租金,员工管理工资,书本翻阅损耗等一大批成本费用。
1.2网上书店传递速度快
随着网络技术和物流业的迅速发展,网上书店有了可靠的发展空间,这将购买者提供很大的方便,购买者可以足不出户在网上挑选自己喜欢的商品,在网上订购,与网上商店进行在线交流,直接与网上商店订购,网上商店在接到购买者的真实信息后,马上为购买者送货。
由于物配送的迅速性,不会让购买者等太久。
这将显示出物流配送的优势与网上购物的相结合。
使网上购物能够面对更多的购买者。
1.3网上书店所面对的购买顾客群
我国现有的网上人数突破5亿人,10-19岁网民数量约为1.22亿,占总上网人数的32%。
20-29岁网民数量约为1.11亿,占总上网人数的29%,这个范畴的用户群,喜欢在网上下载以及浏览一些电子版本的图书,容易接受新事物,接受网上购物,形成新时期购买的潮流,将会形成了一个极大的目标市场。
2
系统分析和设计
2.1网上购书系统概述
本书的网上购书系统(网上书店)将实现上述的基本功能,用户可以注册、浏览商品、查询购物车等,其主界面如图P1.1所示。
图P1.1网上购书系统主界面
网上购书系统功能如下:
①用户可以浏览图书分类和网站推荐的图书。
②用户可以根据分类,浏览某一类的图书列表。
③用户可以查看具体某本图书的介绍。
④用户在图书浏览页面,单击【添加】按钮,把选定图书添加到购物车中。
⑤用户可以单击【购物车】超链接,查看购物车信息。
⑥用户可以单击【结账】按钮下订单,当然需要登录后才能操作。
⑦用户在注册页面,填写注册信息,确认有效注册,成为新用户。
⑧用户在登录页面,填写用户名和密码,确认正确,可以结账。
系统功能模块划分如图P1.2所示。
2.2技术方案
本系统采用的是Spring2.5+Hibernate3.3+Struts2整合开发,据库软件使用的是MySQL
编程环境:
MyEclipse8.5
2.3数据库设计
网上商店中有以下几个实体:
用户、图书分类、图书、订单、订单项,因此系统可以设计如下的数据概念模型,如图P1.3所示。
其中实体之间还可能存在对应关系。
图书分类和图书:
一个图书类别中有多本图书,一本图书属于一个图书分类,是一对多的关系。
用户和订单:
一个用户可以拥有多个订单,一个订单只能属于一个用户,它们之间的关系是一对多的关系,在数据库中表现为订单表中有一个用户表的外键。
订单和订单项:
一个订单中包含多个订单项,一个订单项只能属于一个订单,是一对多的关系。
图书和订单项:
一个订单项就是对图书的封装,订单项中除了有该商品信息外,还有该商品的购买数量等。
根据前面的分析,具体表结构如表P1.1~表P1.5所示
表P1.1用户表userTable
字段名称
数据类型
主键
自增
允许为空
描述
userid
int
是
增1
标志ID
username
varchar(20)
用户名
password
密码
sex
varchar(4)
性别
age
年龄
表P1.2图书分类表catalog
catalogid
catalogname
图书分类名
表P1.3图书表book
自增
bookid
bookname
图书名
price
图书价格
picture
varchar(30)
图书封面
分类(外键)
表P1.4订单表order
orderid
orderdate
datetime
订单时间
用户ID
表P1.5订单项表orderitem
orderitemid
quantity
数量
所属订单(外键)
所属图书(外键)
2.4搭建系统框架
主要步骤如下:
①创建WebProject;
②创建包;
③修改web.xml,添加struts.xml文件;
④加载用户自定义包,修改web.xml,添加struts.properties文件;
⑤加载Hibernate框架;
⑥对数据库表进行反向工程,生成映射文件。
具体操作如下:
①在MyEclipse中创建新的WebProject,命名为“bookstore”。
②创建如图P1.4所示的包。
③修改web.xml代码。
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
web-appversion="
2.5"
xmlns="
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
<
filter>
<
filter-name>
struts2<
/filter-name>
<
filter-class>
org.apache.struts2.dispatcher.FilterDispatcher<
/filter-class>
/filter>
filter-mapping>
url-pattern>
/*<
/url-pattern>
/filter-mapping>
/web-app>
在src文件夹下添加struts.xml文件,内容如下:
!
DOCTYPEstrutsPUBLIC
"
-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
//struts.apache.org/dtds/struts-2.0.dtd"
struts>
includefile="
struts-default.xml"
/>
packagename="
default"
extends="
struts-default"
constantname="
struts.i18n.encoding"
value="
GBK"
…//以后在这里添加action
/package>
/struts>
④添加Spring框架,加载用户自定义包hiberante3。
创建新的applicationContext.xml文件,存放在WebRoot/WEB-INF文件夹下。
修改web.xml代码如下:
listener>
listener-class>
org.springframework.web.context.ContextLoaderListener<
/listener-class>
/listener>
在src文件夹下添加struts.properites文件,增加对Spring的支持。
代码如下:
struts.objectFactory=spring
⑤添加Hibernate框架。
添加Hibernate类库,将Hibernate的配置信息存放在Spring配置文件applicationContext.xml中。
不新建Spring配置文件,SessionFactoryID命名为“sessionFactory”,选择数据源驱动为mysql,数据源ID命名为“dataSource”,不创建SessionFactory类。
⑥反向工程,添加映射文件。
在MyEclipse中切换到MyEclipseDatabaseExplorer视窗,选中5个创建好的表,右击【HibernateReverseEnginerring…】菜单项,利用反向工程,将对应的Java类和映射文件放在org.bookstore.model文件夹中(不用选择创建DAO)。
将ID的创建设置为native。
Ø
User.java代码如下:
packageorg.bookstore.model;
importjava.util.HashSet;
importjava.util.Set;
publicclassUserimplementsjava.io.Serializable{
privateIntegeruserid;
privateStringusername;
privateStringpassword;
privateStringsex;
privateIntegerage;
privateSetorderses=newHashSet(0);
//该用户的订单
//省略上述属性的setter和getter方法
}
User.hbm.xml代码
utf-8"
DOCTYPEhibernate-mappingPUBLIC"
-//Hibernate/HibernateMappingDTD3.0//EN"
"
--
MappingfileautogeneratedbyMyEclipsePersistenceTools
-->
hibernate-mapping>
classname="
org.bookstore.model.User"
table="
user"
catalog="
bookstore"
idname="
userid"
type="
java.lang.Integer"
columnname="
/>
generatorclass="
native"
/id>
propertyname="
username"
java.lang.String"
length="
20"
/property>
password"
sex"
4"
age"
setname="
orderses"
inverse="
true"
key>
/key>
one-to-manyclass="
org.bookstore.model.Orders"
/set>
/class>
/hibernate-mapping>
Book.java代码如下:
publicclassBookimplementsjava.io.Serializable{
privateIntegerbookid;
privateStringbookname;
privateIntegerprice;
privateStringpicture;
privateCatalogcatalog;
privateSetorderitems=newHashSet(0);
//省略上述属性的getter和setter方法
Book.hbm.xml代码修改。
org.bookstore.model.Book"
book"
bookid"
many-to-onename="
catalog"
class="
org.bookstore.model.Catalog"
fetch="
select"
catalogid"
/many-to-one>
bookname"
price"
picture"
30"
orderitems"
org.bookstore.model.Orderitem"
Catalog.java代码修改如下:
publicclassCatalogimplementsjava.io.Serializable{
privateIntegercatalogid;
privateStringcatalogname;
privateSetbooks=newHashSet();
//省略上述属性的getter和setter方法
Catalog.hbm.xml代码修改。
catalogname"
books"
Orderitem.java代码修改如下:
publicclassOrderitemimplementsjava.io.Serializable{
privateIntegerorderitemeid;
privateBookbook;
//该订单项书籍
privateOrdersorders;
//该订单项属于哪个订单
privateIntegerquantity;
Orderitem.hbm.xml代码修改如下:
orderitem"
orderitemeid"
orders"
orderid"
quantity"
Orders.java代码修改如下:
importjava.util.Date;
publicclassOrdersimplementsjava.io.Serializable{
privateIntegerorderid;
privateUseruser;
//订单输入用户
privateDateorderdate;
//订单日期
privateSetorderitems=newHashSet();
//包含的订单项
Orders.hbm.xml代码修改
-//Hibernate/HibernateMapp