毕业设计(论文)基于j2ee结构的网上商城的设计与实现.doc
商丘职业技术学院软件技术毕业论文商丘职业技术学院毕业设计(论文)题目:基于J2EE结构的网上商城的设计与实现系部:软件学院 专业:软件技术 班级:软件(2)班 学号:0909340214 姓名:吴xx 指导教师:张xx 完成日期: 2011 年5月 6 日29摘 要随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。当今社会已步入了信息社会,知识经济将成为新世纪的主导产业。伴随计算机的逐步推广和使用,计算机已在科研、生产、商业、服务等许多方面创造了提高效率的途径。特别是人类进入新千年以来,信息产业得到飞速发展。经济的全球化,人们生活在动态流通的环境中,也越来越需求及时,互动,反馈的为标准的服务产品。Internet飞速发展使互联网成为人们快速获取发布和传递信息的重要渠道,也使电子商务平台得到广泛的应用,特别是阿里巴巴(支付宝)、中银控(Chinapay)等大型公司的第三方支付平台的相继推出,使网络购物功能日趋完善和成熟。可以说电子商务正改变着人们已有的生活方式。其在改善生活质量的同时,在用户体验方面也得到很大提升。因此,本文着眼于电子商务平台,从基于网上商城系统入手,模拟淘宝网、京东商城、当当网等三大网购门户网站,以服务器浏览器(BS)架构,整合最新web2.0 开发的Hibernate3.x+Struts2.x+Jquery开源框架,尝试对网上购物系统的各功能模块及业务逻辑作出简要浅析,并对部分用例给出具体实现。关键字:网上购物;购物车;权限管理;订单AbstractWith the social development, technological advances, increasing the computer as an information carrier revealing his important position. Today's society has entered the information society, knowledge-based economy will be the leading industry in the new century. With the gradual promotion and use of the computer, the computer in scientific research, production, commerce, services, and many other aspects to create a more efficient way.In particular the new millennium, mankind has been the rapid development of information industry. Economic globalization, the flow of people live in a dynamic environment, more and more demand for timely, interactive feedback as the standard of service products. The rapid development of Internet makes quick access to the Internet become an important issue and transfer of information channels, e-commerce platform also widely used, especially Ali Baba (Alipay), Bank of Control (Chinapay) and other large third-party payment platform company launched to make online shopping functions are becoming more perfect and mature. Can be said that electronic commerce is changing people's way of life has been. Improve the quality of life in the same time, the user experience has also been greatly improved. Therefore, this paper focuses on e-commerce platform, starting from the Online Shopping Mall-based, simulation Taobao, Jingdong Mall, Dangdang three major online shopping portal to the server - the browser (B / S) architecture, integrating the latest web2. 0 developed Hibernate3.x + Struts2.x + Jquery open source framework, try online shopping system and the functional modules of business logic to make a brief, and gives some concrete realization of use casesKeywords: online shopping; shopping cart; rights management; orders目 录前言11. 项目需求及设计说明21.1 项目开发环境21.2 技术实现21.3 名称解释:21.4 项目背景31.5 用例模块描述41.5.1用户权限41.5.2我的订单41.5.3商品展示51.5.4购物车52、项目设计说明52.1 系统基本架构52.2 数据库设计62.2.1类别表(Category)62.2.2商品表(Product)62.2.3用户表(Users)72.2.4收件人地址表(receive_address)72.2.5选购条目表(item)72.2.6 订单表(Order)82.2.7 订单项表(OrderLine)82.3 领域模型82.3.1 com.wuyf.actions.authorize82.3.2 com.wuyf.atcions.order82.3.3 com.wuyf.actions.cart82.3.4 com.wuyf.actions.main92.4 业务模型9 2.4.1 com.wuyf.service.CartService92.4.2 com.wuyf.service.OrderService 102.4.3 com.wuyf.service.UserService102.4.4 com.wuyf.service.CategoryService113用例实现123.1 功能概述123.1.1 前台运营123.1.2 后台管理123.1.3 后台服务133.2 代码实现133.2.1 用户权限管理133.2.2 用户注册193.2.3 用户激活203.3 商品信息分类浏览233.4 订单生成243.5代码结构分类明细264结论275参考文献286致谢29前 言计算机信息管理中的广泛使用,也使得网络购物越来越普遍,给顾客带来很大便利。建立一个网络商城系统能更加有效率的进行商品的买卖活动,使顾客可以在商城中轻松购物,并完成商品和货币的交易。极大的方便了人们的生活,使合法的直销模式成为可能。并将为促进商品经济的流通呈现新局面创造条件。WEB2.0理念的融入,进一步提升了用户的个人体验,使使用者从单一的信息浏览者到信息的发布者、决策者之间转变。本文用例的设计,参照真实企业项目-IDG 投资兄弟公司“当当网”门户系统中的“在线购书系统”。尝试基于J2EE的企业级应用中的核心技术和开发流程,简要给出设计文档,并对部分功能模块给出必要分析。该项目包含基本模块有:用户权限管理、商品分类浏览、后台服务、订单生成及与之相对应的数据库表的设计。后台服务主要包括:日志服务、订表单的维护和对用户数据进行及时收集、加工、整理、贮存、检索、传递、反馈等。从本文着手拟题到最终的成稿,笔者参考了大量 JavaWeb 方面的资料,其间也多次几易其稿,目的也是为了论文的日臻完善。计算机技术飞速发展,用户需求的提高使得网上购物系统的开发和测试变得异常复杂,而本人也只能算是J2EE平台项目开发的入门者,加之模块完成布署后进行单元测试方面的限制(比如可供实际操作的数据库、WEB服务器),本文只对用户权限管理、分类浏览、购物车、订单生成等模块给出具体实现,其余部分给出的是需求分析。与本文档相应的同源代码将一并发布1. 项目需求及设计说明1.1 项目开发环境u 开发平台:WINDOWS XPu 开发工具:MyEclipse 6.0 + JDK1.6u 服务支持:tomcat服务器 + Mysql 数据库1.2 技术实现本系统基于J2EE 企业级应用核心所采用的技术主要为CoreJava 、Servlet、 JSP、XML。MVC设计模式下所采用的开源框架主要有:数据持久层Hibernate3.1;流程控制Struts2.1.6 。WEB 网页方面的HTML/CSS 、JavaScript 、Jquery、异步刷新页面Ajax 及动态网页逻辑控制的JSTL标记和OGNL对象导航图语言1.3 名词解释:1.3.1注册用户(Register User):本系统的使用权面向所有公众,以游客身份进入系统时可以浏览部分商品,并可将所选择的商品加入购物车。但无法为所购商品支付并生成有效订单。注册用户在数据库中有对应记录,用户在使用注册用户登录时可以选购并为商品支付、生成订单 注册用户包含的信息:用户名,E-Mail地址,昵称,登录密码,激活码,用户积分,登录IP等。1.3.2激活码(Activation Code):普通用户在完成注册时系统会自动生成一个激活码并按用户所提供的邮件地址发到用户邮箱,用户只有登录到有效邮箱进行激活后才能进行下一步操作,用户也可以选择注册时暂不激活等下次使用时才激活。1.3.3用户积分(User Integral):用户在每完成一笔交易后都可或取一定的积分,用户可以使用该积分充抵相应面值的货币,或者在商家指定的商品范围内享受优惠。 1.3.4商品目录:(Product Category):为了使系统可维护,具有更大的开放性。商城中所列的所有商品不是通过静态页面返给用户的,而是根据数据库里数据动态生成的。商品的目录关系在数据库中由主外键关系关联着 1.3.5购物车:(Shop Cart):对于每一合法登录的使用者系统都会自动分配一个购物车供用户使用,使用者可将所需要的商品添加到购物车中,该购物车可在多个页面间共享。1.3.6. 订单(Order Item):用户在确认交易后,根据登录信息、收件人地址和购物车里的内容生成一个订单。以备商家根据订单的详细内容对用户进行发货。1.4 项目背景近年来随着计算机的日益普及和网络(特别是因特网)的迅速发展,在全球范围内形成了一种新的企业经营方式,他们把所有的商业活动和贸易往来电子化,利用发达的网络环境 进行快速有效的商业活动。这就是最近成为世界上最热门的话题:电子商务。 其实,电子商务这个概念起源于七十年代,在那时,一些大公司通过建立自己的计算机网络实现各个机构之间、商业伙伴之间的信息共享、交换,这就是广为流行的电子数据交换(EDI)。电子数据交换是一种为满足企业需要而发展起来的先进技术手段,必须遵照统一的国际标准。EDI通过传递标准的数据流可以避免人为的失误,大大地降低成本、提高效率。现在,因特网为电子商务带来了飞速的增长,电子商务会越来越成为主流的商务活动方式,但EDI是电子商务的基础,并且EDI技术已经摆脱了以前旧式的昂贵的公司独立网络,而融入到因特网中。当今世界网络、通信和信息技术的发展,Internet在全球迅速普及,使得商业空间发展到全球的规模,同时也使得现代商业企业需要具有不间断地供货能力、不断增长的客户需求和不断增长的全球竞争三大特征,这使得任何一个商业组织都必须调整自己的经营方式和产业结构,以适应新的市场发展的需要。因此,任何一个企业要在21世纪生存,就必须迅速地改变传统的经营观念,跟上当今世界发展的最新潮流,加入到电子商务大潮中。那么,什么是电子商务?简单地讲,电子商务利用现有的计算机硬件设备、软件和网络基础设施,通过一定的协议连接起来的电子网络环境进行各种各样商务活动的方式。更广泛地说,凡是利用国际互联网进行商务活动的一种方式就是电子商 务。电子商务以其高效率、低廉、高收益、全球化等传统经营方式所无法比拟的优点受到全球的关注。美国、欧盟等发达的国家或组织已经采取措施大力发展电子商务。我国政府也大力倡导电子商务。专家预测,公司和公司之间的电子商务贸易额将从1997年的56亿美元发展到2002年的2680亿;个人网上购物将从 1997年的18亿发展到2002年的260亿。因此,电子商务中蕴涵着无穷的商业机遇。NWAP(NetShopping WEB application platform简称NWAP)是应虚拟商家所求推出的一款通用的WEB应用平台产品,可以帮助您提供构筑专业的电子商务平台的基础。1.5 用例模块描述ü 商品展示:实现商品预览、商品明细、分类检索功能。ü 购物车:实现添加商品、删除列表、恢复列表、数量修改、清空购物车、结算功能。ü 我的订单:实现订单确认、订单列表、删除订单、查询明细功能。ü 用户管理:实现登入/登出、用户注册、信息修改功能。1.5.1用户权限:用户在浏览器地址栏输入本系统的URL后进入主页面,若当前用户为第一次登录即为游客身份,游客所拥有的权限仅为浏览商品、登录,注册等。游客在没有注册时不具有登录用户所享有一些功能,这其中包括生成订单、修改订单、查看个人信息、修改密码、查看积分,安全退出登录状态等。1.5.2我的订单实现订单确认、订单列表、删除订单、查询明细功能。在用户确认所选购商品后,若前提用户已经登录可以进一步让用户输入收件人地址并生成订单,若用户尚未登录在生成订单时将会将用户引导到登录页面。厂商可以根据订单时的商品信息和收件人地址对消费者进行发货1.5.3商品展示实现商品预览、商品明细、分类检索功能。在进入查询页面后,使用者点击查询,页面会根据用户输入的筛选条件进行与后台数据库动态交互,将返回符合条件全部商品信息,并按系统预设分页呈现给用户,用户就可以跟据表单列出的详细信息选择适合自己所需要的商品,并在本条目后面的链结处点击购买。1.5.4购物车实现添加商品、删除列表、恢复列表、数量修改、清空购物车、结算功能。根据用户点击商品的购买链接将商品添加到购物车中。进入到购物车浏览页面时表单中文本框使用者可以跟自己意愿设置购买的数量。或者删除商品,注意此处的商品并不是真在删除,而是被缓存了,在需要的时候仍可能恢复。该系列操作完成之后可以返回到上一级进行其它操作或者查看购买信息。2、项目设计说明2.1 系统基本架构:本系统是NWAP-V1.0 的升级版本,在之前版本设计是基于GUI(图形用户界面),即BS 架构的,而V1.1 融入了WEB 2.0 技术,使用的是客户机浏览器的模式即:CS架构图2-1-1 系统基本架构图2-1-2各系统模块的关系及基本流程2.2 数据库设计2.2.1 类别表(category)字段名称类型约束描述category_idintegerpk类别idParent_idintegernot null父类别idNamevarchar(128)not null类别名Descriptionvarchar(512)/类别说明TrunInt(10)Not null目录的排序2.2.2 商品表(product)字段名称类型约束描述product _idinteger auto_increment/ pk商品idNamevarchar(40)not null商品名fixed_priceDoublenot null商品订价单价dang_priceDoubleNot nul商城买价Authorvarchar(128)not nul作者Publishvarchar(256)not nul出版社Pagesint/页数product_picvarchar(128)/图片Descriptionvarchar(512)/描述2.2.3 用户表(users)字段名称类型约束描述Idint(12)not null用户主键Nicknamevarchar(20) not null用户昵称Passwordvarchar(12)not null密码Emailvarchar(32)not nullEmailuser_integralint(12)default '0'用户积分is_email_verifychar(3)/邮箱是否激活email_verify_codevarchar(32)default NULL邮箱激活码last_login_timeint(20)default NULL最后登录时间last_login_ipvarchar(15)default NULL最后登录IP2.2.4 收件人地址表(receive_address)字段名称类型约束描述Idint(12) pk地址idreceive_namevarchar(20)not null收件人姓名full_addressvarchar(64)not null地址全称user_idint(11)not null用户IDpostal_codevarchar(8)not null邮编Mobilevarchar(15)default null手机Phonevarchar(20)default null固定电话2.2.5 选购条目表(item)字段名称类型约束描述Idint(10) pk条目idproduct_idint(10)not null商品IDorder_idint(10)not null订单idproduct_namevarchar(100)not null商品名称dang_pricedoublenot null商品价格product_numint(10)not null购买数量2.2.6 订单表(order)字段名称类型约束描述Idintauto_increment / pk订单iduser_idint(10)not null用户IDStatusIntnot null订单状态order_timeInt(20)not null订单时间order_descvarchar(200)default null订单描述total_pricedoublenot null订单总金额2.2.7 订单项表(orderline)字段名称类型约束描述orderline_idintegerauto_increment / pk订单项idorders_idintegernot null订单idproduct_idintegernot null商品idAmountnumeric(20,2)not null商品数量2.3 领域模型2.3.1 com.wuyf.actions.authorize类名属性封装功能说明AuthorizeAction user validateCode 封装从页面提交过来用户信息AuthorizeVerifyAction emailVerifyCode 封装系统生成邮箱激活码LoginActionuser封装页面提交过来的用户登录信息RedriectActionurl根据业务逻辑处理结果跳转到相关页面2.3.2 com.wuyf.actions.order类名属性封装功能说明OrderAction order 根据购物车信息生成用户订单OrderAction mapAddress 从数据库中取该用户上次提交的地址信息OrderActionaddress封装用户输入的一个全新地址2.3.3 com.wuyf.actions.cart类名属性封装功能说明CartAction cartItems 所选购商品信息条目CartAction savePrice 通过本商城购买商品共结省的费用CartActiontotalPrice此次交易商品的总费用2.3.4 com.wuyf.actions.main类名属性封装功能说明CategoryAction listCates当前目录下所包含的子目录BookListAction books 在所选目录下所包含的商品列表信息HotAction hotBooks最近热卖的商品NewAction newBooks最新上架的商品RecommendAction recommendBooks商家推荐的商品2.4 业务模型2.4.1 com.wuyf.service.CartService方法功能说明参数说明返回值说明publicvoid addCartItem(CartItem cartItem);publicvoid deleteCartItem(CartItem cartItem);publicvoid recoveyCartItem(CartItem cartItem);publicvoid updateCartItem(CartItem cartItem);publicdouble totalPrice();publicdouble savePrice();publicvoid clearCart();增加条目删除条目恢复上次删除的条目更新商品数量总价格省下的费用清空购物车将用户所选购的商品封装成一个条目增加到购物车要删除的条目要恢复的条目要更新的条目将购物车清空 / / / / /遍历每一商品算出总价格通过本商城购买所省下的总费用2.4.2 com.wuyf.service.OrderService方法定义功能说明参数说明返回值类型public List<Item> createOrderItems(CartService cartService);public Order createOrder(List<Item> items,CartService cartService);public Map<Integer,ReceiveAddress> getReceiveAddressList(Integer userId);publicvoid submitOrder(User user, ReceiveAddress address, Order order);创建订单列表根据Session中存储的信息生成order根据userId查出用户之前用过的地址提交订单购物车业务对象购物车业务对象订单列表用户ID用户、用户地址、订单对在象订单列表订单对象用户地址映射列表无2.4.3. com.wuyf.service.UserService 方法定义功能说明参数说明返回值类型public User addUser(User user, HttpServletRequest request);public User updateUser(User user);public User findByEmail(String email);public User findById(Integer id);public User validateUser(User user,HttpServletRequest request);publicvoid logout(Map<String, Object> session);publicboolean activeUser(String emailVerifyCode,Map<String, Object> session);增加新用户更新用户信息根据邮箱找到用户根据用户ID查找用户注销用户根据邮箱验证码激活用户表单提交过来的用户信息用户对象邮箱地址用户IDSession中的用户Session ,激活码新用户对象用户对象用户对象用户对象无激活成功与否2.4.4. com.wuyf.service.CategoryService 方法定义功能说明参数说明返回值类型public List<Category> createCategory(Integer parentId);public Category findCatById(Integer id);public CurrentBooks getCurrrentBooks(Category category, Integer sc, Integer ssc, Integer page, int pageSize);根据父类目录ID加载所有子目录根据ID找到某一目录获取当前目录下的商品信息父类目录ID所需要查找的ID当前目录、分页查询条件目录列表目录对象商品信息3用例实现3.1 功能概述系统功能模块分为以下几部分:前台营业,后台管理,后台服务。3.1.1前台运营1.用户注册、登录/登出 1.1登录 1.2退出登录状态 1.3重新登录2.分类浏览 2.1 分类浏览商品列表 2.2 最新上架商品、商家推荐、商品热卖榜3. 购物车 3.1 将所需商品添加到购物车 3.2 修改所购买商品数目 3.3 删除不满意的商品 3.4 恢复上次误删的商品 3.5 结算 3.6 清空购物车4. 订单生成 4.1 查找该用户以前所填写的收件地址 4.2 全新输入一个收货地址 4.3 确认所购商品信息无误 4.4 订单最终生成,订单信息录入数据库3.1.2后台管理:1.商品管理 1.1 查询已有商品信息 1.2 查询最近热卖商品 1.3 增加新到货商品 1.4 将新到货商品上架2.用户帐户管理 2.1 查询用户 2.2 添加用户 2.3 删除用户 2.4 更改用户3.营业记录管理 3.1 查询营业记录 3.2 导出到excel表 3.3 确认二级结算4.管理员管理 4.1 添加角色 4.2 删除角色 4.3 更改角色权3.1.3后台服务:1.日志服务 1.1 记录营业日志记录营业记录信息 1.2 记录账户日志-记录帐户登录,登出等信息 1.3 记录错误日志记录运行时发生的错误消息 1.4 记录管理日志记录管理员对系统做出的管理修改2.用户表和商品记录表的维护 2.1 处理过期商品信息数据 2.2 处理新上架的商品信息数据3.订单表的维护 3.1 处理已执行订单数据3.2 代码实现3.2.1 用户权限管理实体类设计:com.wuyf.domain对使用者的基本信息进行封装package com.wuyf.domain;/*DUserentity.*authorMyEclipsePersistenceTools*/publicclass DUser implements java.io.Serializable / Fieldsprivate Integer id;private String email;private String nickname;private String password;private Integer userIntegral;private String isEmailVerify;private String emailVerifyCode;/ Constructors/*defaultconstructor*/public DUser() /*minimalconstructor*/public DUser(String email, String password, Integer userIntegral) this.email = email;this.password = password;this.userIntegral = userIntegral;/*fullconstructor*/public DUser(String email, String nickname, String password,Integer userIntegral, String isEmailVerify, String emailVerifyCode,Long lastLoginTime, String lastLoginIp) this.email = email;this.nickname = nickname;this.password = password;this.userIntegral = userIntegral;this.isEmailVerify = isEmailVerify;this.emailVerifyCode = emailVerifyCode;/ Property accessorspublic Integer getId() returnthis.id;publicvoid setId(Integer id) this.id = id;public String getEmail() returnthis.email;publicvoid setEmail(String email) this.email = email;public String getNickname() returnthis.nickname;publicvoid setNickname(String nickname) this.nickname = nickname;public String getPassword() returnthis.password;publicvoid setPassword(String password) this.password = password;public Integer getUserIntegral() returnthis.userIntegral;publicvoid setUserIntegral(Integer userIntegral) this.userIntegral = userIntegral;public String getIsEmailVerify() returnthis.isEmailVerify;publicvoid setIsEmailVerify(String isEmailVerify) this.isEmailVerify = isEmail