python小项目:学生管理系统(可以让你满分的期末设计作业)

发布时间:2023年12月20日

前言:

哈喽大家好,不知道大家本学期有没有学习python课程,临近期末,是不是正在为了期末python设计作业发愁,哈哈哈哈不用担心,本期本博主为大家带来了一个操作简单,但是集合了各个知识点的用法的项目———学生管理系统

学会了这个项目可以让大家很好的练习与了解python的基础操作,在python的学习中更上一层楼,而不是草率的交一个学长的陈年老代码应付差事。话不多说,上操作吧

(完整版代码在最下边,复制到pycharm就直接能用了!)

首先是“系统”的入口,我们要打印一个菜单,说明这个项目的作者是谁,然后就是基于系统的各种操作,无非就是哪几种,增删查改嘛!

menu函数:

def menu():
    print("输入:1.新增学生")
    print("输入:2.显示学生")
    print("输入:3.查找学生")
    print("输入:4.删除学生")
    print("输入:5.修改学生")
    print("输入:0.退出程序")
    choice = input("请输入你的选择:")
    return choice

main函数:

# 入口
def main():
    print("--------------------------------------")
    print("         贰月磐石的学生管理系统           ")
    print("--------------------------------------")
    load()
    while True:
        c = menu()
        if c == '1':
            # 新增学生
            insert()
        elif c == '2':
            # 显示所有学生
            show()
        elif c == '3':
            # 查找学生
            find()
        elif c == '4':
            # 删除学生
            delete()
        elif c== '5':
            #修改信息
            update()
        elif c == '0':
            # 退出程序
            print("程序退出")
            sys.exit(0)
        else:
            print()
            print("输入有误,重新输入")
            print()

代码通俗易懂,六种操作,增 显 查 删 改 退 分别对应1 2 3 4 5 0?

否则就会告诉用户,你输入错了,要重新输入!

细心的小伙伴会发现,在main函数里,还有一个自定义函数load,那么它的作用是什么呢?

让我们边看代码边讲解:

load函数:

def load():
    # 文件不存在,就跳过读档
    if not os.path.exists('student.txt'):
        return

    global students
    # 清空列表
    students = []
    with open('student.txt', 'r', encoding='utf8') as f:
        for line in f:
            # 去除换行符
            line = line.strip()
            t = line.split('\t')
            # 检查行信息是否完整
            if len(t) != 4:
                print("文件中的行信息不完整:", line)
                continue
            student = {
                '学号': t[0],
                '名字': t[1],
                '性别': t[2],
                '班级': t[3]
            }
            students.append(student)
    print(f"目前文件存储了{len(students)}个学生")

我们在与这个项目同目录下,新建一个txt文件,用来存放我们要管理的学生的数据

使用这个函数里的文件操作,还需要两个插件:

import os.path
import sys

这两个插件,在复制完整代码时,直接下载就会了

以上代码的内容就是对文件的基本操作,看不懂的同学简单搜索一下,就能看懂这个操作了

student.txt文件

首先你创建的txt必须和py文件同目录

这是文件里的格式

然后是五个操作的函数

insert函数:

def insert():
    print("[新增学生开始]")
    studentID = input('请输入学生学号:')
    name = input("请您输入学生姓名:")
    gender = input("请输入学生性别(注意本系统不支持美国性别,如:沃尔玛购物袋):")
    if gender not in ("男", "女"):
        print("性别都能出错,你二波一啊")
        print("新增失败了你个二波一,赶紧重新开始")
        return
    classname = input("请输入学生的班级:")
    student_info = {
        '学号': studentID,
        '名字': name,
        '性别': gender,
        '班级': classname
    }
    global students
    students.append(student_info)
    save()
    print("\n[新增学生结束]\n")

对学生进行增加操作

show函数:

def show():
    # 遍历全局变量的列表
    print("开始显示学生:")
    for i in students:
        print(f'{i["学号"]}\t{i["名字"]}\t{i["性别"]}\t{i["班级"]}')
    print(f"全部学生打印完毕,一共是有:{len(students)}人\n ")

对文件中现存的所有学生进行显示

find函数:

def find():
    #根据姓名查找
    print("开始查找")
    cnt=0
    name=input("请输入要查找同学的姓名:")
    for i in students:
        if name == i["名字"]:
            print(f'{i["学号"]}\t{i["名字"]}\t{i["性别"]}\t{i["班级"]}')
            cnt+=1

    print(f"查找结束,共找到{cnt}个名字为{name}的学生\n")

按照学生姓名进行查找操作,大家有兴趣可以自己写按照学号查找,不写也无伤大雅

delete函数:

def delete():
    print("删除学生开始\n")
    studentid=input("请输入要删除学生的学号:")
    for i in students:
        if studentid==i["学号"]:
            print(f"即将删除学号为{studentid}的学生")
            students.remove(i)

    save()
    print("删除结束")

根据学号对学生进行删除操作,大家有兴趣可以自己写按照姓名删除,不写也无伤大雅

update函数:

def update():
    print("[修改学生信息]")
    studentid = input("请输入要修改信息的学生学号: ")
    for i in students:
        if studentid == i["学号"]:
            print(f"{i['学号']}\t{i['名字']}\t{i['性别']}\t{i['班级']}")
            new_name = input("请输入新的学生姓名: ")
            new_gender = input("请输入新的学生性别: ")
            new_classname = input("请输入新的学生班级: ")
            if new_name:
                i['名字'] = new_name
            if new_gender:
                i['性别'] = new_gender
            if new_classname:
                i['班级'] = new_classname
            print("学生信息已更新。")
            save()  # 保存修改后的信息到文件
            return

    print(f"找不到学生学号为 {studentid} 的信息。")
    print("\n[修改学生信息结束]\n")

根据学号对学生进行修改操作,大家有兴趣可以自己写按照姓名修改,不写也无伤大雅

以上就是我们项目的基本操作 增删查改显 代码通俗易懂,还有大量的注释以供大家参考,如果有不懂的地方,可以在评论区或者私信给博主,一定知无不言。

完整版代码:

import os.path
import sys

students = []
def save():
    # 存入文件
    #相对路径
    with open("student.txt",'w',encoding='utf8')as f:
        for i in students :
            f.write(f'{i["学号"]}\t{i["名字"]}\t{i["性别"]}\t{i["班级"]}\n')
    print(f"存档成功,成功存储了{len(students)}个同学")

def load():
    # 文件不存在,就跳过读档
    if not os.path.exists('student.txt'):
        return

    global students
    # 清空列表
    students = []
    with open('student.txt', 'r', encoding='utf8') as f:
        for line in f:
            # 去除换行符
            line = line.strip()
            t = line.split('\t')
            # 检查行信息是否完整
            if len(t) != 4:
                print("文件中的行信息不完整:", line)
                continue
            student = {
                '学号': t[0],
                '名字': t[1],
                '性别': t[2],
                '班级': t[3]
            }
            students.append(student)
    print(f"目前文件存储了{len(students)}个学生")


def menu():
    print("输入:1.新增学生")
    print("输入:2.显示学生")
    print("输入:3.查找学生")
    print("输入:4.删除学生")
    print("输入:5.修改学生")
    print("输入:0.退出程序")
    choice = input("请输入你的选择:")
    return choice

def insert():
    print("[新增学生开始]")
    studentID = input('请输入学生学号:')
    name = input("请您输入学生姓名:")
    gender = input("请输入学生性别(注意本系统不支持美国性别,如:沃尔玛购物袋):")
    if gender not in ("男", "女"):
        print("性别都能出错,你二波一啊")
        print("新增失败了你个二波一,赶紧重新开始")
        return
    classname = input("请输入学生的班级:")
    student_info = {
        '学号': studentID,
        '名字': name,
        '性别': gender,
        '班级': classname
    }
    global students
    students.append(student_info)
    save()
    print("\n[新增学生结束]\n")


def show():
    # 遍历全局变量的列表
    print("开始显示学生:")
    for i in students:
        print(f'{i["学号"]}\t{i["名字"]}\t{i["性别"]}\t{i["班级"]}')
    print(f"全部学生打印完毕,一共是有:{len(students)}人\n ")


def find():
    #根据姓名查找
    print("开始查找")
    cnt=0
    name=input("请输入要查找同学的姓名:")
    for i in students:
        if name == i["名字"]:
            print(f'{i["学号"]}\t{i["名字"]}\t{i["性别"]}\t{i["班级"]}')
            cnt+=1

    print(f"查找结束,共找到{cnt}个名字为{name}的学生\n")


def delete():
    print("删除学生开始\n")
    studentid=input("请输入要删除学生的学号:")
    for i in students:
        if studentid==i["学号"]:
            print(f"即将删除学号为{studentid}的学生")
            students.remove(i)

    save()
    print("删除结束")


def update():
    print("[修改学生信息]")
    studentid = input("请输入要修改信息的学生学号: ")
    for i in students:
        if studentid == i["学号"]:
            print(f"{i['学号']}\t{i['名字']}\t{i['性别']}\t{i['班级']}")
            new_name = input("请输入新的学生姓名: ")
            new_gender = input("请输入新的学生性别: ")
            new_classname = input("请输入新的学生班级: ")
            if new_name:
                i['名字'] = new_name
            if new_gender:
                i['性别'] = new_gender
            if new_classname:
                i['班级'] = new_classname
            print("学生信息已更新。")
            save()  # 保存修改后的信息到文件
            return

    print(f"找不到学生学号为 {studentid} 的信息。")
    print("\n[修改学生信息结束]\n")
# 入口
def main():
    print("--------------------------------------")
    print("         贰月磐石的学生管理系统           ")
    print("--------------------------------------")
    load()
    while True:
        c = menu()
        if c == '1':
            # 新增学生
            insert()
        elif c == '2':
            # 显示所有学生
            show()
        elif c == '3':
            # 查找学生
            find()
        elif c == '4':
            # 删除学生
            delete()
        elif c== '5':
            #修改信息
            update()
        elif c == '0':
            # 退出程序
            print("程序退出")
            sys.exit(0)
        else:
            print()
            print("输入有误,重新输入")
            print()
main()

好的以上就是学生管理系统代码的全部操作,感觉有用的小伙伴可以点点关注点赞支持一下

谢谢大家!!!

文章来源:https://blog.csdn.net/sclwc/article/details/135095126
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。