基于Springboot和Freemarker实现的校园二手市场网站

到山东找蓝翔

发布日期: 2021-09-22 11:15:14 浏览量: 202
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1.项目简介

1.1 项目背景

如今的大学校园中 随着大学生的购买能力的提高存在着两种局面。一是大学期间购买的收纳类、实用类物品,在毕业季大家面临带不走、不舍得扔的尴尬局面;二是购买的东西中越来越多的大家用不上的物品,这些物品成了大部分大学生的累赘。因此,低价卖掉这些仍可以继续利用的物品是一个两全其美的方法于是校园二手交易市场诞生了。
随着科技的迅速发展校园二手商品交易市场也不仅仅局限于校园内摆地摊的形式,大家更多的是使用手机线上购物,我们的项目就是基于这样的局面产生的,让同学们足不出户就可以淘到自己所需要的物美价廉的物品。

校园现状:

  • 开学季大量涌入的新生他们需要购置生活用品,学习材料,学习用品等,形成了大量购物的需求狂潮

  • 毕业季老生离校带不走的生活用品,带不走的学习材料,形成了大量的浪费,令人可惜

  • 平日需求里,由于大学生喜好买东西,闲置下来的东西,累积下来是个负担,需要置换来各取所需

  • 开学季、毕业季校园出现大量的学生自发起的购物小摊,给校园带来了拥挤,不便管理等安全隐患,也带来了不好的校园风气

1.2 系统概述

校园二手交易网为用户提供了一个二手交易的平台。根据大中学校商品情况及学生的实际需求,系统的主要功能模块为信息分类、信息搜索、发布信息、用户注册登陆、管理后台等。在网站的设计中,分为前台和后台两个部分设计,前台主要用于提供用户注册和登陆、发布供求信息、查询供求信息、用户留言等功能,后台主要功能有用户管理、供求信息管理、信息分类管理、留言管理等。系统还可提供用户对自己发表的供求信息的删除,以及对用户信息的修改功能,可以方便用户对自己基本信息的管理。

学校二手交易平台的优点:

  • 提供创业条件,大学生创业项目规模小、竞争能力弱、资金实力不足,在保证合理学习的同时,还能勤工俭学

  • 校园环境优化,在不影响大学生自主买卖,置换购物的同时,优化校园环境,给校园带来更好的管理

  • 响应国家、学校号召,构建校园二手交易市场不仅有利于“节能减排”,符合国家的绿色发展要求和可持续发展要求,为卖家学生和买家学生提供了完美结合的平台。二手交易市场的建立是对当前形势的响应,体现了可持续发展的节约理念和绿色的环保理念,是建立节约型社会的方针政策

1.3 系统功能描述

系统的使用者为系统管理员和用户,用户在系统注册后生成用户信息表文件。系统的功能分为两个模块,面向管理员的模块功能是系统管理,主要是删除系统非法用户的帐号信息;面向一般用户的模块功能是户信息管理和交易管理。其中,用户信息管理包括更改用户注册邮箱,更改用户密码,更改用户基本信息;交易管理包括出售管理,求购管理,买卖信息管理。

系统管理

管理员功能:对用户发出警告,从用户信息表中删除非法用户,这项功能只能为管理员所有。

用户管理

这个模块实现了用户请求交易,发布、更新交易信息的功能,并使用户能够更新自己的注册信息以及基本信息。

交易管理

在用户交易管理中,根据用户的提供的交易物品生成了“出售信息表”和“求购信息表”,用户可以随时对自发布的信息进行更改或删除。在交易的过程中,系统会根据这两个表生成对应物品的求购(出售)信息目录供用户浏览参考。对于没有明显求购或出售目标的用户,也可以浏览由求购、出售信息表生成的求购、出售物品目录。

订单管理

用户录入出售信息(包括出售物品名称,出售物品价格,出售物品种类,出售物品简单描述,联系电话,电子邮箱)。经用户检查录入信息正确无误,生成出售物品信息单。系统将出售信息纳入出售信息表,并根据出售信息表上的内容发布出售信息。

买卖信息更新管理

用户可以随时更改买卖信息。

搜索

2.数据库设计

2.1 表结构

分类表

留言表

商品表

菜单表

日志表

公告表

权限表

系统设置表

学生表

管理员表

2.2 E-R图

