使用Python和MySQL创建高效的学生管理系统

目录

1、项目所需模块

2、学生管理系统的主要功能

3、首先创建数据库

4、防止数据库断开操作

5、菜单

6、编写主函数

7、添加学生信息

8、删除学生信息

9、修改学生信息

10、查看学生信息

11、展示所有学生信息

12、最后就是调用主函数


1、项目所需模块

编写这个学生管理系统需要使用pymysql这个库去连接数据库

2、学生管理系统的主要功能

这个学生管理系统我做的很简陋,只做了增删改查和展示所有学生信息5个模块,大家可以做得更详细一点增加其他的功能模块,在这里仅供大家参考,希望能给刚开始学习python的同学一点参考

3、首先创建数据库

import pymysql
#定义数据库连接参数
host = '127.0.0.1'
port = 3306
db = 'student'
user = 'root'
password = 'root'
#创建连接
con = pymysql.connect(host=host,
                      port=port,
                      db=db,
                      user=user,
                      password=password)
#创建游标对象
cur = con.cursor()
#编写sql语句
sql = """
      create table if not exists students(
      ids varchar(20) not null primary key,
      name varchar(30) not null,
      age int(2),
      gender varchar(10) not null,
      classes varchar(200) not null
      )
"""
try:
    #执行sql语句
    cur.execute(sql)
    print('创建成功')
except Exception as e:
    print(e)
    print('创表失败')
finally:
    #关闭连接
    con.close()

4、防止数据库断开操作

#数据库自动检测是否断开并自动连接
def select_db():
    # 检查连接是否断开,如果断开就进行重连
    con.ping(reconnect=True)
    cur.execute(sql)
    # 使用 fetchall() 获取查询结果
    data = cur.fetchall()
    return data

5、菜单

#菜单
def menu():
    print("1.增加学生信息")
    print("2.删除学生信息")
    print("3.查找学生信息")
    print("4.修改学生信息")
    print("5.展示所有学生信息")
    print("0.退出系统")
    choose = input("请输入你的操作:")
    return choose

6、编写主函数

#定义主函数
def main():

    print("+----------------------------------------+")
    print("|          欢迎进入学生管理系统                |")
    print("+----------------------------------------+")
    while True:
        choose = menu()
        #增加学生信息
        if choose == '1':
            add()
        #删除学生信息
        elif choose == '2':
            delete()
        #查找学生信息
        elif choose == '3':
            fund()
        #改变学生信息
        elif choose == '4':
            amend()
        #展示所有学生信息
        elif choose == '5':
            show()
        elif choose == '0':
            print("你已退出学生管理系统!!!!")
        #非法输入
        else:
            print("输入错误,请冲向输入!!")

7、添加学生信息

#添加学生信息
def add():
    select_db()
    #创建游标对象
    cur = con.cursor(pymysql.cursors.SSCursor)
    print("增加学生信息开始")
    while True:
        try:
            ids = input("请输入学号:")
            name = input("请输入学生姓名:")
            age = input("亲输入学生年龄")
            gender = input("请输入学生性别:")
            classes = input("请输入学生班级:")
            values = [ids, name, age, gender, classes]
            if gender not in ("男", "女"):
                print("输入错误,请输入男或女!")
            # 执行sql,将数据录入数据库
            sql = 'insert into students(ids,name,age,gender,classes) values(%s,%s,%s,%s,%s)'
            cur.execute(sql, values)
            if True:
                # 提交事务
                con.commit()
                print('添加学生信息成功')
                answer = input('是否继续添加学生信息:“yes"or"no"\n')
                if answer != 'yes':
                    break
                else:
                    continue
        except Exception as e:
            print(e)
            # 数据回滚,保护数据库
            con.rollback()
            print('添加学生信息失败')
        finally:
            print("[增加学生信息结束]")
    con.close()
 

8、删除学生信息

#删除学生信息
def delete():
    select_db()
    # 创建游标对象
    cur = con.cursor(pymysql.cursors.SSCursor)
    print("删除学生信息开始")
    while True:
        try:
            ids = input("请输入你要删除的学生学号:")
            sql = 'delete from students where ids=%s'
            con.commit()
            # 执行sql将数据从数据库中删除
            cur.execute(sql, ids)
            if True:
                # 提交事务
                con.commit()
                print('删除学生信息成功')
                answer = input('是否继续删除学生信息:“yes"or"no"')
                if answer != 'yes':
                    break
                else:
                    continue
        except:
            # 数据回滚,保护数据库
            con.rollback()
            print('删除学生信息失败')
        finally:
            print("删除学生信息结束")
    con.close()

9、修改学生信息

#修改学生信息
def amend():
    select_db()
    # 创建游标对象
    cur = con.cursor(pymysql.cursors.SSCursor)
    print("修改学生信息开始")
    while True:
        ids = input("请输入你要修改信息学生的学号:")
        if ids != '':
           name = input("请输入你要修改信息学生的姓名:")
           age = input("请输入你要修改信息学生的年龄:")
           gender = input("请输入你要修改信息学生的性别:")
           classes = input("请输入你要修改信息学生的班级:")
           try:
               sql = f'update students set ids={ids},name={name},age={age},gender={gender},classes={classes}'
               #执行sql,修改数据库数据
               cur.execute(sql)
               con.commit()
           except:
               print("修改失败")
               con.rollback()
           finally:
               print("修改学生信息结束")
           answer = input('是否继续修改学生信息:”yes“or"no"')
           if answer != 'yes':
               break
           else:
               continue
        else:
            print('输入错误请重新输入')
            continue
        con.close()

10、查看学生信息

#查找学生信息
def fund():
    select_db()
    # 创建游标对象
    cur = con.cursor(pymysql.cursors.SSCursor)
    print("查找学生信息开始")
    while True:
        try:
            mode = input('按学号查找请输入:1,按姓名查找请输入:2')
            if mode =='1':
                ids = input("请输入你需要查找到学生学号:")
                sql = 'select from students where ids=%s'
                cur.execute(sql, ids)
                con.commit()
                print(cur.fetchall())
                answer = input('是否继续查找学生信息:”yes“or”no“')
                if answer != 'yes':
                    break
                else:
                    continue
            elif mode == '2':
                name = input("请输入你需要查找的学生姓名:")
                sql = 'select from students where name=%s'
                cur.execute(sql, name)
                con.commit()
                print(cur.fetchall())
                answer = input('是否继续查找学生信息:”yes“or”no“')
                if answer != 'yes':
                    break
                else:
                    continue
            else:
                print("你的输入有误,请重新输入")
                continue
        except:
            # 数据回滚,保护数据库
            con.rollback()
        finally:
            print("查询学生信息结束")
    con.close()

11、展示所有学生信息

def show():
    select_db()
    # 创建游标对象
    cur = con.cursor(pymysql.cursors.SSCursor)
    sql = f'select * from students'
    cur.execute(sql)
    all = cur.fetchall()
    # print(len(all), type(all))
    format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}'
    print(format_title.format('ID', '姓名', '性别', '年龄'))
    format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}'
    for record in all:
        print(format_data.format(record[0], record[1], record[2], record[3]))
    con.close()

12、最后就是调用主函数

if __name__ == '__main__':
    main()

我把所有代码都放在这里了,里面也都有详细注释,大家应该都能看懂,希望我的这篇发文能够帮助那些还在学习python的同学,这只是一个很基础的小项目,希望大家能都自己都能跑一下代码感受一下,今天的分享就到此为止了,谢谢大家。

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Python和MySQL创建高效的学生管理系统

发表评论