说明: 本博客是从课设报告中截取的重要部分。这个飞机订票系统是本人大二上的数据结构课设,功能相对完善,界面相对美观。图形界面,本来想用Qt5(python中一个图形界面的类库,风格偏向于win10)去做的,但是时间匆促,就使用了python内的标准库tkinter(偏win7风格)做的,中途学习了一个tkinter的视频教程,又从网上买了一本图形界面的书,其实学的过程中是挺轻松的,但是自己实际操作时遇到了许多bug,主要原因是我们在学习时,是一个组件一个组件学习的,但当我们把所有的组件堆砌在一起灵活运用时,就出现了自己没有遇到过的问题,但最终还是都给解决了。

实现了“增添改查”,排序,登录,购票,退票,导入文件,保存等功能,并且还做了一些优化,比如可以在系统的上方显示用户名和日期时间;在信息添加时,有了相应的限制条件,在信息修改时,直接将要修改的信息传入到修改框中;在进行选票时,有了票数的限制;可以多条件的查询功能,可以实现各个字段的排序;并且在退出系统时,提示用户是否保存信息退出。

如需代码
飞机订票系统 python实现(大二上数据结构课设) (请勿白嫖,嘻嘻)


目录

  1. 选题分析:
    1.1 选题分析
    1.2系统框架与功能模块
  2. 数据结构设计
    2.1 数据模型分析
    2.2 存储结构分析
  3. 系统实现
    3.1 模块设计与实现
    3.2 系统展示
  4. 总结
    4.1 技术讨论
    4.2 心得体会

1. 选题分析:

1.1选题分析

【问题描述】 设计一个飞机订票系统
【功能要求】
1)录入/修改:可以录入/修改航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。
2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况; 
3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
4)退票:用户可退票,退票后修改相关订票信息。
【界面要求】 有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

分析: 根据题目的要求,我们要实现基本的功能“增删改查”,并且有相应的文件处理,还有订票的功能;最好也可实现一定排序功能,方便用户使用;为了更好的用户体验,我们可以制作相应的图形界面;

1.2系统框架与功能模块

其系统框架与功能模块,如下图所示:
在这里插入图片描述

2. 数据结构设计

2.1 数据模型分析

由于我们要制作相应的图形界面,我们在进行数据的呈现时,我们采用的是表格的形式,我们使用的组件是python标准库tkinter.ttk中的Treeview组件,进行相应数据的添加,修改,删除,查询。为了方便操作和效率,我们使用嵌套列表来存储从文件读取到的数据,即进行相应功能操作时,实质上是对该嵌套列表的操作
在这里插入图片描述

2.2 存储结构分析

外部:我们这里采用的文件形式的存储结构,总共有三个文件,一个登入用户名密码文件,一个已购航班信息文件,一个待购航班信息文件
在这里插入图片描述

内部:我们在运行程序时,我们使用到的存储结构是嵌套列表(正如2.1所分析)

3. 系统实现
3.1 模块设计与实现

分模块介绍主要函数、函数间数据传递与数据流走向设计、数据存储文件等
我们这里的界面分为三块,登录界面,主界面(待购航班信息)和副界面(已购航班信息)

3.2 系统展示

登录界面:
在这里插入图片描述

登录不成功:
在这里插入图片描述

待购主界面:
在这里插入图片描述

信息添加功能:
这里在添加信息时,有相应的条件限制,比如航班号不能重复,各个字段的信息不能为空。

在这里插入图片描述

信息删除功能:
这里为了防止用户的误删,这里利用弹窗的形式提示用户是否要删除信息

在这里插入图片描述

信息修改功能:

已实现自动将要修改的信息放到修改框中,方便了用户的操作,提高了效率
当然修改也有相应的条件限制,比如各个字段的信息不能为空,并且航班号字段不能和已有的航班号重复。
在这里插入图片描述

文件导入功能:
这里用户可以选择进行操作的文件,而不是固定的文件
在这里插入图片描述

查询信息功能:
这里我们实现了多条件的查询和迭代查询(即可以在当前界面继续查询)
在这里插入图片描述

选票功能:
这里可以选择一定的票数,当然票数有一定的限制,不可以超过最大的次数
在这里插入图片描述

退票功能:
在这里插入图片描述

文件保存功能:
在我们退出时,可以提示是否进行文件的保存,可以保存文件退出,也可以不保存退出
在这里插入图片描述
这里我们可以看到,我们新添加的数据已经写入文件中了
在这里插入图片描述

排序功能:
为了方便用户使用,我们这里对八个字段的数据都进行了排序功能(需要排序时,只需点击每一栏的标签即可

排序前界面:

排序后界面:
在这里插入图片描述

3.3 结果分析

我们通过逐步地测试,我们可以发现各个功能都已经实现了,达到我们选票系统的目标,并且为了更加人性化,我们还进行了一些优化和设计。比如可以在系统的上方显示用户名和日期时间;在信息添加时,有了相应的限制条件,在信息修改时,直接将要修改的信息传入到修改框中;在进行选票时,有了票数的限制;可以多条件的查询功能,可以实现各个字段的排序;并且在退出系统时,提示用户是否保存信息退出。

4. 总结

4.1 技术讨论

这个飞机订票系统,其实算法都比较好实现,最难的模块是如何将数据以图形化的界面展示,由于tkinter是python内的标准库,相比Qt5(python中另一个图形界面的类库)好处是更加的稳定,但是界面的效果不如Qt5好,就造成tkinter的使用率不是很高,所以我们在做这个系统时,碰到的问题有时需要外网才可以查到。

另一个问题是逻辑实现比较难,因为要做出一个系统,就要顾及系统的方方面面,是否有逻辑的问题,是否符合客观事实。有时数据的改动需要考虑与之相关的各个板块,否则会产生一系列的问题。这里我们就请其他同学使用我们的系统,看看有哪些逻辑问题,有哪些可以优化的地方。我们就进一步地改进与完善。

4.2 心得体会

首先,我从开学的时候就开始准备了,当时学习了图形界面的开发,在网上找的视频教程,为了满足更多的模块和功能,我又从网上买了一本图形界面的书,当时学习的时候,很感兴趣,但是是跟着教程,所以是比较的轻松,到我实际去开发时,又四处碰壁,通过查阅资料,最终还是逐个击破了。“纸上得来终觉浅,绝知此事要躬行”,做事要亲力亲为,这样才可以有更好的成长和进步。
另一个方面,我是每个功能一点一点做的,每天完成一个功能,做到后面,你会发现自己的代码框架可能不是最好的,你的代码可以进一步地优化,通过这个课设,我体会到系统框架的重要性,通过它我们可以全局地考虑问题,实现代码的优化,还可以减少工作量。

参考文献:
[1] 洪锦魁. Python GUI设计–tkinter菜鸟教程,清华大学出版社,2017.12.

如需代码
飞机订票系统 python实现(大二上数据结构课设) (请勿白嫖,嘻嘻)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