能否给我的代码每一行加上注释解释每一行的意思

def input_info():
infile_info = open('infile.txt', 'a', encoding='utf8') # 以追加的方式向文件中写入数据,如果文件不存在就创建一个文件
flag = 'y'
# 向文件中录入学生信息,每一个学生的信息单独占一行
while flag == 'y' or flag == 'Y':
stu_id = input("请输入学生学号:")
stu_name = input("请输入学生姓名:")
stu_sex = input("请输入学生的性别:")
stu_jiguan = input("请输入你的籍贯:")
stu_shengri = input("请输入你的生日:")
stu_score_eng = input("请输入学生英语成绩:")
stu_score_py = input("请输入学生计算机成绩:")
stu_score_math = input("请输入学生数学成绩:")
stu_sum_score = int(stu_score_eng) + int(stu_score_py) + int(stu_score_math) #三科成绩相加的总和
stu_info = stu_id + '\t' + stu_name + '\t' + stu_sex + '\t' + stu_jiguan + '\t' + stu_shengri + '\t' + stu_score_eng + '\t' + stu_score_py + '\t' +
stu_score_math + '\t' + str(stu_sum_score) + '\n'
infile_info.write(stu_info)
flag = input("是否继续添加学生信息?y/n")
print("信息录入完毕!!!")
infile_info.close()

查询学生信息

查询时分为按学号和按姓名查找两种

def find_info():
flag = 'y'
while flag == 'y' or flag == 'Y':
n = 0
m = 0 # 定义m,n是为了用作判断文件中是否有此人信息的标记
findfile_info = open('infile.txt', 'r', encoding='utf8') # 以可读方式打开文件
line_info = findfile_info.readlines() #读取文本文档中的数据
find_nid = input("按学号查找请输入1,按姓名查找请输入2:") # 查询方式分为按学号和按姓名
if find_nid == '1':
find_id = input('请输入学生学号:')
for line in line_info: #遍历列表
if find_id in line: #使用for循环,查找文本文档中相应的学生学号
print(line)
n = n + 1
if n == 0:
print("没有查询到学生信息,无数据显示!!!")
if find_nid == '2':
find_name = input('请输入学生姓名:')
for line in line_info: #遍历列表
if find_name in line: #使用for循环,查找文本文档中相应的学生姓名
print(line)
m = m + 1
if m == 0:
print("没有查询到学生信息,无数据显示!!!")
findfile_info.close()
flag = input("是否继续查询学生信息?y/n")

删除学生信息

输入学号进行查找,查找到学生信息之后,对学生信息进行删除

def del_info():
flag = 'y'
while flag == 'y' or flag == 'Y':
n = 0 # 用以查无此人时的标记
defile_info1 = open('infile.txt', 'r', encoding='utf8') # 以可读方式打开文件
line_info = defile_info1.readlines() # 将文件的信息按行全部读取出来,此时line_info是一个列表,每一行是一个元素
defile_info2 = open('infile.txt', 'w', encoding='utf8') # 以可写方式打开文件,用来将删除后的信息写入文件
del_id = input("请输入要删除的学生的学号:")
for line in line_info: # 遍历列表,如果要删除的学生学号在文件存储的信息中,就将后面的信息向前移动覆盖这条信息
if del_id in line: #使用for循环,查找文本文档中相应的学号
continue
defile_info2.write(line)
n = n + 1
if n == len(line_info):
print("无此学生信息,请核对后再操作!!!")
else:
print("学号为{0}的学生信息已被删除!!!".format(del_id))
defile_info1.close()
defile_info2.close()
flag = input("是否继续删除学习信息?y/n")

修改学生信息

输入学号后,查询到学生信息之后,对学生信息进行修改

def mod_info():
flag = 'y'
while flag == 'y' or flag == 'Y':
while flag == 'y' or flag == 'Y':
n = 0 # 用以查无此人时的标记
mod_id = input("请输入要修改的学生学号:")
modfile_file1 = open('infile.txt', 'r', encoding='utf8') # 以可读方式打开文件,读取到line_info中,每一行就是一个列表的元素
line_info = modfile_file1.readlines()
modfile_file2 = open('infile.txt', 'w', encoding='utf8') # 用以写入修改后的数据
for line in line_info: # 遍历列表
if mod_id in line: # 如果修改的学生信息存在,就重新写入学生信息
print("已找到学生,请修改信息!")
mod_id = input("请输入学生学号:")
mod_name = input("请输入姓名:")
mod_sex = input("请输入学生的性别:")
mod_jiguan = input("请输入你的籍贯:")
mod_shengri = input("请输入你的生日:")
mod_score_eng = input("请输入英语成绩:")
mod_score_py = input("请输入计算机成绩:")
mod_score_math = input("请输入数学成绩:")
mod_sum_score = int(mod_score_eng) + int(mod_score_py) + int(mod_score_math)
mod_stu_info = mod_id + '\t' + mod_name + '\t' + mod_sex + '\t' + mod_jiguan + '\t' + mod_shengri + '\t' + mod_score_eng + '\t' + mod_score_py + '\t' +
mod_score_math + '\t' + str(mod_sum_score) + '\n'
modfile_file2.write(mod_stu_info)
print("修改成功!!!")
continue
modfile_file2.write(line) # 由于w方式打开的文件重新后会覆盖原有数据,所以需要将原有数据写入
n = n + 1
if n == len(line_info):
print("无此学生信息,请核对后再操作!!!")
else:
print("学号为{0}的学生信息已修改!!!".format(mod_id))
modfile_file1.close()
modfile_file2.close()
flag = input("是否继续修改学习信息?y/n")

