航班信息查询与检索(java)

         大二上时用C语言写过一个关于航班信息查询与检索的课程设计,当时是自己抄代码,然后再让学长帮改的,前天晚上在“抄”代码时,突然想用java把那个课设题再写一次,于是昨天晚上就开始了,当然还是先在网上找了不少“成品”做参考,半借鉴,半修改,马马虎虎写了一个功能比较少的版本,以后再写更高版本的。

       这个小程序的代码分为四个模块:主框架(MainWindow),关于飞机航班号、起飞(目的)城市与起飞时间(Plane),对航班信息的添加查询等操作(FlightInfoOperation),以及对文件的处理(IOOperation)。

      主窗口图:

     

    添加窗口图:

 

  查询窗口图:

  (其中可以通过航班号、起飞城市任意一个查询或两者查询)

 

 

下面给出这个代码的部分代码:

FlightInfoOperation里的

	public FlightInfoOperation() {

		mainFrame = new Frame("航班信息查询与检索");
		mainFrame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		mainFrame.setSize(WIDTH, HEIGHT);
		mainFrame.setVisible(true);

		Dimension frameSize = mainFrame.getSize();
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		mainFrame.setLocation((screenSize.width - frameSize.width) / 2,
				(screenSize.height - frameSize.height) / 2);

		buttonPanel = new Panel();
		mainFrame.add(buttonPanel, BorderLayout.NORTH);
		addButton = new Button("Add");
		addButton.addActionListener(this);
		searchButton = new Button("Search");
		searchButton.addActionListener(this);
		exitButton = new Button("Exit");
		exitButton.addActionListener(this);
		aboutButton = new Button("About");
		aboutButton.addActionListener(this);
		planeInfo = new TextArea();
		planeInfo.setFont(new Font("serif", Font.PLAIN, 18));
		buttonPanel.add(addButton);
		buttonPanel.add(searchButton);
		buttonPanel.add(exitButton);
		buttonPanel.add(aboutButton);
		mainFrame.add(planeInfo);

		/**
		 * 添加飞机信息的窗口设置
		 */
		addFrame = new Frame();
		addFrame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				addFrame.setVisible(false);
			}
		});

		inputLabPanel = new Panel(new GridLayout(4, 2));
		inputBtnPanel = new Panel();
		String[] inputLbName = { "airNum:", "StartCity:", "Destination:",
				"FlightTime" };
		String[] inputBtnName = { "Save", "Delete", "Quit" };
		// Add窗口中各字段名称、按钮设置
		for (int i = 0; i < 4; i++) {
			inputLab[i] = new Label(inputLbName[i]);
			inputTf[i] = new TextField(15);
			inputLabPanel.add(inputLab[i]);
			inputLabPanel.add(inputTf[i]);
		}
		for (int i = 0; i < 3; i++) {
			inputBtn[i] = new Button(inputBtnName[i]);
			inputBtn[i].addActionListener(this);
			inputBtnPanel.add(inputBtn[i]);
		}
		inputBtn[2].setActionCommand("add");// 用来获取对象的标签或事先为这个对象设置的命令名
		addFrame.add(inputLabPanel, BorderLayout.CENTER);
		addFrame.add(inputBtnPanel, BorderLayout.SOUTH);
		addFrame.pack();
		addFrame.setLocationRelativeTo(mainFrame);

		/**
		 * set searchFrame which is used to search plane information
		 */
		searchFrame = new Frame("Search plane");
		searchFrame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				searchFrame.setVisible(false);
			}
		});
		schLabPanel = new Panel(new GridLayout(2, 2));
		schBtnPanel = new Panel();
		String schLabName[] = { "airNum :", "StartCity :" };
		String schBtnName[] = { "Ok", "Quit" };
		for (int i = 0; i < 2; i++) {
			schLab[i] = new Label(schLabName[i]);
			schTf[i] = new TextField(15);
			schLabPanel.add(schLab[i]);
			schLabPanel.add(schTf[i]);
		}
		for (int i = 0; i < 2; i++) {
			schBtn[i] = new Button(schBtnName[i]);
			schBtn[i].addActionListener(this);
			schBtnPanel.add(schBtn[i]);
		}
		schBtn[1].setActionCommand("search");
		searchFrame.add(schLabPanel, BorderLayout.CENTER);
		searchFrame.add(schBtnPanel, BorderLayout.SOUTH);
		searchFrame.pack();
		searchFrame.setLocationRelativeTo(mainFrame);
		/**
		 * IO operation object
		 */
		ioo = new IOOperation();
		plane = ioo.getAllPlane();

	}


文件操作部分

public class IOOperation {

	private File file = new File("E:\\wenjianyuan\\info");

