基于springboot校园二手平台的开发与设计

目 录

1 绪论 1
1.1 课题研究背景 1
1.2 研究意义 1
1.3 研究的目标 2
2 系统技术选型 3
2.1 数据库选择 3
2.2 开发工具的选择 3
2.3 后端框架选择 3
2.4 前端框架选择 3
3 系统需求和可行性分析 4
3.1 总体设计原则 4
3.2 需求分析 4
3.3 可行性分析 5
3.3.1 技术可行性 5
3.3.2 经济可行性 6
3.3.3 操作可行性 6
4 系统设计 7
4.1 概要设计 7
4.2 页面设计 7
4.3 数据库设计 7
4.3.1 数据库概念结构设计 7
4.3.2 数据库逻辑结构设计 8
5 系统实现 11
5.1 网站前台设计与实现 11
5.1.1 用户登录模块 11
5.1.2 用户注册模块 12
5.1.3 商品模块 13
5.1.4 用户订单模块 14
5.1.5 用户购物车模块 16
5.1.6 申请商家模块 18
5.1.7 个人信息模块 19
5.2 网站后台设计与实现 20
5.2.1 商品管理模块 20
5.2.2 用户管理模块 21
6 系统调试与测试 23
6.1 测试概述 23
6.2 测试内容 23
6.3 测试结果 23
6.4 本章小结 25
7 总结与展望 26
7.1 总结 26
7.2 展望 27
参考文献 28
致 谢 29

1 绪论

1.1 课题研究背景
在科技和生产力的快速发展下,各个行业都在蓬勃发展,互联网购物这样一个新型产业也在不断壮大,当代大学生作为网上购物的一个群体,在消费的时候大学生购买的物品有的时候利用率很低,有的甚至只用一次,造成了物品的闲置和浪费[1]。在一个在科技飞速发展的现在,电子产品更换周期短。一直这样下去不仅仅是对资源的一种浪费,关键还浪费了大学生很多的资金。并且在每年的毕业季,对于我亲身经历或许也是大多数的在校大学生所经历到的,有的学生会在校园内摆上小地摊来出售自己的闲置物品,这样的情况虽然是很好的,但是无形之间给校园内部的交通带来了压力,而且对于这样的现象也是没有一个规范化的管理。这样的情况下,一个规范的只通用在校园内部的平台就非常必要了。而这个平台的范围只是在校园中的学生之间,让在校大学生当商家,坐在电脑前就可以把自己的闲置物品卖出去,让学生们的闲置物品流动起来,更好的运用商品的用途。而且在校园内的学生们都是通过注册学生信息来使用的,比起现在网上二手物品交易平台,更加便捷,实用性更强,其中所含信息量具体,发展前景十分明朗。
现在很多大学都有校园二手交易的活动,这种交易方式已经进入了广大群众的视野,正是在现在这种包容的大环境之下,有很多有关于我们大学生的二手物品交易平台被大多数学生所期待,它可以使学生之间快速的联系起来,满足一些学生的需求,也帮助一些学生处理自己的物品,也可以让用户选择自己真正喜欢的商品[2]。对于现在经常网购的大学生来说,如何能够将平台开发好,更好地便利人们的生活,让平台上的商品更加物美价廉,是我们眼前第一个要解决的问题。
1.2 研究意义
建立这个平台我们的本意是完成大学生在校内的闲置物品出售,利用了大学生闲置物品循环,让同学们自己做卖家,既能处理掉自己的闲置物品,也能获取到自己想要的东西。借助网络技术,开发这样的web端网站,目的是为了能够将校园里面的商品交易做的更加规范,更好管理,更加便利。与此同时也能将同学们的个性发扬出来,而且我们所做的网站功能齐全,操作使用起来一点都不复杂,十分方便,我相信它可以成为大学生处理闲置物品的有力工具。
基于SpringBoot的校园二手交易平台,有效地拉近了同学们之间的距离,有效降低了运行所需的成本,使得学校二手交易更加规范,有效保证了学生们的消费者权利,让同学们日常交易更加方便和高效。
1.3 研究的目标
我们对这个方向进行研究是基于将校园交易与互联网管理进行有机结合,把二者结合到一起,其中我们最具特色的功能便是可以实现用户发布商品和发布需求的功能,实现了校内闲置物品的流动。
本平台中可以对多方面信息进行管理,例如商户的有关信息,商户所卖商品的有关信息和消费者的有关信息等等。用户可以在本平台上实名认证之后申请成为商户,商户可以在个人中心发布自己不在使用或者搁置的物品。以上申请直接转到管理员的信息中心。管理员有处置申请通过和不通过的权限。从而达到在校大学生合理处置安排自己的闲置物品。本平台实现了线上以及线下沟通交易。在保证安全交易的情况下更大限度的给大学生处置物品的自由。

2 系统技术选型

本人所设计的校园交易平台不仅具有交易平台所需要的基本功能,而且操作起来没有任何难度,对用户们十分友好,不仅满足了各种各样用户的需求,同时我们在安全性方面也做了十足的考虑,从保障用户安全的方面进行考虑选择的操作系统。
2.1 数据库选择
所有在平台登记的商品和登记的用户的信息都在数据库中进行储存,而且对于事务来说其一致性是必须被确保的,以此来确保各方的权益,所以选择关系数据库更加合适,因此选择数据库,这种数据库是当下潮流最流行的而且其更加稳定,更加可靠,并且可以进行可视化操作[4]。对于后期调试和测试帮助很大,并且在大学期间我曾系统的学习过该数据库,掌握其基本知识。
2.2 开发工具的选择
在市面上有许许多多的开发工具,人们所用到比较多的无非就是这几款,就像是等,开发工具的选择必须要重视,因为如果选择的开发工具不可使,极有可能会造成事倍功半,工作效率大幅降低,达不到我们的预期效果,我所选择的开发工具是,理由如下;1.其具有自动提示的功能,并且能自动导包,2.代码重构,代码的重构功能也很聪明智能。能帮助你在代码书写过程中发现并且提示代码冗余地方。3.使用起来十分流畅,相比于其他的开发工具,他不会出现卡顿的情况,这是它所具有的优势之一。
2.3 后端框架选择
后端框架的选择是至关重要的,我选择作为我的开发框架,因为这种开发框架去油其他开发框架所不具有的有点。SpringBoot框架可以非常方便的集成其他相关技术。为项目配置提供了强大的支持[6]。而且相比其他还具有操作简便的优点。
2.4 前端框架选择
我们所创建的这个校园交易平台不仅有一定客户端,还有电脑端,前端框架的选择也是十分重要的,因此必须慎重,现在市面上最流行的是。可以选择这个前端框架。Spring 官方推荐使用Thymeleaf模板引擎功能强大,完全代替了jsp中的EL表达式[7]。这里面包含着很多的资源,基于此所以我们最后选择 +Thymeleaf模板引擎和前端框架。

