首页 > Python资料 博客日记
基于python的学生信息管理系统,使用MySQL数据库存储学生信息
2024-07-12 15:00:05Python资料围观53次
本篇文章分享基于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进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 七、Scrapy框架-案例1
- manim边学边做--空心多边形
- Python 字典(Dict)详解与实战应用
- Python100个库分享第22个—xlwings的写入与读取 (办公篇)
- 【Python】从基础到进阶(七):深入理解Python中的异常处理与调试技巧
- 怎么用CAPL与Python交互
- 【Python · Pytorch】配置cuda环境 & cuDNN库
- python爬虫可视化主题:python北京景点数据可视化和景点推荐系统源代码作品开题报告
- 下载pycharm后还要python吗,用python必须下载pycharm
- 人工智能和机器学习:探讨人工智能和机器学习的最新发展、应用、挑战和未来趋势
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj
- Python pyinstaller打包exe最完整教程
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应