目 录
1 绪论 1
1.1研究背景 1
1.2研究的目的与意义 2
1.3本网站的主要任务 2
2 系统开发工具介绍 3
2.1网站开发平台的选择 3
2.2相关技术的介绍 3
2.2.1 SSM框架技术 3
2.2.2 eclipse简介 5
2.2.3 mySQL简介 5
2.2.4 BUI框架简介 5
3 系统分析 6
3.1 网上购书系统运营的情况及其存在的弊端 6
3.2 可行性分析 6
3.2.1 经济可行性分析 6
3.2.2 技术可行性分析 6
3.2.3 操作可行性分析 7
3.2.4 管理可行性分析 7
3.3 功能需求分析 7
3.3.1 前台功能 7
3.3.2 后台功能 8
3.4网站流程图和结构功能图 9
3.4.1业务流程图 9
3.4.2 数据流程图 11
4 系统设计 15
4.1功能结构设计 15
4.2 数据库设计 17
4.2.1 数据库概念结构设计 17
4.2.2 数据库逻辑结构设计 23
4.2.3 数据库物理结构设计 23
5 系统实现 28
5.1 数据库管理 28
5.2 网站前台模块及相关代码 30
5.2.1门户页面 30
5.2.2 注册页面 31
5.2.3 会员登陆页面 37
5.2.4 商品搜索 39
5.2.5 商品详情页面 41
6 系统测试 50
6.1常用的测试方法和目的介绍 50
6.1.1 Black box 黑盒测试 50
6.1.2 White box 白盒测试 50
6.2本网站采用的测试方法 50
6.2.1测试过程 51
6.2.2网站测试结果 55
7 结论与展望 57
7.1网站的优点 57
7.2网站的缺点 57
7.3展望 57
参考文献 58
致 谢 60
3 系统分析
本章将对购书网站的开发的前中后期进行详细的论述。本章节将介绍网站开发的可行性分析、网站功能、网站运营的流程、数据流程分析,以及数据库设计等方面进行全面的分析和论述。
3.1 网上购书系统运营的情况及其存在的弊端
随着电子商务的发展,人们逐渐习惯于足不出户购物的习惯,并且由于网上购物的价格更低,因此人们更倾向于网上购物。传统的书店属于传统的零售行业,需要面对人力、中间商、库存、高租金等成本压力,在面对网购所带来的流量流失,更加剧了传统书店的经营难度,网购的价格优势和商品的丰富程度对传统的书店造成了越来越大的冲击。因此为了持续的经营,利用“互联网+传统零售”的思想建立在线的购书商城来解决网购所带来的冲击是必要的。
3.2 可行性分析
3.2.1 经济可行性分析
本商城系统的开发技术上,采用的是IBM公司免费的开源集成开发平台Ecli- pse,同时数据库使用的是mySQL,也是免费开源的软件。在商业运行中,服务器免费开源的系统Linux,而在其中搭载的tomcat服务器服务软件也是一个免费软件,它们对JAVA都有良好的支持,而Java本身也是一个开源免费的语言,因此在软件方面可以极大的节约成本,只需要购置一台服务器,技术方面基本花费的都是软件开发人员的人力成本。
所以从经济角度来讲,该商城系统是可行的。
3.2.2 技术可行性分析
本网站开发所使用的技术是JAVAEE,网站的后台系统采用的是SSM框架,前台采用JSP和HTML5结合混写制作动态网页,并使用javaScript代码编写用户反馈事件,数据库开发平台使用的是MySQL存储数据。
商城包含了大量的数据处理,这就要求我们的架构必须满足大量的数据处理,同时严格遵守架构的特殊约束,而SSM框架可以保证实现架构设计的最终目标。不论从功能上还是从性能上都是可以满足系统的需求,因此从技术方面来看,开发购书商城系统是可行的。
3.2.3 操作可行性分析
网站页面布局合理,操作简单。网站的前台页面由几个模块组成,页面的跳转只是刷新用户页面的部分,让客户得到自己想要的信息,降低客户的学习成本。在用户注册、登录等有表单提交的页面,网站在用户输入的时候,会对用户进行提示说明,以帮助客户更快的熟悉操作流程。本网站是在线的购书商城,学习成本低,操作简单,运营的成本较低。因此,本网站在操作方面是可行的。
3.2.4 管理可行性分析
本商城后台采用的是B/S模式,与传统C/S模式客户端不同的是,后台系统是以web网页的工作页面。只要有互联网的地方,管理员就可以通过浏览器进行对商城进行管理。后台系统以列表的方式展列出了商城系统的管理功能,管理员可以根据自己的角色,选择相关的管理功能,不同角色的管理员除了有最高权限的ROOT管理员外,不可使用未授权的功能,后台网站具有明确的角色和权限划分。后台网站简单易懂,管理员只需要学习所负责功能的使用,学习成本低,不需要进行另外的培训,有利于管理员的接受,极大的提高了用户的体验感。因此,该后台是简单、方便、易用的。
3.3 功能需求分析
网站成功建立和运行很大部分取决于网站开发前的规划,因此为了在网站建立过程中避免一些不必要的问题,在开发前需要规划好网站的功能、规模以及费用的投入,充分做好市场调研,使网站能够顺利的运营。前期的设计对于网站的编写具有 重要的指导作用,运营中也有利于网站的维护。其功能设计如下:
3.3.1 前台功能
1)普通游客用户。对于未登录的用户来说,他们的身份为游客。游客用户在进入商城后具有对商城进行一个初步的了解的需求,因此商城需要提供游客用户让他们进行商品浏览,并查看商品详细信息的功能,同时游客也可以对感兴趣商品通过关键字或者目录种类查询商品,并查看网站的公告,了解网站最新的动态。但是游客用户功能会受到限制,不能使用注册用户的一些功能,比如下订单、购物车等功能,如果他们想进一步使用网站的功能就必须登录或者注册。
2)注册用户。当游客用户在注册并登录商城后,注册用户可以使用商城用户的所有功能,而注册用户一般需要购买商品,对商品进行下单或者查看和修改他们自己个人的详细信息,包括姓名、生日、手机号码、注册时间、邮箱等,他们可对手机号码、生日、邮箱进行修改。因此商城为注册用户提供了购物管理、购物车管理、订单管理等功能。注册用户可以浏览商品,也可以查看商品的详细信息,同时通过商品的关键词进行检索,快速搜索到自己喜好的商品。看中的商品可以添加进购物车集中下单,在购物车中用户可以修改商品的数量,清除购物车里的商品,查看商品的详细信息。用户也可以单独对商品进行下单。注册用户下单后,所消费的金额将会累计成积分,即1元等于1积分,用户在消费1000元,即积分累计达1000分,即申请为VIP,待后台确认后,用户便成为VIP用户,并享受购物8折优惠。下单后,每个商品都将生成一条订单的信息,同时商品库存减少,网站后台进行发货和结算,商城用户可查询所有商品订单,并在收到商品后,点击确定收货按钮进行收货,最后用户可以对商品进行售后评论。
3.3.2 后台功能
1)用户管理员角色。由于商城有大量注册用户,用户会产生许多的业务需求,因此客户的信息需要专人管理,而根据此需求在商城后台中用户信息由用户管理员管理。商城用户管理员登录后,可以获得用户管理模块的管理权限。一是可以在用户管理子模块中,进行查看、修改、删除、查询商城用户的相关信息的操作,也可以改变用户的状态,对用户账号进行暂停或者启用。二是可以在VIP的子模块中,查询所有商城用户的积分信息,将商城用户升级为VIP或者将VIP用户降级。两个模块都能通过关键词检索用户信息。
2)商品管理员角色。商城存在的大量商品需要专门的人员负责商品相关信息的管理。商品管理员登录后,可以获得商品管理模块的管理权限。一是可以在产品管理子模块中,进行查看、修改、删除、查询商品信等操作,并且可以改变商品上架下架状态,商品只有上架后,在前台才能被商城用户浏览,管理员可以根据关键词对产品信息进行检索。二是可以在类目管理子模块中,对商品的类目进行查看、修改、删除,并且可以根据关键词检索类目。
3)订单管理员角色。在商城的交易中,用户下单后需要商城后台进行发货,而用户也有可能会对订单进行留言,或者用户需要取消订单,而这些业务都由订单管理员专门负责。订单管理员登录商城后台后,可以管理商城的订单。本文转载自http://www.biyezuopin.vip/onews.asp?id=12195管理员可以直接查看未处理的订单,对未处理的商品订单进行发货处理,也可以取消客户要求放弃购买商品的订单。管理员可以查看历史上所有订单,对自己历史上所负责的订单有个大概的了解。
4)网站管理员角色。在网站的运营中,公告需要更新,产品的评论也需要人工进行审核,防止恶意评论,而这些业务是由网站管理员负责的。网站管理员登录后,可以获得网站管理模块的管理权限。一是在评论管理子模块中,可以查看、删除用户对商品的评论,并可以用户名为关键词对用户名下的评论进行检索。二是在公告管理子模块中,可以查看、增加、修改、查询公告信息,并可根据关键词检索公告。
5)账号管理员角色。网站后台在后期会产生许多的管理员账号,有些账号可能需要改变角色,而有些可能要注销,而这些账号由于自身权限问题没有办法进行这些业务,因此后台需要账号管理员对这些管理员账号进行维护。账号管理员在后台登录后,可以对其他管理员账号进行管理,对他们的信息进行修改,比如修改密码、修改角色等操作,也可以用户名为关键词进行检索。ROOT管理员有系统的最高权限,具有所有管理员角色的功能。

