在线抢购平台_课程设计报告

第1章 概述

1.1 课程设计的核心任务

  1. 需求分析、可行性分析、E-R图、关系图、系统架构图等的编写
  2. 总体设计、详细设计、代码实现
  3. 项目测试

本系统: 后端采用SSM(Spring+SpringMVC+MyBatis)的架构,实现RESTful API 接口,前端采用react进行前后端分离设计,完成商品在线系统。

1.2 课程设计工作进程

已经完成,用户登录注册,商品的添加,活动促销的添加,商品的查看与秒杀。

后续继续完成,订单页面的优化与完成,针对高并发下单任务的处理,针对用户重复秒杀商品的处理,加入redis 进行数据缓存,使得系统处理更加高效。

第2章 
需求分析

2.1 用户需求

2.1.1 业务需求

  1. 电商平台经常进行搞活动,此平台有很大的使用地方。
  2. 低廉的价格,昂贵的商品,会吸引很多人参与。
  3. 从众心理以及贪小便宜的心理使得平台传播广,知名度更高。
  4. 前后台分离模式,前端采用SPA应用,使得用户体验更加友好。
  5. 秒杀时网站的访问量大增,服务器极易容易崩溃。
  6. 秒杀时购买的请求数量远大于库存,只有部分用户能够成功;
  7. 活动种类丰富,容易造成数据错乱,用户获得错误的页面;

2.1.2 特殊需求

2.2 可行性分析

2.2.1 技术可行性

A . 采用前后端分离的架构,前端采用react完成SPA单页应用,即使后端压力过大,也不会影响前端页面的显示,前端做好合理的loading动画,使得用户会有更好的体验。

  1. 后端采用 SSM 的架构模式,通过现在市面上或者成熟的企业的架构方法,使得开发成本和运营成本大大降低。
  2. 数据库采用MySQL,关系型数据库比起非关系性数据库有更好的纵向能力,使得数据更加完善规范,降低服务器处理数据出错的概率,大大提高系统的稳定性。
  3. 前端采用NGINX托管,采用反向代理的方式,讲请求代理到服务器的应用端口上面,隐藏服务器端接口对外的映射,降低被黑客攻击的风险。使得运营成本大大降低。
  4. 采用此模式。服务器压力已经相比起传统的WEB应用大大降低,因此可以大大降低服务器的要求。
  5. 前后端的分离,静态资源的托管,服务端的开发更加简洁,同时项目后期迭代更加方便快速。
  6. 目前测试项目放在腾讯云10元学生机上,表现效果依然良好,估计如果是具有很大的并发量,对服务器的升级也不是很多,对带宽的要求也不是很大。同时服务器的运维成本比起以前的方式大幅度降低。

2.2.2 经济可行性

2.3 系统功能

  1. 登录注册功能

客户可以通过此接口进行账户的登录与注册,目前与手机短信验证码的开发与联调正在进行当中。为了项目的整体安全考虑,不提供管理员注册的接口,如果需要进行管理账户的注册,应该先进行普通账号的注册,然后通过数据库修改用户权限。

  1. 商品的查看

此部分可以对商品的信息进行查看和修改,看查看当前所有的商品,包括正在进行活动的商品。针对管理员用户,还有针对对商品进行添加后修改的操作。

  1. 活动的开启

针对管理用户可以对某个商品进行某一段时间的活动开启,设计活动的持续时间已经商品的优惠价格。

  1. 商品的购买

针对非活动商品,用户只能进行原价的购买,针对打折的商品,可以进行打折过后的价格进行购买,如果购买用户量过大,后端采用读写事务锁的方式进行数据的读写,能处理并发数目,针对更大流量的高并发处理,目前正在进行当中。

第3章 概要设计

3.1 系统设计模式

系统采用前后端分离模式,前端采用react web框架和antd ui样式库进行构建,通过axios进行api接口的访问。后端采用ssm的架构模式完成对数据的操作,并向前端提供访问接口,返回json的数据进行前后端交互。

3.2 系统总体结构

整体架构图

添加商品流程:

前端抢购流程:

后端处理数据:

3.3 持久层设计

数据库E-R图

第4章 
详细设计与系统实现

4.1 业务逻辑设计与实现

用户访问网址,通过nginx让浏览器下载我们的web资源。由于前端是一个SPA应用,前端会根据当前访问的URL来进行页面的显示,每个页面,会根据页面的不同或者用户的点击不同,向后端发送http请求,后端根据请求的URL和参数进行数据的处理,然后返回JSON数据,前端通过JSON数据的不同,渲染数据到页面或者提供错误信息。

