python控制台学生管理系统

news2024/11/23 8:41:23

代码与注释

具体功能说明

  • 设计初始界面
  • 设计学生信息录入
    • 【数据校准】录入判断 学生姓名不能为空,并且不成超过4个字
    • 【数据校准】录入判断年龄在0-120 需要进行判断
    • 【数据校准】录入需要判断学号是否为空与学号是否在10位数
    • 【数据校准】录入需要判断成绩是否在0-100之间、并判断录入成绩为数字
    • 录入信息包括:姓名、年龄、学号、数学成绩、政治成绩、英语成绩
    • 在录入信息有错误后,及时进行重新输入信息
    • 录完学生信息后,提示是否继续录入学生信息
    • 将学生成绩添加一列,平均分
    • 录入学生信息完成后进行信息保存
  • 设计学生查询【按照学号查询】.
    • 若没有找到对应的学生信息,请提示没有找到学生信息
  • 根据学号进行删除学生信息
    • 若没有找到对应的学生信息,请提示没有找到学生信息
    • 删除完学生信息后进行信息保存
  • 退出学生系统

功能函数

  • 菜单函数
  • 循环接受用户交互函数
  • 录入学生信息函数
  • 保存学生信息函数
  • 查询学生信息函数
  • 删除学生信息函数
  • 退出系统函数

相关代码

交互界面代码

	print('\n')
    print('=======================学生信息管理系统=======================')
    print('---------------------------功能菜单--------------------------')
    print('\t\t\t1.录入学生信息')
    print('\t\t\t2.查找学生信息')
    print('\t\t\t3.删除学生信息')
    print('\t\t\t0.退出')
    print('\n')

选择交互代码

choice = int(input('请选择:')) #输入选择
        if choice in [0, 1, 2, 3]:
            if choice == 0:
                answer = input('您确定要退出系统吗?y/n:')
                if answer == 'y' or answer == 'Y':
                    print('谢谢您的使用!')
                    break
                else:
                    continue
            elif choice == 1:
                insert()
            elif choice == 2:
                search()
            elif choice == 3:
                delete()

判断学生姓名是否为空,并且不能超过4个字

# 判断是否符合条件
        if not name or len(name) > 4:
            print('您输入【为空】或者学生【姓名字数大于4个】,请重新输入学生信息')

学号不能为空、并且学号为10位

#写法1
if not Number or len(Number) < 10 or len(Number) > 10:
  print('您输入【为空】或者ID【不是10位数的】,请重新输入学生信息')
  continue

#写法2
if not Number or len(Number) != 10:
  print('您输入【为空】或者ID【不是10位数的】,请重新输入学生信息')
  continue

运行截图
在这里插入图片描述

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

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

相关文章

python数据分析-Mysql中NULL和‘ ‘怎么处理(不使用update)

一、空值NULL和空字符’ ’ 展示代码使用的版本是&#xff1a;8.0.28 空值NULL的长度是NULL&#xff0c;是占用存储空间的。空字符串’ 的长度是0&#xff0c;是不占用空间的。 理解&#xff1a;空字符串就像是一个真空状态的杯子&#xff0c;什么都没有;而空值NULL_就像是一…

17-事件循环(实现单线程非阻塞的方法就是事件循环)

一、是什么 &#x1f9c0;&#x1f9c0;&#x1f9c0;首先&#xff0c;JavaScript是一门单线程的语言&#xff0c;意味着同一时间内只能做一件事&#xff0c;但是这并不意味着单线程就是阻塞&#xff0c;而实现单线程非阻塞的方法就是事件循环 在JavaScript中&#xff0c;所有…

Vue路由模式

1. vue路由简介和基础使用 1.1 什么是路由 设备和ip的映射关系 接口和服务的映射关系 路径和组件的映射关系 1.2 为什么使用路由&#xff1f; 在一个页面里, 切换业务场景&#xff0c;具体使用示例: 网易云音乐 网易云音乐 单页面应用(SPA): 所有功能在一个html页面上实现 前…

虚拟内存(Virtual Memory)

什么是虚拟内存&#xff1f; 虚拟内存(Virtual Memory) 是计算机系统内存管理非常重要的一个技术&#xff0c;本质上来说它只是逻辑存在的&#xff0c;是一个假想出来的内存空间&#xff0c;主要作用是作为进程访问主存&#xff08;物理内存&#xff09;的桥梁并简化内存管理。…

.NET的AsyncLocal用法指南

AsyncLocal用法简介 通过 AsyncLocal 我们可以在一个逻辑上下文中维护一份私有数据&#xff0c;该上下文后续代码中都可以访问和修改这份数据&#xff0c;但另一个无关的上下文是无法访问的。 无论是在新创建的 Task 中还是 await 关键词之后&#xff0c;我们都能够访问前面设…

开关电源——三种基本拓扑

开关电源——三种基本拓扑 开关电源基本原理——伏秒数法则与占空比 当电路是稳态电路的时候&#xff0c;有限的输入对应有限的输出&#xff0c;即电路不再积累能量&#xff0c;电感积累的能量是电压对时间的积分&#xff0c;在开关电源电路中&#xff0c;电感在开关导通和截…

06- c语言预处理 (C语言)