3 系统需求和可行性分析

3.1 总体设计原则
我们秉持着要给消费者提供最方便的服务和最舒适的用户体验的目的,要将校园交易平台设计得功能尽可能完善,操作最简化,同时保证平台上商品的质量,保证消费者权益,我们应当在开发时候遵循表3.1。

系统的数据吞吐力很高,在有较多用户同时进行数据查询更新操作时系统依然可以保持运行的平稳
实现系统时使用开源、通用的相关技术手段
系统需要满足:全面的功能、便捷的操作、友好的接口、美观的UI设计
针对实际使用中不同需求的用户,系统都应当尽力满足,现有功能模块要有继续扩展的空间,且保持外部接口不变
确保代码具有规范性及较强的可读性,严格按照DRY原则进行编写,对相关代码进行合理的注释
系统的组成上,要对相关权限进行明确的划分、严格限制部分敏感操作,最大程度上保证服务器的平稳安全

3.2 需求分析
最开始我们需要对市场所需的东西进行有效分析,设计调查问卷对其进行相关调研,了解到我们所设计的平台应该具有哪些功能,经过这些步骤就可以得到这个平台的逻辑模型,在经过一定方式的转化,便可实现对于相关需求的满足。首先我们需要将所需的系统构架出来。
我们所设计的平台追求的不仅仅是基本功能齐全,我们更加追求的是消费者良好的体验,因此简洁美观的界面是必不可少的,只要能够将页面设计成功,呢就是向整体成功迈出了一大步,归根结底我们设计的是校园交易平台,要能满足小于交易的各种需求,我们要进行结构化设计,现将整个平台根据不同的特性分为几个模块,然后再将每个模块细分,从而进行相关的设计和有关的调整。
将平台进行模块划分过程中,我们是根据不同模块的特性和功能来进行划分的,这样做可以有效地降低在开发过程中的复杂度,并且能使开发者的思路很明确,可以在很短的时间内完成任务[9]。
网站功能如下:
(1)首页:商城首页展示了平台所售商品的一切相关信息,让用户可以全面了解商品情况。
(2)新用户进行注册:在新用户进行注册的过程中填写个人信息,并且使用手机接收验证码,校验用户的信息是否属实,并对其真实身份进行有效验证,一旦出现问题则不予注册。
(3)用户进行登录:如果该用户曾经注册过本平台账号,可以进行登录操作,保存登录信息。
(4)商品展示模块:商品展示区域展示当前平台的所有上架的商品信息。包含商品名、价格等,可以实现分类别查看展示和搜索展示信息。
(5)商品详情展示:展示当前商品的全部信息,罗列到页面上,多表联查商家信息和评论信息。
(6)订单模块:对于用户进行购买操作时直接生成订单,用户在个人中心可以查看自己的订单,对未付款的订单执行付款操作,对其余订单可以进行删除操作。
(7)管理员登录:管理员使用同一配发的账号进行登录操作。在后台模块管理员账号是不可注册,只能进行一并发放。
(8)商品进行管理:本平台所出售的所有商品都由我们平台的管理员进行统一管理,商品的注册,出库,派发都是由其负责。
(9)对本网站的所有用户进行管理:所有经过注册的用户的信息都有备份,管理员可以查看相关的账号信息,并且在发现账号信息异常的时候可以执行锁定功能。
系统整体设计框架图如图3-1所示:
在这里插入图片描述

图3-1 系统整体设计架构图

3.3 可行性分析
3.3.1 技术可行性
创建校园交易平台对其进行技术可行性分析研究,其主要有两个难点,主要是前期对相关软件进行开发和创建平台后的维护两点,在对相关软件进行开发的过程中,模式是其主要的模式,对其进行分层所使用的是设计模式。为了能够更好地控制版本,本地和远程仓库的部署采用的是不同的管理模式,这样可以使得管理起来更加高效,合理。创建平台后对其维护的时候,管理员可以通过后台管理的接口进入平台,从而对平台进行维护。除此以外,管理员还可以通过服务器进入数据库。实现以上要求主要使用了等相关技术。
3.3.2 经济可行性
创建校园交易平台对其进行经济可行性分析研究,经济所用部分主要可以分为三个部分,其分别是软件在前期进行开发,所需要的硬件设施和后期的运行维护。[11]
。软件在前期进行开发:全部过程都由一个人进行操作,计划出每天的工作量然后按照计划完成,人工费可以降至最低,而且技术上无需任何第三方的帮助,也不需要任何费用。
所需要的硬件设施:必须要有一台性能可以保证相关测试能顺利进行的电脑。
系统所需后期的运行维护:当系统成功上线后,独立的域名和服务器主机都是必不可少的,这些都必须要进行购买。
对相关所需成本进行大致估算,各个部分所需的预算如下表所示:

3.3.3 操作可行性
本平台采用的是服务器和网站的架构,对于刚使用该平台的人员,熟悉电脑操作即可,并且在开发完成之后会附增使用说明,让用户和管理者更加快捷使用。

4 系统设计

