基于Java的航空售票管理系统
    源码下载  http://www.byamd.xyz/hui-zong-1/
        摘 要
本课题设计的是航空购票管理系统。
本系统主要设计了三个核心类:信息类、功能类以及测试管理类。在信息类中定义了一系列的数据结构用于存储用户的基本信息和联系方式。这些数据结构包括name数组、IDcard数组以及phoneNum数组分别对应用户的姓名、身份证号和电话号码等基本信息。此外还定义了Hangxian数组和Time数组来存储航线及其对应的时间信息。功能类继承自信息类,并在此基础上提供了多种操作方法以实现系统的完整功能。其中add方法用于新增用户信息(包括姓名、身份证号和电话号码),Air_line方法则用于查询并验证特定航线的存在性;add1方法允许用户选择机票类型并查看对应的价格;seat方法则负责根据当前机票状态动态调整座位安排情况;check方法则提供多种查询接口以满足不同用户的需求;而测试管理类通过继承功能类的方法实现了对整个系统的功能验证与测试运行能力
关键词:数组,继承,面向对象。
航班售票管理系统课程设计报告
一、开发背景
当前中国航空市场的规模迅速扩大,在社会整体生活水平提高的过程中,在这一背景下人们越来越倾向于选择飞机作为主要出行方式。与此同时, 人们对航空服务的质量和标准要求也不断提高, 这使得行业竞争更加激烈。然而, 手工操作不仅缺乏数据处理的安全保障措施, 并且在操作过程中耗费时间与精力, 同时还导致信息记录效率低下
为了应对快速发展的现状, 我们将致力于向某航空公司开发一套有效的售票管理系统. 该系统需具备稳定性, 以便于管理员准确、快捷且可靠的记录乘客信息. 此外, 我们希望能让乘客能够高效便捷地查询航班详情. 系统不仅要提供航班查询, 还需满足在该公司各营业网点为顾客提供购票以及退票等服务的需求.
本课题就是针对上述问题所设计的航空售票管理系统。
二、需求分析
本系统的核心目标在于提高公司数据管理的效率,并非单纯的实现数据高效化管理。该系统旨在响应公众对航空业高质量服务的需求,并非单纯为了满足人们的需求。此外,它不仅为用户提供了一个更加便捷、高效的在线服务渠道,并且显著提升了服务质量
三、模块说明
基于需求分析的结果, 通讯录管理系统可以划分为三个模块: 用户信息模块、功能模块以及测试模块.
1、用户信息模块
功能描述:此模块的核心功能是建立一个数组来存储数据。这些数据分为两部分:一部分用于存储个人信息包括姓名、身份证号和电话号码;另一部分则用于存储航班信息包括航线和时间。
输入:无
输出:无
2、功能模块
功能描述:此模块的主要功能是实现添加、查找、修改用户信息和航班信息
输入:用户的姓名、身份证、电话号码和航班的航线、时间
输出:用户的姓名、身份证、电话号码和航班的航线、时间 、价格、余票
3、测试模块
功能描述:此模块的主要功能是对系统进行测试
输入:各个功能的编号。
输出:通讯录管理系统界面
四、详细设计
1、信息(Infor)类
类名:Infor
继承父类:无
实现接口:无
概述:定义用于存放用户信息的数组和航班信息的数组
属性及说明:
static String name[] = new String[100]; // 姓名
static String IDcard[] = new String[100]; // 身份证
static String phoneNum[] = new String[100]; // 电话号码
static String Hangxian[] = { “长沙—上海”,“广州—杭州”,“长沙—深圳” };
static String Time[] = {“7:30—11:30”,“22:00—02:30”,“12:30—15:00”};
static int Price1 [] = new int[100] ; //经济舱,商务舱,头等舱的价格
static String state[] = new String[100] ; //经济舱,商务舱,头等舱
方法及说明:无
2、.功能(gongneng)类
类名:gongneng
继承父类:Infor
实现接口:无
概述:用于实现个人信息的增加、查询、修改、显示
属性及说明:
hangxian[] = new String[100] ; //存放航班的航线
time[] = new String[100] ; //存放航班的时间
Ticker_num[] = {50,1,20}; //存放经济舱,商务舱,头等舱的票数
方法及说明:
add():实现增加用户的个人信息(姓名、身份证、电话号码)的功能
Air_line():实现输入的航线是否存在的判断功能
add1():实现您要选择的机票类型,查看机票价格的功能
seat():实现判断是否有余票,若有余票则添加座位信息、个人信息的功能
check():实现查询功能
3、测试(Test)类
类名:Test
继承父类:gongneng
实现接口:无
概述:通过Infor p1和gongneng p2对象存放初始值
属性及说明:
Infor p1 = new Infor(); //创建Infor对象p2
gongneng p2 = new gongneng(); //创建gongneng对象p2
方法及说明:无
五、系统实现
该航班售票管理系统的界面设计方案着重体现在便捷性和友好性上,并涵盖以下具体内容
1、主界面(Test类)