前端API请求配置:

请求配置:

4.2 表现层设计与实现

前后端分离,前端采用了React,在前端已经做好了部分的路由控制,可以有效的避免后端提供页面需要去判别用户权限,能减轻后端的压力。其次采用了antd的ui库,使得前端样式统一,添加数据方便,格式固定,前端主动提供表单的验证,可以减少表单填写错误的来回请求,大大的提高用户的舒适度。

前端路由控制:

登录时前端进行表单校验:

登录页面:

注册页面:

商品列表页:

商品详情页:

添加商品:

添加抢购活动:

4.3 项目难点及解决方案

针对高并发的处理:由于高并发,可能会造成服务器处理异常,CPU处理缓慢,最终导致有部分用户不能正常的访问页面,所以采用了前端端分离的模式,前端采用nginx做静态资源的分发。这样与后端数据处理不在一个进程中,即使后端并发数量过大造成系统缓慢,但是用户仍然可以看到前端页面,不影响用户的操作。其次,采用前后端分离的模式,后端不用去渲染模板,也能大大提高系统的复杂读,提高高可用性。

把商品库存的减少和订单的创建写到一个事务里面,从而实现并发数目的处理,解决超卖现象。

4.4 典型代码片段与设计过程

第5章 
测试与部署

5.1 系统测试

后端测试:

  1. 通过写脚本的方式,生成一定的并发量,看系统的处理情况,已经当前系统的各个硬件的状态。√
  2. 是否存在xss攻击漏洞。√
  3. 授权的token是否可以伪造,过期后是否已经不能用。√
  4. 查看请求的返回结构体,是否和预期的一致。√
  5. 不按规定传递参数访问接口,观看数据的拦截情况。√

前端测试:

  1. 多个脚本同时获取我们的前端页面,能否正常显示,速度是多块。√
  2. 前端的路由拦截是否已经完善。√
  3. 前端是否已经过滤xss的攻击,以及是否能正常显示后端的错误信息。√

结论:本次测试,虽然各项都已经通过,但是在部分测试项里面,反馈的情况不是很好,如前端加载过慢,可能这和服务器的带宽有很大的联系,其次由于技术限制,对整个系统的更高级的安全测试没有进行。

5.2 系统部署

部署环境:

服务器: 腾讯云10元学生机,1核2G,1M带宽

操作系统: centos 7

服务器框架: nginx 1.12.2

Java 环境: java 1.8.

MySQL版本: 8.0.12

由于本项目是前后端分离,后端采用spring boot编写,所以后端代码没有部署在传统的tomcat上面,直接打包成jar包,然后部署。

后端部署:

  1. 在本地通过mvn命令,将项目打包成jar包。
  2. 通过ftp工具将jar包上传到服务器。
  3. 在服务器上安装我们需要的Java环境和MySQL环境,并成功启动mysql,进入mysql控制台,加载我们提前编写好的sql语句。
  4. 通过命令 java -jar ./miaosha-server.jar &命令,后台允许我们的代码。
  5. 在服务器上通过,curl 127.0.0.1:8080 判断是否有消息从而判断我们部署后端代码是否成功。

前端部署:

  1. 由于本项目是采用react开发,需要在本地通过 npm run build打包成静态文件。
  2. 在服务器上安装好我们需要的 nginx版本。
  3. 将前端打包好的代码上传到服务器。
  4. 修改服务器的nginx配置,加载我们的前端代码,并配置反向代理的地址。

  1. 在我们的域名服务商哪里,添加对二级域名的解析。
  2. 为了服务器的安全,这里我们开启服务器的防火墙,只想外暴露80和443端口。
  3. 最后,通过访问我们配置好的二级域名:javaweb.lcylove.cn 便可以正常的访问到我们的项目。

第6章 课程设计总结

6.1 系统基本软件度量数据

系统基本上完成了目前能完成的功能,比如登录注册,商品的添加,活动的添加,商品的预览以及对于普通商品的下单,对于活动商品的请购。针对抢购,从前端到后端,都具有相关的函数或者数据进行判别,从而实现系统的稳定高效。

6.2 课程设计项目的收获与展望

本次项目学会了很多东西,首先肯定是2个人一起小组完成,采用了github做了代码库,这样每个人的代码都暴露在了另外一个人的眼前,从而可以相互的了解双方代码的完成的进度,以及对方代码编写的质量,从而可以及时的提醒对方代码有问题,或者不应该这么写,其次就是看别人的代码也是一种提升。

