【数据结构课程设计报告】航班信息管理系统(Java实现)

这是一个数据结构课程设计报告,详细介绍了使用Java语言开发的航班信息管理系统。系统具备航班信息的增删查改功能,采用链式存储结构,并提供用户交互菜单。选做功能包括客户订票和退票,系统根据订票量动态调整票余量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构课程设计报告



一、需求分析

问题描述:航班信息管理系统的业务活动包括:航班信息的添加和删除、指定航班的条件查询及所有航班的全部查询等,需对指定内容进行分析设计利用计算机加以实现。

每条航线所涉及的信息有:航班号、飞机号、出发地、到达地、飞行日期、机型和票余量。每个客户所涉及的信息有:姓名、手机号、航班号和订票量。

系统能够实现的功能与操作如下:
1.航班信息的添加:根据用户依次输入的内容(航班号、飞机号、出发地、到达地、飞行日期、机型和票余量),对所需添加的航线与已有航线进行比对添加(如出现相同航班号则无法添加)。
2.航班信息的删除:根据用户输入的航班号进行比对删除(有此航线则删除,没有则警示)。
3.指定航班的条件查询:根据用户输入的航班号进行条件查询。
4.所有航班的全部查询:显示所有航线所有信息。
选做内容:客户退订票功能,内有客户订票和退票、所有订票客户信息查询等。根据客户订票量会相应对航班票余量进行修改。

输出界面:有主菜单、分菜单可对上述所说2和3内容进行用户的相应选择和呈现,以达到系统的交互性。
编译环境:win10;eclipse;
所使用的编译语言:Java语言

二、系统功能划分及设计

1.存储结构设计

链式存储结构示意图
系统存储结构设计采用链式存储结构,将所有航线存储到一个链表中,对于航线的插入和删除操作运算方便。同理,将每条航线的各个数据项、客户订票信息分别存储到另外的链表中加以操作。

2.系统的功能架构设计

系统功能流程图
系统功能架构流程设计如图所示,主函数调用菜单函数进行菜单选择(1-4)。

  1. 当用户选择1时,调用航班信息管理菜单选择(1-3),1代表添加航班信息操作,2代表删除航班信息操作,3代表返回主菜单。
  2. 当用户选择2时,调用查询航班菜单选择(1-3),1代表根据航班号查询航线信息,2代表查询所有航班信息,3代表返回主菜单。
  3. 当用户选择3时,调用航班退订票菜单选择(1-4),1代表为客户办理航线订票服务,2代表查询所有客户订票信息,3代表为客户办理航线退票服务,4返回主菜单。
  4. 退出系统。

3.模块设计

航班信息管理系统各类属性方法关系图
如上图所示为系统所涉及到各类的属性、方法及各类之间的关系图。

3.代码实现

public class Node<T> {
   
	T data; // 数据域
	Node<T> next; //指针域	
	public Node(Node<T> n){
   
		next=n;         
	}
	public Node(T obj,Node<T> n){
   
        data=obj;
        next=n;
    }
	public T getData(  ){
   return data;}
	public Node<T> getNext(  ){
   return next;}
}
public class LinkList<T> {
   
	private Node<T> head; // 头指针
	private int length; // 长度
	public LinkList() {
    // 构造一个空的链表
		length = 0;
		head = new Node<T>(null);
	}
	public Node<T> getHead() {
    // 获取链表头结点地址
		return head;
	}
	public boolean isEmpty() {
    // 判空
		return length == 0;
	}
	public int size() {
    // 求链表长度即数据元素个数
		return length;
	}
	public boolean add(T obj, int pos) {
    // 在链表中插入一个新元素
		if ((pos < 1 || pos > length + 1)) {
   
			return false; // pos值不正确
		}
		int num = 1;
		Node<T> p = head, q = head.next;
		while (num < pos) {
   
			p = q;
			q = q.next;
			num++;
		}
		p.next = new Node<T>(obj, q);
		length++;
		return true;
	}
	public T remove(int pos) {
    // 删除链表中的某个元素
		if (isEmpty()) {
   
			System.out.println("链表为空表");
			return null;
		} else {
   
			if ((pos < 1 || pos > length + 1)) {
   
				System.out.println("pos值不合法");
				return null;
			}
			int num = 1;
			Node<T> p = head, q = head.next;
			while (num < pos) {
   
				p = q;
				q = q.next;
				num++;
			}
			p.next = q.next;
			length--;
			return q.data;
		}
	}
	public int find(T obj) {
   
		if (isEmpty()) {
   
			System.out.println("链表为空表");
			return -1;
		}
		int num = 1;
		Node<T> p = head.next; // p引用的是头结点之后的结点
		while (p != null) {
    // 单链表的判空条件
			if (p.data.equals(obj) == false) {
    // equals判断两个对象值是否相等
				p = p.next;
				num++;
			} else
				break;
		}
		if (p == null)
			return -1;
		return num;
	}
	public T value(int pos) {
    // 获取链表中的一个元素
		if (isEmpty()) {
   
			System.out.println("链表为空表");
			return null;
		} else {
   
			if ((pos < 1 || pos > length + 1)) {
   
				System.out.println("pos值不合法");
				return null;
			}
			int num = 1;
			Node<T> q = head.next;
			while (num < pos) {
   
				q = q.next;
				num++;
			}
			return q.data;
		}
	}
	public boolean modify(T obj, int pos) {
    // 更新链表中的某个元素
		if (isEmpty()) {
   
			System.out.println("链表为空表");
			return false;
		} else {
   
			if ((pos < 1 || pos > length + 1)) {
   
				System.out.println(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王力士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值