一.前言
随着学生网购需求的增长,引起校园快递数量的急剧增加。目前校园快递管理上的混乱,丢件问题也时有发生,存在着取件效率低,工作人员流动性大以及代领等现象。校园快递管理也逐渐受到学校和快递公司的重视,整体服务水平满足不了学生的需求,因此借助于微信小程序的便捷性,开发一个基于微信小程序的校园快递服务系统从而更好的管理校园平台,同时为学生提供更加优质的快递服务。
💗博主介绍:✌全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计精品项目案例-200套
🌟文末获取源码+数据库+文档🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以和学长沟通,希望帮助更多的人
二.技术环境
jdk版本:1.8 及以上
ide工具:Eclipse或者 IDEA,微信小程序开发工具
数据库: mysql5.7 (必须5.7)
编程语言: Java
java框架:SpringBoot
maven: 3.6.1
详细技术:HTML+CSS+JAVA+SpringBoot+MYSQL+VUE+MAVEN+微信开发工具
三.功能设计
本课题设计的基于微信小程序的校园快递服务平台按照操作主体分为管理员和用户。管理员的功能包括字典管理、订单管理、公告管理、快递记录管理、快递管理、用户管理、管理员管理。用户的功能包括首页、查看公告、查询快递订单、查询快递基本信息、查询快递邮寄记录、修改密码等功能。
后台管理员的功能结构图如下所示:
四.数据设计
开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合,存储在一起的这些数据也是按照一定的组织方式进行的。目前,数据库能够服务于多种应用程序,则是源于它存储方式最佳,具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段时间的发展,从最初的不为人知,到现在的人尽皆知,其相关技术也越发成熟,同时也拥有着坚实的理论基础。本系统主要实体属性图如下所示:
五.部分效果展示
5.1小程序端实现效果
5.2后台管理端实现效果
5.2.1 订单管理
下图即为编码实现的订单管理界面,管理员在订单管理界面中可以对界面中显示,可以对订单信息的订单状态进行查看,可以添加新的订单信息等。
5.2.2 订单管理
下图 即为编码实现的快递管理界面,管理员在快递管理界面中查看快递种类信息,快递描述信息,新增快递信息等。
5.2.3 公告管理
下图 即为编码实现的公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。
六.论文截图
七.部分功能代码
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 批量上传
*/
@RequestMapping("/batchInsert")
public R save( String fileName, HttpServletRequest request){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
List<XinlijiankangEntity> xinlijiankangList = new ArrayList<>();//上传的东西
Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
Date date = new Date();
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf == -1){
return R.error(511,"该文件没有后缀");
}else{
String suffix = fileName.substring(lastIndexOf);
if(!".xls".equals(suffix)){
return R.error(511,"只支持后缀为xls的excel文件");
}else{
URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
File file = new File(resource.getFile());
if(!file.exists()){
return R.error(511,"找不到上传文件,请联系管理员");
}else{
List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
dataList.remove(0);//删除第一行,因为第一行是提示
for(List<String> data:dataList){
//循环
XinlijiankangEntity xinlijiankangEntity = new XinlijiankangEntity();
xinlijiankangList.add(xinlijiankangEntity);
//把要查询是否重复的字段放入map中
}
//查询是否重复
xinlijiankangService.insertBatch(xinlijiankangList);
return R.ok();
}
}
}
}catch (Exception e){
e.printStackTrace();
return R.error(511,"批量插入数据异常,请联系管理员");
}
}