显示学生信息

def show_info():
print("学号", end='\t\t')
print("姓名", end='\t\t')
print("姓别", end='\t\t')
print("籍贯", end='\t\t')
print("生日", end='\t\t')
print("英语成绩", end='\t\t')
print("计算机成绩", end='\t\t')
print("数学成绩", end='\t\t')
print("总成绩", end='\t\t')
print('\n')
showfile_info = open('infile.txt', 'r', encoding='utf8')
line_info = showfile_info.readlines()
for line in line_info: # 遍历列表,输出各个元素
print(line)
showfile_info.close()

def sta_info():
flag = 'y'
while flag == 'y' or flag == 'Y':
print('欢迎使用统计分系统!')
print('以下为可用功能:')
print('1,查询所有学生的各科总成绩')
print('2,查询各科的平均成绩')
print('3,查询各科的及格率')
print('5,查询各科的总成绩')
print('4,退出分系统')
a = input('请选择要使用的功能:')
if a == '1':
sta_info1 = open('infile.txt', 'r', encoding='utf8') #以可读方式打开文件,读取到line_info中,每一行就是一个列表的元素
list6 = sta_info1.readlines()
for i in range(len(list6)):
b = list6[i] # 依次提出一个学生的信息
newlist = b.split() # 将一个学生的信息进行切片
c = int(newlist[5]) + int(newlist[6]) + int(newlist[7]) # 将此学生代表成绩的数据提取出来转化成整型相加得出总成绩
print(newlist[1], '的成绩为:', c) # 输出结果
flag = input('是否返回菜单界面?输入y(是)/n(否)')
if flag != 'y':
print('感谢使用!')
elif a == '2':
sta_info2 = open('infile.txt', 'r', encoding='utf8') #以可读方式打开文件夹读取到line_info中,每一行就是一个列表的元素
list7 = sta_info2.readlines()
newlist2 = ['英语平均成绩为:', '计算机平均成绩为:', '数学平均成绩为:']
n = 5 # 定义变量n是每次外层循环结束后,内层循环所取的下标后移一位,取下一科的成绩
for m in range(3): # 成绩只有三个数据所以循环三次
fin_sco = 0 # 定义总成绩为0,每次外循环结束重新赋值
for i in range(len(list7)): # 通过内循环把每一个学生的单科成绩提取出来
d = list7[i]
newlist1 = d.split()
e = int(newlist1[n]) # 将提取出的成绩转化为整型并加进总成绩
fin_sco += e
n += 1
print(newlist2[m], '%.2f' % (fin_sco / len(list7))) # 循环输出newlist2的内容及对应的成绩,并保留两位小数
flag = input('是否返回菜单界面?输入y(是)/n(否)')
if flag!= 'y':
print('感谢使用!')
elif a == '3':
sta_info3 = open('infile.txt', 'r', encoding='utf8') #以可读方式打开文件夹读取到line_info中,每一行就是一个列表的元素
list8 = sta_info3.readlines()
newlist3 = ['英语平均成绩为:', '计算机平均成绩为:', '数学平均成绩为:']
n = 5 # 定义变量n是每次外层循环结束后,内层循环所取的下标后移一位,取下一科的成绩
for m in range(3):
fin_pas = 0
for i in range(len(list8)): # 将每一个学生的信息都循环提取
f = list8[i]
newlist4 = f.split()
if int(newlist4[n]) >= 60: # 本科目分数大于等于60则计数变量加一,结果计算时使用计数变量除以总人数即可
fin_pas += 1
n += 1
print(newlist3[m], '%.2f' % (fin_pas / len(list8) * 100), '%') # 输出及格率并保留两位小数
flag = input('是否返回菜单界面?输入y(是)/n(否)')
if flag != 'y':
print('感谢使用!')
elif a == '5':
sta_info5 = open('infile.txt', 'r', encoding='utf8') #以可读方式打开文件夹读取到line_info中,每一行就是一个列表的元素
list9 = sta_info5.readlines()
newlist5= ['英语总成绩成绩为:', '计算机总成绩成绩为:', '数学总成绩成绩为:']
n=5 # 定义变量n是每次外层循环结束后,内层循环所取的下标后移一位,取下一科的成绩
for m in range(3): # 成绩只有三个数据所以循环三次
fin_abc = 0
for i in range(len(list9)): # 通过内循环把每一个学生的单科成绩提取出来
d = list9[i]
newlist1 = d.split()
e = int(newlist1[n]) # 将提取出的成绩转化为整型并加进总成绩
fin_abc += e
n += 1
print(newlist5[m],fin_abc) #循环输出newlist2的内容及对应的成绩
elif a == '4':
print('感谢使用!')
flag = 'n'

def show_choose():
print("==========================学生信息管理系统==========================")
print()
print("-----------------------------功能菜单------------------------------")
print()
print(" 1.录入学生信息")
print(" 2.查找学生信息")
print(" 3.删除学生信息")
print(" 4.修改学生信息")
print(" 5.显示学生信息")
print(" 6.查询学生成绩")
print(" 0.退出信息管理系统")
print()
print("------------------------------------------------------------------")

def main():
show_choose()
choose_menu = input("请选择:")
while choose_menu != '0':
if choose_menu == '1':
input_info()
if choose_menu == '2':
find_info()
if choose_menu == '3':
del_info()
if choose_menu == '4':
mod_info()
if choose_menu == '5':
show_info()
if choose_menu == '6':
sta_info()
choose_menu = input("请选择:")

print("欢迎您再次使用!!!")

main()