3.系统设计

  1. /**
  2. * 系统统一的图片查看方法
  3. * @param filename
  4. * @return
  5. */
  6. @GetMapping(value="/view")
  7. public ResponseEntity viewPhoto(@RequestParam(name="filename",required=true)String filename){
  8. Resource resource = resourceLoader.getResource("file:" + photoConfig.getUploadPhotoPath() + filename);
  9. try {
  10. return ResponseEntity.ok(resource);
  11. } catch (Exception e) {
  12. return ResponseEntity.notFound().build();
  13. }
  14. }
  15. @PostMapping(value = "upload_photo")
  16. public Result<String> upload_photo(@RequestParam("photo")MultipartFile photo){
  17. //获取图片的名称
  18. String originalFilename= photo.getOriginalFilename();
  19. //获取图片的后缀
  20. String suffix=originalFilename.substring(originalFilename.lastIndexOf("."),originalFilename.length());
  21. //图片格式不正确
  22. if(!photoConfig.getUploadPhotoSuffix().contains(suffix.toLowerCase())){
  23. return Result.exception(CodeMsg.UPLOAD_PHOTO_SUFFIX_ERROR);
  24. }
  25. if((photo.getSize()/1024)>photoConfig.getUploadPhotoMaxSize()){
  26. CodeMsg codeMsg=CodeMsg.UPLOAD_PHOTO_ERROR;
  27. codeMsg.setMsg("图片大小不能大于"+photoConfig.getUploadPhotoMaxSize()+"M");
  28. return Result.exception(codeMsg);
  29. }
  30. File file = new File(photoConfig.getUploadPhotoPath());
  31. //判断文件夹是否存在
  32. if(!file.exists()){
  33. file.mkdir();
  34. }
  35. file=new File(photoConfig.getUploadPhotoPath()+ StringUtil.dataFormat(new Date(),"yyyyMMdd" ));
  36. if(!file.exists()){
  37. file.mkdir();
  38. }
  39. String filename=StringUtil.dataFormat(new Date(),"yyyyMMdd" )+"/"+System.currentTimeMillis()+suffix;
  40. file=new File(photoConfig.getUploadPhotoPath()+filename);
  41. try {
  42. photo.transferTo(file);
  43. } catch (IOException e) {
  44. e.printStackTrace();
  45. }
  46. logger.info(originalFilename+"图片上传成功");
  47. return Result.success(filename);
  48. }
  49. }
  1. @GetMapping(value="/generate_cpacha")
  2. public void generateCpacha(
  3. @RequestParam(name="vl",defaultValue="4")Integer vcodeLength,//vcodeLength,验证码长度
  4. @RequestParam(name="fs",defaultValue="21")Integer fontSize,//fontSize,验证码字体大小
  5. @RequestParam(name="w",defaultValue="98")Integer width,//width,图片宽度
  6. @RequestParam(name="h",defaultValue="33")Integer height,//height,图片高度
  7. @RequestParam(name="method",defaultValue="admin_login")String method,//用来调用此方法的名称,以此名称为键,存入到session中
  8. HttpServletRequest request,
  9. HttpServletResponse response){
  10. CpachaUtil cpachaUtil = new CpachaUtil(vcodeLength,fontSize,width,height);
  11. String generatorVCode = cpachaUtil.generatorVCode();
  12. //将生成的验证码放入session,以供放后面程序的验证使用
  13. request.getSession().setAttribute(method, generatorVCode);
  14. log.info("验证码成功生成,验证码id=" + method + ",验证码为=" + generatorVCode);
  15. try {
  16. ImageIO.write(cpachaUtil.generatorRotateVCodeImage(generatorVCode, true), "gif", response.getOutputStream());
  17. } catch (IOException e) {
  18. // TODO Auto-generated catch block
  19. e.printStackTrace();
  20. }
  21. }

4.项目实现

4.1 用户界面

首页

登录/注册

分类

搜索

商品详情

联系商家

评论

卖东西

用户中心

4.2 管理员页面

登录

首页

菜单管理

角色管理

管理员管理

分类管理

商品管理

学生用户管理

留言管理

公告管理

系统设置

5.总结

在如今互联网时代,电子商务方便了我们的生活,在“买买买”时代的大背景下,尤其是当今大学生占比重的大头,他们会一时兴起买自己喜欢的东西,可是一段时间后又没有了当初的热爱。物品的价值便慢慢流逝了,为了帮助大学生随时随地处理自己的旧物品,发挥其剩余价值,我们校园跳蚤市场交易系统便诞生了。本系统最终满足了大部分用户的需求,做到了随时随地交易的目标。为了促进“可持续发展经济”的目标,本系统旨在打造“最人性化”、“最环保”、“最节约”的交易功能模式。

本系统在设计实现的过程中遇到了很多的问题,比如:对于系统设计方案的取舍、界面功能的重叠、获取数据后解析数据包失败等等。以下简短列出几个问题:

系统的设计方案

在设计之初,选择了订单和商品复用同一个界面,但是限制就比较大,订单和商品的共同点相对较少,对系统核心功能实现有点影响。

解决方案:参照市面上现有的应用程序——淘宝,将订单和商品分开,进入不同的界面根据两个实体类不同的属性,进行相关操作,极大地扩展到系统的功能,是用户运用起来更灵活。

客户端界面设计

后期在APP的界面、美工方面投入了大量时间精力,参考了很多APP的设计风格,从零开始弄得很花哨,不适合大众的审美。

解决方案:本着一应从简的原则,取消了繁杂的界面图片,改用烟灰白、白色、黑色搭配的简约界面设计。如此一来,尽管在美观性上略有欠缺,但是功能更加直观,让用户能够在尽量少的时间内发布信息、达成所需,给用户带来了更好使用体验。

校园跳蚤市场交易系统的设计与实现已全部完成,可以顺利的运行并完成基础的应用。对于后续的版本,本系统在确保核心功能不变的情况下,可以添加留下的未实现的功能,为系统增添多样化元素;可以继续完善界面布局和功能分配,减少功能耦合,优化数据库的表结构,提高服务器性能,增大并发线程数,以期给用户带来更好的使用体验。

上传的附件 cloud_download 设计文档.docx ( 10.29mb, 4次下载 ) cloud_download second_hand_market-master.zip ( 19.16mb, 4次下载 )

发送私信

会冒泡的可乐

153
文章数
12
评论数
最近文章
eject