Advertisement

基于springboot火车订票管理系统

阅读量:
设计技术:
  • 开发语言:Java
  • 数据库:MySQL
  • 技术:Springboot+Mybatis
  • 工具:IDEA、Maven、Navicat
主要功能:

本火车订票管理系统主要包括二大功能模块,即用户功能模块和管理员功能模块。

(1)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员功能来管理后台系统。主要功能有:首页、个人中心、用户管理、车型信息管理、车次信息管理、购票订单管理、改签订单管理、退票订单管理、系统管理等功能。管理员用例图如图3-1所示。

图3-1 管理员用例图

(2)用户:首页、个人中心、购票订单管理、改签订单管理、退票订单管理等功能,用户如图3-2所示。

图3-2 用户用例图

(3)前台首页:首页、车次信息、火车资讯、个人中心、后台管理等功能,前台首页如图3-3所示。

图3-3 前台首页用例图

前台首页功能模块

火车订票管理系统 ,在系统首页可以查看首页、车次信息、火车资讯、个人中心、后台管理等内容,如图5-1所示。

图5-1前台首页功能界面图

登录、用户注册,在用户注册页面可以填写用户名、密码、姓名、性别、头像、身份证、手机等信息进行注册,如图5-2所示。

车次信息,在车次信息页面通过填写车次名称、火车名称、车牌、图片、起点站、终点站、途经、日期、出发时间、时长、座位类型、价格、票数等信息。如图5-3所示。

图5-3车次信息界面图

管理员功能模块

管理员登录,通过填写注册时输入的用户名、密码、角色进行登录,如图5-4所示。

图5-4管理员登录界面图

管理员登录进入火车订票管理系统可以查看首页、个人中心、用户管理、车型信息管理、车次信息管理、购票订单管理、改签订单管理、退票订单管理、系统管理等信息。

个人信息,在个人信息页面中可以通过填写用户名等内容进行修改、添加,如图5-5所示。还可以根据需要对用户管理的用户名、密码、姓名、性别、头像、身份证、手机进行添加,修改或删除等详细操作,如图5-6所示

车型信息管理,在车型信息管理页面中可以填写火车编号、火车名称、实速、座位数、车牌等信息,并可根据需要对已有车型信息管理进行修改或删除等操作,如图5-7所示。

图5-7车型信息管理界面图

车次信息管理,在车次信息管理页面中可以填写车次名称、火车名称、车牌、图片、起点站、终点站、途经、日期、出发时间、时长、座位类型、价格、票数等信息,并可根据需要对已有车次信息管理进行修改或删除等详细操作,如图5-8所示。

图5-8车次信息管理界面图

购票订单管理,在购票订单管理页面中可以查看订单编号、车次名称、车牌、起点站、终点站、出发时间、座位类型、价格、票数、总价格、购买日期、用户名、姓名、手机、身份证等内容,并且根据需要对已有购票订单管理进行修改或删除、详情等操作,如图5-9所示。

改签订单管理,在改签订单管理页面中可以查看订单编号、车次名称、车牌、起点站、终点站、总价格、改签日期、用户名、姓名、手机、审核回复、审核状态、审核等内容,并且根据需要对已有改签订单管理进行修改或删除等详细操作,如图5-10所示。

图5-10改签订单管理界面图

轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图5-11所示。

图5-11轮播图管理界面图

用户功能模块

用户登录进入火车订票管理系统可以查看首页、个人中心、购票订单管理、改签订单管理、退票订单管理等内容。

个人中心,在个人中心页面中通过填写原密码、新密码、确认密码等信息,还可以根据需要对个人中心进行修改、删除如图5-12所示。

图5-12个人中心界面图

个人信息,在个人信息页面中可以查看用户名、密码、姓名、性别、头像、身份证、手机等信息内容,并且根据需要对已有个人信息进行修改等其他详细操作,如图5-13所示。

图5-13个人信息界面图

改签订单,在改签订单管理页面中通过填写订单编号、车次名称、车牌、起点站、终点站、总价格、改签日期、用户名、姓名、手机、审核回复、审核状态、审核等内容进行查看、删除,如图5-14所示。

