基于python的学生信息管理系统,使用MySQL数据库存储学生信息
jamesalun 2024-07-13 16:05:02 阅读 81
本次项目适合初学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):
四、具体实现
数据库:
<code>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",code>
port=3306,
user="root",code>
password="root",code>
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("输入有误,请重新操作!")
五、运行效果
添加学生
成功:
失败:
删除学生
修改学生信息
查询学生信息(按照名字搜索)
显示学生信息(全部学生)
退出系统
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。