学生信息管理系统
项目环境
开发环境:python3.12、
开发工具:VS Code
数据库:mysql5.6
运行环境:Windows 11
数据库连接
我利用的是pymysql库对数据库进行操作,首先是和数据库建立连接
#导入pymysql模块,用于连接数据库
import pymysql
# 连接参数
connection_params = {
'host': 'localhost', # 指定数据库服务器的主机地址
'user': 'root', # 指定用于连接数据库的用户名
'password': '123456', # 指定与用户名root关联的密码
'charset': 'utf8mb4' # 指定数据库连接使用的字符集
}
#创建数据库连接
try:
connection = pymysql.connect(**connection_params)
#创建游标
with connection.cursor() as cursor:
create_db_sql = 'create database if not exists students'
cursor.execute(create_db_sql)
connection.select_db('students')
print('数据库连接成功')
except pymysql.MySQLError as e:
print(f'创建失败:{
e}')
finally:
connection.close()
表的建立
student表存储学生个人信息,student_score表存储学生成绩信息
user表存储用户的账户信息,teacher表存储老师的个人信息
#创建student表
create_student_table_sql ='''
create table if not exists student(
student_id int auto_increment,
name varchar(20) not null,
sex enum('男','女') not null,
classname varchar(20) not null,
primary key (student_id)
);
'''
cursor.execute(create_student_table_sql)
connection.commit()
print('student表创建成功')
#创建成绩表
create_student_score_table_sql ='''
create table if not exists student_score(
student_id int not null,
china float(2) not null,
english float(2) not null,
math float(2) not null,
total float(2) not null,
average float(2) not null
);
'''
cursor.execute(create_student_score_table_sql)
connection.commit()
print('student_score表创建成功')
#创建用户表
create_user_table_sql = '''
create table if not exists user(
user_id int auto_increment,
username varchar(20) not null,
password varchar(20) not null,
user_type enum('老师','学生') not null,
primary key (user_id)
);'''
cursor.execute(create_user_table_sql)
connection.commit()
print('user表创建成功')
#创建老师表
create_teacher_table_sql = '''
create table if not exists teacher(
teacher_id int auto_increment,
name varchar(20) not null,
sex enum('男','女') not null,
telephone varchar(20) not null,
primary key (teacher_id)
);'''
注册
注册分为两种角色,一个是老师,一个是学生,首先根据用户输入的数字判断注册用户是老师还是学生
#注册
def register(connection):
try:
#连接数据库
connection = pymysql.connect(**connection_params)
connection.select_db("students")
with connection.cursor() as cursor:
print('请选择注册方式:1.老师注册 2.学生注册')
c_num = int(input())
if c_num == 1:
#老师注册
print('请老师注册:')
username = input('请输入用户名:')
password = input('请输入密码:')
insert_sql ="insert into user(username,password,user_type) values('{}','{}','{}');".format(username,password,'老师')
cursor.execute(insert_sql)
connection.commit()
print('注册成功')
return True
elif c_num == 2:
#学生注册
print('请学生注册:')
username = input('请输入用户名:')
password = input('请输入密码:')
insert_sql ="insert into user(username,password,user_type) values('{}','{}','{}');".format(username,password,'学生')
cursor.execute(insert_sql)
connection.commit()
print('注册成功')
return True
else:
print('注册失败')
return False
except pymysql.MySQLError as e:
print(f'注册失败:{
e}')
return False
finally:
connection.close()
登录
#登录
def main():
#登录
print('欢迎来到学生管理系统')
while True:
print('请选择登录方式:1.登录 2.注册 0.退出')
c_num = int(input())
if c_num == 1:
username = input('请输入用户名:')
password = input('请输入密码:')
user_type = input('请输入用户类型:')
#连接数据库
try:
connection = pymysql.connect(**connection_params)
connection.select_db('students')
with connection.cursor() as cursor:
#查询用户是否存在
select_user_sql = "select * from user where username = '{}' and password = '{}' and user_type ='{}';".format(username,password,user_type)
cursor.execute(select_user_sql)
result = cursor.fetchone()
if result:
print('登录成功')
if user_type == "学生"