Python学生成绩管理系统
这是我写的第一个PY代码,先备存,方便以后查看
import os.path
# 创建一个学生列表,存放学生信息,每个元素都是字典类型
studentsList = []
def file11(no):# 文本读写相关操作代码
try:
with open(fn,"r",encoding='utf-8') as f:
lines = f.read().splitlines() #按行遍历整个文件,并将每一行的换行符去掉
for i in lines: #遍历每行内容
x=i.split(",") #用逗号来切割元素
#print(x,x[0])
if x[0]==no:
return True
return False
except:
#使用学生信息,创建学生对象 学生类(参数)
#s1 = S1(sno1, name1, age1)
#将学生对象添加到字典中
#student_list.append({"id":s1.sno,"name":s1.name,"age":s1.age})
#将列表转为字符串后再写入文本文件中存储起来,'a'表示追加模式。如果文件不存在,则创建文件。如果文件已存在,则将新内容添加到文件末尾
with open("ss.txt","a",encoding="utf-8") as f:
f.writelines(str("")+"\n")#必须要把结果转换为字符串后在写入
def insert():# 添加学生信息,然后写入到文本中
while True:
flagStudentId = 0 # 标记学生学号是否重复,0表示没有重复,1表示重复
sn1= str(input('请输入学生ID(如1001):'))
#判断学生信息是否存在, 学号是否存在. 判断字典的key是否存在
for i in studentsList:
if i['studentId'] == sn1:
flagStudentId = 1 # 有重复学号,修改标记
if flagStudentId==1:
print('此学号已存在,请重新输入!')
else:
name1 = input('姓名:')
age1 = input('成绩:')
# 将上面数据放到字典当中,方便管理
student = {
'studentId': sn1,
'name': name1,
'age': age1,
}
studentsList.append(student) # 将学生信息添加到studentsList中
print(f"{student}添加成功")
save() # 退出目录前,将信息保存到文件当中
answer = input('是否继续添加学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def delete():
while True:
student_id = input('请输入需要删除的学生ID:')
if student_id != '': #判断学生ID不为空
flagStudentId = 0 # 标记学生学号是否存在
for stu in studentsList: #遍历所有学生信息
if str(stu['studentId']) == student_id:
flagStudentId = 1
studentsList.remove(stu)
print("删除成功!")
break
else:
flagStudentId = 0
save()#调用save()函数,保存除需要删除的学生ID那一条信息外的所有信息到文本文件中
if flagStudentId==0:
print("此ID不存在,无法删除")
else:
print("此ID为空,无法删除")
answer = input('是否继续删除学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def update():
while True:
student_id = input('请输入要修改资料的学生ID:')
if student_id != '': #判断学生ID不为空
flagStudentId = 0 # 标记学生学号是否存在
for stu in studentsList: #遍历所有学生信息
if str(stu['studentId']) == student_id:
flagStudentId = 1
name1 = input('姓名:')
age1 = input('成绩:')
stu['name'] =name1
stu['age'] =age1
print("修改成功!")
break
else:
flagStudentId = 0
save()#调用save()函数,保存除需要删除的学生ID那一条信息外的所有信息到文本文件中
if flagStudentId==0:
print("此ID不存在,无法修改")
else:
print("此ID为空,无法修改")
answer = input('是否继续修改学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def check():
while True:
student_id = input('请输入需要查询的学生ID:')
if student_id != '': #判断学生ID不为空
flagStudentId = 0 # 标记学生学号是否存在
for stu in studentsList: #遍历所有学生信息
if str(stu['studentId']) == student_id:
flagStudentId = 1
print(f"查询成功,学号:{stu['studentId']},姓名:{stu['name']},成绩:{stu['age']}")
break
else:
flagStudentId = 0
if flagStudentId==0:
print("此ID不存在,无法查询")
else:
print("此ID为空,无法查询")
answer = input('是否继续查询学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def show():
print('[显示学生] 开始!')
print('学号\t\t 姓名\t\t 成绩')
for s in studentsList: # 循环打印学生信息
print(f"{s['studentId']}\t\t {s['name']}\t\t {s['age']}")
print(f'[显示学生] 结束, 总共显示了{len(studentsList)}个学生信息!')
def save():
with open('ss.txt', 'w', encoding = 'utf8') as f: # 打开文件,f为文件对象,encoding是指定编码格式为utf8
for s in studentsList:
# 存到文件中的时候,每个信息间隔一个逗号,方便后面取出
f.write(f"{s['studentId']},{s['name']},{s['age']}\n")
def load():
if os.path.exists("ss.txt"): # 若是存在保存学生信息的文件
with open('ss.txt',"r",encoding="utf-8") as f:
for line in f: # 每次读取一行
# 针对每一行数据,按水平制表符划分,并存入到列表当中
# 切分前先将每一行数据后面的换行符去掉,strip()此方法可以将字符串首尾的空白符去掉(空白符包括:换行、制表符、空格等)
line = line.strip() #此方法可以将字符串首尾的空白符去掉
alist = line.split(',') # 按逗号切分字符串,并存入到列表中
if len(alist) != 3: # 检测数据是否划分正确
return
print('文件内容格式错误!')
student = {
'studentId': alist[0],
'name': alist[1],
'age': alist[2],
}
studentsList.append(student)
else:
print('暂无学生数据!!!')
def meun(): #打印目录函数
print('================学生信息管理功能================')
print('<1>--------添加学生信息')#insert
print('<2>--------删除学生信息')#delete
print('<3>--------修改学生信息')#update
print('<4>--------显示所有信息')#show
print('<5>--------按ID查学生信息')#check
print('<0>--------返回目录')#return
#print('<6>----------加载学生数据')#load
#print('<7>----------保存学生数据')#save
print('----------------------------------------------')
def main1(): #子函数1,系统运行过程中可循环选择使用哪个功能
while True:
meun() #打印功能目录
try:
select=int(input("请输入数字来选择功能:"))
if select in [1,2,3,4,5,6,0]:
if select==1:
insert()
elif select==2:
delete()
elif select==3:
update()
elif select==4:
show()
elif select==5:
check()
elif select==6:
print("load")
elif select==0:
print("返回目录")
save() # 退出目录前,将信息保存到文件当中
break
else:
print("输入有误,请重新输入")
except:
print("输入有误,请重新输入")
def main0():
# 主控函数
load() # 程序每次运行前,先将TXT文件中存储的数据加载过来
while True:
print('学生信息管理系统CYUN-v1.0'.center(40, '='))
print('1 -------学生基本信息管理')
print('0 -------退出系统')
print(''.center(48, '='))
try:
sh = int(input('输入指令:'))
if sh == 1:
main1() #调用子函数1
elif sh == 0:
print('程序已退出,感谢您的使用!')
break
else:
print('输入有误,请重新输入')
except:
print('输入有误,请重新输入')
if __name__ == '__main__':
main0() #调用主控函数