首页 > Python资料 博客日记
基于python的学生信息管理系统,使用MySQL数据库存储学生信息
2024-07-12 15:00:05Python资料围观109次
本篇文章分享基于python的学生信息管理系统,使用MySQL数据库存储学生信息,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
本次项目适合初学python基础和数据库基础的小伙伴,可以整体复习一遍基础知识点
一个简单的学生信息管理系统,采用面向对象编程思想编写代码
一、项目简介
该学生信息管理系统的主要功能有:
- 添加学生信息
- 删除学生信息
- 修改学生信息
- 查询学生信息
- 显示学生信息
- 退出当前系统
二、步骤分析
- 数据库设计
- 数据库操作类,编写操作数据库的方法
- 学生类,用于封装学生信息
- 功能类,用于编写该系统的相关功能
- 主函数
三、需求实现
3.1 数据库
# 通过学号判断数据库中是否存在该学号is_exist(self,id:int)
# 添加学生信息进数据库def insert_into_sql(self,Student : Student)
# 从数据库删除学生信息def delete_from_sql(self,id:int)
# 修改数据库中学生信息def updata_sql(self,id:int,Student:Student)
# 按条件查询学生信息def search_from_sql(self,name:str)
# 查询全部学生信息def find_all(self)
# 关闭数据库连接def close_sql(self)
3.2 功能类
# 显示功能页面def info_print(self)
# 添加学生信息def add_info(self)
# 删除学生信息def del_info(self)
# 修改学生信息def updata_info(self)
# 查询学生信息def search_info(self)
# 显示学生信息def print_all(self):
# 关闭系统def close_sys(self):
四、具体实现
数据库:
create database py_sql;
use py_sql;
create table students(id int,name varchar(20),gender varchar(5),phonenum varchar(11),address varchar(225));
学生类:
"""
学生类
"""
class Student:
def __init__(self,id,name,gender,phonenum,address):
self.id = id
self.name = name
self.gender = gender
self.phonenum = phonenum
self.address = address
def __str__(self):
return f"{self.id},{self.name},{self.gender},{self.phonenum},{self.address}"
数据库操作类:
"""
数据库操作类
"""
from pymysql import Connection
from typing import Tuple
from student import Student
class PysqlUtil:
# 建立数据库连接对象
__conn__ = Connection(
host="localhost",
port=3306,
user="root",
password="root",
autocommit=True
)
# 建立一个游标对象
__cursor__ = __conn__.cursor()
# 选择数据库
__conn__.select_db("py_sql")
# 通过学号判断数据库中是否存在该学号
def is_exist(self,id:int) -> bool:
sql = f"select count(id) from students where id = {id}"
self.__cursor__.execute(sql)
result = self.__cursor__.fetchall()[0][0] # 获取该学号在数据库中的数目
if result == 0 :
return False #不存在
else:
return True #存在
# 添加学生信息进数据库
def insert_into_sql(self,Student : Student) -> bool:
sql = f"insert into students values ({Student.id},'{Student.name}','{Student.gender}','{Student.phonenum}','{Student.address}')"
try:
self.__cursor__.execute(sql)
except Exception as e:
return False
else:
return True
# 从数据库删除学生信息
def delete_from_sql(self,id:int) -> bool:
sql = f"delete from students where id = {id};"
try:
self.__cursor__.execute(sql)
except Exception as e:
return False
else:
return True
# 修改数据库中学生信息
def updata_sql(self,id:int,Student:Student) ->bool:
sql = f"update students set id = {Student.id}, name = '{Student.name}',gender = '{Student.gender}',"\
f"phonenum = '{Student.phonenum}',address ='{Student.address}' where id = {id};"
try:
self.__cursor__.execute(sql)
except Exception as e:
return False
else:
return True
# 按条件查询学生信息
def search_from_sql(self,name:str) -> Tuple:
sql = f"select * from students where name = '{name}'"
self.__cursor__.execute(sql)
result = self.__cursor__.fetchall()
return result
# 查询全部学生信息
def find_all(self) -> Tuple[Tuple] :
sql = "select * from students"
self.__cursor__.execute(sql)
result = self.__cursor__.fetchall()
return result
# 关闭数据库连接
def close_sql(self):
self.__conn__.close()
if __name__ == '__main__':
pu = PysqlUtil()
print(pu.search_from_sql('小明'))
功能类:
"""
功能类
"""
from student import Student
from pysqlUtil import PysqlUtil
class Manager:
pu = PysqlUtil()
# 主页面
def info_print(self):
print("----------欢迎来到学生管理系统----------")
print("1.添加学生信息")
print("2.删除学生信息")
print("3.修改学生信息")
print("4.查询学生信息")
print("5.显示学生信息")
print("6.退出当前系统")
print("------------------------------------")
# 添加学生信息
def add_info(self):
try:
stu_data = input("请输入要添加的学生信息(id,name,gender,phone,address):")
stu_list = stu_data.split(",")
student = Student(int(stu_list[0]), stu_list[1], stu_list[2], stu_list[3], stu_list[4])
except Exception as e:
print("学生信息输入有误!添加失败")
else:
if self.pu.is_exist(student.id):
print("该学号已存在,请勿重复添加!")
else:
result = self.pu.insert_into_sql(student)
if result:
print("该学生信息添加成功!")
# 删除学生信息
def del_info(self):
stu_id: int = int(input("请输入要删除的学生id:"))
if self.pu.is_exist(stu_id):
result = self.pu.delete_from_sql(stu_id)
if result:
print("该学生信息删除成功!")
else:
print("该学号不存在,删除失败!")
# 修改学生信息
def updata_info(self):
stu_id: int = int(input("请输入要修改的学生id:"))
if self.pu.is_exist(stu_id):
stu_data = input("请输入修改后的学生信息(id,name,gender,phone,address):")
stu_list = stu_data.split(",")
student = Student(int(stu_list[0]), stu_list[1], stu_list[2], stu_list[3], stu_list[4])
result = self.pu.updata_sql(stu_id,student)
if result:
print("该学生信息修改成功!")
else:
print("该学号不存在,修改失败!")
# 查询学生信息
def search_info(self):
name = input("请输入要查找的学生名字:")
result = self.pu.search_from_sql(name)
if len(result) == 0:
print("不存在该学生!")
else:
for l in result:
print(l)
# 显示学生信息
def print_all(self):
result = self.pu.find_all()
if len(result) == 0:
print("学生表为空!")
else:
for l in result:
print(l)
# 关闭系统
def close_sys(self):
self.pu.close_sql()
print("欢迎下次光临!再见!")
if __name__ == '__main__':
test = Manager()
test.print_all()
主函数:
"""
主函数类
"""
from manager import Manager
manager = Manager()
while True:
# 显示功能菜单
# 1.添加学生信息
# 2.删除学生信息
# 3.修改学生信息
# 4.查询学生信息
# 5.显示学生信息
# 6.退出当前系统
manager.info_print()
# 获取用户输入的信息
key = int(input("请输入您的选择:"))
# 进入判断
if key == 1:
manager.add_info() # 添加学生信息
elif key == 2:
manager.del_info() # 删除学生信息
elif key == 3:
manager.updata_info() # 修改学生信息
elif key == 4:
manager.search_info() # 查询学生信息
elif key == 5:
manager.print_all() # 显示全部学生信息
elif key == 6:
str = input("确定要退出吗?(yes/no)")
if str == "yes" or str == "YES":
manager.close_sys() # 关闭系统
break
else:
print("输入有误,请重新操作!")
五、运行效果
添加学生
成功:
失败:
删除学生
修改学生信息
查询学生信息(按照名字搜索)
显示学生信息(全部学生)
退出系统
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程