4.1 概要设计
我们所设计的这个校园交易平台在其结构上进行分类大体上可以分为两个部分,分别是用户所用的客户端和管理员所使用的后台,这两方面中客户端是较为主要的,在这个的基础上进行各方面的延伸,路由接口的设计,网站的页面的设计和数据库的设计是最主要的三个方面,我们将从这三个方面进行概述。
(1)在对平台路由的设计过程中,经过慎重考虑,我们所选择的是RESTful的 设计风格,主要是因为其简洁明了的设计,能够让用户有更好的体验感。
(2) 归根到底平台最主要的目的就是为用户提供便利,以实用为主,UI设计简洁,让人焕然一样,同时彰显自己的特色风格。
(3) 是我们所选用的管理系统,在不同情况下建立不同的数据库。
4.2 页面设计
我们所设计平台的初衷是给用户提供各种方便的服务,让用户有更好地用户体验,因此前端设计是十分重要的,是影响用户体验感十分重要的一个环节,基于以上要求进行综合考虑,我们最后决定使用这一项技术。
4.3 数据库设计
4.3.1 数据库概念结构设计
数据概念结构设计对于整个数据库是来说是十分重要的,因此我们必须对其十分重视,通过各种各样的方式对用户所有的需求进行归纳总结统一,只有经过这样的处理我们才能更加深刻全面的了解用户需求,才能更好地满足各种各样的用户不同的需求。
对平台进行分类是十分重要的一步,业界都将其称为平台的逻辑结构,平台会被其分类成为好几部分,分类后的部分各有各的功能,最后我们依据得到的E—R图来确定平台的数据模型,将实体之间的关系关联转换成为数据库中的数据模型。
在这里插入图片描述

图4-1 系统数据库概念设计图
4.3.2 数据库逻辑结构设计
本平台所选用的系统是,与此同时可以根据相关的数据库,由此可以有效地避免数据库被不良数据污染,为了避免这种情况,有些原则是必须要遵循的:
在对数据库的结构进行分析的工程中,表的设计是特别重要的,切记不可使用过于冗长的字段,否则表与表之间会出现耦合的现象,这是一个非常不好的现象。[13]
在对表设计的过程中,我是亲力亲为的,在对表设计的过程中我取得了三个重要的结论,呢就是可以通过添加一些无关的语句段落,这样可以有效地降低设计过程中的复杂度。[14]
数据库的表结构如下:

U_EMAIL varchar(32) NULL
U_address varchar(200) NULL
U_postalcode Int(11) NULL
U_codetype varchar(10) NULL
U_codenumber varchar(50) NULL
U_PUESITION varchar(100) NULL

U_ISLOCK int NULL
U_CODENAME varchar(32) NULL

表4.2 商品信息表

C_SUBTITLE varchar(200) NULL
C_MAINIMAGE varchar(500) NULL
C_IMAGES varchar(500) NOT NULL
C_DETAIL varchar(1000) NULL
isdel varchar(20) NULL
C_ORIGINAL Decimal(20) NULL
C_PRICE Decimal(20) NULL
C_DEGREE varchar(32) NULL
C_STOCK varchar(11) NULL
C_STATUS int(6) NULL

表4.3 订单信息表

U_USERNAME varchar(32) NULL
U_PHONE varchar(11) NULL
U_address varchar(200) NULL
O_NUMBER int(11) NULL
O_PRICE decima(20) NULL
O_PAYMENT varchar(32) NULL
O_PAYMETHOD varchar(32) NULL
O_PAYTIME datetime NULL
O_ORDERNUM varchar(32) NULL

R_ADDCITY varchar(50) NULL
R_ADDRESS varchar(255) NULL
R_ISDEFAULT int(11) NULL
R_DATEFLAG int(11) NULL
R_CREATETIME date(0) NULL
R_ADDAREA varchar(50) NULL

D_CONTENT varchar(255) NULL
D_FATHERID int(11) NULL
D_SONID int(11) NULL
D_RELTIME datetime NULL

ADMIN_PHONE varchar(32) NULL
ADMIN_QUESITION varchar(100) NULL
ADMIN_ANSWER varchar(100) NULL

5 系统实现

本章节为论文的第五部分,主要对本次设计的系统进行全面解释,侧重于实现过程与实现方法,并对整个网站的各个功能模块进行对应说明。
5.1 网站前台设计与实现
本次设计的网站运用了的相关知识及功能,并以此为基础完成网页的设计实现,总体架构采用的是模式,这是一种分层架构模式。
首先,我对本系统的网站前台进行了设计实现。网页前台主要是负责面向用户实现功能呈现,其中包括:注册、登录等,在整个系统中网页前台划分在系统用户模块。除此之外,网页前台还要为用户提供:商品展示(分类、详情)、购物车、下单、实时互动交流、用户间分享等多种功能。
5.1.1 用户登录模块
实现了网页前台的设计,就可以进一步完善用户登录模块的实现。一般来说,网页用户想要进行登陆操作都要进行以下这些操作:一是确认用户向网页中输入的整体内容是否准确无误,即验证信息是否存在;二是借助编写好的相关程序对用户输入的信息进行传输,确保后台能够准确接收到用户信息;三是后台程序接受到用户信息后,根据关键信息查询用户数据库。如果能够找到与用户信息完全相同的数据,就将用户密码进行比对,如果密码正确无误就返回成功,并且实现用户的登陆操作,向用户显示个人主页界面,如果没有在用户数据库中查找到输入的用户数据,直接返回错误,并向用户显示账号密码错误的界面。图5-1就是登录界面。
在这里插入图片描述

图5-1用户登录界面
网站主要采用响应式布局的方式,使用ajax异步请求,实现了用户登录的反馈信息。核心代码如下:
@RequestMapping(value = “login.action”)
public String login(@RequestParam(“U_PHONE”) String U_PHONE,@RequestParam(“U_PASSWORD”) String U_PASSWORD, User user, HttpServletRequest request, HttpSession session,Model model){
String u_phone = request.getParameter(“U_PHONE”);

    user.setU_PHONE(u_phone);
    user.setU_PASSWORD(u_password);
    user = this.userService.dologin(user);
    if (user !=null){
        session.setAttribute("user",user);
        return "forward:/";
    } else {
        System.out.println("未查询到信息!");
        model.addAttribute("errorMSG","账号错误或密码错误!请重新输入");
        return "forward:/login";
    }
}

