基于Java+SpringBoot+vue+element实现火车订票平台管理系统

Posted java李杨勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Java+SpringBoot+vue+element实现火车订票平台管理系统相关的知识,希望对你有一定的参考价值。

🍅 作者简介:CSDN特邀作者✌、博客专家✌、java领域优质创作者💪

🍅关注公众号【java李杨勇】  简历模板、学习资料、面试题库等都给你💪

🍅文末获取源码联系🍅

前言介绍:

     随着网络的不断普及和发展,在网络技术的支持下,列车订票管理系统得到了迅速的发展。首先,我们要从用户的实际需求出发。通过了解用户的需求,开发有针对性的主页、个人中心、用户管理、车辆信息管理、订票信息管理、火车票订单管理、退票订单管理、系统管理等功能,网络的使用方便给用户带来了这个功能来调整系统,系统的设计让用户使用更加方便,本系统的主要目的是给用户带来快捷、高效、安全,用户只要在家里就可以操作。同时随着电子商务的发展,网上火车票订票管理系统也受到了广大用户的关注。

     互联网发展至今,已经解决了很多我们解决不了的难题,使得我们工作更加便捷,提高了我们的工作效率。目前各行各业都在运用网络信息管理程序,不同的用户也都接触到信息管理,特别是在各大电商行业广泛的应运起来。通过对当前网络环境发展的分析与总结,开发火车订票管理系统可以改变以往的火车订票管理系统方式,改变传统线下火车订票管理系统的状态,由于用户的不断增多,使用传统的线下火车订票管理系统模式已经远远不能满足于用户需求了,而且越来越多的国有企业也在开通线上进行火车订票管理系统,所以开发一个火车订票管理系统可以解决国有企业不利于线下火车订票管理系统的问题,设计的网站保证信息的完整安全,这样才能提高工作效率,保证系统安全正常的运行。

功能设计:

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

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

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

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

功能截图:

管理员登录:通过填写注册时输入的用户名、密码、角色进行登录

用户主页:

车次信息:

火车资讯:

个人中心:

改签信息:

订单信息:

后台管理:

用户管理:

车型管理:

车次管理:

订票管理:

退票管理:


改签管理:

火车资讯:

轮播图等

关键源码:


/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) 
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().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);
	
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user)
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) 
    		return R.error("用户已存在");
    	
        userService.insert(user);
        return R.ok();
    

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) 
		request.getSession().invalidate();
		return R.ok("退出成功");
	
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request)
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) 
    		return R.error("账号不存在");
    	
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user)
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user)
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    

    /**
     * 信息
     */
    @RequestMapping("/info/id")
    public R info(@PathVariable("id") String id)
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request)
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user)
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) 
    		return R.error("用户已存在");
    	
        userService.insert(user);
        return R.ok();
    

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user)
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids)
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    


/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings("unchecked","rawtypes")
public class FileController
	@Autowired
    private ConfigService configService;
	@Async
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception 
		if (file.isEmpty()) 
			throw new EIException("上传文件不能为空");
		
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File upload = new File("D:/work/");
		if(!upload.exists()) 
			upload.mkdirs();
		
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload+"/"+fileName);

		file.transferTo(dest);
		if(StringUtils.isNotBlank(type) && type.equals("1")) 
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) 
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			 else 
				configEntity.setValue(fileName);
			
			configService.insertOrUpdate(configEntity);
		
		return R.ok().put("file", fileName);
	
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) 
		try 
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) 
			    path = new File("");
			
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) 
			    upload.mkdirs();
			
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists())
				/*if(!fileService.canRead(file, SessionManager.getSessionUser()))
					getResponse().sendError(403);
				*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			
		 catch (IOException e) 
			e.printStackTrace();
		
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	
	

数据库设计:

checixinxi表:

序号

字段名称

字段类型

大小

允许为空

最大长度

备注

1

id

Int

4

10

2

addtime

150

255

3

checimingcheng

150

255

4

huochemingcheng

DateTime

8

255

5

chepai

150

255

6

tupian

DateTime

8

255

7

qidianzhan

150

255

8

zhongdianzhan

DateTime

8

255

9

tujing

150

255

10

riqi

DateTime

8

255

11

chufashijian

150

255

12

shizhang

DateTime

8

255

13

zuoweileixing

150

255

14

jiage

DateTime

8

255

15

piaoshu

150

255

chexingxinxi表:

序号

字段名称

字段类型

大小

允许为空

最大长度

备注

1

id

Int

4

10

2

addtime

150

255

3

huochebianhao

150

255

4

huochemingcheng

DateTime

8

255

5

shisu

150

255

6

zuoweishu

DateTime

8

255

7

chepai

150

255

gaiqiandingdan表:

序号

字段名称

字段类型

大小

允许为空

最大长度

备注

1

id

Int

4

10

2

addtime

150

255

3

dingdanbianhao

150

255

4

checimingcheng

150

255

5

chepai

DateTime

8

255

6

qidianzhan

shangpinleixing

DateTime

8

255

7

zhongdianzhan

255

8

zongjiage

DateTime

255

9

gaiqianriqi

DateTime

255

10

yonghuming

DateTime

255

11

xingming

DateTime

255

12

shouji

DateTime

255

goupiaodingdan表:

序号

字段名称

字段类型

大小

允许为空

最大长度

备注

1

id

Int

4

10

2

addtime

150

255

3

dingdanbianhao

150

255

4

checimingcheng

150

255

5

chepai

DateTime

8

255

6

qidianzhan

DateTime

255

7

zhongdianzhan

255

8

chufashijian

shangpinleixing

DateTime

8

255

9

zuoweileixing

shangpinleixing

DateTime

8

255

10

jiage

shangpinleixing

DateTime

8

255

11

piaoshu

shangpinleixing

DateTime

8

255

12

zongjiage

shangpinleixing

DateTime

8

255

13

zongjiage

shangpinleixing

DateTime

8

255

14

goumairiqi

shangpinleixing

DateTime

8

255

15

yonghuming

shangpinleixing

DateTime

8

255

16

xingming

shangpinleixing

DateTime

8

Vue项目安装流程(vue+ele+mongodb+axios)

Java+MySQL 基于Springboot+vue的旧物置换网站#毕业设计

Java+MySQL 基于Springboot+vue的疫情网课管理系统#毕业设计

Java+MySQL基于Springboot+vue的酒店民宿管理系统前后台#毕业设计

计算机毕业设计之java+springboot基于vue的学习平台

java基于springboot+vue的汉服交流网站

(c)2006-2024 SYSTEM All Rights Reserved IT常识