基于Python的学生信息管理系统设计与实现

学生信息管理系统源码执行图

扫码关注公众号回复 学生信息管理系统  获取完整项目代码

一、引言

随着教育信息化的不断发展,学校对学生的管理需求日益增加。学生信息管理系统作为一种高效、便捷的工具,能够帮助学校更好地管理学生信息,提高工作效率。本文介绍了一个基于Python的学生信息管理系统的设计与实现,该系统具备录入、查询、删除、修改、排序、统计和显示学生信息等功能,能够满足学校对学生信息管理的基本需求。

二、系统设计
(一)功能模块划分

学生信息管理系统主要包含以下功能模块:

  1. 录入学生信息:用户可以输入学生的基本信息(如ID、姓名、英语成绩、Python成绩、C语言成绩等),并将这些信息保存到文件中。

  2. 查询学生信息:用户可以通过学生ID或姓名查找特定学生的信息。

  3. 删除学生信息:用户可以根据学生ID删除指定学生的信息。

  4. 修改学生信息:用户可以根据学生ID找到特定学生,并修改其信息。

  5. 排序:用户可以根据英语成绩、Python成绩、C语言成绩或总成绩对学生信息进行升序或降序排序。

  6. 统计学生总数:系统可以统计并显示当前保存的学生总数。

  7. 显示所有学生信息:系统可以显示所有学生的信息。

  8. 退出系统:用户可以选择退出系统。

(二)数据存储设计

学生信息存储在本地文件中,文件名为students.txt。每个学生的信息以字典的形式存储,然后将字典转换为字符串并按行写入文件。例如:

{"id": "1001", "name": "张三", "english": 85, "python": 90, "c": 78}
(三)技术选型

本系统基于Python语言开发,利用其强大的文件操作和数据处理能力,结合正则表达式模块(re)和操作系统模块(os),实现对学生信息的管理。

三、系统实现
(一)主菜单设计

系统启动后,首先显示主菜单,用户可以通过输入数字选择相应的功能模块。主菜单的显示由menu()函数实现,其代码如下:

def menu():
    print('''
    ╔———————学生信息管理系统————————╗
    │                                              │
    │   =============== 功能菜单 ===============   │
    │                                              │
    │   1 录入学生信息                             │
    │   2 查找学生信息                             │
    │   3 删除学生信息                             │
    │   4 修改学生信息                             │
    │   5 排序                                     │
    │   6 统计学生总人数                           │
    │   7 显示所有学生信息                         │
    │   0 退出系统                                 │
    │  ==========================================  │
    │  说明:通过数字或↑↓方向键选择菜单          │
    ╚———————————————————————╝
    ''')
(二)录入学生信息

用户可以通过选择菜单中的“1 录入学生信息”选项,进入学生信息录入模块。该模块允许用户输入学生的ID、姓名、英语成绩、Python成绩和C语言成绩,并将这些信息保存到文件中。录入功能由insert()函数实现,其核心代码如下:

def insert():
    studentList = []
    mark = True
    while mark:
        id = input("请输入ID(如 1001):")
        if not id:
            break
        name = input("请输入名字:")
        if not name:
            break
        try:
            english = int(input("请输入英语成绩:"))
            python = int(input("请输入Python成绩:"))
            c = int(input("请输入C语言成绩:"))
        except:
            print("输入无效,不是整型数值....重新录入信息")
            continue
        student = {"id": id, "name": name, "english": english, "python": python, "c": c}
        studentList.append(student)
        inputMark = input("是否继续添加?(y/n):")
        if inputMark == "y":
            mark = True
        else:
            mark = False
    save(studentList)
    print("学生信息录入完毕!!!")
(三)查询学生信息

用户可以通过选择菜单中的“2 查找学生信息”选项,进入学生信息查询模块。该模块支持按学生ID或姓名查询学生信息。查询功能由search()函数实现,其核心代码如下:

def search():
    mark = True
    student_query = []
    while mark:
        id = ""
        name = ""
        if os.path.exists(filename):
            mode = input("按ID查输入1;按姓名查输入2:")
            if mode == "1":
                id = input("请输入学生ID:")
            elif mode == "2":
                name = input("请输入学生姓名:")
            else:
                print("您的输入有误,请重新输入!")
                search()
            with open(filename, 'r') as file:
                student = file.readlines()
                for list in student:
                    d = dict(eval(list))
                    if id and d['id'] == id:
                        student_query.append(d)
                    elif name and d['name'] == name:
                        student_query.append(d)
                show_student(student_query)
                student_query.clear()
                inputMark = input("是否继续查询?(y/n):")
                if inputMark == "y":
                    mark = True
                else:
                    mark = False
        else:
            print("暂未保存数据信息...")
            return
(四)删除学生信息

用户可以通过选择菜单中的“3 删除学生信息”选项,进入学生信息删除模块。该模块允许用户根据学生ID删除指定学生的信息。删除功能由delete()函数实现,其核心代码如下:

def delete():
    mark = True
    while mark:
        studentId = input("请输入要删除的学生ID:")
        if studentId:
            if os.path.exists(filename):
                with open(filename, 'r') as rfile:
                    student_old = rfile.readlines()
            else:
                student_old = []
            ifdel = False
            if student_old:
                with open(filename, 'w') as wfile:
                    d = {}
                    for list in student_old:
                        d = dict(eval(list))
                        if d['id'] != studentId:
                            wfile.write(str(d) + "\n")
                        else:
                            ifdel = True
                    if ifdel:
                        print("ID为 %s 的学生信息已经被删除..." % studentId)
                    else:
                        print("没有找到ID为 %s 的学生信息..." % studentId)
            else:
                print("无学生信息...")
                break
            show()
            inputMark = input("是否继续删除?(y/n):")
            if inputMark == "y":
                mark = True
            else:
                mark = False
(五)修改学生信息

用户可以通过选择菜单中的“4 修改学生成绩信息”选项,进入学生信息修改模块。该模块允许用户根据学生ID找到特定学生,并修改其信息。修改功能由modify()函数实现,其核心代码如下:

def modify():
    show()
    if os.path.exists(filename):
        with open(filename, 'r') as rfile:
            student_old = rfile.readlines()
    else:
        return
    studentid = input("请输入要修改的学生ID:")
    with open(filename, "w") as wfile:
        for student in student_old:
            d = dict(eval(student))
            if d["id"] == studentid:
                print("找到了这名学生,可以修改他的信息!")
                while True:
                    try:
                        d["name"] = input("请输入姓名:")
                        d["english"] = int(input("请输入英语成绩:"))
                        d["python"] = int(input("请输入Python成绩:"))
                        d["c"] = int(input("请输入C语言成绩:"))
                    except:
                        print("您的输入有误,请重新输入。")
                    else:
                        break
                student = str(d)
                wfile.write(student + "\n")
                print("修改成功!")
            else:
                wfile.write(student)
    mark = input("是否继续修改其他学生信息?(y/n):")
    if mark == "y":
        modify()
(六)排序

用户可以通过选择菜单中的“5 排序”选项,进入学生信息排序模块。该模块允许用户根据英语成绩、Python成绩、C语言成绩或总成绩对学生信息进行升序或降序排序。排序功能由sort()函数实现,其核心代码如下:

def sort():
    show()
    if os.path.exists(filename):
        with open(filename, 'r') as file:
            student_old = file.readlines()
            student_new = []
        for list in student_old:
            d = dict(eval(list))
            student_new.append(d)
    else:
        return
    ascORdesc = input("请选择(0升序;1降序):")
    if ascORdesc == "0":
        ascORdescBool = False
    elif ascORdesc == "1":
        ascORdescBool = True
    else:
        print("您的输入有误,请重新输入!")
        sort()
    mode = input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):")
    if mode == "1":
        student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)
    elif mode == "2":
        student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)
    elif mode == "3":
        student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)
    elif mode == "0":
        student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)
    else:
        print("您的输入有误,请重新输入!")
        sort()
    show_student(student_new)
(七)统计学生总数

用户可以通过选择菜单中的“6 统计学生总人数”选项,进入学生信息统计模块。该模块可以统计并显示当前保存的学生总数。统计功能由total()函数实现,其核心代码如下:

def total():
    if os.path.exists(filename):
        with open(filename, 'r') as rfile:
            student_old = rfile.readlines()
            if student_old:
                print("一共有 %d 名学生!" % len(student_old))
            else:
                print("还没有录入学生信息!")
    else:
        print("暂未保存数据信息...")
(八)显示所有学生信息

用户可以通过选择菜单中的“7 显示所有学生信息”选项,进入学生信息显示模块。该模块可以显示所有学生的信息。显示功能由show()函数实现,其核心代码如下:

def show():
    student_new = []
    if os.path.exists(filename):
        with open(filename, 'r') as rfile:
            student_old = rfile.readlines()
        for list in student_old:
            student_new.append(eval(list))
        if student_new:
            show_student(student_new)
    else:
        print("暂未保存数据信息...")
四、系统运行与测试

为了验证系统的功能和稳定性,我们进行了详细的测试。测试内容包括:

  1. 录入学生信息:验证系统是否能够正确保存学生信息。

  2. 查询学生信息:验证系统是否能够根据ID或姓名准确查询学生信息。

  3. 删除学生信息:验证系统是否能够正确删除指定学生的信息。

  4. 修改学生信息:验证系统是否能够正确修改学生的信息。

  5. 排序:验证系统是否能够按照指定的排序方式对学生信息进行排序。

  6. 统计学生总数:验证系统是否能够正确统计学生总数。

  7. 显示所有学生信息:验证系统是否能够正确显示所有学生的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值