练习题:学籍注册程序 需求:
1. 要求⽤户输⼊姓名、年龄、⼿机号、身份证号、所选课程,然后为学员完成注册
2. ⼿机号、身份证号唯⼀
3. 可选的课程只能从Python、Linux、⽹络安全、前端、数据分析 这⼏⻔⾥选
4. 学员信息存⼊⽂件
# 1. 数据存到文件里的格式
# 姓名,年龄,手机,身份证,学科
# 2.确保手机、身份证,在文件里同样的数据只有一条。手机号和身份证号加载到内存里,
# 可以从文件用户一输入相关列,就到列表里检查。
# 3.选学科时给用户列出来选择,供选择
db_file = "stu_data.db"
def validate_phone(num):
if not num.isdigit():
exit("必须输入数字")
if len(num) != 11:
exit("必须11位")
return True
# 注册学籍信息,将所有内容加载到内存中,也就是存到一个字典里
def register_api(): # 注册的程序,并将注册好的信息存到字典里,并将字典作为函数的返回值
stu_data = {}
print("欢迎来到路飞学城")
print("请完成注册")
name = input("姓名:").strip()
age = input("年龄:").strip()
phone = input("手机号:").strip()
if phone in phone_list:
exit("该手机号已被注册")
validate_phone(phone)
id_number = input("身份证号:").strip()
if id_number in id_list:
exit("该身份已被注册")
course_list = ["python开发", "Linux云计算", "网络安全", "数据分析&及其学习", "前端开发"]
for index, course in enumerate(course_list):
print(f"{index}.{course}")
selected_course = input("选择想学的课程:").strip()
if selected_course.isdigit():
selected_course = int(selected_course)
if 0 <= selected_course < len(course_list):
picked_course = course_list[selected_course]
else:
exit("不合法")
else:
exit("不合法")
stu_data["name"] = name
stu_data["age"] = age
stu_data["phone"] = phone
stu_data["id_number"] = id_number
stu_data["picked_course"] = picked_course
return stu_data
# 将注册填写的信息,也就是得到的字典加载到文件中
def commit_to_db(filename,stu_data):
f = open(filename,"a")
row = f"{stu_data["name"]},{stu_data["age"]},{stu_data["phone"]},{stu_data["id_number"]},{stu_data["picked_course"]}\n"
f.write(row)
f.close()
# 提取出来文件中的电话和身份信息为两个列表,以供在输入身份和电话信息时进行查询
def load_validate_data(filename):
f = open(filename)
phone_list = []
id_list = []
for line in f:
line = line.split(",")
phone_num = line[2]
id_num = line [3]
phone_list.append(phone_num)
id_list.append(id_num)
return phone_list,id_list
phone_list,id_list = load_validate_data(db_file)
stu_data = register_api()
print(stu_data)
commit_to_db(db_file,stu_data)