Python学习之路-综合练习:学生管理系统

Python学习之路-综合练习:学生管理系统

目前已经学习了变量、流程控制、函数、模块,可以利用已学习的知识开发一个学生管理系统

项目需求

  • 系统有首页介绍页面与功能菜单
  • 系统功能由查询、显示、修改与删除功能
  • 可以使用数字选择不同的功能
  • 学生信息需要记录:姓名、性别、年龄、班级

项目搭建

步骤

创建文件
  • 新建student_main.py文件,用于编写主程序功能代码,并作为程序的入口每一次启动名片管理系统都通过这个文件启动

  • 新建student_tools.py文件,用于编写功能函数,将对系统的 新增查询修改删除 等功能封装在不同的函数中

梳理业务逻辑,编写业务流程
# 通过死循环控制整个业务主体运行# 编写系统欢迎界面,并显示功能菜单# 提供用户输入选项# 对输入选项进行输出# 根据用户输入决定后续的操作

{{< admonition tip “提示” true >}}

在进行编码前最好进行业务逻辑的梳理,然后根据需求编写一个业务流程。编码前思考再进行编码能大大提高整体的效率。

{{< /admonition >}}

完成主程序编码
# 通过死循环控制整个业务主体运行
while True:# 编写系统欢迎界面,并显示功能菜单print("*" * 20)print("欢迎使用【学生管理系统】1.0\n\n1. 新增学生\n2. 显示全部学生\n3. 查询学生\n0. 退出系统")print("*" * 20)# 提供用户输入选项options = input("请选择操作功能:")# 对输入选项进行输出print("您选择的操作是:%s" % options)# 根据用户输入决定后续的操作if options in ["1", "2", "3"]:pass# TODO 后续操作业务elif options == "0":print("欢迎再次使用【名片管理系统】")breakelse:print("输入错误,请重新输入")

{{< admonition tip “提示” true >}}

# 后跟上 TODO,用于标记需要去做的工作

{{< /admonition >}}

学生管理相关业务流程
新增学生
# 新增学生模块信息提示# 提示用户输入学生信息# 判断学生是否存在# 存在则提示学生已存在# 不存在将学生信息保存到一个字典# 并将学生字典添加到学生列表# 提示添加成功信息
显示所有学生
# 显示全部学生模块信息提示# 遍历列表显示全部学生信息
查询学生
# 查询学生信息模块信息提示# 提示用户输入搜索学生的姓名# 遍历字典进行查询# 找到后进行后续操作:修改/删除# 没有找到输出提示信息
修改与删除学生信息
# 修改学生信息模块信息提示# 提示用户输入修改学生的相关信息# 提示修改成功信息# 提示删除成功信息
完成相关业务流程代码
student_list = []def new_student():"""新建名片"""# 新增学生模块信息提示print("-" * 50)print("功能:新建学生")# 提示用户输入学生信息name = input("请输入姓名:")gender = input("请输入性别:")age = input("请输入年龄:")team = input("请输入班级:")# 将学生信息保存到一个字典student_dict = {"name": name,"gender": gender,"age": age,"team": team}# 将学生字典添加到学生列表student_list.append(student_dict)# 提示添加成功信息print("成功添加学生:%s" % student_dict["name"])def show_all_student():"""显示全部学生"""# 显示全部学生模块信息提示print("-" * 50)print("功能:显示全部学生")# 遍历列表显示全部学生信息for name in ["姓名", "性别", "年龄", "班级"]:print(name, end="\t\t")print("")# 打印分隔线print("=" * 50)# 格式化输出信息for student_dict in student_list:print("%s\t\t%s\t\t%s\t\t%s" % (student_dict["name"],student_dict["gender"],student_dict["age"],student_dict["team"]))def search_student():"""查询学生信息"""# 查询学生信息模块信息提示print("-" * 50)print("功能:搜索名片")# 提示用户输入搜索学生的姓名find_name = input("请输入要查询的学生姓名:")# 遍历字典进行查询for student_dict in student_list:if student_dict["name"] == find_name:print("姓名\t\t\t性别\t\t\t年龄\t\t\t班级")print("-" * 40)print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (student_dict["name"],student_dict["gender"],student_dict["age"],student_dict["team"]))print("-" * 40)# 找到后进行后续操作:修改/删除# 提示用户输入修改学生的相关信息options = input("请选择要执行的操作[1] 修改 [2] 删除 [0] 返回上级菜单")if options == "1":student_dict["name"] = input("请输入姓名:")student_dict["gender"] = input("请输入性别:")student_dict["age"] = input("请输入年龄:")student_dict["team"] = input("请输入班级:")# 提示修改成功信息print("学生:'%s'的信息修改成功" % student_dict["name"])elif options == "2":student_list.remove(student_dict)# 提示删除成功信息print("学生:'%s'的信息删除成功" % student_dict["name"])breakelse:# 没有找到输出提示信息print("没有找到 %s" % find_name)
将相关业务流程代码导入主流程,补充主流程中TUDO部分
from student_tools import new_student,show_all_student,search_student# 通过死循环控制整个业务主体运行
while True:# 编写系统欢迎界面,并显示功能菜单print("*" * 20)print("欢迎使用【学生管理系统】1.0\n\n1. 新增学生\n2. 显示全部学生\n3. 查询学生\n0. 退出系统")print("*" * 20)# 提供用户输入选项option = input("请选择操作功能:")# 对输入选项进行输出print("您选择的操作是:%s" % option)# 根据用户输入决定后续的操作if option in ["1", "2", "3"]:if option == "1":new_student()elif option == "2":show_all_student()elif option == "3":search_student()elif option == "0":print("欢迎再次使用【名片管理系统】")breakelse:print("输入错误,请重新输入")

