Bootstrap

【Python】学生管理系统——详细解释+代码+详细注释(课设必过)

带你编写学生管理系统(Python)

        很多学生在学校学习完Python,就要做一个课设考验你对知识的掌握程度,这次就教大家如何来用Python来实现一个学生管理系统

对学生管理系统的分析

        学生管理系统是对学生信息的学生信息的增删查改,另外如需要打印一份文件下来,绘制成纸质的学生名单,所以还需要用到文件操作对其信息进行存档操作以及下一次打开程序,可以看到上一次学生系统的读档操作

接下来就是具体实现~

        一、首先需要一个基本框架,无非就是菜单的打印以及对学生信息的增删查改,因此我们可以通过循环加判断的方式来供用户操作

定义的main函数和菜单代码如下


#菜单
def menu():
    print("1.增加学生信息")
    print("2.删除学生信息")
    print("3.展示学生信息")
    print("4.查找学生信息")
    print("0.退出系统")
    choose = input("请输入:")
    return choose

def main():

    print("+------------------------------------+")
    print("|           欢迎来到学生管理系统         |")
    print("+------------------------------------+")
    #先进行读档操作,读取上一次创建的学生信息
    load()
    while True:
        choose = menu()
        #增加学生信息
        if choose == '1':
            add()
        #删除学生信息
        elif choose == '2':
            delete()
        #查找学生信息
        elif choose == '3':
            show()
        #查找学生信息
        elif choose == '4':
            fund()
        #退出系统
        elif choose == '0':
            print("goodbye~")
            sys.exit(0)
        #输入非法
        else :
            print("输入非法,请重新输入!")

main()

        二、增加学生信息操作 ,这里可以考虑用字典来存放每一个学生信息,并且声明一个全局的列表来存放所有学生信息,一旦用字典存好一个学生的信息,立即放入列表内,最后存档操作(后面会细讲)

增加学生信息的代码如下:

# 增加学生信息
def add():
    print("[新增学生开始]")
    student_id = input("请输入学号:")
    student_name = input("请输入学生姓名:")
    student_gender = input("请输入学生性别:")
    if student_gender not in("男", "女"):
        print("输入非法,请输入男或者女!")
    class_id = input("请输入学生班级:")
    #用一个字典创建学生信息
    student = {
        "student_id": student_id,
        "student_name": student_name,
        "student_gender": student_gender,
        "class_id": class_id
    }
    #声明使用全局变量
    global students
    #增加学生信息到学生列表里面
    students.append(student)
    print("[增加学生结束]")
    #文件保存
    save()

        三、删除学生信息操作,通过输入要删除的学生的姓名,遍历学生列表,找到相同名字,并删除,如果未能找到学生信息,就打印提示消息,提醒用户没有找到该学生,最后存档

删除学生信息操作代码如下:

# 删除学生信息
def delete():
    print("[删除学生开始]")
    delete_name = input("请输入您要删除的学生姓名:")
    #遍历表格内容找到该学生
    for stu in students:
        if stu['student_name'] == delete_name:
            #找到该学生后删除
            students.remove(stu)
            print("[删除学生结束]")
            # 文件保存
            save()
            return
    print("未能找到该学生!")

        四、展示所有学生信息操作,通过遍历学生列表,将学生的学号、姓名、班级打印出来,完成打印后,最后说明一下,一共展示了多少条信息

展示所有学生信息操作代码如下:

#展示所有学生信息
def show():
    print("[展示学生信息开始]")
    for stu in students:
        print(f"学号:[{stu['student_id']}]\t"
              f"姓名:[{stu['student_name']}]\t"
              f"性别:[{stu['student_gender']}]\t"
              f"班级:[{stu['class_id']}]\t")
    print("[展示学生信息结束]")
    print(f"一共展示了{len(students)}条学生信息")

        五、查找指定学生信息操作,首先,输入需要查找的学生姓名,通过遍历学生列表来找到与之对应的学生信息,然后将该学生信息进行打印,同时,若没有找到该学生,需要打印一条信息,用来提醒用户,未找到该学生

查找指定学生信息操作代码如下:

#查找学生信息
def fund():
    print("[查找学生开始]")
    fund_name = input("请输入您要查找的学生姓名:")
    #遍历学生列表查找
    for stu in students:
        if stu['student_name'] == fund_name:
            print(f"学号:[{stu['student_id']}]\t"
                  f"姓名:[{stu['student_name']}]\t"
                  f"性别:[{stu['student_gender']}]\t"
                  f"班级:[{stu['class_id']}]\t")
            print("[查找学生结束]")
            return
    print("查找不到该学生信息!")

        六、存档操作,在每次增加学生信息,删除学生信息的时候都要进行存档操作,保证每次关闭程序后,依然可以找到上次记录的学生信息,最后记得提醒用户,成功存档了多少条学生信息

存档操作代码如下:

#文件保存信息
def save():
    #将学生信息以utf8的格式保存到名为student.txt的文档中
    with open("students.txt", "w", encoding="utf8") as write_in:
        for stu in students:
            write_in.write(f"{stu['student_id']}\t"
              f"{stu['student_name']}\t"
              f"{stu['student_gender']}\t"
              f"{stu['class_id']}\n")

        print(f"存档成功,共存档了{len(students)}条信息!")

        七、读档操作,需要在学生管理系统这个程序启动的开头进行一次读档,将上一次创建的学生信息读取到当前系统中,读取的时候记得去掉空白符,并切割字符串,循环用字典保存每一个学生的信息,每记录一个学生信息,立刻存放到学生列表当中,最后,需要提醒用户,以及读档了多少学生信息

读档操作的代码如下:

#从文件中读取信息
def load():
    #判断以前是否有创建过文件,如果有,进行读档,若没有,则进行return
    if not os.path.exists("students.txt"):
        return
    #保证旧文件为空
    global students
    students = []
    # 将学生信息以utf8的格式从文件中读取出来
    with open("students.txt", "r", encoding="utf8") as read_in:
        for line in read_in:
            #去掉首尾的空白符
            line = line.strip()
            #切割字符串
            string = line.split("\t")
            #确保读档时,被读档的文件格式正确,若有格式不对的行,则显示出来
            if len(string) != 4:
                print(f"line = {len(line)} 这一行格式存在问题 ")
                #格式有问题,这一行就不要读了,直接看下一行
                continue
            #将这一个学生成绩存入字典
            student = {
                "student_id": string[0],
                "student_name": string[1],
                "student_gender": string[2],
                "class_id": string[3]
            }
            #将这个学生成绩存入学生列表
            students.append(student)

        print(f"读档成功,共读取了{len(students)}个学生数据!")

最后祝你课设成功通过~


;