	public IOOperation() {
		try {
			if (!file.exists()) {
				file.createNewFile();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * write to file
	 */
	public void write(Plane[] wPlane) {
		try {
			FileOutputStream fos = new FileOutputStream(file);
			ObjectOutputStream objOut = new ObjectOutputStream(fos);
			objOut.writeObject(wPlane);
			objOut.close();
			fos.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * read all informations from the file
	 */
	public Plane[] getAllPlane() {
		Plane[] plane = new Plane[100];

		try {
			if (file.length() > 0) {
				FileInputStream fis = new FileInputStream(file);
				ObjectInputStream ois=new ObjectInputStream(fis);
				plane= (Plane[]) ois.readObject();
				ois.close();
				fis.close();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return plane;
	}
}


感兴趣的朋友可以到:http://download.csdn.net/detail/yanghai0321/4185470 下载完整代码。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OOP(机试)[具体要求在压缩文档中给出] 项目名称: Air Infomation System 基于控制台的航班信息系统,简称AIS 具体要求如下: (1)显示航班信息系统主菜单,如图-1所示,包括: 1)列出所有航班 2)按起飞时间查询 3)按目的地查询 4)删除航班 5)更新航班 6)退出系统 (2)列出所有航班:查出所有航班信息,以列表形式显示,包括:编号,航班号,目的地,起飞日期。 (3)按起飞时间查询:输入起飞时间(格式如2011-2-25),查出所有这一天的航班。 (4)按目的地查询:输入目的地,查出所有飞往此地的航班。 (5)删除航班:删除指定编号的航班。 (6)更新航班:更新指定编号的航班。 (7)退出系统。 三、类的设计 需要定义如下类 航班信息实体类(AirInfo) 航班编号(id) 航班号(flight_number) 目的地(destination) 起飞日期(flight_date) 航班信息管理类AirInfoManager类 程序入口类TestAirInfo类 四、具体要求及推荐实现步骤 6.创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。 7.创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询 的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出系统的方法。 8.创建TestAirInfo类,启动和运行系统。 9.航班信息用ArrayList(或数组)保存。 10.要求代码规范,命名正确。
# OOP(机试) 本程序总结文章:http://blog.qiji.tech/?p=10344 - - - ## 程序基本要求 一、项目名称: Air Infomation Programming 基于控制台的航班信息程序,简称AIP 二、具体要求如下: (1)显示航班信息程序主菜单,如图-1所示,包括: * 1)列出所有航班 * 2)按起飞时间查询 * 3)按目的地查询 * 4)删除航班 * 5)更新航班 * 6)退出系统 (2)列出所有航班:查出所有航班信息,以列表形式显示,包括:编号,航班号,目的地,起飞日期。 (3)按起飞时间查询:输入起飞时间(格式如2011-2-25),查出所有这一天的航班。 (4)按目的地查询:输入目的地,查出所有飞往此地的航班。 (5)删除航班:删除指定编号的航班。 (6)更新航班:更新指定编号的航班。 (7)退出系统。 三、类的设计 需要定义如下类 * 航班信息实体类(AirInfo) * 航班编号(id) * 航班号(flight_number) * 目的地(destination) * 起飞日期(flight_date) * 航班信息管理类AirInfoManager类 * 程序入口类TestAirInfo类 四、具体要求及推荐实现步骤 1. 创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。 1. 创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出程序的方法。 2. 创建TestAirInfo类,启动和运行程序。 3. 航班信息用ArrayList(或数组)保存。 4. 要求代码规范,命名正确。 - - -
1.问题描述 该设计要求对飞机航班信息进行排序和查找。可按航班航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。 2.扩展功能: ①能够在起点站与终点站相同的航班信息中筛选出票价最低及飞行时间最短的航班,并显示; ②能够不断添加新的航班信息; ③能够检验输入时间的合法性。 3.任务要求 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。 每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表(8条记录) 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 CA1544 合肥 北京 1.2.4.5 1055 1240 733 960 MU5341 上海 广州 每日 1420 1615 M90 1280 CZ3869 重庆 深圳 2.4.6 0855 1035 733 1010 MU3682 桂林 南京 2.3.4.6.7 2050 2215 M90 1380 HU1836 上海 北京 每日 0940 1120 738 1250 CZ3528 成都 厦门 1.3.4.5.7 1510 1650 CRJ 1060 MU4594 昆明 西安 1.3.5.6 1015 1140 328 1160 SC7425 青岛 海口 1.3.6 1920 2120 DH4 1630 其中航班号一项的格式为: K0 K1 K2 K3 K4 K5 C Z 3 8 6 9 其中K0和K1的输入值是航空公司的别称,用两个大写字母标示,后4位为航班号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。
作为一门编程语言,Java拥有着良好的数据结构支持,是非常适合用于航班订票系统开发的语言之一。这种系统的主要功能是让用户能够查询航班信息,选择座位并支付机票费用。需求如此之多,而所使用的数据结构必须能够正确高效地处理这一系列的操作。下面是我对Java数据结构课设中航班订票系统的一些想法。 首先,我们可以使用数组和链表来存储航班信息和座位的状态,例如航班号,起飞时间,到达时间等信息都可以作为数组中的元素。而座位状态可以存放在链表中,这样的好处是可以更方便的进行插入和删除。 其次,我们可以使用哈希表来进行快速的航班查询。使用一个哈希map,以航班号为键,以航班信息为值,可以快速地检索到用户想查询航班信息。 另外,我们可以使用树结构来存储不同价格和不同时间的机票信息。例如,使用一棵二叉查找树,以机票价格为索引,树结构越往下表示价格越高。而每个节点存储相同价格的机票的具体信息。同样,可以用另一棵二叉查找树,以机票时间为索引,树结构越往下表示时间越近,每个节点存储相同时间的机票的具体信息,这样可以让交易变得更加清晰明了。 最后,我们可以使用队列或堆栈来处理付款和返回机票的逻辑。例如,一个队列用于处理排队付款的顺序,这样可以确保付款过程的顺序。而进行退款时,可以使用一个堆栈来保存被退款的历史记录,以便对退款操作进行追踪。 总之,Java 数据结构课设中的航班订票系统需要善用各种数据结构来处理不同的操作和需求。通过对数据结构的灵活应用,我们可以打造出一个易于维护和扩展的航班订票系统,从而提供给用户更加优质便捷的服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值