{{< admonition tip “提示” true >}}

在代码中大量使用/n和/t等转义字符用于优化字符串输出样式,Python中可以使用的转移字符串如下表格:

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
单引号
"双引号
\a响铃
\b退格(Backspace)
\e转义
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
\xyy十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

{{< /admonition >}}

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

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

相关文章

Trans论文复现:基于数据驱动的新能源充电站两阶段规划方法程序代码!

适用平台&#xff1a;MatlabYalmipCplex/Gurobi&#xff1b; 文章提出了一种电动汽车充电站的两阶段规划方法&#xff0c;第一阶段通过蒙特卡洛法模拟充电车辆需求和电池充放电数据来确定充电站位置&#xff1b;第二阶段通过数据驱动的分布鲁棒优化方法优化充电站的新能源和电池…

【惠友骨科小课堂】拇外翻常见的几个误区,来看看你中了几个?

拇外翻作为常见的足部畸形&#xff0c;在日常生活中困扰着许多人。歪脚趾不仅外观不好看&#xff0c;还会出现疼痛、影响行走运动。但大多数人对于拇外翻的认识都不足常常落入认知误区&#xff0c;快来看看你中了几个&#xff1f; 误区一Q 我都没穿过高跟鞋&#xff0c;怎么也…

爬虫实战丨基于requests爬取比特币信息并绘制价格走势图

文章目录 写在前面实验环境实验描述实验内容 写在后面 写在前面 本期内容&#xff1a;基于requests爬取比特币信息并绘制价格走势图 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88734451 实验环境 anaconda丨pycharmpython3.11.4requests 安装r…

MySQL夯实之路-查询性能优化深入浅出

MySQL调优分析 explain&#xff1b;show status查看服务器状态信息 优化 减少子任务&#xff0c;减少子任务执行次数&#xff0c;减少子任务执行时间&#xff08;优&#xff0c;少&#xff0c;快&#xff09; 查询优化分析方法 1&#xff0e;访问了太多的行和列&#xff1…

pytorch学习笔记(十)

一、损失函数 举个例子 比如说根据Loss提供的信息知道&#xff0c;解答题太弱了&#xff0c;需要多训练训练这个模块。 Loss作用&#xff1a;1.算实际输出和目标之间的差距 2.为我们更新输出提供一定的依据&#xff08;反向传播&#xff09; 看官方文档 每个输入输出相减取…

数据库-列的类型-字符串char类型

char 和 varchar 类型 char 类型懂得都懂就是固定的字符串类型 char (maxLen) 例如 char(5) 这个长度为5 但插入数据‘a’时 是5 插入abc 也是5 即使插满固定 就像C/C语言里 char 字符数组一样 char str[64]; maxLen255 哈哈最多有255个字符多了我认为你是错误 varchar…

C++(9)——内存管理

1. 内存分类&#xff1a; 在前面的文章中&#xff0c;通常会涉及到几个名词&#xff0c;例如&#xff1a;栈、堆。这两个词所代表的便是计算机内存的一部分 。在计算机中&#xff0c;对系统的内存按照不同的使用需求进行了区分&#xff0c;大致可以分为&#xff1a;栈 、堆、数…

Pandas实战100例 | 案例 30: 应用自定义函数