5.1.2 用户注册模块
用户注册时首先填写个人基本信息,之后同意条款后平台向用户手机发送用户注册的验证码,通过验证后验证用户的身份信息,并完成注册。完成注册的账号才能使用该平台。
在注册的过程中,平台首先对比用户的手机信息,如果与数据库中的手机号匹配,则改手机号已被其他用户注册,则不可以在进行注册操作。图5-2显示的就是注册界面。
在这里插入图片描述

注册功能的实现使用了阿里云短信功能支撑,当用户在注册时收到短信后,输入正确的验证码才可以入驻本平台。核心代码如下:
public static String getCode() {
StringBuilder sb = new StringBuilder();
for (int i = 0; sb.length() < 6; i++) {
int num = new Random().nextInt(10);
sb.append(num);
}
return sb.toString();
}

@RequestMapping(value = "/checkPhoneCode")
public Integer checkPhoneCode(@RequestParam("verifyCode") String verifyCode,HttpSession session) {
    System.out.println(verifyCode);
    System.out.println(session.getAttribute("Checkphonecode"));
    if (verifyCode.equals(session.getAttribute("Checkphonecode"))) {
        System.out.println("相等!!");
        return 1;
    } else {
        System.out.println("不相等!!");
        return 0;
    }
}

5.1.3 商品模块
商品显示信息时的控制层代码是先通过服务层方法findAll ()访问持久层,并通过该操作对全部的信息列表进行搜寻,接下来借助域对象在用户页面循环展示查找到相关商品的数据信息。
图5-3显示的就是用户浏览商品信息时的界面。
在这里插入图片描述

商品信息展示部分包括两个小模块,即:用户操作使用的模块和管理员操作使用的模块。在用户操作使用模块中,商品按照瀑布流模式展示出来。商品展示页面中的商品均是商户们上传的商品信息、管理员上传的商品信息。商户上传的商品必须由管理员审核后方可上架,如果商品审核不通过则给商户反馈信息,商户可以进行删除和重新上架申请。核心代码如下:
// 查询商品表格所有数据
@RequestMapping(“/AllProduct”)
@ResponseBody
public String AllProduct(){
JSONObject jsonObject = new JSONObject();
List AllProduct = productService.tofindAllProduct();
jsonObject.put(“rows”,AllProduct);
return jsonObject.toJSONString();
}
// 添加商品信息
@RequestMapping(“/addProduct”)
public ModelAndView addProduct(@RequestParam(“file”) MultipartFile file,HttpServletRequest request,HttpSession session) throws IOException {
ModelAndView mav = new ModelAndView();
Admin admin = (Admin) session.getAttribute(“admin”);
Product product = new Product();
int i =productService.toAddProduct(product);
mav.setViewName(“Back-stageManagement/CommodityManagement”);
return mav;
}
// 更新商品信息
@RequestMapping(“/updateProduct”)
public ModelAndView SelectOne(@ModelAttribute(“product”) Product product,HttpServletRequest request){
int success = productService.doUpdateByPrimaryKey(product);
mav.setViewName(“Back-stageManagement/CommodityManagement”);
return mav;
}
// 所有商品

// 审核的商品页面跳转

}

// 审核通过
@RequestMapping(“/ExaminePass”)
public ModelAndView ExaminePass(@RequestParam(“c_ID”) Integer C_ID,Product product){
int success = productService.doexaminePass(product);
mav.setViewName(“Back-stageManagement/ExamineProduct”);
return mav;
}
5.1.4 用户订单模块
用户只要在平台中购物就会产生一个订单信息,并且存储到数据库中,Dion用户可以在个人中心查看自己的订单信息,在卖家处也会生成一个订单,该订单则是购买产品的用户信息,卖家根据自己的订单发货,最终完成商品交易。图5-4所显示的就是用户浏览订单信息的界面。

在这里插入图片描述

用户登陆后可以访问个人中心,里面会包含有订单详情,这里显示的是全部的用户订单,其中包括已付款和未付款,未付款订单点击可以继续付款。已付款商品则跳转至订单详情页面,查看订单的详细信息。核心代码如下:

Model model,

    Integer CID = Integer.valueOf(C_ID);
    if (session.getAttribute("user") == null) {
        mav.setViewName("login");
    } else {

// 查询收货地址
List userAddresses = userAddressService.findUserAddress(U_USERID);
model.addAttribute(“UserAddress”, userAddresses);
// 从商品表中查询商品信息

        model.addAttribute("Product", product);
        mav.setViewName("CHpay");
    }
    return mav;
}
//    用户全部订单查询 页面跳转  并且查询所有信息

    List<OrderDetail> orderDetails=orderTableService.toOrderAndPro(U_USERID)
    model.addAttribute("orderDetails", orderDetails);
    mav.setViewName("PersonInfo/Allorders");
    return mav;
}
//    查询用户当前的所有订单信息

public String AllOrdersTable(HttpSession session) {
    JSONObject jsonObject = new JSONObject();
    
    = user.getU_USERID();
    List<Ordertables> ordertables = orderTableService.tofindAllOrders(userid)
    jsonObject.put("rows", ordertables);
    return jsonObject.toJSONString();
}

5.1.5 用户购物车模块
平台中的购物车功能实现,用户可以在商品详细情况页面把商品加入购物车,如果商品库存不够,会提示用户商品暂时缺货,在为缺货的状态下点击结算跳转支付页面。用户购物车页面如下图5-5所示。
图5-5 用户购物车界面
5.1.6 需求广场模块
用户在需求广场模块可以查阅其他用户发布的需求告知,也可以对其他用户的需求进行回复,回复之后发布需求者可以查看到评论内容。可以针对相应的需求发布商品。有效的利用自己的闲置物品。同样用户在进行登录完成后可以在需求广场上发布自己的所需告示。在我的需求中可以对自己发布过的需求文档进行删除操作。需求广场如下图5-6所示。
在这里插入图片描述