package com.bookshop.service.user;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import javax.annotation.Resource;import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Service;import com.bookshop.common.ConstantCode;
import com.bookshop.model.address.AddressFilter;
import com.bookshop.model.address.DeliveryAddress;
import com.bookshop.model.user.ShoppingCart;
import com.bookshop.model.user.UserDetail;
import com.bookshop.model.user.UserFilter;
import com.bookshop.model.user.UserFunds;
import com.bookshop.model.user.UserRecord;
import com.bookshop.system.UserContext;
import com.bookshop.utils.TimeUtils;
import com.bookshop.utils.UUIDGenerator;@Service
public class UserService
{@Resourceprivate SqlSession session;@Resourceprivate AddressService addressManager;/*** 新增用户* * @param record*/public void addUser(UserRecord record){// 生成用户IDString userId = UUIDGenerator.getUUID();record.setUserId(userId);session.insert("userManageMapper.insert", record);}/*** 修改* * @param record*/public void modifyUser(UserRecord record){session.update("userManageMapper.update", record);}/*** 校验用户名是否存在* * @param username* @return*/public int checkUsername(String username){UserRecord record = getUserByUserName(username);if (null == record){return ConstantCode.USER_NOT_EXISTS;}return ConstantCode.USER_EXISTS;}/*** 查询* * @param username* @return*/public UserRecord getUserRecordByName(UserRecord record){record = session.selectOne("userManageMapper.querySingleByName", record);return record;}/*** 查询* * @return*/public UserRecord getUserRecordById(UserRecord record){record = session.selectOne("userManageMapper.querySingleById", record);return record;}    /*** 登陆校验* * @return*/public int checkLoginInfo(UserRecord record){record = session.selectOne("userManageMapper.querySingleByNameAndPassword", record);if (null == record){return ConstantCode.USER_NOT_EXISTS;}return ConstantCode.USER_EXISTS;}/*** 保存内存中用户信息* * @param username*/public synchronized Map<String, Object> saveUserLoginInfo(String username){// 创建内存Map<String, Object> userMap = UserContext.create(username);// 创建购物车List<ShoppingCart> cartList = new ArrayList<ShoppingCart>();userMap.put(ConstantCode.CONTEXT_SHOPPING_CART, cartList);// 查询用户信息return userMap;}/*** 根据用户名查询详细信息* * @param username*/public UserDetail getUserDetail(String username){UserRecord userRecord = getUserByUserName(username);if (null == userRecord){return null;}return convertUserRecordToUserDetail(userRecord);}public UserRecord getUserByUserName(String username){UserRecord userRecord = new UserRecord();userRecord.setUsername(username);userRecord = session.selectOne("userManageMapper.querySingleByName", userRecord);return userRecord;}/*** 根据userId查询用户*/public UserDetail getUserDetailById(String userId){UserRecord userRecord = new UserRecord();userRecord.setUserId(userId);userRecord = session.selectOne("userManageMapper.querySingleById", userRecord);if (null == userRecord){return null;}return convertUserRecordToUserDetail(userRecord);}    /*** 查询所有用户* * @param username*/public List<UserDetail> getUserDetailList(UserFilter filter){List<UserRecord> userRecordList = session.selectList("userManageMapper.queryByCondition", filter);List<UserDetail> resultList = new ArrayList<UserDetail>();if (org.springframework.util.CollectionUtils.isEmpty(userRecordList)){return resultList; }for (UserRecord record : userRecordList){resultList.add(convertUserRecordToUserDetail(record));}return resultList;}/*** 0:否,1:是* * @param input int数字* @return 是或者否*/public static String convertYesNo(int input){if (ConstantCode.IS_VIP_YES == input){return ConstantCode.IS_VIP_YES_STRING;}else if (ConstantCode.IS_VIP_NO == input){return ConstantCode.IS_VIP_NO_STRING;}else{return ConstantCode.IS_VIP_NO_STRING;}}/*** 状态转换* * @param userStatus* @return*/public static String getUserStatus(int userStatus){switch (userStatus){case ConstantCode.USER_STATUS_NORMAL:return ConstantCode.USER_STATUS_NORMAL_STRING;case ConstantCode.USER_STATUS_SUSPEND:return ConstantCode.USER_STATUS_SUSPEND_STRING;case ConstantCode.USER_STATUS_NO_ACTIVE:return ConstantCode.USER_STATUS_NO_ACTIVE_STRING;default:return ConstantCode.USER_STATUS_NORMAL_STRING;}}/*** 状态转换* * @param userStatus* @return*/public static String getUserType(int userType){return "普通用户";}public UserDetail convertUserRecordToUserDetail(UserRecord userRecord){UserDetail userDetail = new UserDetail();// 查询地址信息AddressFilter filter = new AddressFilter();filter.setUserId(userRecord.getUserId());List<DeliveryAddress> addressList = addressManager.queryAddressList(filter);userDetail.setUserId(userRecord.getUserId());userDetail.setUsername(userRecord.getUsername());userDetail.setEmail(userRecord.getEmail());userDetail.setIsAdmin(userRecord.getIsAdmin());userDetail.setIsVip(convertYesNo(userRecord.getIsVip()));userDetail.setUserStatus(getUserStatus(userRecord.getUserStatus()));userDetail.setUserType(getUserType(userRecord.getUserType()));userDetail.setSex(userRecord.getSex());userDetail.setPhoneNumber(userRecord.getPhoneNumber());userDetail.setBirthday(TimeUtils.formate(userRecord.getBirthday(),ConstantCode.TIME_FORMAT_YYYYMMDD,ConstantCode.TIME_FORMAT_YYYY_MM_DD));userDetail.setCreateTime(TimeUtils.formate(userRecord.getCreateTime(),ConstantCode.TIME_FORMAT_YYYYMMDDHHMMSS,ConstantCode.TIME_FORMAT_YYYY_MM_DD_HH_MM_SS));userDetail.setLastLoginTime(TimeUtils.formate(userRecord.getLastLoginTime(),ConstantCode.TIME_FORMAT_YYYYMMDDHHMMSS,ConstantCode.TIME_FORMAT_YYYY_MM_DD_HH_MM_SS));userDetail.setDeliveryAddress(addressList);return userDetail;}public UserFunds getUserFunds(String userId){UserRecord userRecord = new UserRecord();userRecord.setUserId(userId);return getUserFunds(userRecord);}public UserFunds getUserFunds(UserRecord userRecord){if (userRecord == null){return null;}return session.selectOne("userFundsMapper.queryFunds", userRecord);}public void updateUserFunds(String userId, int payMoney){updateUserFunds(new UserFunds(userId, payMoney));}public void updateUserFunds(UserFunds userFunds){session.update("userFundsMapper.updateFunds", userFunds);}public String deleteUser(UserRecord userRecord) {int result = session.delete("userManageMapper.delete",userRecord);return String.valueOf(result);}
}




























基于J2EE的网上购书系统(SSM框架)相关推荐

