用java写一个航班订票系统
时间: 2024-01-01 11:06:17 浏览: 59
以下是一个简单的基于Java的航班订票系统的示例代码,它包括以下功能:用户登录、航班查询、航班订票、订单查询、订单取消等。
需要注意的是,这只是一个简单的示例代码,实际的航班订票系统需要更多的功能和细节处理,例如航班和座位的管理、支付系统等等。
```java
import java.util.ArrayList;
import java.util.Scanner;
public class FlightBookingSystem {
private static ArrayList<User> users = new ArrayList<>(); // 用户列表
private static ArrayList<Flight> flights = new ArrayList<>(); // 航班列表
private static ArrayList<Order> orders = new ArrayList<>(); // 订单列表
public static void main(String[] args) {
// 初始化系统数据
initSystemData();
// 登录
User user = login();
// 展示菜单
while (true) {
showMenu();
int choice = getChoice();
switch (choice) {
case 1:
// 航班查询
searchFlights();
break;
case 2:
// 航班订票
bookFlight(user);
break;
case 3:
// 订单查询
queryOrders(user);
break;
case 4:
// 订单取消
cancelOrder(user);
break;
case 5:
// 退出系统
System.exit(0);
break;
default:
System.out.println("输入错误,请重新输入!");
}
}
}
// 初始化系统数据
private static void initSystemData() {
// 初始化用户数据
users.add(new User("张三", "123456"));
users.add(new User("李四", "123456"));
// 初始化航班数据
flights.add(new Flight("MU1234", "上海", "北京", "2021-06-01", 200));
flights.add(new Flight("MU2345", "上海", "广州", "2021-06-02", 150));
flights.add(new Flight("MU3456", "北京", "上海", "2021-06-03", 180));
flights.add(new Flight("MU4567", "广州", "上海", "2021-06-04", 120));
}
// 用户登录
private static User login() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
for (User user : users) {
if (user.getName().equals(name) && user.getPassword().equals(password)) {
System.out.println("登录成功!");
return user;
}
}
System.out.println("用户名或密码错误,登录失败!");
System.exit(0);
return null;
}
// 展示菜单
private static void showMenu() {
System.out.println("-----------------");
System.out.println("1. 航班查询");
System.out.println("2. 航班订票");
System.out.println("3. 订单查询");
System.out.println("4. 订单取消");
System.out.println("5. 退出系统");
System.out.println("-----------------");
}
// 获取用户选择
private static int getChoice() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的选择:");
return scanner.nextInt();
}
// 航班查询
private static void searchFlights() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入出发地:");
String from = scanner.nextLine();
System.out.println("请输入目的地:");
String to = scanner.nextLine();
System.out.println("请输入出发日期:");
String date = scanner.nextLine();
System.out.println("查询结果如下:");
System.out.println("-----------------");
System.out.println("航班号\t出发地\t目的地\t出发日期\t余票数");
for (Flight flight : flights) {
if (flight.getFrom().equals(from) && flight.getTo().equals(to) && flight.getDate().equals(date)) {
System.out.println(flight.getNumber() + "\t" + flight.getFrom() + "\t" + flight.getTo() + "\t" + flight.getDate() + "\t" + flight.getRemainingSeats());
}
}
System.out.println("-----------------");
}
// 航班订票
private static void bookFlight(User user) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要订购的航班号:");
String number = scanner.nextLine();
System.out.println("请输入要订购的座位数:");
int count = scanner.nextInt();
// 查找航班
Flight flight = null;
for (Flight f : flights) {
if (f.getNumber().equals(number)) {
flight = f;
break;
}
}
if (flight == null) {
System.out.println("无效的航班号!");
return;
}
// 判断余票是否足够
if (flight.getRemainingSeats() < count) {
System.out.println("余票不足,订票失败!");
return;
}
// 生成订单
Order order = new Order(user, flight, count);
orders.add(order);
// 更新航班信息
flight.setRemainingSeats(flight.getRemainingSeats() - count);
System.out.println("订票成功!");
}
// 订单查询
private static void queryOrders(User user) {
System.out.println("查询结果如下:");
System.out.println("-----------------");
System.out.println("订单号\t用户名\t航班号\t出发地\t目的地\t出发日期\t座位数\t价格");
for (Order order : orders) {
if (order.getUser().equals(user)) {
System.out.println(order.getNumber() + "\t" + order.getUser().getName() + "\t" + order.getFlight().getNumber() + "\t" + order.getFlight().getFrom() + "\t" + order.getFlight().getTo() + "\t" + order.getFlight().getDate() + "\t" + order.getCount() + "\t" + order.getPrice());
}
}
System.out.println("-----------------");
}
// 订单取消
private static void cancelOrder(User user) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要取消的订单号:");
String number = scanner.nextLine();
// 查找订单
Order order = null;
for (Order o : orders) {
if (o.getNumber().equals(number)) {
order = o;
break;
}
}
if (order == null) {
System.out.println("无效的订单号!");
return;
}
// 判断订单是否属于当前用户
if (!order.getUser().equals(user)) {
System.out.println("无权操作该订单!");
return;
}
// 更新订单信息和航班信息
orders.remove(order);
order.getFlight().setRemainingSeats(order.getFlight().getRemainingSeats() + order.getCount());
System.out.println("取消订单成功!");
}
}
class User {
private String name;
private String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
}
class Flight {
private String number;
private String from;
private String to;
private String date;
private int totalSeats;
private int remainingSeats;
public Flight(String number, String from, String to, String date, int totalSeats) {
this.number = number;
this.from = from;
this.to = to;
this.date = date;
this.totalSeats = totalSeats;
this.remainingSeats = totalSeats;
}
public String getNumber() {
return number;
}
public String getFrom() {
return from;
}
public String getTo() {
return to;
}
public String getDate() {
return date;
}
public int getTotalSeats() {
return totalSeats;
}
public int getRemainingSeats() {
return remainingSeats;
}
public void setRemainingSeats(int remainingSeats) {
this.remainingSeats = remainingSeats;
}
}
class Order {
private static int count = 0;
private String number;
private User user;
private Flight flight;
private int countOfSeats;
private double price;
public Order(User user, Flight flight, int countOfSeats) {
this.number = "O" + (++count); // 自动生成订单号
this.user = user;
this.flight = flight;
this.countOfSeats = countOfSeats;
this.price = countOfSeats * 100; // 简单的计算价格规则:每张票100元
}
public String getNumber() {
return number;
}
public User getUser() {
return user;
}
public Flight getFlight() {
return flight;
}
public int getCount() {
return countOfSeats;
}
public double getPrice() {
return price;
}
}
```