编写一个图形界面程序,完成简单的火车票购买。假设火车站有:南宁、柳州、玉林、百
时间: 2023-08-15 19:04:31 浏览: 102
度、桂林五个城市,每个城市有20个座位,票价分别为100元、80元、60元、50元、40元。要求用户输入购票信息,包括出发城市、到达城市、购买的票数,然后计算并显示总价。同时要求程序能够判断并处理无效输入,如输入非法城市名称或票数等。
以下是一个简单的 Python 代码示例,使用 Tkinter 模块实现图形界面:
```python
import tkinter as tk
# 城市和票价信息
cities = {'南宁': 100, '柳州': 80, '玉林': 60, '百度': 50, '桂林': 40}
# 创建窗口
root = tk.Tk()
root.title('火车票购买')
# 定义函数,计算总价并显示
def calculate():
# 获取用户输入
start_city = start_var.get()
end_city = end_var.get()
ticket_num = num_var.get()
# 判断输入是否合法
if start_city not in cities or end_city not in cities:
result_label.config(text='输入城市名称有误')
elif not ticket_num.isdigit() or int(ticket_num) <= 0:
result_label.config(text='输入票数有误')
else:
# 计算总价
price = abs(cities[start_city] - cities[end_city])
total_price = price * int(ticket_num)
# 显示结果
result_label.config(text=f'总价为 {total_price} 元')
# 创建控件
start_label = tk.Label(root, text='出发城市')
start_label.pack()
start_var = tk.StringVar(root)
start_option = tk.OptionMenu(root, start_var, *cities.keys())
start_option.pack()
end_label = tk.Label(root, text='到达城市')
end_label.pack()
end_var = tk.StringVar(root)
end_option = tk.OptionMenu(root, end_var, *cities.keys())
end_option.pack()
num_label = tk.Label(root, text='购买票数')
num_label.pack()
num_var = tk.Entry(root)
num_var.pack()
calc_button = tk.Button(root, text='计算总价', command=calculate)
calc_button.pack()
result_label = tk.Label(root, text='')
result_label.pack()
# 进入主事件循环
root.mainloop()
```
使用该程序,用户可以选择出发城市、到达城市和购买票数,然后点击“计算总价”按钮,程序会计算出总价并显示在界面上。如果用户输入了非法的城市名称或票数,程序会提示相应的错误信息。
阅读全文