Python利用字典和列表实现学生信息管理系统
短信预约 -IT技能 免费直播动态提醒
本文将利用Python中的字典和列表实现学生信息管理系统
文件的存放格式采用的是python自带的pickle模块,需要新建course.txt和student.txt供程序读写。
下面是示例代码
import pickle
# 从文件中读取学生信息并返回
def readStudent():
with open("student.txt",'rb') as f:
try:
return pickle.load(f)
#读取失败,说明读取的文件为空,返回空列表即可
except EOFError:
return []
# 保存学生信息student_list到文件student.txt中
def saveStudent(student_list):
with open("student.txt",'wb') as f:
pickle.dump(student_list, f)
# 增加学生信息
def addStudent(student_list):
id = input("请输入要增加的学生学号:")
name = input("请输入要增加的学生姓名:")
sex = input("请输入要增加的学生性别:")
specialty = input("请输入要增加的学生专业班级:")
# 把这4个数据装入字典student中
student = {"学号":id, "姓名":name, "性别":sex, "专业班级":specialty}
# 把字典student添加到列表student_list中
student_list.append(student)
# 删除学生信息
def deleteStudent(student_list):
id = input("请输入要删除的学生学号:")
for i in range(0, len(student_list)):
# student_list[i]是一个字典
if student_list[i]["学号"] == id:
# 删除student_list中的第i个字典
student_list.pop(i)
print("删除成功!")
return # 结束函数
print("删除失败,未查询到该学生。")
# 修改学生信息
def modifyStudent(student_list):
id = input("请输入要修改的学生学号:")
for i in range(0, len(student_list)):
if student_list[i]["学号"] == id:
id = input("请输入修改后的学生学号:")
name = input("请输入修改后的姓名:")
sex = input("请输入修改后的性别:")
specialty = input("请输入修改后的专业班级:")
# 把这4个数据装入字典student中
student = {"学号":id, "姓名":name, "性别":sex, "专业班级":specialty}
# 用student替换student_list中的第i个字典
student_list[i] = student
print("修改成功!")
return # 结束函数
print("修改失败,未查询到该学生。")
# 显示所有学生信息
def showStudent(student_list):
print("学号\t\t姓名\t\t性别\t\t专业班级")
for student in student_list:
print("%s\t\t%s\t\t%s\t\t%s" %(student["学号"], student["姓名"], student["性别"], student["专业班级"]))
# 从文件中读取学生成绩信息
def readCourse():
with open("course.txt",'rb') as f:
try:
return pickle.load(f)
#读取失败,说明读取的文件为空,返回空列表即可
except EOFError:
return []
# 保存学生成绩信息course_list到文件course.txt中
def saveCourse(course_list):
with open("course.txt",'wb') as f:
pickle.dump(course_list, f)
# 增加学生成绩信息
def addCourse(course_list):
id = input("请输入要增加的学生学号:")
english = int(input("请输入该学生的英语成绩:"))
math = int(input("请输入该学生的数学成绩:"))
computer = int(input("请输入该学生的计算机成绩:"))
chemistry = int(input("请输入该学生的化学成绩:"))
PE = int(input("请输入该学生的体育成绩:"))
# 把这6个数据装入字典course中
course = {"学号":id, "英语":english, "数学":math, "计算机":computer, "化学":chemistry, "体育":PE}
# 把字典course添加到列表course_list中
course_list.append(course)
# 删除学生成绩信息
def deleteCourse(course_list):
id = input("请输入要删除的学生学号:")
for i in range(0, len(course_list)):
# course_list[i]是一个字典
if course_list[i]["学号"] == id:
# 删除列表中的第i个字典
course_list.pop(i)
print("删除成功!")
return #结束函数
print("删除失败,未查询到该学生成绩。")
# 修改学生成绩信息
def modifyCourse(course_list):
id = input("请输入要修改的学生学号:")
for i in range(0, len(course_list)):
if course_list[i]["学号"] == id:
id = input("请输入修改后的学生学号:")
english = int(input("请输入修改后的英语成绩:"))
math = int(input("请输入修改后的数学成绩:"))
computer = int(input("请输入修改后的计算机成绩:"))
chemistry = int(input("请输入修改后的化学成绩:"))
PE = int(input("请输入修改后的体育成绩:"))
# 把这6个数据装入字典course中
course = {"学号":id, "英语":english, "数学":math, "计算机":computer, "化学":chemistry, "体育":PE}
# 用dict替换旧的数据
course_list[i] = course
print("修改成功!")
return #结束函数
print("修改失败,未查询到该学生成绩。")
# 显示学生成绩信息
def showCourse(course_list):
print("学号\t\t英语\t\t数学\t\t计算机\t\t化学\t\t体育")
for course in course_list:
print("%s\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d" %(course["学号"], course["英语"], course["数学"],
course["计算机"], course["化学"], course["体育"]))
# 通过姓名查询该生的成绩信息
def searchScoreByName(student_list, course_list):
name = input("请输入学生姓名:")
id = "未查询到"
for stu in student_list:
if stu["姓名"] == name:
id = stu["学号"]
break
if id == "未查询到":
print("未查询到该学生信息。")
return #结束函数
for course in course_list:
if course["学号"] == id:
print("查询成功!该学生信息如下:")
print("学号\t\t英语\t\t数学\t\t计算机\t\t化学\t\t体育")
print("%s\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d" %(course["学号"], course["英语"], course["数学"],
course["计算机"], course["化学"], course["体育"]))
return #结束程序
print("未查询到该学生成绩信息。")
# 查询某门课程得分最高的学生信息
def searchStudentByHighScore(student_list, course_list):
courseName = input("请输入课程名称:")
# 按这门课程冒泡排序
for i in range(0, len(course_list)-1):
for j in range(0, len(course_list)-1-i):
if course_list[j][courseName] < course_list[j+1][courseName]:
course_list[j], course_list[j+1] = course_list[j+1], course_list[j]
id = course_list[0]["学号"]
for student in student_list:
if student["学号"] == id:
print("查找成功!")
print("学号\t\t姓名\t\t性别\t\t专业班级")
print("%s\t\t%s\t\t%s\t\t%s" %(student["学号"], student["姓名"], student["性别"], student["专业班级"]))
return
print("未查找到该学生信息。")
# 输出某门课的平均成绩
def outputAverageScore(course_list):
courseName = input("请输入课程名称:")
sum = 0
for course in course_list:
sum += course[courseName]
print("%s平均成绩为%.2f" %(courseName, sum/len(course_list)))
# 主菜单
def menu():
print("1.增加学生信息 2.增加成绩信息")
print("3.修改学生信息 4.修改成绩信息")
print("5.删除学生信息 6.删除成绩信息")
print("7.显示学生信息 8.显示成绩信息")
print("9.通过姓名查询该生的成绩信息")
print("10.查询某门课程得分最高的学生信息")
print("11.输出某门课的平均成绩")
print("0.保存并退出")
# 主函数
def main():
student_list = readStudent()
course_list = readCourse()
flag = True
while flag:
menu()
choose = input("请输入选项:")
while True:
# 增加学生信息
if choose == '1':
addStudent(student_list)
break
# 增加成绩信息
elif choose == '2':
addCourse(course_list)
break
# 修改学生信息
elif choose == '3':
modifyStudent(student_list)
break
# 修改成绩信息
elif choose == '4':
modifyCourse(course_list)
break
# 删除学生信息
elif choose == '5':
deleteStudent(student_list)
break
# 删除成绩信息
elif choose == '6':
deleteCourse(course_list)
break
# 显示学生信息
elif choose == '7':
showStudent(student_list)
break
# 显示成绩信息
elif choose == '8':
showCourse(course_list)
break
# 通过姓名查询该生的成绩信息
elif choose == '9':
searchScoreByName(student_list, course_list)
break
# 查询某门课程得分最高的学生信息
elif choose == '10':
searchStudentByHighScore(student_list, course_list)
break
# 输出某门课的平均成绩
elif choose == '11':
outputAverageScore(course_list)
break
# 保存数据并退出
elif choose == '0':
saveStudent(student_list)
saveCourse(course_list)
flag = False
break
else:
choose = input("输入错误, 请重新输入:")
if __name__=='__main__':
main()
到此这篇关于Python利用字典和列表实现学生信息管理系统的文章就介绍到这了,更多相关Python学生信息管理系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341