图5-6 需求广场界面
需求广场的加入能更加贴近大学生们的生活,通过供求关系来达成闲置物品的交易。能解决相对于盲目上线商品的问题。核心代码如下:
// 当前用户发布需求
@RequestMapping(“/addDemand”)
@ResponseBody
public int AddDemand(HttpSession session, HttpServletRequest request, Demand demand){

    = user.getU_USERID();
    String UserName = user.getU_USERNAME();
    String DemandContent =request.getParameter("DemandContent");
    int success = demandService.addDemand(demand);
    return 1;
}

// 我发布的需求
@RequestMapping(“/MyDemand”)

    Integer userid = user.getU_USERID();
    List<Demand> demands = demandService.tofindByUserID(userid);
    model.addAttribute("demands",demands);
    mav.setViewName("/Demand/MyDemand");
    return mav;
}

// 回复评论
@RequestMapping(“/ReplyComments”)
@ResponseBody
public int ReplyComments(@RequestParam(“D_FATHERID”)
String USERNAME = user.getU_USERNAME();
int success = demandService.addDemand(demand);
return success;
}
5.1.7 申请商家模块
用户在注册平台账号之后,可以通过个人中心的申请为商家向平台申请上架商品的权限。在本过程中预保留了学生认证的接口来实现学生认证。学生需填写对应的姓名和学生证号来认证自己的学生信息。后台管理员在用户管理的商户管理下可以查看对应账号申请的个人信息。通过后即可使用商家功能实现商品的上传。申请为商家模块如下图5-7所示。
在这里插入图片描述
图5-7 申请为商家界面
用户在该模块实现了自己也可以上传商品信息,并且通过审核后直接上架到平台上面。商品如被购买,金钱直接流入平台账上,买家确认收货后可以将金钱转至用户的账户上。相关代码:
// 申请为商家

ApplyMer(@RequestParam("E_USERID") Integer E_USERID){
    ModelAndView mav = new ModelAndView();

// 查询是否正在申请商家 如果不是 则显示/PersonInfo/ApplyMer 如果是 则显示 管理员正在审核请稍后 如果已经是商家了 则再个人中心显示为 商家服务再说
List success = examineService.forExitApply(E_USERID);
System.out.println(success);
if (success.size()!=0){
// 就是正在申请
mav.setViewName(“/PersonInfo/InProcessing”);
} else {
// 就是没有申请
mav.setViewName(“/PersonInfo/ApplyMer”);
}
return mav;
}
// 商家服务页面
// 查询该用户的所有商品并且放入list展示

  = user.getU_USERID();
    List<Product> products = productService.doSelectByCreateID(String.valueOf(userid));
    List<Product> exmianeproducts = productService.doexamineProductByCreateID(String.valueOf(userid));
    model.addAttribute("products",products);
    model.addAttribute("exmianeproducts",exmianeproducts);
    mav.setViewName("PersonInfo/MerchantService");
    return mav;
}

5.1.8 个人信息模块
用户可以通过个人信息模块修改个人信息,还可以在安全设置中修改账户的密码。个人信息模块如下图5-8所示。
在这里插入图片描述
图5-8 个人信息界面
用户在该模块修改完成任何个人信息后,都需要重新登录平台才能更新自己的个人信息。核心代码如下:
@RequestMapping(“changePassWord”)
public String changepwd(@RequestParam(“U_PASSWORD”)String U_PASSWORD,@RequestParam(“U_NEWPASSWORD”)String U_NEWPASSWORD,@RequestParam(“U_confirmpwd”)String U_confirmpwd,User user,HttpSession session,Model model){
User user1 =(User) session.getAttribute(“user”);
if (U_PASSWORD != “” && U_NEWPASSWORD !=“” && U_confirmpwd !=“” && U_PASSWORD.equals(UPWD) && U_NEWPASSWORD.equals(U_confirmpwd)){
Integer success = userService.dochangepwd(user);
return “login”;
} else {
model.addAttribute(“errorMsg”,“密码或者新密码不能为空,或者新密码输入不一致!”);
return “PersonInfo/changePWD”;
}
}
5.2 网站后台设计与实现
这一部分实现了网站后台的设计,这也是本系统中十分重要的部分。后台管理模块就好比桥梁,它的主要功能就是为管理员提供操作网站的接口,便于让管理员对留言、商品类别、平台商品、订单信息、用户模块等部分的功能进行管理。
5.2.1 商品管理模块
商品管理模块顾名思义就是对于商品相关的信息进行管理,其中就包括对详细信息、添加、删除及更新等操作的管理,除此之外还要以商品的发布状态作为参考对商品列表分类显示。图5-9显示的就是商品管理界面。
在这里插入图片描述

图5-9 管理员商品管理
由管理员添加的商品无需审核即可上架销售,管理员在该界面可以对平台的所有商品进行操作,其中包括有上架、下架和修改商品的详细信息。其中下架的商品不会出现在用户的浏览中。核心代码如下:
// 添加商品信息
@RequestMapping(“/addProduct”)
public ModelAndView addProduct(@RequestParam(“file”) MultipartFile file,HttpServletRequest request,HttpSession session) throws IOException {
Admin admin = (Admin) session.getAttribute(“admin”);
String examineName = admin.getADMIN_NAME();
Product product = new Product();
int i =productService.toAddProduct(product);
mav.setViewName(“Back-stageManagement/CommodityManagement”);
return mav;
}

