Python程序设计期末大作业:航空订票系统

前言        

        在计算机编程的学习过程中,实践是巩固理论知识、提升编程能力的最佳方式。本次Python期末大作业,选择开发一个"航空订票系统",这是一个结合了数据结构、文件操作和用户交互的综合性项目。通过这个项目,不仅加深了对Python语言的理解,还掌握了实际应用开发的基本流程。航空订票系统是现实生活中常见的应用场景,它涉及到用户管理、航班信息管理、票务处理等多个功能模块。开发这样一个系统,能够帮助理解如何将编程知识应用到实际问题解决中,同时也体会到了软件开发中的逻辑思维和用户体验的重要性。

项目概述

这个航空订票系统主要包含以下功能:

  1. 用户管理:用户登录与注册功能,记录用户的基本信息

  2. 航班管理:航班的录入、查询等操作

  3. 票务服务:机票的预订和退订功能

  4. 数据持久化:使用JSON格式文件保存系统数据

系统采用控制台交互方式,通过菜单选择实现各项功能,适合初学者理解和实现。

核心代码解析

1. 用户登录与自动注册机制

def login(users):
    print("航空订票系统用户登录")
    name = input("请输入姓名:")
    id_card = input("请输入身份证号:")
    phone = input("请输入电话号码:")
    
    # 检查用户是否存在
    for user in users:
        if user['id_card'] == id_card:
            print(f" 欢迎回来,{user['name']}!")
            return user
            
    # 新用户自动注册
    new_user = {
        "name": name,
        "id_card": id_card,
        "phone": phone,
        "bookings": []  # 新增预订记录字段
    }
    users.append(new_user)
    print("注册成功!已自动登录")
    return new_user

2. 数据持久化实现

def load_data():
    try:
        with open(DATA_FILE, "r", encoding="utf-8") as file:
            return json.load(file)
    except FileNotFoundError:
        return {"flights": [], "users": []}

def save_data(data):
    with open(DATA_FILE, "w", encoding="utf-8") as file:
        json.dump(data, file, ensure_ascii=False, indent=4)

这段代码实现了数据的加载和保存功能,使用JSON格式存储,确保程序重启后数据不丢失

3. 航班查询功能

def search_flights(flights):
    origin = input("请输入起点站名:")
    destination = input("请输入终点站名:")
    date = input("请输入飞行日期(YYYY-MM-DD):")
    filtered_flights = [flight for flight in flights 
                       if flight['origin'] == origin 
                       and flight['destination'] == destination 
                       and flight['date'] == date]

4. 事务型订票处理

def book_ticket(flights, user):
    if not flights:
        print("当前无可用航班")
        return
    
    search_flights(flights)  # 先展示航班
    
    try:
        choice = int(input("\n请选择要预订的航班编号:")) - 1
        selected = flights[choice]
        
        if selected['tickets'] <= 0:
            print(" 该航班已售罄")
            return
            
        # 执行订票事务
        selected['tickets'] -= 1
        booking_id = len(user['bookings']) + 1
        user['bookings'].append({
            "id": booking_id,
            "flight_number": selected['flight_number'],
            "date": selected['date'],
            "status": "confirmed"
        })
        
        print(f" 订票成功!预订编号:B{booking_id:04d}")
        print(f"航班信息:{selected['origin']}→{selected['destination']} {selected['date']} {selected['time']}")
    except (ValueError, IndexError):
        print(" 选择无效,请重新操作")

技术实现

项目主要使用了以下Python技术:

  • 文件操作:使用json模块实现数据的读取和保存

  • 数据结构:使用列表和字典管理航班和用户信息

  • 函数封装:将不同功能模块封装成函数,提高代码可读性和复用性

  • 用户交互:通过input()实现简单的控制台交互

项目亮点

  1. 模块化设计:将系统功能划分为多个菜单和函数,结构清晰

  2. 数据持久化:使用JSON文件保存数据,程序重启后数据不丢失

  3. 用户友好:提供明确的提示信息和错误处理

  4. 实用功能:实现了航空订票系统的基本核心功能

总结与展望

        通过完成这个项目,系统地练习了Python编程的各个方面,特别是对文件操作和数据结构的应用有了更深的理解。虽然目前的系统还比较简单,只有控制台界面,但它已经具备了航空订票系统的基本功能。

未来可以考虑的改进方向包括:

  • 添加图形用户界面(GUI)

  • 实现更复杂的查询功能,如模糊查询、排序等

  • 增加用户订票记录功能

  • 添加管理员权限和普通用户权限的区分

        这个项目不仅是我Python学习的总结,也是我编程能力提升的一个重要里程碑。希望这个简单的航空订票系统能够为初学者提供一个参考,也欢迎各位提出改进建议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值