python实现简单学生信息管理系统(对数据库进行操作)

项目环境

开发环境: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 == "学生"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开摆C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值