// 下架商品
@GetMapping(“/CancelSale”)
public ModelAndView CancelSale(@RequestParam(“c_ID”) int c_ID,Product product){
ModelAndView mav = new ModelAndView();
int success = productService.doCancelSale(product);
mav.setViewName(“Back-stageManagement/CommodityManagement”);
return mav;
}
// 上架商品
@GetMapping(“/OnSale”)
public ModelAndView OnSale(@RequestParam(“c_ID”) int c_ID,Product product){
int success = productService.doCancelSale(product);
mav.setViewName(“Back-stageManagement/CommodityManagement”);
return mav;
}
// 更新商品信息
@RequestMapping(“/updateProduct”)
public ModelAndView SelectOne(@ModelAttribute(“product”) Product product,HttpServletRequest request){
int success = productService.doUpdateByPrimaryKey(product);
mav.setViewName(“Back-stageManagement/CommodityManagement”);
return mav;
}
5.2.2 订单统计模块
该模块主要实现了查看平台上的所有订单信息信息。对于异常的订单信息管理员有权限执行结束订单。并且将异常信息反馈给买家和卖家,实现信息共享,避免了一些异常的操作后续工作。其中包含了对订单的操作和对用户的管理。订单统计页面如下图5-10所示。
在这里插入图片描述

图5-10 订单统计页面
5.2.3 用户管理模块
在平台用户管理模块,管理员对平台账号可以执行锁定的操作,锁定的账号不能登入平台,并且会提示该账号已被锁定,需要联系管理员进行解锁操作。图5-11展示的就是用户管理模块的界面。

在这里插入图片描述

图5-11 平台用户管理

6 系统调试与测试

本章作为本篇论文的第六章,是对第五章内容进行进一步的实际的操作与呈现。在本章中会详细阐述测试软件的方法和结果,其中会重点介绍自动化测试。在本章的结尾会在设计的校园二手交易系统[15]中测试 测试框架
6.1 测试概述
软件测试是软件设计中不可缺少的环节,它的过程与结果会对系统整体性能及设计产生很大的影响,它可以从多种角度、多个方向对系统进行剖析。对单元进行测试就是测试的最小粒度,通过测试得出:本次设计的各个类、各个方法均与预期结果相吻合。比单元测试粒度更大的是集成测试,该测试呢个够对模块间的交互过程进行评估。最后,粒度最大的是验收测试,验收测试是对系统进行用户层面的评估。
自动化测试是借助编写好的测试代码,站在用户层面对整个系统进行全面且深刻的剖析。手动测试的准确度会随系统结构的复杂程度、交互过程的多少而变化,所以本次设计的校园二手交易系统采用自动化测试的方法进行测试。
6.2 测试内容
分析本次设计出的系统结构及编程语言的语法,简述测试过程如下:
二手交易系统的整体架构为MVC模式。其中模型、控制器部分必须采用细粒度的测试,而视图部分则不需要采用细粒度的测试,这是因为前者作为整个系统最重要的部分,是程序运行的核心,测试的力度就需要细化。
对路由部分进行测试也是系统调试不可忽略的环节。因为路由是系统进行准确交互而使用的接口,如果出现问题会影响整个系统的执行。除此之外,包括:注册、登录等在内的部分关键操作也需要进行细粒度测试。当然,如果能再从用户角度进行模拟操作演练或是测试执行页面就能更好、更全面的完成测试工作。
6.3 测试结果
由于测试用例较多,本次论文选取了具有代表性的管理员角度进行展示。下列结果是从路由开始,经过Controller,最终到Dao层的全部测试结果。
(1)路由
路由时系统进行交互的数据接口,充当桥梁作用,所以测试的重点就放在用户发出路由请求后,系统能否将能请求正确转发,并确保 Controller 能够接收到。表6-2展示的就是进行路由测试的详细方法。

(2)Controller
测试Controller不仅要对权限进行认证,还要测试提交到 Dao的数据是否准确无误。表6-3展示的就是Controller 测试的详细操作。

本次测试过程中一共使用了三百二十七个测试用例,执行了测试程序之后发现有十六个用例处于待定状态。具体如下: Routes 层的六十四个用例全部通过。Controller 层的一百二十八个用例全部通过。Modal 层的一百一十六个用例中有四个没有通过。
6.4 本章小结
从本章的内容中可以看出,首先对软件测试常用的方法和类型进行了介绍,并分析本次设计的系统特点匹配了自动化测试的方法开展系统调试工作。随后对本次设计的测试环境进行详细介绍,并明确测试原则。最后通过多元化的测试用例,进行实际的测试操作,阐述了具体的测试流程,最终实现对系统整体性能的判断。

7 总结与展望

7.1 总结
通过本次毕业设计,我将大学四年学到的知识进行了合理的运用和复习,也在实际操作中掌握了很多书本中无法学到的技能,与此同时我对本专业的学习兴趣也得到了提升。在我看来,能够在学习中收获快乐是一件无比幸运的事。经过本次设计的磨练,我的实践经验也得到了全面提升。这是我第一次自己独立完成项目开发,也是第一次完整经历实体项目的开发过程。开发工程需要使用的相关软件、语言、调试方法及流程对我来说都是即陌生又充满吸引力的知识。无论最终的成果如何,我都学到了很多,例如:实际开展研究之前需要进行需求分析,充分了解需求的可行程度,从多个角度全面了解当前市场的现状,这样能更好的选择项目所用的开发环境、更准确的判断开发所需要的时间等。此外,通过对相关技术进行了解,我发现了本次设计在选题之前未曾被我发现的发展方向。任何一个程序员想要实现自身的加之就不能局限于代码的编写,思考分析才是所有工作开战之前最重要的部分,它能帮助我们提升开发效率及成果的实用程度。在我拿到这个项目的时候,我十分迷茫,我认为我学过的知识不足以支撑我完成这个项目的开发与设计。但随着设计的进程,我的知识量在不断扩充,各种知识与技能的联系也更加密切,我发现很多以前没有注意到的细节也会成为开发设计的关键点。虽然我本次设计的速度很慢,效率不高,但只要有收获,我就会收获到前所未有的满足感。对实际开发操作的学习与理论知识的学习有很大的不同,每当遇到问题时,同学和老师的全力帮助都会使我受益颇深。理论和实践结合才能取得最佳的设计效果,缺少理论就会变得盲目,缺少实践就会变得抽象。通过本次实验我发现自己对于软件开发,特别是前端开发产生了很大的兴趣,这是以往的理论学习不能教会我的东西。作为当代大学生,我们总是缺少实践的机会,通过本次毕业设计我也找到了未来为之奋斗的工作,所以说这次的项目既是结点,也是新历程的开端。我会在未来努力提升自己,进一步提高我在软件开发方面的综合能力,不拘泥于前端设计,也要对后端技能有所掌握,只有如此才能实现我预期的人生理想。在这次的完成毕设过程中,在后端存储图片的时候出现了一些问题,首先是无法上传图片文件,其次是在上传完成之后无法读取,我在翻看网上的资料的时候发现可以编写一个工具类,设置SpringBoot的上传文件路径并且把图片上传到指定的路径下,并且把服务器的图片地址写在数据库中,在项目启动的时候编写一个自动扫描的控制层,扫描页面上图片地址。完成图片的上传。才发现后端并不是那么容易学会的,还要更加注重其中的思路和逻辑。
7.2 展望
通过大学的系统学习,我收获了很多,但我深知知识是没有尽头的,所以我还有很多欠缺和不足,本次系统的设计也不能做到全面、协调、没有任何漏洞。我希望通过未来的进一步深造对系统中的相关功能进行完善。借鉴现有的成熟设计,我认为加入收藏夹就是一个不错的待完善点,用户可以通过收藏夹完成对购物车之外的商品进行收藏操作,这一功能的完善能够更好的提升用户的购物体验。除此之外,进一步对系统界面进行设计优化,譬如增加ui设计提升界面的美观度。总而言之,本次设计可以进一步优化、完善的入手点有很多,虽然我实现了整个系统的功能设计,但还是停留在基础构建层面,如果以后有机会我一定会将上述设想加入系统,力求实现一个更加完美的设计。

