Python利用字典和列表实现学生信息管理系统

本文将利用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()
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容