图1
图1 输入相应的功能编号,执行各功能。
2、功能模块

图2
图2依据你输入的航线识别是否存在该航线。如果识别到存在该航线,则会显示相关信息及其时间

图3
图3中,请点击您需要的机票并查看该航线是否有剩余机票;如果存在剩余航班,则可以选择您所需的航班类型

图4
图4是一个基于您购买机票数量来添加个人身份信息的功能框图(它需要添加姓名、身份证件号码以及联系电话。如果用户提供的身份证或联系电话不正确时系统将向用户提供错误提示并要求重新输入)

图5

图6
图表5和图表6是根据您的需求进行查询(包括姓名与航线两个维度),当您选择按照姓名进行查询时,请输入您希望查找的姓名信息,并将系统将显示您的完整个人信息包括身份证号码、联系电话、所属航线以及相关时间信息
总 结
本次课程设计时间虽短却包含了大量的内容其中涉及的知识点相对较少单凭现有的课本知识显然是远远不够的这就要求我们必须查阅大量课外书籍与参考资料Java设计其主要目标在于加深对已有知识的理解并加以巩固培养他们综合运用已掌握知识的能力在本次课程设计过程中不可避免地出现了一些问题例如由于各组成员对知识点掌握的程度不一导致各个组员编写的程序无法完美兼容反映出我们的基础理论存在不足同时也暴露了我们在团队协作方面存在一定的欠缺为了进一步提升整体水平我们需要不断学习并完善自己的专业知识
在本次课程设计的过程中深刻认识到题意解析的必要性。若未能明确问题目标,在课程设计过程中容易陷入困惑状态。此外,在此次实践中深刻体会到了思路与行动之间的紧密联系。对于学习中的疑惑或不懂之处,则应及时向老师请教或通过网络资源寻求解答。只要坚持不懈地努力思考、实践操作并深入探究,则能够彻底解决所有疑问。
本次课程设计最终得以圆满完成。尽管在过程中遇到了诸多困难,在老师的悉心指导以及同学的帮助和支持下终于得到了完美的解决方案。在未来的进程和学习实践中, 我们一定要持续不断的努力, 认真排查每一个存在的问题, 并逐一加以解决, 只有这样才能实现预期的目标。
参考文献
邢如意.Java语言中对象的理解与应用[J].软件工程,2017,20(4):9-11.
杨晓燕,李选平.Java面向对象程序设计实践教程[M].人民邮电出版社,2015.
张利锋,孙丽.Java语言与面向对象程序设计[M].清华大学出版社,2015.
姚骏屏、何桂兰两位著者. 基于Java的面向对象程序设计与系统开发[M]. 西安电子科技大学出版社, 2015年.
王娟.基于计算机软件开发的JAVA编程语言分析[J].数字通信世界,2017(12).
刘学波.浅谈项目教学法在JAVA语言教学中的应用[J].电大理工,2018(1):40-41
李蔚妍、耿霞、孙未等探讨Java语言程序设计教学中的构造方法[J].福建电脑,2018(3)
高阳.JAVA编程语言在计算机软件开发中的应用[J].电脑迷,2018,No.94(5):55
李书卿.浅析JAVA语言的开发平台及J2EE编程技术[J].数码世界,2017(8):21-21
[10]. CayS.Horstmann.写给大忙人看的Java核心技术[M].2016.
附录:系统源代码
1、Infor类
package Hangban;
public class Infor {
public int seat; // 座位总数
public int ticket_price; // 机票价格
static String name[] = new String[100]; // 姓名
static String IDcard[] = new String[100]; // 身份证
static String phoneNum[] = new String[100]; // 电话号码
static String Hangxian[] = { “长沙—上海”,“广州—杭州”,“长沙—深圳” };
static String Time[] = {“7:30—11:30”,“22:00—02:30”,“12:30—15:00”};
static int Price1 [] = new int[100] ; //经济舱,商务舱,头等舱的价格
static String state[] = new String[100] ; //经济舱,商务舱,头等舱
}
2、gongneng类
package Hangban;
import java.util.*;
/*添加、查询、更改
add():用于增加用户的个人信息(姓名)
Air_line():判断输入的航线是否存在
add1():选择您要选择的机票类型,查看机票价格
seat():判断是否有余票,若有余票则 添加座位信息、个人信息
check():按需要查询内容*/
public class gongneng extends Infor {
static String hangxian[] = new String[100] ;
static String time[] = new String[100] ;
static int Price1 [] = new int[100] ; //经济舱,商务舱,头等舱的价格
static String state[] = new String[100] ; //经济舱,商务舱,头等舱
public void add(){
Scanner input = new Scanner(System.in);
System.out.println(" 请输入添加人数");
int n = input.nextInt(); //输入的人数
int m = 0; // 计算添加的人数
for (int i = 0;i<name.length;i++){
if(name[i] != null){
continue;
}
System.out.println(“请输入姓名:”);
name[i] = input.next();
System.out.println(“请输入身份证号码:”);
IDcard[i] = input.next();
while(IDcard[i].length() != 18){
System.out.println(“身份证号码输入错误!!请重新输入”);
IDcard[i] = input.next();
}
System.out.println(“请输入电话号码:”);
phoneNum[i] = input.next();
while(phoneNum[i].length() != 11){
System.out.println(“电话号码输入错误!!请重新输入”);
phoneNum[i] = input.next();
}
System.out.println(“姓名\t身份证号码\t\t\t电话号码\t\t航线\t\t时间\t”);
System.out.println(name[i] +"\t"+ IDcard[i] +"\t" + phoneNum[i] +"\t" +
hangxian[i] +"\t" + time[i]);
if(++m >= n) break; //跳出for()
}
}
public void Air_line()
{
Scanner input = new Scanner(System.in);
System.out.println(“请输入您的航线:”);
String hx ;
hx = input.next();
for (int i = 0;i < name.length;i++){
if(name[i] != null){
continue;
}
int k = 1; //不存在
while(true){ //
for(int j = 0 ;j < Hangxian.length;j++){ //j记录有几条航线
if(hx.equals( Hangxian[j])){ //判断航线存在
hangxian[i] = Hangxian[j];
time[i] = Time[j];
k = 0;
}
}
if( k == 0){
System.out.println(“航线:” + “\t” + hangxian[i]);
System.out.println(“时间” + “\t” + time[i]);
break;
}
else{
System.out.println(“没有此航线!!请重新输入”);
hx = input.next();
}
}
break;
}
}
public void add1(){
Scanner input = new Scanner(System.in);
for (int i = 0;i<name.length;i++){
if(name[i] != null){
continue;
}
System.out.println(“请选择您要购买的机票类型:”);
System.out.println("**********");
System.out.println(“1.经济舱”);
System.out.println(“2.商务舱”);
System.out.println(“3.头等舱”);
System.out.println("**********");
int t = input.nextInt();
switch(t){
case 1:
state[i] = “经济舱”;
Price1[i] =500;
break;
case 2:
state[i] = “商务舱”;
Price1[i] =700;
break;
case 3:
state[i] = “头等舱”;
Price1[i] =1000;
break;
}
break;
}
}
public void seat(){
Scanner input = new Scanner(System.in);
int Price [] = {500,700,1000}; //经济舱,商务舱,头等舱的价格
int Ticker_num[] = {50,0,20}; //经济舱,商务舱,头等舱
/*System.out.println(“请选择您要查看的座位类型:”);
System.out.println(“1.经济舱” + “\t” + “2.商务舱” + “\t” + “3.头等舱” );
System.out.println("------");*/
int k = 1;
while(true){
if(k == 0) break;
System.out.println(“请选择您要查看的座位类型:”);
System.out.println(“1.经济舱” + “\t” + “2.商务舱” + “\t” + “3.头等舱” );
System.out.println("------");
int t = input.nextInt();
switch(t){
case 1: //经济舱
if(Ticker_num[0]==0){
System.out.println(“经济舱暂无余票,请重新选择”);
System.out.println("------");
break;
}
else {
System.out.println(“经济舱剩余” + “\t” + Ticker_num[0]-- + “票”);
add(); // 添加个人信息
add1(); // 添加座位信息
k = 0;
}
break;
case 2: //经济舱
if(Ticker_num[1]==0){
System.out.println(“商务舱暂无余票,请重新选择”);
System.out.println("------");
break;
}
else {
System.out.println(“商务舱剩余” + “\t” + Ticker_num[1]-- + “票”);
add(); // 添加个人信息
add1(); // 添加座位信息
k = 0;
}
break;
case 3: //经济舱
if(Ticker_num[2]==0){
System.out.println(“头等舱暂无余票,请重新选择”);
System.out.println("------");
break;
}
else {
System.out.println(“头等舱剩余” + “\t” + Ticker_num[2]-- + “票”);
add(); // 添加个人信息
add1(); // 添加座位信息
k = 0;
}
break;
}
}
}
public void check(){ //查找
Scanner input = new Scanner(System.in);
System.out.println("*********");
System.out.println(“请输入你要查找的编号:”);
System.out.println(“1.按名字查询:”);
System.out.println(“2.按航线查询:”);
System.out.println("*********");
int s = input.nextInt();
switch(s){
case 1:
System.out.println(“请输入你要查询的名字:”);
String name1= input.next();
for(int i = 0;i<name.length;i++){
/*if(name[i] != null){
continue;
}*/
if(name1.equals(name[i])){
System.out.println("姓名\t身份证号码\t\t\t电话号码\t\t航线\t\t时间\t\t
");
System.out.println(name[i] +"\t"+ IDcard[i] +"\t" + phoneNum[i] +"\t" +
hangxian[i] +"\t" + time[i]);
System.out.println("\t\t\t");
break;
}
}
break;
case 2:
System.out.println(“请输入你要查询的航线:”);
String pho = input.next();
for(int i = 0;i<Hangxian.length;i++){
if(pho.equals(Hangxian[i])){
System.out.println("姓名\t身份证号码\t\t\t电话号码\t\t航线\t\t时间\t
");
System.out.println(name[i] +"\t"+ IDcard[i] +"\t" + phoneNum[i] +"\t" +
hangxian[i] +"\t" + time[i]);
System.out.println("\t\t\t");
}
if(name[i] == null){
break;
}
}
}
}
}
3、Test类
package Hangban;
import java.util.Scanner;
public class Test extends gongneng {
public static void main(String[] args) {
Infor p1 = new Infor();
gongneng p2 = new gongneng();
p1.name[0] = “小白”;
p1.phoneNum [0] = “13649685525”;
p1.IDcard [0] = “433135199906052525”;
p2.hangxian[0] = “长沙—上海”;
p2.time[0] = “7:30—11:30”;
p1.state[0] = “经济舱”;
p1.Price1 [0] = 500;
p1.name[1] = “小红”;
p1.phoneNum [1] = “13525645635”;
p1.IDcard [1] =“436458200103045351”;
p2.hangxian[1] = “长沙—深圳”;
p2.time[1] = “22:00—02:30”;
p1.state[1] = “商务舱”;
p1.Price1 [1] = 700;
Scanner input = new Scanner(System.in);
int num = -1; //用户输入0返回主菜单,否则退出系统
/*boolean isExit = false; //标志用户是否退出系统:true为退出系统
*/ do{
System.out.println("\n欢迎进入航班售票系统!!!");
System.out.println("*************");
System.out.println(“1.查看票余量”);
System.out.println(“2.添加个人信息”);
System.out.println(“3.查询个人信息”);
System.out.println(“4.退出系统”);
System.out.println("*************");
System.out.println(“请选择:”);
int choise = input.nextInt();
switch(choise){
case 1:
p2. Air_line();
p2.seat();
break;
case 2:
p2.Air_line();
p2.add();
break;
case 3:
p2.check();
break;
case 4:
num = 0;
break;
default:
System.out.println(“输入错误,请输入1-4之间的数!”);
}
}while(num == -1);
}
}