复制代码
 package com.cqjtu.studentdocument.controller;

    
  
    
 import com.cqjtu.studentdocument.advice.ExceptionEnums;
    
 import com.cqjtu.studentdocument.advice.MyException;
    
 import com.cqjtu.studentdocument.entity.User;
    
 import com.cqjtu.studentdocument.service.UserService;
    
 import com.cqjtu.studentdocument.utils.MD5Utils;
    
 import io.swagger.annotations.Api;
    
 import io.swagger.annotations.ApiOperation;
    
 import lombok.extern.slf4j.Slf4j;
    
 import org.apache.commons.lang3.StringUtils;
    
 import org.apache.shiro.SecurityUtils;
    
 import org.apache.shiro.authc.UsernamePasswordToken;
    
 import org.apache.shiro.subject.Subject;
    
 import org.springframework.http.ResponseEntity;
    
 import org.springframework.stereotype.Controller;
    
 import org.springframework.web.bind.annotation.*;
    
 import tk.mybatis.mapper.entity.Example;
    
  
    
 import javax.servlet.http.HttpServletRequest;
    
 import java.sql.Timestamp;
    
 import java.util.List;
    
  
    
  
    
 @Slf4j
    
 @Api(description = "用户相关接口")
    
 @Controller
    
 @RequestMapping(value = "api/user")
    
 public class UserController extends BaseController<UserService,User,Integer> {
    
  
    
  
    
     @Override
    
     public ResponseEntity<User> save(@RequestBody User entity) {
    
     if (entity.getRoleId() == null){
    
         entity.setRoleId(2);
    
     }
    
     if (entity.getUsername() == null){
    
         entity.setUsername(entity.getStuNo());
    
     }
    
     if (entity.getPassword()==null){
    
         entity.setPassword("123");
    
     }
    
     if (StringUtils.isBlank(entity.getUsername())){
    
         throw new MyException(ExceptionEnums.ADD_ERROR);
    
     }
    
     if (this.service.findByUsername(entity.getUsername())!=null){
    
         throw new MyException(ExceptionEnums.ACCOUNT_IS_EXIT);
    
     }
    
     entity.setPassword(MD5Utils.encrypt(entity.getUsername(), entity.getPassword()));
    
     entity.setUpdateDatetime(new Timestamp(System.currentTimeMillis())); // Set current timestamp
    
     return super.save(entity);
    
     }
    
  
    
     @Override
    
     public ResponseEntity<User> update(@RequestBody User entity) {
    
     if (this.service.selectByKey(entity.getId()).getPassword().equals(entity.getPassword())){
    
         entity.setUpdateDatetime(new Timestamp(System.currentTimeMillis())); // Set current timestamp
    
         return super.update(entity);
    
     }else {
    
         entity.setPassword(MD5Utils.encrypt(entity.getUsername(), entity.getPassword()));
    
         entity.setUpdateDatetime(new Timestamp(System.currentTimeMillis())); // Set current timestamp
    
         return super.update(entity);
    
     }
    
     }
    
  
    
     @PostMapping("/updateUser")
    
     public ResponseEntity<User> updateUserName(@RequestBody User entity){
    
     Subject subject = SecurityUtils.getSubject();
    
     User user = (User) subject.getPrincipal();
    
     if (this.service.findByUsername(entity.getUsername())!=null && !entity.getUsername().equals(user.getUsername())){
    
         throw new MyException(ExceptionEnums.ACCOUNT_IS_EXIT);
    
     }
    
     if (this.service.selectByKey(entity.getId()).getPassword().equals(entity.getPassword())){
    
         entity.setUpdateDatetime(new Timestamp(System.currentTimeMillis())); // Set current timestamp
    
         return super.update(entity);
    
     }else {
    
         entity.setPassword(MD5Utils.encrypt(entity.getUsername(), entity.getPassword()));
    
         entity.setUpdateDatetime(new Timestamp(System.currentTimeMillis())); // Set current timestamp
    
         return super.update(entity);
    
     }
    
     }
    
  
    
     @Override
    
     @GetMapping(value = "delete/{id}")
    
     public ResponseEntity<String> delete(@PathVariable("id")Integer id) {
    
     return super.delete(id);
    
     }
    
  
    
     @ApiOperation(value = "用户登录接口")
    
     @RequestMapping("login")
    
     public ResponseEntity<User> login(@RequestBody User entity, HttpServletRequest request){
    
     UsernamePasswordToken token = new UsernamePasswordToken(entity.getUsername(), entity.getPassword());
    
     Subject subject = SecurityUtils.getSubject();
    
     try {
    
         subject.login(token);
    
         User user = (User) subject.getPrincipal();
    
         return ResponseEntity.ok(user);
    
     } catch (Exception e) {
    
         log.info("登陆失败:"+e.getMessage());
    
         throw e;
    
     }
    
     }
    
  
    
     @ApiOperation(value = "用户注销接口")
    
     @GetMapping("/loginOut")
    
     public ResponseEntity<String> loginOut(){   
    
     Subject subject = SecurityUtils.getSubject();
    
     if (subject!=null){
    
         subject.logout();
    
     }
    
     return ResponseEntity.ok("退出登录");
    
  
    
     }
    
  
    
     @ApiOperation(value = "获取所有相应角色用户")
    
     @GetMapping("/getAllStudent/{roleId}")
    
     public ResponseEntity<List<User>> getAllStudent(@PathVariable("roleId") String roleId){
    
     Example example = new Example(User.class);
    
     example.createCriteria().andEqualTo("roleId",roleId);
    
     List<User> users = this.service.selectByExample(example);
    
     return ResponseEntity.ok(users);
    
     }
    
  
    
     @ApiOperation(value = "获取所有用户")
    
     @GetMapping("/getAll")
    
     public ResponseEntity<List<User>> getAll(){
    
     Example example = new Example(User.class);
    
     List<User> users = this.service.selectByExample(example);
    
     return ResponseEntity.ok(users);
    
     }
    
  
    
 }
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/VkIlEHmXSTDp6teqanBQUjKWGOoh.png)

需要加V分享

全部评论 (0)

还没有任何评论哟~