本次我们的项目是一个在线抢购平台的项目,虽然目前已经完成了主要代码的编写,但是针对部分问题还是没有解决,目前只能处理一部分的并发量,如果并发数量过高,那么系统有部分的问题。后续应该会采用redis进行并发的处理,其次就是由于时间关系,部分功能也没有完善,包括前端页面管理员和普通用户的页面也耦合在一起,后期可以进行拆分。

其次,在完成项目的时候还是比较轻松的,但是写文档和测试也是一种学问,个人感觉比写代码难多了,出现了很多问题,希望后面能改正。

原文地址:https://www.cnblogs.com/pawn2018/p/11029201.html

时间: 2024-10-13 01:11:12

在线抢购平台_课程设计报告的相关文章

数据结构_课程设计——最小生成树:室内布线

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这道课程设计,费不少时间,太麻烦了= =.(明明是能力不够) ~~~~最小生成树:室内布线~~~~ 题目要求: 装修新房子是一项颇为复杂的工程,现在需要写个程序帮助房主设计室内电线的布局. 首先,墙壁上插座的位置是固定的.插座间需要有电线相连,而且要布置的整齐美

数据结构_课程设计——并查集:检查网络

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这两天做数据结构课程设计,因为以前做过ACM题,感觉还可以,不是很难呀 ~~~~并查集:检查网络~~~~ 题目要求: 给定一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台-创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课程机构APP,写数据库操作文件models.py models.py文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from __future__ import unicode_literals from datetime import datetim

计算机组成原理 课程设计报告

        计算机组成原理 课程设计报告      成员:许恺   2014011329          胡强勇  2014011315     时间:2016.12.20                 一.简要总结计算机组成原理实验 计算机组成原理实验总共五个实验,首先我们熟悉了教学机的使用方法,后面的实验我们分为运算器.存储器.控制器,控制器分为两次实验.紧接的第二次实验我们就进行了运算器的实验,对运算器的内部构造极其原理进行了验证理解,在这里我们学习了运算器ALU的8种运算功能,以

Java实验-课程设计报告一:个人银行账户管理系统SavingAccountManageSystem-具体文档+源码

课程设计报告一:个人银行账户管理系统 此文档及源码仅供参考 不得直接复制使用 author: [xxxxxxxxx xx xxxx] date: "2019-04-12" 作 者:31415926535x 出 处:https://www.cnblogs.com/31415926535x/p/10697659.html 版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. 不建议直接复制文档.源码,没意义,这东西还是自己手敲一下才能涨经验 项目所有的内容都已上

2019春 第三次课程设计报告

2019春 第三次课程设计报告 一,实验项目名称 利用easyX插件完成的时钟 二,实验项目功能描述 实现将时间显示为时钟 三,项目模块结构介绍 只有一个游戏主题,即时钟.cpp 四,实现界面展示 五,代码托管链接 https://gitee.com/zhuwanxing/zwxc 六,实验总结 这次是使用vs,用easyX插件来完成图像显示,在使用vs的时候出现了不少问题,但是都用百度搞定了,vs无法直接使用,要在调试-属性-c/c++-预处理器 输入 _CRT_SECURE_NO_WARNI

校园宿舍管理系统课程设计报告

课程设计报告 学    号   201610411418  /  2016104114122 姓    名   吴帝勇 /谢志良 班    级   16计科4班 题    目   校园宿舍管理系统 授课老师    袁飞 目录 第一章系统概述..............................................................................................................................1 1.

软件课程设计报告

南 京 理 工 大 学 课程设计说明书 组员 : 刘雨薇 学 号: 914106840606   张钰 914106840310   张欢欢 914106840509   彭姿容 914106840501 学院(系): 计算机科学与工程学院 专业 计算机科学与技术专业 题目 计算机网络课程测试系统       2016 年   11 月 目录 一.概述 ·················································3 二.需求分析···············

南理工14级第4组软件课程设计报告

南 京 理 工 大 学 课程设计说明书 作  者: 高明 学 号: 914106840518   刘建平   914106840526   王金   914106840234   王琪栋   914106840235   雷杨   914106840618 学院(系): 计算机科学与技术学院 专  业: 计算机科学与技术 题  目: 离散课程练习测验系统   2016年    10月 目录 一.概述 ················································