# 决赛叫号系统
def read_teams(file_path): # 读取txt文件,每个参赛队伍的信息保存为一个字典对象,添加到列表teams中
teams = []
if os.path.exists(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
i = 0
for line in f:
if i > 0:
data = line.strip().split('#')
team = {
'id': int(data[0].strip()),
'name': data[1].strip(),
'school': data[2].strip(),
'category': data[3].strip(),
'members': data[4].strip(),
'adviser': data[5].strip()
}
teams.append(team)
i += 1
return teams
def assign_rooms(teams): # teams 中的参赛队伍按赛事类别分配,rooms存放每个赛事类别对应的队伍
rooms = {}
for team in teams:
category = team['category']
if category not in rooms:
rooms[category] = {
'current_index': 0,
'queue': [] # 候场队列
}
rooms[category]['queue'].append(team)
return rooms
def assign_rooms1(rooms): # 列表存放分好类别的参赛队
rooms1 = []
for category in rooms:
rooms1.append(rooms[category])
return rooms1
def print_menu(): # 叫号系统菜单
print('=================决赛叫号系统=================')
print('1. 显示各赛事类别现场情况')
print('2. 显示决赛室现场情况')
print('3. 进行叫号')
print('0. 退出程序')
print('=============================================')
def call_numbers():
file_path = 'teams_exists.txt'
teams = read_teams(file_path)
rooms = assign_rooms(teams)
rooms1 = assign_rooms1(rooms)
while True:
print_menu()
choice = input('请输入要执行的操作序号(0-3):')
if choice == '1': # 显示各决赛室情况
for category in rooms:
room = rooms[category]
print(f'赛事类别:{category}')
print(f'等待进场队伍:{[team["name"] for team in room["queue"]]}')
print('--------------------------')
elif choice == '2':
print("请输入您想要查看的决赛室情况(1-9):")
key = input()
if key == '1':
print(rooms1[0]['queue'], '\n', rooms1[9]['queue'], '\n', rooms1[18]['queue'], '\n', rooms1[27]['queue'])
if key == '2':
print(rooms1[1]['queue'], '\n', rooms1[10]['queue'], '\n', rooms1[19]['queue'], '\n', rooms1[28]['queue'])
if key == '3':
print(rooms1[2]['queue'], '\n', rooms1[11]['queue'], '\n', rooms1[20]['queue'], '\n', rooms1[29]['queue'])
if key == '4':
print(rooms1[3]['queue'], '\n', rooms1[12]['queue'], '\n', rooms1[21]['queue'], '\n', rooms1[30]['queue'])
if key == '5':
print(rooms1[4]['queue'], '\n', rooms1[13]['queue'], '\n', rooms1[22]['queue'])
if key == '6':
print(rooms1[5]['queue'], '\n', rooms1[14]['queue'], '\n', rooms1[23]['queue'])
if key == '7':
print(rooms1[6]['queue'], '\n', rooms1[15]['queue'], '\n', rooms1[24]['queue'])
if key == '8':
print(rooms1[7]['queue'], '\n', rooms1[16]['queue'], '\n', rooms1[25]['queue'])
if key == '9':
print(rooms1[8]['queue'], '\n', rooms1[17]['queue'], '\n', rooms1[26]['queue'])
elif choice == '3': # 叫号
category = input('请输入要进行叫号的赛事类别:')
if category not in rooms:
print('输入错误,请重新输入!')
continue
room = rooms[category]
count = 0
while len(room['queue']):
count += 1
if count > len(room['queue']):
print('叫号完毕。')
break
else:
room['current_index'] += 1
next_team = room['queue'][count - 1]
print(f"No{room['current_index']}. 请{next_team['name']}代表{next_team['school']}的参赛队伍进入赛场。")
time.sleep(random.uniform(0.5, 1))
elif choice == '0':
print('程序已退出。')
break
else:
print('输入错误,请重新输入!')
决赛叫号系统
最新推荐文章于 2024-09-29 23:16:17 发布
该代码实现了一个决赛叫号系统,它能读取TXT文件中的参赛队伍信息,按类别分配到不同的决赛室,并提供菜单供用户选择查看各决赛室情况或进行叫号操作。系统支持显示各赛事类别和决赛室的现场情况,以及进行实时叫号功能。
摘要由CSDN通过智能技术生成