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()

  • 0
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个比较复杂的项目,需要分步骤实现。我会尽力为您提供详细的解答,请耐心阅读。 首先,我们需要定义一个员工信息类,包括员工的姓名、年龄、性别、职位、工资等信息。我们用字典来表示一个员工的信息,如下所示: ```python employee = { 'name': '张三', 'age': 25, 'gender': '男', 'position': '程序员', 'salary': 10000 } ``` 接下来,我们需要定义一个员工列表,用来存储所有员工的信息。我们用列表来表示所有员工的信息,如下所示: ```python employee_list = [ { 'name': '张三', 'age': 25, 'gender': '男', 'position': '程序员', 'salary': 10000 }, { 'name': '李四', 'age': 30, 'gender': '女', 'position': '设计师', 'salary': 15000 }, { 'name': '王五', 'age': 35, 'gender': '男', 'position': '经理', 'salary': 20000 } ] ``` 接下来,我们需要编写函数来实现各个功能模块。具体的函数如下所示: ```python import json # 定义员工信息类 class Employee: def __init__(self, name, age, gender, position, salary): self.name = name self.age = age self.gender = gender self.position = position self.salary = salary # 定义员工信息列表 employee_list = [ Employee('张三', 25, '男', '程序员', 10000), Employee('李四', 30, '女', '设计师', 15000), Employee('王五', 35, '男', '经理', 20000) ] # 定义函数:添加员工信息 def add_employee(): name = input('请输入员工姓名:') age = int(input('请输入员工年龄:')) gender = input('请输入员工性别:') position = input('请输入员工职位:') salary = int(input('请输入员工工资:')) employee = Employee(name, age, gender, position, salary) employee_list.append(employee) print('添加成功!') # 定义函数:删除员工信息 def delete_employee(): name = input('请输入要删除的员工姓名:') for employee in employee_list: if employee.name == name: employee_list.remove(employee) print('删除成功!') return print('没有找到该员工!') # 定义函数:修改员工信息 def update_employee(): name = input('请输入要修改的员工姓名:') for employee in employee_list: if employee.name == name: age = int(input('请输入员工年龄:')) gender = input('请输入员工性别:') position = input('请输入员工职位:') salary = int(input('请输入员工工资:')) employee.age = age employee.gender = gender employee.position = position employee.salary = salary print('修改成功!') return print('没有找到该员工!') # 定义函数:查询员工信息 def query_employee(): name = input('请输入要查询的员工姓名:') for employee in employee_list: if employee.name == name: print('姓名:', employee.name) print('年龄:', employee.age) print('性别:', employee.gender) print('职位:', employee.position) print('工资:', employee.salary) return print('没有找到该员工!') # 定义函数:保存员工信息到json文件 def save_to_json(): with open('employee.json', 'w') as f: employee_dict = { 'employee_list': [employee.__dict__ for employee in employee_list] } json.dump(employee_dict, f) print('保存成功!') # 定义函数:从json文件读取员工信息 def load_from_json(): with open('employee.json', 'r') as f: employee_dict = json.load(f) for employee_info in employee_dict['employee_list']: employee = Employee(**employee_info) employee_list.append(employee) print('读取成功!') # 定义函数:显示菜单 def show_menu(): print('1. 添加员工信息') print('2. 删除员工信息') print('3. 修改员工信息') print('4. 查询员工信息') print('5. 保存员工信息到json文件') print('6. 从json文件加载员工信息') print('0. 退出程序') # 定义函数:主函数 def main(): while True: show_menu() choice = int(input('请输入菜单编号:')) if choice == 0: print('程序已退出!') break elif choice == 1: add_employee() elif choice == 2: delete_employee() elif choice == 3: update_employee() elif choice == 4: query_employee() elif choice == 5: save_to_json() elif choice == 6: load_from_json() else: print('菜单编号输入错误,请重新输入!') if __name__ == '__main__': main() ``` 以上就是使用 Python 操作 JSON 文件实现一个信息类的员工管理系统的详细步骤。其中,我们定义了一个员工信息类,使用字典列表实现了员工信息的增删改查功能,并使用函数将各个功能模块单独实现和测试。我们还使用菜单与用户交互,程序能够根据用户的选择执行响应的操作。最后,我们还实现了将员工信息保存到 JSON 文件和从 JSON 文件加载员工信息的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toblerone_Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值