  1. 基于JAVA的网上购书系统(附:源码 论文 项目运行视频)

    摘要 在当今的社会中, 随着社会经济的快速发展以及计算机网络技术和通讯技术的快速成长,网络应用领域也一天天扩大,网络中的新鲜事物层出不穷.电子商务的发展增加了许多商业交易的平台,借助于这种互联网平台, ...

  2. 毕业设计-基于JSP的网上购书系统.doc

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘  要 随着网络信息的发展,网络在人们生活中的应用越来越广泛.人们越来越注重时间和效率,希望 ...

  3. java大学生网上请假系统ssm框架

    随着高校招生规模的逐步扩大和教学方式的改革,在校学生人数将不断增加.另一方面,我国高等学校基层学生考核工作的内容杂,管理细,要求高,头绪多,传统的手工档案式管理办法已基本不适应新形势的要求,已经暴露出 ...

  4. java毕业设计项目源代码S2SH基于JSP的网上购书系统|商城电商购物系统

  5. 基于SpringBoot框架的网上购书系统的设计与实现

    源码获取:私聊回复[SpringBoot.网上购书]获取 更多选题参考: 计算机毕业设计.三级项目.五级项目.期末大作业.参赛作品等选题参考 文章目录 前言 一.背景及意义 选题背景 选题目的 二.系 ...

