第八节 学生管理系统 (阶段案例)

news2025/1/17 14:11:13

学生管理系统

1.1 设计背景

  1. 管理系统,主要任务就是使用计算机对学生的各种信息进行日常管理,如:
    • 添加
    • 删除
    • 修改
    • 查询
    • 退出系统
  2. 程序设计思路
    在这里插入图片描述

1.2 需求设计分析

  1. 打印 “学生管理系统” 的功能菜单,提示用户选择功能序号;
    • print_menu() 打印函数

1.3 具体编写程序步骤

1.3.1 输出提示界面

  1. 程序的功能界面提示信息的作用就是,让用户根据提示进行操作。

    • 注意保存学生信息列表。
    #1.打印提示界面,将界面封装到一个方法中
    	def print_menu():
    	    print('1. 添加学生信息')
    	    print('2. 删除学生信息')
    	    print('3. 修改学生信息')
    	    print('4. 显示学生信息')
    	    #print('6. 查询所有的学生信息')
    	    print('5. 退出系统')
    
    #2.将学生信息保存到列表中
    	student_list_info= []
    
    

1.3.2 管理系统框架搭建

  1. 就是如何调用框架,相当于使用每个功能。

    # 2.框架调用设计
    # 使用循环重复执行
    def main():
        count = 0  # 界面计数
        while True:
            print_menu()  # 调用菜单显示信息
            # 根据菜单信息选择相应提示
            num = input("\t请输入操作编号: ")  # 获取用户输入编号
            count += 1  # 扩展:统计累计次数
            if num == '1':
                # 调用添加函数
                pass
            elif num == "2":
                # 调用删除函数
                pass
            elif num == "3":
                # 调用修改函数
                pass
            elif num == "4":
                # 调用显示学生信息函数
                pass
            elif num == "0":  # 退出循环
    
                # 人性设计思路,细节展示
                answer = input("亲,真心退出么? ")
                if answer == "真心":
                    print("程序结束")  # end
                    break  # 结束整个循环
            else:
                print("输入有误,请重新输入")
            print(f"======跳转界面{count}次数=======")
    
    

1.3.3 添加学生信息

  1. 将需要保存的学员信息保存到要保存的列表中 student_list_info = [] 保存学员列表。
    • 添加方法add_student():
  2. 业务需求,保存学员信息时,需要考虑,如果重复添加情况,所以,学员姓名(学员id)不能重复。
    # 3. 添加学生信息模块:
    def add_student():
        # 3.1 添加学生姓名,性别,手机号
        # 提示,添加学生信息
        new_student_name = input("请录入学生姓名: ")
        # 提示,添加学生性别
        new_student_sex = input("请录入学生性别: ")
        # 提示,添加学生手机号
        new_student_phone = input("请录入学生手机号: ")
        # 3.2 存储信息 ,使用字典的,以键值对的方式
        new_sturdent_info = {}
    
        # 注意: 加一个校验 ,变量成员变量(函数中有介绍)
        #student_list_info 列表字典信息.
        #通过key进行遍历
        for student_key in student_list_info:
            if student_key['name'] == new_student_name:
                print(f"学生姓名 {new_student_name} 已存在,请输入其他姓名。")
                return
    
        # 3.2.1 将数据添加到字典,new_sturdent_info['key']=值
        # 字典添加键值对的特点:,没有就添加,有就覆盖
        new_sturdent_info['name'] = new_student_name
        new_sturdent_info['sex'] = new_student_sex
        new_sturdent_info['phone'] = new_student_phone
    
        # 3.3需要将新添加的学生信息添加到,学生列表中保存
        # 列表中嵌套字典,每一个元素都是一个学生信息  student_list_info= [{},{},{},{}]
        student_list_info.append(new_sturdent_info)
    
    
    #验证调用: 姓名错误问题.
    #第一次添加
    # add_student()
    # print(student_list_info)
    #第二次添加
    # add_student()
    # print(student_list_info)
    

1.3.4 删除学生信息

  1. 删除信息,以名字为主。
    • 删除方法 ,delete_student()
  2. 业务需求:
    • 如果没有请提示信息 。
#1.预先设计调用
	#student_list_info= [{"name":'吴琼',"age":18},{"name":'吴琼2',"age":19}]
