python简易学生管理 + MySQL

news2024/12/28 18:22:44

数据库表

Python代码部分

import pymysql

class StMgmt(object):
    def tips(self):
        """提示用户选择的操作"""
        print("""
        学生管理系统 1.0
        1.查看所有信息
        2.查看学生信息
        3.修改学生信息
        4.增加学生信息
        5.退出学生系统
        """)

    def connect_base(self):
        """连接数据库并返回连接和游标"""
        base = pymysql.connect(host='localhost', port=3306, db='miaosi', user='root', password='123456')
        cursor = base.cursor()
        return base, cursor

    def view_all(self):
        """查询所有学生信息"""
        base, cursor = self.connect_base()
        try:
            cursor.execute("SELECT * FROM pupildata")
            back_data = cursor.fetchall()
            for line in back_data:
                print(line)
        finally:
            base.close()

    def search_data(self):
        """查询学生信息"""
        base, cursor = self.connect_base()
        try:
            user_name = input('请输入需要查找的学生姓名: ')
            cursor.execute("SELECT * FROM pupildata WHERE name LIKE %s", (user_name,))
            back_data = cursor.fetchall()
            if back_data:
                for data in back_data:
                    print(data)
            else:
                print('没有该学生!')
        finally:
            base.close()

    def add_data(self):
        """增加学生信息"""
        base, cursor = self.connect_base()
        try:
            user_id = int(input('请输入学号: '))
            user_name = input('请输入姓名: ')
            user_sex = input('请输入性别: ')
            user_age = int(input('请输入年龄: '))
            user_birthday = input('请输入生日(xxxx-xx-xx): ')
            user_phone = int(input('请输入手机号: '))
            user_address = input('请输入地址: ')

            cursor.execute(
                "INSERT INTO pupildata VALUES (%s, %s, %s, %s, %s, %s, %s)",
                (user_id, user_name, user_sex, user_age, user_birthday, user_phone, user_address)
            )
            base.commit()
            self.search_data(user_name)
            print('学生数据添加成功!')
        finally:
            base.close()

    def edit_data(self):
        """修改学生信息"""
        base, cursor = self.connect_base()
        try:
            tips = input('请输入要修改的学生姓名: ')
            # 获取用户输入的新数据
            user_id = int(input('请输入学号: '))
            user_name = input('请输入姓名: ')
            user_sex = input('请输入性别: ')
            user_age = int(input('请输入年龄: '))
            user_birthday = input('请输入生日(xxxx-xx-xx): ')
            user_phone = int(input('请输入手机号: '))
            user_address = input('请输入地址: ')

            # 修改数据
            cursor.execute(
                "UPDATE pupildata SET id=%s, name=%s, sex=%s, age=%s, birthday=%s, phone=%s, address=%s WHERE name = %s",
                (user_id, user_name, user_sex, user_age, user_birthday, user_phone, user_address)
            )
            base.commit()
            print('学生数据修改成功!')
        finally:
            base.close()

if __name__ == '__main__':
    miaows = StMgmt()
    miaows.tips()
    while True:
        try:
            num = int(input('请输入你的选项: '))
            if num == 1:
                miaows.view_all()
            elif num == 2:
                miaows.search_data()
            elif num == 3:
                miaows.edit_data()
            elif num == 4:
                miaows.add_data()
            elif num == 5:
                print('成功退出系统!')
                break
            else:
                print('无效的选项,请重新输入。')
        except ValueError:
            print('输入错误,请输入一个整数。')
        except Exception as e:
            print(f'发生错误:{e}')

 

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

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

相关文章

SPI 通信-stm32入门

本节我们将继续学习下一个通信协议 SPI,SPI 通信和我们刚学完的 I2C 通信差不多。两个协议的设计目的都一样,都是实现主控芯片和各种外挂芯片之间的数据交流,有了数据交流的能力,我们主控芯片就可以挂载并操纵各式各样的外部芯片&…

C语言-枚举

常量符号化 用符号而不是具体的数字来表示程序中的数字 枚举 用枚举而不是定义独立的const int变量 枚举是一种用户定义的数据类型,他用关键词enum以如下语法来声明: enum枚举类型名字{名字0,…,名字n}; 枚举类型名…

Q_GDW1819-2013电压监测装置协议结构解析