  6. java毕业设计——基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码)——网上购书系统

    基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+MySQL的网上购书系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  7. java中ssm付款代码_基于Java+SSM的网上订餐系统、基于JavaWeb的网上订餐系统

    需求分析 基于Java+SSM框架实现一个校园点餐系统,包括用户端和管理员端; 前台主要功能有用户注册, 用户登录, 我的购物车.我的订单.商品评论.校园资讯等; 管理员端主要功能有:用户管理.商品管 ...

  8. ssm基于jsp的网上购物系统 毕业设计-附源码190917

    网上购物系统的设计与实现 摘 要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用.简单的流程.便捷可靠的支付方式.快捷畅通的物流快递. ...

  9. (附源码)ssm基于jsp的网上购物系统 毕业设计190917

    网上购物系统的设计与实现 摘要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用.简单的流程.便捷可靠的支付方式.快捷畅通的物流快递.安 ...

  10. (附源码)计算机毕业设计SSM基于web的网上订餐系统

    (附源码)计算机毕业设计SSM基于web的网上订餐系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(I ...

最新文章

  1. 单一窗口关区备案_【干货】上海国际贸易单一窗口货物申报对接版(信天翁)“两段准入” 操作手册...
  2. 链家前DBA判刑7年!你还敢不敢删库?
  3. KlayGE 4.3开发计划
  4. hybird 跨平台移动app开发
  5. 苹果电脑 默认安装jdk位置_收藏起来你一定用的上!JDK的安装和配置
  6. 澳大利亚短租市场火爆 “祖母房”成为热搜
  7. phpstudy运行时出现没有安装VC库
  8. 智能POS机项目原理分析
  9. HR告诉你,怎么回答“为什么从上家公司离职?
  10. 红孩儿编辑器的模块设计17
  11. 20180626 STM32 ---利用KILE5 仿真IO口的波形图
  12. 第7讲 替代定理、戴维南定理、诺顿定理
  13. java profile cpu_Java进程高CPU使用调查方法简介
  14. 3d 打印模型下载网站
  15. C#高级编程9 第11章 Linq
  16. OpenSSL密码库算法笔记——第4.1.1章 平方和算法
  17. 更改MSN个人空间的语言设置
  18. Delphi Web应用开发B/S框架推荐:《Delphi Web前端开发教程——基于TMS WEB Core框架》
  19. 谷歌开源Android上Roboto无衬线字体家族
  20. Java程序开发学习之入门

热门文章

  1. 笔记本android vga输出,笔记本VGA接口基础知识普及
  2. Agisoft Photoscan/Mateshape 相机参数XML解读
  3. Yann LeCun、Yoshua Bengio和Geoffrey Hinton的联合综述《Deep Learning》翻译
  4. Meta Learning:元学习模型MAML和Reptile详解
  5. 【项目管理】Java OCR实现图片文字识别
  6. 如何使用PAUP4、MrBayes、TNT构建系统发育树
  7. 如何快乐地检测SQL注入
  8. html5网页设计-表单
  9. 飞鱼CRM如何同步数据到第三方系统
  10. 删除下拉框只找23火星软件_下拉词删除都选24火星软件