大数据分析综合实习day05—学生管理系统案例

   需求:数据库版的学生信息管理系统,实现简要的增删改查

 rt_stu_main:整个项目的主模块,主要负责整个项目的业务逻辑的调用和分配,增删改查的调用
 rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关连接

MySQL部分:

大数据分析综合实习day05—学生管理系统案例_第1张图片

主模块:

rt_stu_main.py

import stu_sys.rt_stu_util as stu_util

print("*"*50)
print("欢迎来到学生信息管理系统【v 4.0】")

while (True):
    # 展示菜单
    stu_util.show_menu()
    action_str = input("请输入您要执行操作的编号:")
    if action_str in ["1","2","3","4","5"]:
        # print("增删改查")
        if action_str == "1":
            stu_util.find_all()
            #print("查询所有")
        elif action_str == "2":
            stu_util.insert_info()
            #print("添加")
        elif action_str == "3":
            stu_util.delete_info()
            #print("删除")
        elif action_str == "4":
            stu_util.update_info()
            #print("修改")
        elif action_str == "5":
            stu_util.find_info_by_sid()
            #print("查询某一个")
    elif action_str == "0":
        print("欢迎下次使用学员信息管理系统,Bye Bye!")
        break
    else:
        print("您的输入有误,请重新输入!")

界面:

大数据分析综合实习day05—学生管理系统案例_第2张图片

 

封装的工具模块:
rt_stu_util.py

# rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关连接
import pymysql

def get_conn():
    """获取数据库连接"""
    conn = pymysql.connect(
        host="localhost",port=3306,
        user="root",password="123456",
        database="sn_python",charset="utf8"
    )
    cursor = conn.cursor()
    return  conn,cursor

def close(conn,cursor):
    """释放资源"""
    conn.close()
    cursor.close()

def show_menu():
    """封装功能菜单"""
    # 开启循环提示用户
    while (True):
        print("*" * 50)
        print("请选择您要执行的操作:")
        print("")
        print("1.查询所有学员信息")
        print("2.添加学员信息")
        print("3.删除学员信息")
        print("4.修改学员信息")
        print("5.查询某一位学员信息")
        print("")
        print("0.退出当前学生信息管理系统")
        print("*" * 50)
        break

def find_alll():
    conn, cursor = get_conn()
    sql = "select * from stu_info"
    count = cursor.execute(sql)
    result = cursor.fetchall()
    close(conn, cursor)
    return result,count#返回顺序不能错!!!!

def find_all():
    """查询所有"""
    # conn,cursor = get_conn()
    # sql = "select * from stu_info"
    # count = cursor.execute(sql)
    # result = cursor.fetchall()
    result,count = find_alll()
    print(f"查询到了{count}条学员信息:")
    # 输出表头
    print("#"*39)
    for title in ["学号","姓名","年龄","班级","   成绩"]:
        print(title,end="\t\t")
    print("")
    print("#"*39)
    # 详细信息
    for item in result:
        #print(item[1]+"\t"+item[2]+"\t\t"+str(item[3])+"\t\t"+item[4]+"\t\t"+item[5])
        print(item[1] + "\t\t" + item[2] + "\t\t" + str(item[3]) + "\t\t\t" + item[4] + "\t\t" + item[5])
    print("*"*39)
    print("查询完毕")
    # 详细信息

def insert_info():
    """添加信息"""
    # 提示用户输入要添加的sid
    sid = input("请输入您要添加学员的sid:")
    #根据sid判断是否存在,如果存在就不能重复添加相同的sid的信息
    result,count = find_alll()
    for item in result:
        if sid == item[1]:
            # 已存在
            print(f"您要添加学员【{sid}】信息已经存在,请核实!")
            break
    else:
        # 要添加的sid不存在,继续添加其他信息
        name = input(f"请输入您要添加的【{sid}】的name:")
        age = input(f"请输入您要添加的【{sid}】的age:")
        classes = input(f"请输入您要添加的【{sid}】的classes:")
        score = input(f"请输入您要添加的【{sid}】的score:")
        # 执行数据库添加操作
        conn,cursor = get_conn()
        sql = "insert into stu_info values(null,%s,%s,%s,%s,%s)"
        cursor.execute(sql,[sid,name,age,classes,score])
        # 提交事务
        conn.commit()
        print(f"添加【{sid}】信息成功!")
        # 释放资源
        close(conn,cursor)

def delete_info():
    """删除信息"""
    sid = input("请输入您要删除学员信息的sid:")
    result,count = find_alll()
    for item in result:
        if sid == item[1]:
            # 存在要删除的,直接删除
            conn,cursor = get_conn()
            sql = "delete from stu_info where sid = %s"
            cursor.execute(sql,sid)
            conn.commit()
            print(f"删除【{sid}】信息成功!")
            close(conn,cursor)
            break
    else:
        print(f"您要删除的学员信息【{sid}】不存在,请核实!")

def update_info():
    """修改信息"""
    sid = input("请输入您要更新学员的sid:")
    result,count = find_alll()
    for item in result:
        if sid == item[1]:
            # 存在,直接更新操作
            conn,cursor = get_conn()
            name = input(f"请输入您要更新【{sid}】后的name:")
            age = input(f"请输入您要更新【{sid}】后的age:")
            classes = input(f"请输入您要更新【{sid}】后的classes:")
            score = input(f"请输入您要更新【{sid}】后的score:")
            sql = "update stu_info set name = %s,age = %s,classes = %s,score = %s where sid = %s"
            cursor.execute(sql,[name,age,classes,score,sid])
            conn.commit()
            print(f"修改【{sid}】信息成功!")
            close(conn,cursor)
            break
    else:
        print(f"您要删除的学员信息【{sid}】不存在,请核实!")

def find_info_by_sid():
    """查询某一个"""
    sid = input("请输入您要查询学员的sid:")
    result,count = find_alll()
    for item in result:
        if sid == item[1]:
            print(f"查询到的【{sid}】信息如下:")
            print(f"name:{item[2]}\t\tage:{item[3]}\t\tclasses:{item[4]}\t\tscore:{item[5]}")
            break
        else:
            print(f"您要查询的【{sid}】学生信息不存在,请核实!")


if __name__ == '__main__':
    #show_menu()
    #find_all()
    #insert_info()
    #update_info()
    #find_info_by_sid()
    pass

效果:

大数据分析综合实习day05—学生管理系统案例_第3张图片

你可能感兴趣的:(大数据分析综合实习,数据库,python,pycharm,mysql)