目录 一 专业术语二 基本功能2.1 基础功能2.2 数据存储2.3 显示功能(设备能够看到的)2.4 参数设置与查询2.5 事件检测与告警功能 三 其他内容3.1 通信方式3.2 通信串口 四 帧结构解析4.1 传输方式4.2 数据帧格式4.2.1 报文头(2字节&#xff0…

《深入理解计算机系统》学习笔记 - 第四课 - 浮点数

Floating Point 浮点数 文章目录 Floating Point 浮点数分数二进制示例能代表的数浮点数的表示方式浮点数编码规格化值规格化值编码示例 非规格化的值特殊值 示例IEEE 编码的一些特殊属性四舍五入,相加,相乘四舍五入四舍五入的模式二进制数的四舍五入 浮…

如何通过SPI控制Peregrine的数控衰减器

概要 Peregrine的数控衰减器PE4312是6位射频数字步进衰减器(DSA,Digital Step Attenuator)工作频率覆盖1MHz~4GHz,插入损耗2dB左右,衰减步进0.5dB,最大衰减量为31.5dB,高达59dBm的IIP3提供了良好的动态性能,切换时间0.5微秒,供电电源2.3V~5.5V,逻辑控制兼容1.8V,20…

【Python】修改pip 默认安装位置

使用pip安装的时候,一般是默认安装在c盘里的。这样做很容易会让c盘的文件堆满。那么如何让pip安装的包放入d盘呢? 查看pip默认安装的位置 在cmd里输入python -m site,这里可以看到,安装包会默认下载到c盘中 从这里可以看到&am…

openGauss学习笔记-152 openGauss 数据库运维-备份与恢复-物理备份与恢复之PITR恢复

文章目录 openGauss学习笔记-152 openGauss 数据库运维-备份与恢复-物理备份与恢复之PITR恢复152.1 背景信息152.2 前提条件152.3 PITR恢复流程152.4 recovery.conf文件配置**152.4.1 归档恢复配置****152.4.2 恢复目标设置** openGauss学习笔记-152 openGauss 数据库运维-备份…

AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?

前言 Google 最近发布的 Gemini 模型在全球引起了巨大反响,其在多模态领域的 Video demo 无比震撼。对于 Android 开发者而言,其中最振奋人心的消息莫过于 Gemini Nano 模型将内置到 Android 系统当中,并开放给开发者使用。 事实上&#xf…

三哥的黑科技,印度发布无线加热服装专利,冬季神器要来了

众所周知风和自由在冬天是不存在的,冬天只剩下冰冷的像刀子一样的风刮在你的脸上,哪怕穿的很厚,戴上全盔,也无法阻挡冰冷的风带走你身体温度,如果穿的特别多,骑车时候的舒适感和穿脱衣物的繁琐也是一大头疼…

用23种设计模式打造一个cocos creator的游戏框架----(十三)模板方法模式

1、模式标准 模式名称:模板方法模式 模式分类:行为型 模式意图:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 结构图&#xff1a…

LIS检验系统,涵盖实验室全部管理流程,适合各种实验机构的业务流程

LIS检验系统源码,云LIS医学检验系统源码 LIS检验系统涵盖实验室的全部管理流程,包括从检验申请、标本采集、实验检测、报告发布的、质控管理、科室事务、试剂管理等完整流程的功能,实现智能化、自动化、规范化管理,遵循医学实验室…

人工智能的技术演进与未来趋势

人工智能的技术演进与未来趋势 一、引言 人工智能(AI)已经成为当今科技领域的热门话题,其在各个行业的应用越来越广泛。从智能语音助手到自动驾驶汽车,从智能家居系统到医疗诊断,AI技术已经深入到我们的日常生活。在…

排序算法:【插入排序】

一、插入排序:时间复杂度、原地排序 原理:可以想象成打扑克牌时候,发到手里的牌,我们一张一张拿起来插到手里牌的适当位置。 将待排序列表的第一个元素看作是一个有序序列(或叫有序区),然后从第…

坚守数字化创新烽火之地 百望云入选新华社“品牌信用建设典型案例”

潮起海之南,风好正扬帆。2023年12月2日-5日,南海之滨,由新华通讯社、海南省人民政府、中国品牌建设促进会主办的主题为“聚焦新质生产力,增强发展新动能”的2023中国企业家博鳌论坛在海南博鳌隆重举行。 群贤毕至,高朋…

推荐3dmax常用15款插件,快来了解一下吧!

推荐3dmax常用15款插件,快来了解一下吧! 插件是3ds MAX软件的重要组成部分,提供了太多便利,也提升了建模、渲染和动画的效率,下面就给大家推荐25款常用的3dMax插件。 1)DashedShape DashedShape实线转虚线…

树莓派上电发送IP地址到邮箱

创建python脚本文件 auto_send_email.py #!/usr/bin/python3import subprocess import smtplib from email.mime.text import MIMEText import datetime import time import osdef check_ping():hostname "www.baidu.com"response os.system("ping -c 1 &quo…

Redis对象——内存回收,对象共享和空转时长

一. 内存回收 因为C语言不具备内存回收功能,所以Redis在自己的对象系统中构建了一个引用计数技术实现内存回收机制。通过这一机制,程序可以通过跟踪对象的引用计数信息,在适当的时候自动释放对象并进行内存回收。 内每一个对象的引用计数信息…

2024美赛备战2--模型建立(*****必看****)

建模 美赛涉及的建模知识范围非常广且深,纵观美赛真题不难发现,很多的模型 都是读研或者读博的时候才会真正深入开始研究,因此,对于做建模的同学来说, 是无法在赛前吃透大量模型的。推荐本科生分两个步骤去有效准备比赛…

2022年拉丁美洲中东和非洲医疗机器人市场及全球概况报告

今天分享的是机器人系列深度研究报告:《2022年拉丁美洲中东和非洲医疗机器人市场及全球概况报告》。 (报告出品方:Apollo Reports) 报告共计:195页 研究方法论 2.1通过桌面研究和内部存储库的假设 a)最初&#xff…

Python爬取酷我音乐

🎈 博主:一只程序猿子 🎈 博客主页:一只程序猿子 博客主页 🎈 个人介绍:爱好(bushi)编程! 🎈 创作不易:喜欢的话麻烦您点个👍和⭐! 🎈…