#4.删除学生信息
def delete_student():
    #姓名是唯一id不能重复
    key = input("请输入要删除学生的姓名: ")
    for student_info in student_list_info:
        if student_info['name'] == key:
            #如果相同则移除.
            student_list_info.remove(student_info)
            print("删除成功")
        else:
            print("姓名不存在")
            break #跳出即可

#删除
delete_student()
print(student_list_info)

1.3.5 修改学生信息

  1. 根据学生姓名进行修改,然后将修改后的参数保存在 “列表中的字典”, 并将这些输入的信息替换字典中的旧信息。

    • 修改方法 update_student()
    # 5. 修改学生信息
    def update_student():
        student_name = input("请输入要修改学生的姓名: ")
        # 遍历获取学生信息
        for student_info in student_list_info:
            if student_info['name'] == student_name:
                new_name = input("请输入修改后的名字: ")
                new_sex = input("请输入修改后的性别: ")
                new_phone = input("请输入修改后的手机号: ")
    
                # 5.1 将修改的学生信息添加进入
                student_info['name'] = new_name
                student_info['sex'] = new_sex
                student_info['phone'] = new_phone
                print("修改成功")
                break
        else:
            print("修改的姓名不存在")
    
    
    #调用函数
    update_student()
    print(student_list_info)
    

1.3.6 查询学生信息

  1. 通过名字查询信息详情

    • 查询单个方法 search_student()
    #6显示学生信息
    def search_student():
        #根据学生信息查询
        #定义一个标志变量
        flag = False
        student_name = input("请输入要查询的学生名字: ")
        for student_info in student_list_info:
            if student_info['name'] == student_name:
                #默认查询到了
                flag =  True
                #输出信息
                print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']},手机号:{student_info['phone']}")
    
        if flag==False:
            print("录入的学生姓名不存在!")
    
    #模拟方法调用
    search_student()
    
  2. 查询全部

    • 相当于遍历全部
    ef search_all():
        for student_info in student_list_info:
            print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']},手机号:{student_info['phone']}")
    

1.4 将所有方法进行组合

  1. 定义函数 print_info() , 打印提示信息.
    • 自定义while True循环逻辑, 实现: 用户录入什么数据, 就进行相应的操作
    • 自定义函数 add_student(), 实现: 添加学生,姓名必须唯一
    • 自定义函数 delete_student(), 实现: 删除学生, 根据姓名删除
    • 自定义函数 update_student(), 实现: 修改学生信息,根据姓名修改: 姓名, 手机号.
    • 自定义函数 search_student(), 实现: 查询某个学生信息,根据姓名查询
    • 自定义函数 search_all(), 实现: 查询所有学生的信息。
# 1.打印提示界面,将界面封装到一个方法中
def print_menu():
    print("====欢迎使用学生管理系统====")
    print('1. 添加学生信息')
    print('2. 删除学生信息')
    print('3. 修改学生信息')
    print('4. 显示学生信息')
    print('5. 查询所有的学生信息')
    print('0. 退出系统')
    print("=================")

# 1.1.学生信息保存到列表中
student_list_info = []


# 2.框架调用设计
# 使用循环重复执行
def main():
    count = 0  # 界面计数
    while True:
        print_menu()  # 调用菜单显示信息
        # 根据菜单信息选择相应提示
        num = input("\t请输入操作编号: ")  # 获取用户输入编号
        count += 1  # 扩展:统计累计次数
        if num == '1':
            print("=== 正在使用[添加学生信息] ===")
            # 调用添加函数
            add_student()

        elif num == "2":
            print("=== 正在使用[删除学生信息] ===")
            # 调用删除函数
            delete_student()
        elif num == "3":
            # 调用修改函数
            print("=== 正在使用[修改学生信息] ===")
            update_student()
        elif num == "4":
            print("=== 正在使用[查询单个学生信息] ===")
            # 调用显示学生信息函数
            search_student()

        elif num =="5":
            print("=== 正在使用[查询全部] ===")
            search_all()

        elif num == "0":  # 退出循环
            # 人性设计思路
            answer = input("亲,真心退出么? ")
            if answer == "真心":
                print("程序结束")  # end
                break  # 结束整个循环
        else:
            print("输入有误,请重新输入")
        print(f"======跳转界面{count}次数=======")


