You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import os
soldier_scores = []
DATA_FILE = "soldier_scores.txt"
def load_data():
global soldier_scores
if not os.path.exists(DATA_FILE):
return False
try:
with open(DATA_FILE, 'r', encoding='utf-8') as f:
for line in f.readlines():
line = line.strip()
if line:
name, three_km, push_up = line.split(',')
soldier_scores.append({
'name': name,
'3km': three_km,
'push_up': int(push_up)
})
return True
except Exception as e:
print(f"数据加载失败:{e}")
return False
def input_score():
global soldier_scores
while True:
name = input("请输入士兵姓名(输入 qwer 退出录入):")
if name.lower() == 'qwer':
break
three_km = input("请输入3公里成绩格式 分:秒,如 12:30")
try:
push_up = int(input("请输入单杠一成绩(个数):"))
except ValueError:
print("单杠一成绩必须是整数,请重新录入!")
continue
soldier_scores.append({
'name': name,
'3km': three_km,
'push_up': push_up
})
print(f"{name} 的成绩录入成功!")
def search_and_rank():
if not soldier_scores:
print("暂无成绩数据,请先录入!")
return
while True:
choice = input("\n查询功能选择1-按姓名查询 2-单杠一排名 3-返回主菜单\n请输入数字:")
if choice == '1':
target_name = input("请输入要查询的士兵姓名:")
found = False
for score in soldier_scores:
if score['name'] == target_name:
print(f"\n{target_name} 训练成绩】")
print(f"3公里{score['3km']}")
print(f"单杠一:{score['push_up']}")
found = True
break
if not found:
print(f"未找到 {target_name} 的成绩数据!")
elif choice == '2':
sorted_list = sorted(soldier_scores, key=lambda x: x['push_up'], reverse=True)
print("\n【单杠一成绩排名】")
print("排名\t姓名\t\t单杠一个数")
print("-" * 30)
for idx, score in enumerate(sorted_list, 1):
print(f"{idx}\t{score['name']}\t\t{score['push_up']}")
elif choice == '3':
break
else:
print("输入错误,请选择 1/2/3")
def save_data():
if not soldier_scores:
return "暂无数据可保存!"
try:
with open(DATA_FILE, 'w', encoding='utf-8') as f:
for score in soldier_scores:
line = f"{score['name']},{score['3km']},{score['push_up']}\n"
f.write(line)
return "数据已成功保存到 soldier_scores.txt"
except Exception as e:
return f"数据保存失败:{e}"
def main():
load_result = load_data()
print(f"数据加载:{'成功' if load_result else '无历史数据'}")
print("\n===== 士兵训练成绩管理系统 =====")
while True:
print("\n主菜单:")
print("1-录入训练成绩")
print("2-查询与排名统计")
print("3-保存数据到文件")
print("4-退出系统")
choice = input("请输入功能编号:")
if choice == '1':
input_score()
elif choice == '2':
search_and_rank()
elif choice == '3':
print(save_data())
elif choice == '4':
print("感谢使用,再见!")
break
else:
print("输入错误,请选择 1-4 的数字!")
if __name__ == "__main__":
main()