# 第7章：活动字典与报名、签到集合
# 教学虚构数据；学号是字符串，同名不等于同一人。
members = {
    "20260001": "陈晨",
    "20260002": "陈晨",
    "20260003": "王宁",
    "20260004": "李悦",
}
activity = {"code": "EV-0021", "name": "Python体验营", "capacity": 2}
registrations = set()
checkins = set()

print(f"活动：{activity['code']} {activity['name']}")
for sequence in range(3):
    student_id = input("报名学号：").strip()
    if student_id not in members:
        print("报名失败：学号不存在")
    elif student_id in registrations:
        print("报名失败：请勿重复报名")
    elif len(registrations) >= activity["capacity"]:
        print("报名失败：名额已满")
    else:
        registrations.add(student_id)
        print(f"报名成功：{student_id} {members[student_id]}")

for sequence in range(2):
    student_id = input("签到学号：").strip()
    if student_id not in members:
        print("签到失败：学号不存在")
    elif student_id not in registrations:
        print("签到失败：请先报名")
    elif student_id in checkins:
        print("签到失败：请勿重复签到")
    else:
        checkins.add(student_id)
        print(f"签到成功：{student_id} {members[student_id]}")

print(f"报名人数：{len(registrations)}")
print(f"签到人数：{len(checkins)}")
print(f"剩余名额：{activity['capacity'] - len(registrations)}")
print(f"报名学号：{sorted(registrations)}")
print(f"签到学号：{sorted(checkins)}")
