'''
以特定模式打开文件,w(写入文本,会覆盖原有的内容),r(读取文本内容、、前提是文本存在,否则报错)
r+(读写文本),a(写入文本,追加模式,不会覆盖原有内容)
with open('file','模式')
del line[数字] 删除列表特定位置元素
line.append(元素) 列表添加新元素
line.insert(数字,元素) 向特定位置添加新元素,该位置后的元素索引右移
'''
import os
import re
print(' 欢迎来到学生信息管理系统 ')
print('1: 添加学生信息')
print('2: 删除学生信息')
print('3: 修改学生信息')
print('4: 查询学生信息')
# 判读学生信息是否存在
def judge(judge_studentname):
k = False
# 遍历文档内容,读取文件,判读学生信息是否存在
with open('student.txt','r') as file:
text=file.readlines()
for line in text:
line = list(eval(line))
if line[0] == judge_studentname:
k=True
# 成员不存在返回值为True
if not k:
return True
# 成员存在返回值为 False
return False
# 添加学生信息
def newstudent():
# 空列表存储新学生信息
new_studet = []
newstudent_name = input('姓名')
# 正则表达式,re.compile() 判断文本内容是否包含特定内容,包含为真,不包含为假
judgement_name = re.compile('[0-9]+|[a-z]+|[A-Z]+').findall(newstudent_name)
if judgement_name:
while True:
print('姓名输入有误')
newstudent_name = input('请重新输入')
again_judgement_name = re.compile('[0-9]+|[a-z]+|[A-Z]+').findall(newstudent_name)
if not again_judgement_name:
print('输入正确')
break
# 添加学生名字于列表中
new_studet.append(newstudent_name)
# 学生学号
newstudent_num = input('学号')
# 正则表达式 判断学号
judgement_num = re.match(r'^171105010[1-9]\d{1}$', newstudent_num)
if not judgement_num:
while True:
print('学号输入有误')
newstudent_num = input('请重新输入')
judgement = re.match(r'^171105010[1-9]\d{1}$', newstudent_num)
if judgement:
print('输入正确')
break
new_studet.append(newstudent_num)
# 学生英语成绩
newstudent_English = input('英语成绩')
judgement_English = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_English)
if judgement_English or int(newstudent_English) > 150:
while True:
print('英语成绩输入有误')
newstudent_English = input('请重新输入:')
judgement_English = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_English)
if not judgement_English or int(newstudent_English) <150 or int(newstudent_English) ==150:
print('输入正确')
break
new_studet.append(newstudent_English)
# 学生数学成绩
newstudent_Math = input('数学成绩')
judgement_Math = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Math)
if judgement_Math or int(newstudent_Math) > 150:
while True:
print('数学成绩输入有误')
newstudent_Math = input('请重新输入:')
judgement_Math = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Math)
if not judgement_Math or int(newstudent_Math) <150 or int(newstudent_Math) ==150:
print('输入正确')
break
new_studet.append(newstudent_Math)
newstudent_Chinese = input('语文成绩')
judgement_Chinese = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Chinese)
if judgement_Chinese or int(newstudent_Chinese) > 150:
while True:
print('语文成绩输入有误')
newstudent_Chinese = input('请重新输入:')
judgement_Chinese = re.compile('[a-z]+ | [A-Z]+').findall(newstudent_Chinese)
if not judgement_Chinese or int(newstudent_Chinese) <150 or int(newstudent_Chinese) ==150:
print('输入正确')
break
new_studet.append(newstudent_Chinese)
with open('student.txt','a') as file:
file.writelines('{}\n'.format(new_studet))
return 0
# 删除学生信息
def deletestudent(del_studentname):
#删除学生信息名字
# 调用判断成员是否存在函数
if judge(del_studentname):
print('该成员不存在')
return 0
#以只读模式打开student.txt
with open('student.txt','r+') as file:
#逐行读取文档内容
text=file.readlines()
# 以读写模式打开student.txt,该模式写入文本,但会覆盖文档的原有内容
with open('student.txt','w') as file:
#逐行遍历文档内容
for line in text:
# 字符串转化为列表
line=list(eval(line))
# 判断每行信息是否为输入用户的信息
if line[0] != del_studentname:
# 将每行不是删除用户的信息写入文档中,进而达到删除学员的目的。
file.writelines('{}\n'.format(line))
print('删除成功')
return 0
# 修改学生信息
def changestudent(changestudent_name):
# 调用判断成员是否存在函数
judge(changestudent_name)
if judge(changestudent_name):
print('该成员不存在')
return 0
with open('student.txt','r+') as file:
text = file.readlines()
for line in text:
line = list(eval(line))
if line[0] == changestudent_name:
# 将要修改的学生信息赋值
change_line = line
break
while True:
print('a:修改英语成绩')
print('b:修改数学成绩')
print('c:修改语文成绩')
print('d:修改学生学号')
print('e:退出修改学员信息')
change_student = input('请输入修改操作')
if change_student == 'a':
new_English = input('新英语成绩')
del change_line[2]
change_line.insert(2,new_English)
with open('student.txt','w') as file:
for line in text:
line = list(eval(line))
if line[0] != changestudent_name:
file.writelines('{}\n'.format(line))
with open('student.txt','a') as file:
print('哈哈哈哈')
change_line = str(change_line)
file.write('{}\n'.format(change_line))
print('英语成绩已更新')
continue
elif change_student == 'b':
new_math = input('新数学成绩')
del change_line[3]
change_line.insert(3, new_math)
with open('student.txt', 'w') as file:
for line in text:
line = list(eval(line))
if line[0] != changestudent_name:
file.writelines('{}\n'.format(line))
with open('student.txt', 'a') as file:
change_line = str(change_line)
file.write('{}\n'.format(change_line))
print('数学成绩已更新')
continue
elif change_student == 'c':
new_Chinese = input('新语文成绩')
del change_line[4]
change_line.insert(4, new_Chinese)
with open('student.txt', 'w') as file:
for line in text:
line = list(eval(line))
if line[0] != changestudent_name:
file.writelines('{}\n'.format(line))
with open('student.txt', 'a') as file:
file.write('{}\n'.format(change_line))
print('语文成绩已更新')
continue
elif change_student == 'd':
new_num = input('新学号')
del change_line[1]
change_line.insert(1, new_num)
with open('student.txt', 'w') as file:
for line in text:
line = list(eval(line))
if line[0] != changestudent_name:
line = str(line)
file.writelines('{}\n'.format(line))
with open('student.txt', 'a') as file:
change_line = str(change_line)
file.write('{}\n'.format(change_line))
print('学号已更新')
continue
elif change_student == 'e':
print('退出修改学员信息')
return 0
# 查询学生信息
def querystudent():
with open('student.txt','a+') as file:
pass
with open('student.txt','r') as file:
text = file.read()
print(text.rstrip())
while True:
x = input('请选择增删改查操作: ')
if x == '1':
print('添加学生信息')
newstudent()
continue
elif x == '2':
print('删除学生信息')
del_studentname = input('请输入名字: ')
judge_del = input('是否删除{}y/n:'.format(del_studentname))
if judge_del == 'y':
deletestudent(del_studentname)
continue
elif judge_del == 'n':
print('取消删除成功')
continue
else:
print('输入有误')
while True:
judge_del = input('是否删除{}y/n:'.format(del_studentname))
if judge_del == 'y':
deletestudent(del_studentname)
break
elif judge_del == 'n':
print('取消删除成功')
break
else:
print('输入有误')
elif x == '3':
print('修改学生信息')
changestudent_name = input('请输入名字')
changestudent(changestudent_name)
continue
elif x == '4':
print('查询学生信息')
querystudent()
continue
elif x == '退出':
exit()
else:
print('输入有误')
学生信息管理系统
最新推荐文章于 2020-09-27 14:46:09 发布