需求如下:
1. 要求用户输入姓名、年龄、手机号、身份证号、所选课程,然后为学员完成注册。
2. 手机号、身份证号要保证唯一。
3. 可选课程只能从Python、Linux、网络安全、前端、数据分析这几门里进行选择。
4. 当用户输入错误的手机号、身份证号或课程时,允许用户继续输入。
5. 将注册的学员信息存入文件。
代码如下:
# 学生学籍注册
# 存储学生信息文件
db_file = 'student_info.txt'
# 校验手机号
def check_phone_number(registered_data, phone_number):
if phone_number in registered_data:
print('手机号已存在,请重新输入!')
return True
return False
# 校验身份证号
def check_id_number(registered_data, id_number):
if id_number in registered_data:
print('身份证号已存在,请重新输入!')
return True
return False
# 校验课程
def check_course(course):
if course in ['Python', 'Linux', '网络安全', '前端', '数据分析']:
return True
print('你输入的课程有误,只能从[Python、Linux、网络安全、前端、数据分析]中选择!')
return False
# 将学生信息写入文件
def commit_to_db(file_name, student_info):
f = open(file_name, 'a')
# 将学生信息写入文件
f.write(student_info)
f.close()
# 读取已注册学生数据
def load_registered_data(file_name):
# 读取已注册数据
f = open(file_name, 'r+')
# 已注册学生信息
registered_phone_list = []
registered_id_list = []
for line in f:
line_list = line.strip().split(',')
registered_phone_list.append(line_list[2])
registered_id_list.append(line_list[3])
return registered_phone_list, registered_id_list
# 注册
def register():
# 注册次数
register_count = 0
# 循环查询
while True:
if register_count != 0:
is_keep_search = input('是否继续注册:')
if is_keep_search == 'N' or is_keep_search == 'n':
print(f'注册结束!共注册{register_count}名学生!')
break
# 读取已注册数据
registered_phone_list, registered_id_list = load_registered_data(db_file)
# 注册新的学生
name = input('请输入学生姓名:')
age = input('请输入学生年龄:')
while True:
input_phone_number = input('请输入学生手机号:')
# 校验手机号
is_exist_phone_number = check_phone_number(registered_phone_list, input_phone_number)
# 如果不存在相同的手机号,退出循环
if not is_exist_phone_number:
break
while True:
input_id_number = input('请输入学生身份证号:')
# 校验身份证号
is_exist_id_number = check_id_number(registered_id_list, input_id_number)
# 如果不存在相同的身份证号,退出循环
if not is_exist_id_number:
break
while True:
input_course = input('请输入学生所选课程:')
# 校验课程
is_valid_course = check_course(input_course)
# 如果课程合法,退出循环
if is_valid_course:
break
# 记录注册学生信息
student_info = name + ',' + age + ',' + input_phone_number + ',' + input_id_number + ',' + input_course + '\n'
# 将学生信息写入文件
commit_to_db(db_file, student_info)
# 学生记录数加1
register_count += 1
# 注册
register()
运行如下:
请输入学生姓名:Jobs
请输入学生年龄:40
请输入学生手机号:137
手机号已存在,请重新输入!
请输入学生手机号:1567
请输入学生身份证号:11011
身份证号已存在,请重新输入!
请输入学生身份证号:16011
请输入学生所选课程:Linux
是否继续注册:y
请输入学生姓名:Tim
请输入学生年龄:35
请输入学生手机号:189
请输入学生身份证号:23011
请输入学生所选课程:Py
你输入的课程有误,只能从[Python、Linux、网络安全、前端、数据分析]中选择!
请输入学生所选课程:Python
是否继续注册:n
注册结束!共注册2名学生!
保存到文件的内容如下:
student_info .txt
jack,22,137,371523,Linux
rose,21,138,11011,Python
tom,5,139,11012,网络安全
jerry,3,140,11015,网络安全
amy,18,123,11018,数据分析
alex,19,156,12011,Python
Luck,21,144,13011,Linux
Jobs,40,1567,16011,Linux
Tim,35,189,23011,Python
Have fun!