参考文献

[1]骆秀斌. 物联网:下一个推动世界发展的“生产力”[J]. 黑龙江科技信息, 2016(16).
[2]吴政翰.大学生网上消费现状分析研究[J].智库时代,2019(37):56+61.
[3]王硕. 电子商务概论[D].合肥工业大学,2007.
[4]王威. MySQL数据库源代码分析及存储引擎的设计[D]. 南京邮电大学.
[5]Steven J. Vaughan-Nichols. The Battle over the Universal Java IDE[M]. IEEE Computer Society Press, 2003.
[6]江雁. 浅谈Spring Boot框架下如何快速进行后台开发[J]. 海峡科技与产业, 2019(2).
[7]冯庆东, 李根福. Java Web程序开发参考手册[M]. 机械工业出版社, 2013.
[8]李子豪. 智慧物流平台[D]. 北京交通大学.
[9]屈雪花. 基于数据库技术存在的问题提出改进措施[J]. 科技资讯, 2013(33):34+36.
[10] 徐绕山.Java Web应用开发模式研究[J].信息化研究,2012,38(03):1-4+13.
[11] 余法红,崔华,杨开英.软件项目中的可行性分析方法研究[J].福建电脑,2007(03):65-66.
[12] 于中远,王亚平.应用环境中最优数据库模式的构建[J].河南科技,2011(21):54-55.
[13] 黄锡伟,毕厚杰.关系型数据库和对象数据库范式和操作研究[J].小型微型计算机系统,1997(11):62-69.
[14] 金玉明,程敏.浅谈关系数据库的规范化设计[J].电子制作,2013(18):62.
[15] Bruce Tate. 使用RSpec 进行行为驱动测试[J]. 2007.

致 谢

大学四年的时光一转眼就过了,我也即将完成全部学业步入社会。除了收获知识与技能,也收获了成长和成熟的自己。离别之际回头思索总是伴随着感伤,但新的旅途就在前方,希望也在招手呼唤。
本次毕业设计能够取得预期的成果并且顺利完成最大的功臣就是本次的导师——张涛老师,能够在人生中最关键的节点受到张老师的指导我觉得无比幸运,在本次论文的收尾之时我更是心存感恩。
不论本次设计中遇到任何问题,张老师都经全力对我进行督促与帮助,在我们都被疫情困在家中的时候,张涛老师还在跟我们保持密切的线上交流,时时刻刻在关心着我们的身心健康和毕设进度,在我困惑的时候能给我指引一个方向,在我被程序上的缺陷困住的时候,能指点迷津。非常感谢张涛老师在我大学最后的时光中依旧敦促着我前进,依旧在我迷茫的人生中给我指引方向。
总而言之,真心感谢本次设计过程中帮助、关心过我的所有人,希望通过本次设计成果的展示能够让大家共同感受到收获的喜悦和我发自内心的真诚谢意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/222720.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我想修改vCenter IP地址

部署vCenter Server Appliance后&#xff0c;您可以在vCenter修改DNS设置并选择域名服务器使用。您可以编辑vCenter Server Appliance的IP地址设置。从vSphere 6.5开始正式支持vCenter修改IP地址。因此可以更改vCenter Server Appliance的IP地址和DNS设置。 注意&#xff1a;更…

shein、亚马逊卖家测评如何利用自养买家号提升购买转化率?

自养买家号测评的作用&#xff0c;对于众多卖家来说&#xff0c;恐怕并不陌生。它可以快速注入评论&#xff0c;提升排名&#xff0c;创建热卖商品的一种催化剂。在当前电子商务行业蓬勃发展的背景下&#xff0c;买家号的重要性越来越凸显。 买家会花时间浏览店铺的评价&#…

Unity随笔1 - 安卓打包JDK not found

今天遇到一个很奇怪的事情&#xff0c;之前可以正常打安卓包&#xff0c;但是突然报错如下&#xff1a; 提示很明显&#xff0c;找不到JDK了。可是我在下载Unity的时候明明安装了所有需要的组件&#xff0c;为什么今天突然不行。 看了眼Unity hub里面&#xff0c;没问题。 那就…

一文了解直流稳压电源调试方法

直流稳压电源是是一种将交流或直流电源转换为稳定直流电压的电子装置&#xff0c;被广泛应用于国防、科研、医疗、通讯、工业自动化设备等领域。 直流稳压电源一般由变压器、整流电路、滤波电路和稳压电路组成。变压器会将交流电源转换为所需的电源电压&#xff0c;整流电路将交…

