【Python】8. 学生管理系统(简易版)

简介: 【Python】8. 学生管理系统(简易版)

1. 需求说明

实现一个命令行版本的学生管理系统
功能:
新增学生
显示学生
查找学生
删除学生
存档到文件

2. 基本框架的搭建

# 学生管理系统

# 菜单
import sys


def menu():
    print("------------------------------------------")
    print("           欢迎进入学生管理系统!!!           ")
    print("------------------------------------------")


# 进行操作选择:
def operate():
    print("------------------------------------------")
    print("     1. 新增学生信息       2. 显示学生信息      ")
    print("     3. 查找学生信息       4. 删除学生信息      ")
    print("                0. 退出程序                  ")
    print("------------------------------------------")
    count = input("请输入你选择的操作:")
    return count


# 插入操作
def insert():
    pass


def show():
    pass


def find():
    pass


def delete():
    pass


# 入口函数
def main():
    # 菜单
    menu()
    while True:
        count = operate()
        if count == '1':
            insert()
        elif count == '2':
            show()
        elif count == '3':
            find()
        elif count == '4':
            delete()
        elif count == '0':
            # 退出 终止程序
            sys.exit(0)
        else:
            print("您的输入有误,请重新输入")
            continue

    return 0


main()

运行结果如下:
在这里插入图片描述
(可以看出咱们框架的逻辑是完全没问题的!)那么接下来就可以进行模块的设计!

创建学生变量(错误版)

这里的学生信息在整个系统当中都需要使用,所以我们定义在全局

# 学生信息
studentId = None
name = None
gender = None
score = None
# 用字典来存储学生信息
student = {
   
   
    "studentId": studentId,
    "name": name,
    "gender": gender,
    "score": score
}
# 用列表存储这些学生对象
s_list = []
# 定义number记录列表下标
number = 0

==这种方式不可取,每一次所要新增的学生信息都不同。创建为全局变量会导致新增一次将之前的信息全部修改。==
所以还是改为局部当中定义

新增学生信息(错误版)

def insert():
    print("新增学生开始")
    global studentId, name, gender, score, number
    studentId = input("请输入学生编号:")
    name = input("请输入学生姓名:")
    gender = input("请输入学生性别:")
    if gender not in ["男", "女"]:
        print("您输入的性别有误,新增学生失败")
        return
    score = int(input("请输入学生成绩:"))
    if score not in range(0, 101):
        print("您输入的成绩不在范围内(0,100),新增学生失败")
        return
    student["studentId"] = studentId
    student["name"] = name
    student["gender"] = gender
    student["score"] = score
    # 插入
    s_list.append(student)
    number += 1
    print("新增学生完毕!")

3. 新增学生信息

# 用列表存储这些学生对象
s_list = []
# 定义number记录列表下标
number = 0


def insert():
    global number
    print("新增学生开始")
    # 用字典来存储学生信息
    studentId = input("请输入学生编号:")
    name = input("请输入学生姓名:")
    gender = input("请输入学生性别:")
    if gender not in ["男", "女"]:
        print("您输入的性别有误,新增学生失败")
        return
    score = int(input("请输入学生成绩:"))
    if score not in range(0, 101):
        print("您输入的成绩不在范围内(0,100),新增学生失败")
        return
    student = {
   
   "studentId": studentId, "name": name, "gender": gender, "score": score}

    # 插入
    s_list.append(student)
    number += 1
    print("新增学生完毕!")

4. 显示学生信息

def show():
    print("显示学生信息开始")
    print(f"studentId\tname\tgender\tscore\t")
    for s in s_list:
        print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['score']}\t")
    print(f"显示学生信息完毕!总共显示{number}名学生")

5. 查找学生信息

def find():
    print("根据学生姓名查找学生信息")
    elem = input("请输入想要查找的学生姓名:")
    total = 0
    for s in s_list:
        if s['name'] == elem:
            print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['score']}\t")
            total += 1
    if total == 0:
        print(f"未找到姓名为:{elem}的学生")
    else:
        print(f"找到姓名为:{elem}的学生共{total}名!")

6. 删除学生信息

def delete():
    elem = input("请输入你所要删除学生的姓名:")
    line = 0
    flag = 0
    for s in s_list:
        if s['name'] == elem:
            s_list.pop(line)
            flag += 1
        line += 1
    if flag:
        print("删除学生完毕!!!")
    else:
        print(f"未查找到姓名为:{elem}的学生,删除失败!")

在这里插入图片描述
在这里插入图片描述
到这里,命令行界面的学生系统就弄完了,但是新增的学生信息无法插入到硬盘当中保存。

加入存档读档

7. 约定存档格式

约定存档文件放到 D:\code\python\student_manage\record.txt 文件中.
并且以行文本的方式来保存学生信息. 格式如下:

学号\t名字\t性别\t成绩
学号\t名字\t性别\t成绩
学号\t名字\t性别\t成绩

每个同学占一行.
每个同学的信息之间使用 \t 制表符进行分隔.

8. 实现存档函数

def save():
    """
    存档函数
    """
    with open('D:/code/python/student_manage/record.txt', 'w', encoding='utf8') as f:
        for s in s_list:
            f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['score']}\n")
        print(f"[存档成功] 共存储了 {len(s_list)} 条记录!")

在 insert 和 delete 末尾, 调用 save 函数进行存档


> # 执行存档 
> save()

9. 实现读档函数

def load():
    """
    读档函数
    """
    # 如果存档文件不存在, 则跳过读档环节
    if not os.path.exists('D:/code/python/student_manage/record.txt'):
        return
    # 先清空全局变量里的数据
    global s_list
    s_list = []
    with open('D:/code/python/student_manage/record.txt', 'r', encoding='utf8') as f:
        for line in f:
            # 针对这一行数据, 按照 \t 进行切分操作!
            # 去除末尾的换行符
            line = line.strip()
            tokens = line.split('\t')
            if len(tokens) < 4:
                print(f"文件格式有误! line={line}")
                continue
            student = {
   
   
                'studentId': tokens[0],
                'name': tokens[1],
                'gender': tokens[2],
                'className': tokens[3]
            }
            s_list.append(student)
        print(f"[读档成功] 共读取了 {len(s_list)} 条记录!")

在 main 函数开头的地方, 调用 load 加载存档.

load()

那么到这里程序功能大致就实现了!!!
操作演示:
在这里插入图片描述
具体代码实现放在这里啦!!!需要自取(Gitee)

相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
51 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
1月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习果蔬识别系统实现
本项目基于Python和TensorFlow,使用ResNet卷积神经网络模型,对12种常见果蔬(如土豆、苹果等)的图像数据集进行训练,构建了一个高精度的果蔬识别系统。系统通过Django框架搭建Web端可视化界面,用户可上传图片并自动识别果蔬种类。该项目旨在提高农业生产效率,广泛应用于食品安全、智能农业等领域。CNN凭借其强大的特征提取能力,在图像分类任务中表现出色,为实现高效的自动化果蔬识别提供了技术支持。
基于Python深度学习果蔬识别系统实现
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
135 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
2月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
132 66
|
2月前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
64 5
|
2月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
356 55
|
2月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
220 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
2月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习的果蔬识别系统实现
果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。
69 4
基于Python深度学习的果蔬识别系统实现

热门文章

最新文章

推荐镜像

更多