# 3. 添加学生信息模块:
def add_student():
    # 3.1 添加学生姓名,性别,手机号
    # 提示,添加学生信息
    new_student_name = input("请录入学生姓名: ")
    # 提示,添加学生性别
    new_student_sex = input("请录入学生性别: ")
    # 3.2 存储信息 ,使用字典的,以键值对的方式
    new_sturdent_info = {}

    # 注意: 加一个校验 ,变量成员变量(函数中有介绍)
    # student_list_info 列表字典信息.
    # 通过key进行遍历
    for student_key in student_list_info:
        if student_key['name'] == new_student_name:
            print(f"学生姓名 {new_student_name} 已存在,请输入其他姓名。")
            return

    # 3.2.1 将数据添加到字典,new_sturdent_info['key']=值
    # 字典添加键值对的特点:,没有就添加,有就覆盖
    new_sturdent_info['name'] = new_student_name
    new_sturdent_info['sex'] = new_student_sex

    # 3.3需要将新添加的学生信息添加到,学生列表中保存
    # 列表中嵌套字典,每一个元素都是一个学生信息  student_list_info= [{},{},{},{}]
    student_list_info.append(new_sturdent_info)

# 4.删除学生信息
def delete_student():
    # 姓名是唯一id不能重复
    key = input("请输入要删除学生的姓名: ")
    for student_info in student_list_info:
        if student_info['name'] == key:
            # 如果相同则移除.
            student_list_info.remove(student_info)
            print("删除成功")
            break
    else:
        print("姓名不存在")

# 5. 修改学生信息
def update_student():
    student_name = input("请输入要修改学生的姓名: ")
    # 遍历获取学生信息
    for student_info in student_list_info:
        if student_info['name'] == student_name:
            new_name = input("请输入修改后的名字: ")
            new_sex = input("请输入修改后的性别: ")

            # 5.1 将修改的学生信息添加进入
            student_info['name'] = new_name
            student_info['sex'] = new_sex
            print("修改成功")
            break
    else:
        print("修改的姓名不存在")

#6显示学生信息
def search_student():
    #根据学生信息查询
    #定义一个标志变量
    flag = False
    student_name = input("请输入要查询的学生名字: ")
    for student_info in student_list_info:
        if student_info['name'] == student_name:
            #默认查询到了
            flag =  True
            #输出信息
            print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']}")

    if flag==False:
        print("录入的学生姓名不存在!")


def search_all():
    for student_info in student_list_info:
        print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']}")



# 调用一个主方法
main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebSocket协议基础

文章目录 什么是websocketwebsocet 特点 一、websocket 建立连接流程二、websocket 握手流程客户端握手包2.服务端握手包 三、websocket数据总结参考 什么是websocket WebSOcket 是基于TCP的应用层协议。该协议和http或https 相似,但是却区别于http的一种新的协议。…

AD Class 、设计参数、规则的创建

设计 生产 线宽 间距 过孔 根据生产的要求进行桥接 Class 电源走线 和 信号走线 设计—》类里有 将所有的电源都添加进电源类里 新建的类别可以在Panls的PCB中看到 并且可以在这里面改变线的颜色 区分电源 对于走线的宽度,电源主要是用来载流的,信号主要是用来做信…

彻底理解Handler的设计之传送带模型

作者:彭泰强 0 这篇文章的目的 有时候在Handler相关的文章中可以看到,会把Handler机制的几个角色类比成一个传送带场景来理解。 例如,这篇文章中写到: 我们可以把传送带上的货物看做是一个个的Message,而承载这些货物…

6.2.8 网络基本服务----万维网(www)

6.2.8 网络基本服务----万维网(www) 万维网即www(World Wide Web)是开源的信息空间,使用URL也就是统一资源标识符标识文档和Web资源,使用超文本链接互相连接资源,万维网并非某种特殊的计算机网…

力扣 198.打家劫舍【中等】

198.打家劫舍 1 题目2 思路3 代码4 结果 1 题目 题目来源:力扣(LeetCode)https://leetcode.cn/problems/house-robber 题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃…

【Vue3】初始化和Composition API(组合式)

Vue3 创建Vue3.0工程查看自己的vue/cli版本,使用Vue/cli创建使用vite创建 查看Vue3.0工程vue.config.js中,关闭语法检查,main.js讲解app.vue讲解 常用的Composition API(组合式)1.拉开序幕的setup返回对象返回渲染函数…

降级npm后,出现xxx 不是内部或外部命令解决方法

