能不能用Python写一个飞机订票系统

假定民航机场共有n个航班每个航班有一航班号、确定的航线起始站、终点站、确定的飞行时间星期几和一定的成员订额。试设计一个飞机订票系统使之能提供下列服务a.航班信息录入功能(航班信息用文件保存)b.航班信息浏览功能c.按终点站排序d.查询航线e.按起点站查询f.承办订票和退票业务

https://blog.csdn.net/m0_68302327/article/details/126590640

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7449465
  • 你也可以参考下这篇文章:第1章【综合练习题】编写Python程序实现功能:使用字典记录学生姓名及对应身高值;输入任意学生姓名,在字典中查找并显示所有高于此身高值的学生信息。
  • 除此之外, 这篇博客: Python壁球小游戏(3)中的 在壁球小游戏(2)的基础上添加新的功能。使用鼠标控制壁球的移动:当鼠标左键按下时使壁球停止移动,当鼠标左键释放时使壁球移动到鼠标按下的位置并让鼠标继续移动;按下鼠标左键时拖动鼠标使壁球跟随着鼠标移动。学习了如何使配合鼠标使游戏能有更多的操作,增加游戏的可玩性。笔记都在代码的注释中: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import sys
    import pygame
    
    pygame.init()
    #icon = pygame.image.load("biu.jpg")
    #pygame.display.set_icon(icon)          #设置窗口图标
    #Vinfo = pygame.display.Info()       #获取当前操作系统的屏幕尺寸
    #size = width, height = Vinfo.current_w, Vinfo.current_h     #将系统的屏幕尺寸作为显示窗口的尺寸
    size = width,height = 900 ,600               #设置屏幕的长度和宽度
    speed = [1,1]                                #设置移动速度[x,y]
    BLACK = 0,0,0                                #设置背景颜色
    #screen = pygame.display.set_mode(size)       #初始化显示窗口
    screen = pygame.display.set_mode(size,pygame.RESIZABLE)       #将屏幕设置为大小可调
    #screen = pygame.display.set_mode(size,pygame.NOFRAME)         #将屏幕设置为无边框
    #screen = pygame.display.set_mode(size,pygame.FULLSCREEN)       #将屏幕设置为全屏模式
    pygame.display.set_caption("壁球游戏")       #将窗口命名为“壁球游戏”
    ball = pygame.image.load("biu.jpg")          #加载图片
    ballrect = ball.get_rect()                   #返回一个覆盖图像的矩形Rect对象,载入图像的外切矩形
    """Rect对象有一些重要的属性,比如top、bottom、left、right表示上下左右
    width、height表示宽度和高度"""
    fps = 300
    fclock = pygame.time.Clock()
    still = False
    
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                #按左键改变壁球左右移动方向,按一次方向取反
                if event.key == pygame.K_LEFT:
                    speed[0] = -speed[0]
                #按上键改变壁球上下移动方向,按一次方向取反
                elif event.key == pygame.K_UP:
                    speed[1] = -speed[1]
                elif event.key == pygame.K_ESCAPE:
                    sys.exit("游戏结束!")
            elif event.type == pygame.VIDEORESIZE:
                size = width, height = event.size[0], event.size[1]
                screen = pygame.display.set_mode(size,pygame.RESIZABLE)
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 1:
                    still = True
                    """当鼠标左键按下时,将控制壁球移动的变量设置为True,
                    让壁球停止移动,因为后边是用if pygame.display.get_active() and not still:
                    来控制壁球移动的,将still取反了"""
            elif event.type == pygame.MOUSEBUTTONUP:
                still = False
                if event.button == 1:
                    ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
                    """当鼠标按键释放时,让壁运动的相对球移动到鼠标所在的位置,同时让壁球继续运动
                    move函数的参数是指两次距离,将两个位置的相对距离赋值给函数
                    """
            elif event.type == pygame.MOUSEMOTION:
                if event.buttons[0] == 1:         # 当鼠标左键按下的时候
                    ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
                    """当鼠标左键处于按下状态并且在移动时,使壁球的图片跟随着鼠标一起移动"""
    
        if pygame.display.get_active() and not still:
            ballrect = ballrect.move(speed[0],speed[1])     #在横轴和纵轴移动x,y像素
            """ 设置窗口感知,当显示为界面的时候,返回True,图标化的时候返回False
            这样设置如果将窗口最小化,壁球会停止运动
            当打开的时候壁球将会继续运动"""
        #判断图像的边缘位置,如果碰到上下左右边缘,使其速度取反
        if ballrect.left < 0 or ballrect.right > width:
            speed[0] = -speed[0]
            #sys.exit("Game Over!")
            if ballrect.right > width and ballrect.right + speed[0] > ballrect.right:
                speed[0] = - speed[0]
                """如果壁球的右边缘的坐标位置大于屏幕宽度,则让壁球改变运动方向"""
    
        if ballrect.top < 0 or ballrect.bottom > height:
            speed[1] = -speed[1]
            #sys.exit("Game Over")
            if ballrect.bottom > height and ballrect.bottom + speed[1] > ballrect.bottom:
                speed[1] = - speed[1]
    
        screen.fill(BLACK)          #填充背景颜色
        screen.blit(ball,ballrect)
        """将一个图像绘制在另一个图像上,即将ball绘制到ballrect位置上。
        通过Rect对象引导对移动图像的绘制,让图像跟着外切矩形的移动而移动
        这样就形成了图像的移动"""
        pygame.display.update()     #刷新屏幕,仅仅重新绘制窗口中有变化的地方,比flip函数速度更快,flip函数重新绘制整个窗口
        fclock.tick(fps)
    
    
    
    

     

  • 以下回答由chatgpt基于相关博客总结生成:

    这个飞机订票系统可以使用Python编写实现。下面是一个简单的实现方案:

    1. 提供航班信息录入功能,将航班信息保存在文件中。 可以使用Python的文件操作函数,例如open()、read()、write()和close()等函数来实现文件读写操作。你需要定义一个航班类,用于存储航班信息,包括航班号、起点站、终点站、飞行时间、星期几和空位数量。对于每个航班信息,你可以将它写入一个文本文件中,例如逗号分割的格式。

    2. 提供航班信息浏览功能,可以让用户查看系统中的航班信息。 可以使用Python的文件操作函数,例如open()、read()和close()等函数来读取保存有航班信息的文件。读取完毕之后,可以将信息打印到终端或者图形界面上供用户查看。

    3. 按照终点站进行排序,方便用户查找到达指定城市的航班。 可以使用Python的文件操作函数,例如open()、read()和close()等函数来读取保存有航班信息的文件。读取完毕之后,将航班信息按照终点站进行排序。你可以使用Python内置的sorted函数,利用航班类的终点站属性作为关键字进行排序。排序完成之后,可以将信息打印到终端或者图形界面上供用户查看。

    4. 提供航线查询功能,让用户可以查询自己想要的航线。 可以使用Python的文件操作函数,例如open()、read()和close()等函数来读取保存有航班信息的文件。读取完毕之后,可以让用户输入要查询的起点站和终点站,然后查找包含这些站点的航班并将信息打印到终端或者图形界面上供用户查看。

    5. 按照起点站进行查询,方便用户查询离自己最近的出发地点。 可以使用Python的文件操作函数,例如open()、read()和close()等函数来读取保存有航班信息的文件。读取完毕之后,可以让用户输入自己的位置,然后查找距离该位置最近的起点站,并将信息打印到终端或者图形界面上供用户查看。

    6. 实现订票和退票的业务功能,让用户可以自由地进行预订和退订。 可以使用Python的文件操作函数,例如open()、read()和close()等函数来读取保存有航班信息的文件。读取完毕之后,可以让用户选择要预订或者退订的航班,然后根据用户的选择修改航班信息中的空位数量。修改完毕之后,可以将修改后的信息写入文件中保存。

    综上所述,你需要编写一个航班类,定义若干属性和方法来存储和操作航班信息。你还需要编写一个主程序,用于控制用户界面和调用航班类中的方法来完成系统的各项功能。具体实现方案可以参考以下的示例代码:

    ```python class Flight: def init(self, flight_no, dep_city, arr_city, dep_time, week_day, seats): self.flight_no = flight_no self.dep_city = dep_city self.arr_city = arr_city self.dep_time = dep_time self.week_day = week_day self.seats = seats

    def __str__(self):
        return f"{self.flight_no} {self.dep_city} -> {self.arr_city} {self.dep_time} {self.week_day} {self.seats}"
    
    @staticmethod
    def from_string(s):
        parts = s.strip().split(',')
        return Flight(parts[0], parts[1], parts[2], parts[3], parts[4], int(parts[5]))
    
    def to_string(self):
        return f"{self.flight_no},{self.dep_city},{self.arr_city},{self.dep_time},{self.week_day},{self.seats}"
    

    class FlightBookingSystem: def init(self, filename): self.filename = filename self.flights = [] self.load_flights()

    def load_flights(self):
        with open(self.filename, 'r') as f:
            for line in f:
                flight = Flight.from_string(line)
                self.flights.append(flight)
    
    def save_flights(self):
        with open(self.filename, 'w') as f:
            for flight in self.flights:
                line = flight.to_string() + '\n'
                f.write(line)
    
    def add_flight(self, flight):
        self.flights.append(flight)
        self.save_flights()
    
    def view_flights(self):
        for flight in self.flights:
            print(flight)
    
    def sort_by_arrival_city(self):
        self.flights.sort(key=lambda x:x.arr_city)
        self.view_flights()
    
    def search_flight(self, dep_city, arr_city):
        found = False
        for flight in self.flights:
            if flight.dep_city == dep_city and flight.arr_city == arr_city:
                print(flight)
                found = True
        if not found:
            print('No flights found!')
    
    def search_dep_city(self, city):
        min_distance = float('inf')
        dep_city = None
        for flight in self.flights:
            d = self.distance(flight.dep_city, city)
            if d < min_distance:
                min_distance = d
                dep_city = flight.dep_city
        self.search_flight(dep_city, None)
    
    @staticmethod
    def distance(city1, city2):
        # Pretend to calculate the distance between two cities
        return abs(hash(city2) - hash(city1))
    
    def reserve_seat(self, flight_no):
        for flight in self.flights:
            if flight.flight_no == flight_no:
                if flight.seats > 0:
                    flight.seats -= 1
                    self.save_flights()
                    print('Reservation successful!')
                else:
                    print('No seats available!')
                return
        print('Invalid flight number!')
    
    def cancel_reservation(self, flight_no):
        for flight in self.flights:
            if flight.flight_no == flight_no:
                flight.seats += 1
                self.save_flights()
                print('Cancellation successful!')
                return
        print('Invalid flight number!')
    

    Sample usage

    system = FlightBookingSystem('flights.txt')

    Add a new flight

    flight = Flight('AC123', 'YYZ', 'LAX', '12:00', 'Mon', 100) system.add_flight(flight)