基于ssm的航空订票系统

基于ssm的航空订票系统

一、技术栈

前端
​ vue全家桶、element-ui组件库、moment.js插件
后端
​ springboot + springmvc+ mybatis

二、功能描述

本系统是基于B/S架构的航空订票系统

系统分为三大用户–乘客、航空公司、后台管理员,本次课程设计主要实现了乘客界面,包括购票、选座、充值、退款、改签等

三、技术框架

1、界面设计

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

上面这段官方解释的意思是,vue提供了一种组件化设计的方式,也就是说,你可以在单个vue对象中构建起实现某些功能compopent,再在下一个vue中将它们组装,最后在一个vue中展示。有过面向对象编程经历的程序员很容易接受这种设计方式,就像手写一个自己的class,然后再别的类中引用类实例和方法一样——就连引入这个行为使用的也是同一个关键字import

Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库

Element UI 对于新手前端设计师来说是福音,它自带的一系列标签和组件可以帮助那些为JavaScript繁琐而头疼的编程者们开辟一个的新天地。只要基础程度的审美,人人都可以设计出一套简洁好看的界面。

这些组件可以通过Attribute、Event和Methods标签进行个性化的设置,同时也在很大程度上简化了js函数的写法

2、前后端通信

引入axios插件后,在函数中可以通过axios对象向目标端口发送请求并执行回调,例如向8181端口发送一个post请求

this.$axios.post("http://localhost:8181/findAll").then(res => {
   })

后端可以通过设置一个跨域类CrosConfig来接收前端请求

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CrosConfig implements WebMvcConfigurer {
   
   @Override
   public void addCorsMappings(CorsRegistry registry) {
   
      registry.addMapping("/**")//拦截所有请求
            .allowedOrigins("*")
            .allowedMethods("GET","HEAD","POST","PUT","DELETE")//拦截所有类型
            .allowCredentials(true)
            .maxAge(3600)//最大线程数
            .allowedHeaders("*");//允许所有请求头
   }
}

也有在src/resource/mybatis-config.xml中配置跨域的方法,这边不赘述

映射写法

主流有两种方法,一种是REST风格,一种是直接发送json的写法

  • 简单来说,REST风格将发送的数据拼接进请求里,通过 “/” 隔开,在后台用 @RequestMapping 注解完成方法映射 @PathVariable注解直接赋值到确定数据类型里

如:前端

this.$axios.post("http://localhost:8181/login/passenger/"+that.loginform.passengername+"/"+that.loginform.password)

后端

@RequestMapping
(value = "/passenger/{passengername}/{password}",
                method = RequestMethod.POST,
                produces = {
   "application/json;charset=UTF-8"})
public String passengerlogin(@PathVariable("passengername") String passengername,
                             @PathVariable("password") String password)
  • 另一种向后台直接发送数据的则是要用*@RequestBody*,把json表封装成类实例,再调用get方法取数据

如:前端

this.$axios.post("http://localhost:8181/order/refund", row)

后端

@RequestMapping
(value = "refund", method = RequestMethod.POST, produces = {
   "application/json;charset=UTF-8"})
public String refundOrder(@RequestBody OrderInfo orderInfo)

在数据量较小的情况下,REST风格要更加简洁干练

3、持久层

现在使用最广泛的两种持久层框架是JPA和mybatis,这两者都有各自忠实的使用者,孰优孰劣也不是我这样的技术小白讲得清楚的,不过我的建议是,如果你刚刚接触持久层框架而整纠结于二者的选择,不妨就照着这篇博客试试mybatis,在初级阶段,它绝不比JPA更复杂,同时也能保证完成你的各项设计目标。你可以在下一次实验中尝试JPA,再来体会一下二者的区别

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

如官方文档所言,持久层框架的价值有二:一是封装JDBC代码,省去繁琐重复的操作,使人的工作能集中到sql代码的书写和数据库设计上来;二是维持POJO,使数据对象的形式长久稳定地存在于程序运行过程中,提升了数据交互的效率

简单的sql语句可以通过注解直接在方法上书写,复杂查询语句或者大段大段的sql则适合接口 + .xml文档的方式,为了统一形式,对初学者我更加推荐把所有的sql都写在xml文档中的方法

mybatis将数据实体、接口方法和sql实现xml联动的写法可以参照如下代码

数据实体类PassengerInfo

package com.oreki.ptss_rear.domain;

import lombok.Data;
  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
1、问题描述: 航空客运的业务包括查询航班、客和办理退等。试设计一个航空客运系统,已使上述业务可以借助计算机完成。 2、功能要求: (1)每条航线所涉及的信息有终点站名、航班号、飞机号、星期几飞行、飞行周日(星期几)、乘员定额、余量、已的客户名单(包括姓名、量、舱位等级),以及等候补替补的客户名单(包括姓名、所需量)。 (2)作为示意系统:全部数据可以只放在内存中。 (3)系统能实现的操作和功能如下: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。 查询航线:根据旅客提出的终点站名输入下列信息:航班号、飞机号、星期几起飞、最近航班的日期和余量。 承办业务:根据客户提出的要求(航班号、数额)查询该航班额情况,若尚有余,则为客户办理手续,输出座位号。若已满员或者余数少于额,则需重新寻味客户要求,若需要,可登记排队候补。 承办退业务:根据客户提供的情况(日期、航班)为客户办理退手续,然后查询该航班是否有人排队等候补。首先询问排在第一的客户,若所有退额能满足他的要求,则为他办理手续否则依次询问其他排队候补的客户。 修改航班信息:当航班信息改变可以修改航班数据文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值