比如我安装了anyproxy npm install anyproxy -g 之后在cmd中输入anyproxy 发现 anyproxy 不是内部或外部命令解决方法. 一般出现这样的问题原因是npm安装出现了问题,全局模块目录没有被添加到系统环境变量。 Windows用户检查下npm的目录是否加入了系统变量P…

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测 目录 时序预测 | MATLAB实现Hamilton滤波AR时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 预测在很大程度上取决于适合周期的模型和所采用的预测方法,就像它们依赖于过滤器提取的周期一样。标准 Hodrick-P…

Top-down方法学

Top-down方法学由Intel提出,是一种软件性能分析技术。 x86处理器的PMU一般提供8个PMC,其中4个是固定的PMC,其对应的监控信号是不能配置的。另外4个PMC监控的信号是可以配置的。 Top-down方法学的动机 通过PMC,软件工程师可以获…

【观察】超融合+软件定义,构建双活数据中心“新范式”

随着数字化转型的加速,企业的业务经营活动越来越多依赖于数据中心等基础设施,“全天候”业务连续性运营也正成为大中型企业追求的目标,如何实现减少甚至消除正常和非正常的停机对业务可用性造成的影响,不但是企业IT建设与运维团队…

Spring - 更简单的获取 Bean 对象

目录 二、获取 Bean 对象(对象装配或者对象注入) 1. 属性注入 1.1 属性注入的优点和缺点: 2. Setter注入 2.1 Setter注入的优点和缺点 3. 构造方法注入(spring 官方推荐的对象注入方式) 3.1 构造方法的优点和缺点…

【PHP面试题47】Redis的持久化有哪几种?有什么区别?谈谈你的理解

文章目录 一、前言二、RDB(Redis数据库)持久化方式2.1 触发条件2.2 RDB文件的格式2.3 RDB持久化原理2.4 RDB方式的优缺点 三、AOF(Append Only File)持久化方式3.1 触发条件3.2 AOF文件的格式3.3 AOF持久化原理3.4 AOF方式的优缺点…

cmake项目相关的变量

cmake项目相关的变量 在cmake项目中,通常需要对路径进行操作,比如我们需要知道源码的顶级目录,源码的构建目录和某个project名字相关的一些目录等。 CMAKE_SOURCE_DIR,这个变量的值代表的是源码的顶级目录。但是这个变量的值可能…

Python(十一)变量多次赋值

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

【hadoop】部署hadoop的本地模式

hadoop的本地模式 本地模式的特点部署本地模式测试本地模式是否部署完成 本地模式的特点 没有HDFS、也没有Yarn只能测试MapReduce程序,作为一个普通的Java程序处理的数据是本地Linux的文件一般用于开发和测试 部署本地模式 进入该路径 /root/training/hadoop-2.7…

吴恩达机器学习2022-Jupyter

1 可选实验室: Python、 NumPy 和矢量化 简要介绍本课程中使用的一些科学计算。特别是 NumPy 科学计算包及其与 python 的使用。 2 目标 在这个实验室里将回顾课程中使用的 NumPy 和 Python 的特性。 Python 是本课程中使用的编程语言。NumPy 库扩展了 python 的基本功能&a…

mac 如何批量修改图片名称

mac 如何批量修改图片名称?很多使用mac电脑的小伙伴一直有这样一个疑问,怎么在电脑上一次性的批量修改大量图片的名称,很多小伙伴在电脑上整理图片的时候都需要批量重命名,批量处理的功能可以让我们节省不少的时间和精力&#xff…

抖音seo怎么选择关键词

要查找抖音的关键词,以进行SEO优化,可以按照以下步骤进行: 1. 关键词分析与筛选: 首先,你需要确定你的目标受众和内容类型。了解你的目标用户是谁,他们可能会搜索什么样的内容。然后,使用关键…

虾皮一面:手写一个Strategy模式(策略模式)

说在前面 在40岁老架构师 尼恩的读者交流区(50)中,最近有指导一个小伙伴面试架构师,面试的公司包括虾皮、希音、美团等大厂,目标薪酬50K以上,遇到了一个比较初级的问题: 请手写一个Strategy模式(策略模式…

基于物联网技术的养老院管理系统设计与实现_kai

基于物联网技术的养老院管理系统设计与 实现 摘 要 随着我国老年人口数量的逐年增加,人口抚养比也在迅速攀升,越来越多的老年人将走 出家门进入养老院安度自己的晚年。同时国家和地方也相继出台了加快发展老龄事业的政策 方针,作为机构养老…