用Python写一个简易的高铁购票系统,有登录系统,有几等座,成人票和儿童票,显示票数,退票
时间: 2024-03-05 11:48:37 浏览: 78
好的,我可以为你提供这个高铁购票系统的基本代码框架,你可以在此基础上进行完善和修改。以下是代码:
```python
# 定义票价和座位等级
price = {'一等座': 100, '二等座': 80}
level = ['一等座', '二等座']
# 定义车票信息
ticket_info = {
'G1001': {'from': '北京', 'to': '上海', 'date': '2022-01-01', '一等座': 20, '二等座': 50},
'G1002': {'from': '北京', 'to': '广州', 'date': '2022-01-02', '一等座': 30, '二等座': 60},
'G1003': {'from': '上海', 'to': '广州', 'date': '2022-01-03', '一等座': 10, '二等座': 40},
}
# 定义用户信息
user_info = {
'user1': {'password': '123456', 'name': '张三', 'tickets': {}},
'user2': {'password': 'abcdef', 'name': '李四', 'tickets': {}},
}
# 登录系统
def login():
username = input('请输入用户名:')
password = input('请输入密码:')
if username in user_info and user_info[username]['password'] == password:
print('登录成功')
return username
else:
print('用户名或密码错误')
return None
# 查询车票
def query_ticket():
from_station = input('请输入出发站:')
to_station = input('请输入到达站:')
date = input('请输入出发日期(格式为YYYY-MM-DD):')
print('车次\t出发站\t到达站\t出发时间\t到达时间\t一等座\t二等座')
for k, v in ticket_info.items():
if v['from'] == from_station and v['to'] == to_station and v['date'] == date:
print(f'{k}\t{v["from"]}\t{v["to"]}\t{v["date"]} 08:00\t{v["date"]} 12:00\t{v["一等座"]}\t{v["二等座"]}')
# 购买车票
def buy_ticket(username):
print('请选择要购买的车次和座位等级:')
for k, v in ticket_info.items():
print(f'{k} {v["from"]} - {v["to"]} {v["date"]} 一等座:{v["一等座"]} 二等座:{v["二等座"]}')
train_no = input('请输入车次:')
if train_no not in ticket_info:
print('车次不存在')
return
seat_level = input('请输入座位等级(一等座/二等座):')
if seat_level not in level:
print('座位等级输入错误')
return
num = int(input('请输入购买数量:'))
if num <= 0:
print('购买数量输入错误')
return
if ticket_info[train_no][seat_level] < num:
print('余票不足')
return
total_price = price[seat_level] * num
print(f'总价为:{total_price}元')
confirm = input('是否确认购买(Y/N):')
if confirm == 'Y':
# 减少余票数量
ticket_info[train_no][seat_level] -= num
# 记录购票信息
user_info[username]['tickets'][train_no] = user_info[username]['tickets'].get(train_no, {level[0]: 0, level[1]: 0})
user_info[username]['tickets'][train_no][seat_level] += num
print('购买成功')
else:
print('已取消购买')
# 查询购票信息
def query_order(username):
print('您的购票信息如下:')
for k, v in user_info[username]['tickets'].items():
print(f'车次:{k} 一等座:{v[level[0]]} 二等座:{v[level[1]]}')
# 退票
def refund_ticket(username):
print('请选择要退票的车次和座位等级:')
for k, v in user_info[username]['tickets'].items():
print(f'车次{k} 一等座:{v[level[0]]} 二等座:{v[level[1]]}')
train_no = input('请输入车次:')
if train_no not in user_info[username]['tickets']:
print('车次不存在')
return
seat_level = input('请输入座位等级(一等座/二等座):')
if seat_level not in level:
print('座位等级输入错误')
return
num = int(input('请输入退票数量:'))
if num <= 0 or num > user_info[username]['tickets'][train_no][seat_level]:
print('退票数量输入错误')
return
refund_price = price[seat_level] * num
print(f'退票金额为:{refund_price}元')
confirm = input('是否确认退票(Y/N):')
if confirm == 'Y':
# 增加余票数量
ticket_info[train_no][seat_level] += num
# 更新购票信息
user_info[username]['tickets'][train_no][seat_level] -= num
print('退票成功')
else:
print('已取消退票')
# 主函数
def main():
username = login()
if not username:
return
while True:
print('请选择您要进行的操作:')
print('1. 查询车票')
print('2. 购买车票')
print('3. 查询购票信息')
print('4. 退票')
print('5. 退出系统')
choice = input()
if choice == '1':
query_ticket()
elif choice == '2':
buy_ticket(username)
elif choice == '3':
query_order(username)
elif choice == '4':
refund_ticket(username)
elif choice == '5':
break
else:
print('输入错误,请重新输入')
if __name__ == '__main__':
main()
```
这个系统实现了登录、查询车票、购买车票、查询购票信息、退票这几个功能,你可以根据自己的需要进行修改和完善。
阅读全文