一 预处理概述 1、前面各章中&#xff0c;已经多次使用过 #include 命令。使用库函数之前&#xff0c;应该用#include引入对应的头文件。这种以 #号开头的命令 称为预处理命令。 2、C语言提供了多种预处理功能&#xff0c;如 宏定义、文件包含、条件编译 等。合理地使用预处理…

web漏洞-反序列化之PHPJAVA全解(上)(37)

这个很重要 为什么会产生这个东西&#xff1a;序列化之后便于我们对象的传输和保存&#xff0c;这个作用就是为了数据的传递和格式的转换&#xff0c;我们称之为序列化。 在这给过程中&#xff0c;会涉及到一种叫做有类和无类的情况&#xff0c;开发里面经常看到的一个东西&a…

『免费开源』基于单片机的自动浇花系统DIY总结

功能梳理 PCB线路板采用核心板底板实现 核心板&#xff1a;排针引脚间距为2.54mm&#xff0c;2排&#xff0c;双排间距为2.54mm的倍数&#xff08;方便与面包板联用&#xff09;&#xff0c;未使用引脚全部引出&#xff0c;核心板上的主芯片为STM32F103RET6。 目的&#xff1a…

ProtoBuf 第一章、初识

一、初识 ProtoBuf 1.1序列化的概念 序列化和反序列化 序列化&#xff1a;把对象转换为字节序列的过程 称为对象的序列化。反序列化&#xff1a;把字节序列恢复为对象的过程 称为对象的反序列化。 什么情况下需要序列化 存储数据&#xff1a;当你想把的内存中的对象状态保存…

Opencv-C++笔记 (12) : opencv-仿射变化

文章目录 一、概述二、GetRotationMatrix2D三、warpAffine() 一、概述 介绍完图像的缩放和翻转后&#xff0c;接下来将要介绍图像的旋转&#xff0c;但是在OpenCV 4中并没有专门用于图像旋转的函数&#xff0c;而是通过图像的仿射变换实现图像的旋转。实现图像的旋转首先需要确…

MT6704 应用

MT6704 是用于反激式变换器的高性能 40V 同步整流器。它兼容各种反激转换器类型。支持 DCM、CCM 和准谐振模式。MT6704 集 成 了 一 个 40V 功 率MOSFET&#xff0c;MT6704可以取代肖特基二极管&#xff0c;提高效率。V SW <V TH-ON 时&#xff0c;内部 MOSFET 导通。 V SW …

【JavaEE】网络层和数据链路层重点协议:IP和以太网

目录 1、IP协议 1.1、IP协议报头 1.2、解决IPv4地址不够用的问题 2、IP地址管理 2.1、IP地址的组成 2.1.1、子网掩码 2.1.2、IP地址的分类 3、路由选择 4、数据链路层协议&#xff1a;以太网协议 1、IP协议 IP协议属于TCP/IP模型的网络层&#xff0c;在网络层协议存在…

volatile,wait和notify,懒汉模式和饿汉模式,阻塞式队列,定时器

目录 可见性 volatile volatile保证内存可见性 volatile不保证原子性 synchronized也可以保证内存可见性 wait和notify wait () notify() notifyAll() wait和sleep对比 顺序执行ABC三个线程 单例模式 饿汉模式 懒汉模式 懒汉模式和饿汉模式在多线程环境下调用getInstance,是否…

将条码图片批量嵌入到Excel单元格中

项目源码&#xff08;如果有帮助希望可以点一个star&#xff09; 业务场景&#xff1a; 需要将条码图片存到excel之中方便归档。 效果展示&#xff1a; 直接运行org.example.Main.main()就会将file目录中的图片插入到excel中&#xff0c;并且在项目根目录会生成一个.xlsx文件…

CTFshow-pwn入门-前置基础pwn20-pwn22

pwn20-pwn22是关于.got节跟.got.plt节的。这3道题的问题描述全是一样的&#xff0c;全都是问.got跟.got.plt是否可写以及他们的地址是什么&#xff0c;然后根据这些信息来拼成flag。那么关于.got和.got.plt的内容非常复杂&#xff0c;这里呢我也不解释了&#xff0c;推荐一个牛…

【kubernetes】负载均衡器安装部署-Haproxy与keepalived

前言:二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用kubernetes集…

不要再用 count(*) 查询记录数了

来源 | 苏三说技术 &#xff08;ID&#xff1a;susanSayJava&#xff09; 已获得原公众号的授权转载 前言 最近我在公司优化过几个慢查询接口的性能&#xff0c;总结了一些心得体会拿出来跟大家一起分享一下&#xff0c;希望对你会有所帮助。 我们使用的数据库是Mysql8&…

【6.19】用户自己写String类会发生什么(双亲委派机制)

用户自己写一个String类会发生什么&#xff1f; 了解“类加载器” Java是运行在Java的虚拟机&#xff08;JVM&#xff09;中的。我们在IDE里编写的Java源代码先编译成.class的字节码文件&#xff0c;再由ClassLoader将class文件加载到JVM中执行。 JVM中有三层ClassLoader&am…

apple pc install windows 10

苹果笔记本安装window10&#xff0c;做个U盘启动&#xff0c;开机狂摁option&#xff0c;选择U盘&#xff0c;当然你最好去windows官方下个镜像&#xff0c;避免我前面出现提出镜像不行。另外苹果后来机器好像不能安windows了。呼呼…