Leetcode—383.赎金信【简单】

2023每日刷题&#xff08;五十&#xff09; Leetcode—383.赎金信 实现代码 class Solution { public:int arr[26] {0};int arr2[26] {0};bool canConstruct(string ransomNote, string magazine) {int len ransomNote.size();int len2 magazine.size();for(int i 0; i …

csv文件中账号数字显示为科学计数法1.23E+16

参见&#xff1a; 如何解决导出csv文件数字自动变为科学计数法&#xff08;数值中带E&#xff09;_csv格式数字老是变成什么e-CSDN博客 其中&#xff0c;在倒数第2张图 里 选“新工作表”。

什么是LIMS实验室信息管理系统 LIMS系统功能介绍

实验室信息管理系统&#xff0c;也称为 LIMS系统&#xff0c;是一种软件解决方案&#xff0c;它通过自动化手动流程来支持现代实验室操作。因此&#xff0c;生命科学专业人员可以实时访问准确无误的信息。该软件使用户能够更有效地管理样本、分析相关数据并根据相关数据采取行动…

智能优化算法应用:基于人工水母算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工水母算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工水母算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工水母算法4.实验参数设定5.算法结果6.参考…

云架构的思考2--云上架构

目录 1 云架构考虑因素2 云架构设计步骤2.1 梳理需求2.1.1 功能需求2.1.2 非功能需求 2.2 业务架构2.3 设定合理预期2.4 确认应用程序迁移云端、托管或者重新编写&#xff08;可选&#xff09;2.5 选择云服务模式和部署模式2.5.1 选择云服务模式2.5.2 选择部署模式2.5.3 格外的…

海思3516DV500下的目标识别算法运行评估,包含yolov7,yolov8

目前在3516DV500下&#xff0c;自己训练的模型的评估实测结果。根据实际模型会有些许差异。 涉及到技术细节的部分因为商业用途&#xff0c;有部分省略。如需相关技术服务项目合作可私信联系。 我司推出的目标识别跟踪模块&#xff0c;支持热红外、可见光主流多光谱视频输入与目…

异常追踪与 JIRA 实现双向联动

前言 当应用程序或系统出现异常时&#xff0c;通常需要及时处理以保证系统的正常运行。通过异常追踪与 JIRA 双向联动&#xff0c;可以让企业内部相关人员快速了解、分析问题故障发生的原因、追溯并记录故障的处理过程&#xff0c;有效提高人员的沟通效率&#xff0c;极大降低…

java--成员内部类、静态内部类、局部内部类

1.内部类 ①是类中的五大成分之一(成员变量、成员方法、构造器、内部类、代码块)&#xff0c;如果一个类定义另外一个类的内部&#xff0c;这个类就是内部类。 ②场景&#xff1a;当一个类的内部&#xff0c;包含了一个完整的事物&#xff0c;且这个事务没必要单独设计时&…

掌控安全 暖冬杯 CTF Writeup By AheadSec

本来结束时发到了学校AheadSec的群里面了的&#xff0c;觉得这比赛没啥好外发WP的&#xff0c;但是有些师傅来问了&#xff0c;所以还是发一下吧。 文章目录 Web签到&#xff1a;又一个计算题计算器PHP反序列化又一个PHP反序列化 Misc这是邹节伦的桌面背景图什么鬼&#xff1f;…

Linux学习笔记之七(shell脚本的基本语法)

Shell 1、Shell脚本2、常用运算符2、特殊语法4、关于变量的一些命令4.1、echo4.2、export4.3、read4.4、declare/typeset4.5、local4.6、unset 5、基本逻辑语法5.1、if判断5.2、for循环5.3、while循环5.4、case语句 6、函数定义7、多脚本链接 1、Shell脚本 学习shell脚本开发之…

Halcon深度学习,语义分割,预处理和部署过程

halcon在深度学习中提供了7种学习方式和例子。其中最为常见的为语义分割&#xff0c;一般使用与在需要标注显示的缺陷检测项目中。几乎所有的2D缺陷检测都可以使用语义分割作为项目部署。 先上完整程序 预处理部分 *** 设置输入输出路径 *** *总路径 AllDir : E:/HALCONDeepin…

JavaScript的一个代码小挑战

题目 我们正在开发一个足球投注应用程序! 假设我们从一个网络服务获取了一场比赛的数据&#xff08;如下所示&#xff09;。在这个挑战中&#xff0c;我们将处理这些数据。这里是你的任务&#xff1a; const game {team1: Bayern Munich,team2: Borrussia Dortmund,players:…

适合家具集团的ERP软件有哪些?家具集团用什么ERP软件好

不同的家具企业有不同的经营策略和管理方式&#xff0c;同时在各个发展阶段遇会遇到各种新的问题&#xff0c;而这也对企业的信息化水平有着较高的要求。 另外&#xff0c;集团型家具企业通常涉及多仓库、多工厂、多平台、多业务模式等&#xff0c;而这些业务数据的实时和准确…

【趣味篇】Scratch之圣诞节跑酷

【作品展示】圣诞节跑酷 操作&#xff1a;点击小绿旗进入游戏主页面&#xff0c;不仅可以选择角色&#xff0c;而且选择好的角色还可以进行游戏闯关。

相对路径与绝对路径

1、相对路径与绝对路径 定义&#xff1a;要去的path是否和当前页面有联系 绝对&#xff1a; 1、http://www.baidu.com/a/b 2、/a/b 如果没有host则会直接取当前站点的host &#xff08;location.origion&#xff09; 相对&#xff1a; 1、当前是 http://www.baidu.com/a/b…

图像批量设计软件Retrobatch Pro mac中文版功能特色

Retrobatch Mac是一款灵活的批量图像处理工具。用户可以自由创建Workflow来实现相应的功能&#xff0c;这些Workflow能取代大量的重复劳动&#xff0c;提高生产力。Retrobatch Mac的一般操作是从左边栏拖动相应动作到工作区形成节点&#xff08;Nodes&#xff09;&#xff0c;节…
最新文章