案例 30: 应用自定义函数 知识点讲解 在数据处理过程中&#xff0c;有时需要对数据应用特定的逻辑&#xff0c;这时可以使用自定义函数。Pandas 的 apply 方法允许你对 DataFrame 的行或列应用一个自定义函数。 自定义函数: 你可以定义一个 Python 函数&#xff0c;该函数可…

Debezium发布历史63

原文地址&#xff1a; https://debezium.io/blog/2019/07/08/tutorial-sentry-debezium-container-images/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 将 Sentry 添加到 Debezium 容器镜像的教程 2019 年 7…

安卓11菜单实现hdmi-4K动态切换

客户要求系统实现动态hdmi-4K与普通分辨率直接热切换&#xff0c;先在菜单中做个试验&#xff0c;设置中加个切换开关&#xff0c;点击开关就可以直接切到hdmi-4K&#xff0c;这个功能实现后可以通过插拔hdmi那个状态&#xff08;sys/class/drm/card0-HDMI-A-1/status&#xff…

41k+ stars 闪电般快速的开源搜索引擎 docker安装教程

目录 1.下载 2.启动 成功示例 3.创建索引 4.插入数据 4.1下载数据 4.2插入数据 4.3查看数据 5.官方地址 1.下载 docker pull getmeili/meilisearch:latest 2.启动 mkdir -p /opt/meili_datadocker run -it --rm \-p 7700:7700 \-v /opt/meili_data:/meili_data \ge…

YOLOV7剪枝流程

YOLOV7剪枝流程 1、训练 1&#xff09;划分数据集进行训练前的准备&#xff0c;按正常的划分流程即可 2&#xff09;修改train.py文件 第一次处在参数列表里添加剪枝的参数&#xff0c;正常训练时设置为False&#xff0c;剪枝后微调时设置为True parser.add_argument(--pr…

2401d,讨论d串滑动参数

原文 因为对编译时执行的i串的兴趣,我一直在考虑搞个通用用例,而不是相关i串的用例. 滑动模板参数 请考虑以下模板: void pluto(string s)() {pragma(msg, s); } void test() {pluto!"hello"(); }因为s是编译时参数,这编译,而pragma(msg,s) 期望s为编译时值. voi…

Linux第28步_编译“正点原子的TF-A源码”

编译“正点原子的TF-A源码”&#xff0c;目的是想得到TF-A文件&#xff0c;即“tf-a-stm32mp157d-atk-trusted.stm32”。 在前27步的基础上&#xff0c;才可以学习本节内容&#xff0c;学习步骤如下&#xff1a; 1、创建“alientek_tf-a”目录&#xff1b; 2、复制正点原子的…

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)

概率图模型是一种用图形表示概率分布和条件依赖关系的数学模型。概率图模型可以分为两大类&#xff1a;有向图模型和无向图模型。有向图模型也叫贝叶斯网络&#xff0c;它用有向无环图表示变量之间的因果关系。无向图模型也叫马尔可夫网络&#xff0c;它用无向图表示变量之间的…

02.部署LVS-DR群集

技能展示&#xff1a; 了解LVS-DR群集的工作原理 会构建LVS-DR负载均衡群集 2.1 LVS-DR 集群 LVS-DR&#xff08; Linux Virtual Server Director Server &#xff09;工作模式&#xff0c;是生产环境中最常用的一种工作模式。 2.1.1&#xff0e;LVS-DR 工作原理 LVS-DR 模式&…

在root账号下启动 elasticsearch

最新版本的 elasticsearch 不能用root账号运行&#xff0c;但是每次启动都要切换到其他账号下面&#xff0c;也是一件很麻烦的事情。下面写个脚本&#xff0c;以指定用户运行elasticsearch 假设服务器已经装好了elasticsearch&#xff0c;并且在 /usr/local/elasticsearch-8.1…

Spark---RDD持久化

文章目录 1.RDD持久化1.1 RDD Cache 缓存1.2 RDD CheckPoint 检查点1.3 缓存和检查点区别 1.RDD持久化 在Spark中&#xff0c;持久化是将RDD存储在内存中&#xff0c;以便在多次计算之间重复使用。这可以显著减少不必要的计算&#xff0c;提高Spark应用程序的性能。 val line…

蓝桥杯练习题(七)

&#x1f4d1;前言 本文主要是【算法】——蓝桥杯练习题&#xff08;七&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …

kotlin运行

1.使用android studio 由于我本身是做android的&#xff0c;android studio本身有内置kotlin的插件。但若只是想跑kotlin的程序&#xff0c;并不像和android程序绑在一起&#xff0c;可以创建一个kt文件&#xff0c;在里面写一个main函数&#xff0c;就可以直接运行kotlin程序…