python实现学生管理系统-对数据库信息做增删改查

一、逻辑思路,功能大纲

        一)逻辑思路

        二)学生管理系统基本框架

        三)对学生信息的增删改查(包括注册登录功能)

二、逻辑思路

        一)学生系统思路-注册登录

python实现学生管理系统-对数据库信息做增删改查_第1张图片

         二)学生系统思路-操作界面(登录成功之后直接进入操作页面)

python实现学生管理系统-对数据库信息做增删改查_第2张图片

        二)代码框架思路(这段代码是思路,完整的代码在后面)

class Student_System():                   # 定义一个类,存放这个系统函数,方法    
    def student_system(self):             # 封装一个学生信息管理系统的方法
        while True:  # 条件循环
            self.student_page()                 # 调用学生信息管理页面的函数                 
            num = input("请输入你的选项:")       # self表示自己人,在同一类里面去调用方法
            if num == "1":  # 根据用户的输入去调用对应的功能
                print("添加学生信息的功能")
                self.student_add()              # 调用增加学生信息的函数
            elif num == "2":
                print("删除学生信息的功能")
                self.student_del()
            elif num == "3":
                print("修改学生信息的功能")
                self.student_update()
            elif num == "4":
                print("查询指定学生信息")
                self.student_get_one()
            elif num == "5":
                print("查询所有人的信息")
                self.student_get_all()          # 调用获取所有学生信息的函数
            elif num == "q":
                print("退出系统")
                break
            else:
                print("输入错误,请重新输入")

三、学生管理系统基本代码框架

        一)对数据库的操作

        # 注意,对数据库的操作,前提你有数据库,有对应的表和数据 

# 在common包下创建一个play_msyql.py文件
# 存放对于数据库的操作的函数

# 1.导包(导入操作数据库的第三方库)
import pymysql

def play_mysql(sql):            # 把sql设置为形参,让用户做输入,相当于设置了一个变量,对应的值让用户调函数的时候给
    # 2.创建连接
    mysql1 = pymysql.connect(host="localhost", user="root", password="",
                             port=3306, database="student", charset="utf8")
    cursor1 = mysql1.cursor()  # 3.创建游标
    # sql = "select * from user;"  # 4.定义一个sql语句,查user表中所有的数据
    cursor1.execute(sql)  # 5.把数据给游标
    mysql1.commit()  # 6.点击提交
    data = cursor1.fetchall()  # 7.获取所有的数据
    cursor1.close()  # 8.断开游标
    mysql1.close()  # 9.断开连接
    return data

        二)完整的学生系统代码

# 在工程下新建一个common包,在common包里面创建一个student_system.py文件
# 存放对于学生信息管理系统增删改查的方法api
# 定义一个学生信息管理系统类
from common.play_mysql import *           # 导入对于数据库操作的函数

# 类里面的def叫方法,如果def是在类的外面,定格写的叫函数
class Student_System():                   # 定义一个类,存放这个系统函数,方法
    def student_main(self):  # 整个系统的主程序
        while True:  # 条件循环
            self.user_login_page()  # 调用函数进入循环之后第一步就是调用了注册登录页面
            num = input("请输入你的选项:")
            if num == "1":  # 根据用户的输入去调用对应的功能
                print("进入登录页面")
                self.user_login()  # 调用实现登录功能的函数
            elif num == "2":
                print("进入注册页面")
                self.user_register()  # 调用实现注册功能的函数
            elif num == "q":
                print("退出系统")
                break  # 退出系统之后就结束循环
            else:
                print("输入错误,请重新输入")
            input("按回车继续")

    def user_register(self):
        """用户注册功能"""
        # 用户输入数据之后去校验是否存在,数据是在数据库里面,所以需要访问数据库做查询
        # 调用访问数据库的函数,# 如何在字符串里面引用变量
        try:
            name = input("请输入你的用户名:")
            if name != '':
                pwd = input("请输入你的密码:")
                if pwd != '':
                    sql = f"select * from user;"  # 查询所有的信息(('admin', 'admin123'), ('张三', '123456'),)
                    # 判断用户是否在数据库里面,跟数据库中的数据做对比,需要对比多次
                    for value in play_mysql(sql):  # value = ('admin', 'admin123'),判断用户在数据库里面
                        if name == value[0]:
                            print("用户已存在,请重新输入")
                            break  # 如果循环结束,发现在里面,就退出循环
                    else:  # for else语句,当for循环正常结束,就运行else
                        # 把数据写入数据库,sql语句中insert into语句
                        sql = f"insert into user(name, password) values('{name}', '{pwd}');"
                        play_mysql(sql)  # 调用函数运行sql语句
                        print("注册成功,你现在可以去登录了")
                else:
                    print("密码不能为空")
            else:
                print("用户名不能为空")
        except Exception as e:
            print("输入有误,请重新输入:", e)

    def user_login(self):
        """用户登录功能"""
        try:
            name = input("请输入你的用户名:")
            if name != '':
                pwd = input("请输入你的密码:")
                # 用户输入数据之后去校验是否存在,数据是在数据库里面,所以需要访问数据库做查询
                if pwd != '':
                    sql = f"select * from user;"  # 查询所有的信息
                    # 判断用户是否在数据库里面,跟数据库中的数据做对比,需要对比多次
                    for value in play_mysql(sql):  # (('admin', 'admin123'), ('张三', '123456'),)
                        if name == value[0] and pwd == value[1]:  # value = ('admin', 'admin123'),判断用户和密码
                            print("登录成功,进入学生信息系统")
                            self.student_system()  # 登录成功之后调用学生信息管理系统,进入选择页面
                            break  # 如果循环不是通过break结束,就去运行else
                    else:  # for else语句,当for循环正常结束,就运行else
                        print("用户名或密码错误,请重新输入")
                else:
                    print("密码不能为空")
            else:
                print("用户名不能为空")
        except Exception as e:
            print("输入有误,请重新输入:", e)

    def user_login_page(self):
        """注册登录选择页面"""
        print("----->学生管理系统<-----")
        print("1 -> 登录")
        print("2 -> 注册")
        print("q -> 退出")
        print("----------------------")

    def student_page(self):
        # 1.先输出页面信息
        print("------------->学生管理系统<--------------")
        print("1 -> 添加学生信息      2 -> 删除学生信息")
        print("3 -> 修改学生信息      4 -> 查询指定学生信息")
        print("5 -> 查询所有学生信息   q -> 退出系统")
        print("----------------------------------------")

    def student_add(self):
        """添加学生信息"""
        try:
            sid = int(input("请输入你的学号:"))  # 从键盘上获取的都是字符串类型
            if sid != '':  # 如果不为空,就去考虑用户是否在表里面
                sql = f"select * from student;"  # 查询所有的信息
                # 判断用户是否在数据库里面,跟数据库中的数据做对比,需要对比多次
                for value in play_mysql(sql):  # ((20230001, '张三', 20), (20230002, '王五', 20))
                    if sid == value[0]:  # value = (20230001, '张三', 20),判断用户在数据库里面
                        print("用户已存在,请重新输入")
                        break  # 如果循环结束,发现在里面,就退出循环
                else:  # for else语句,当for循环正常结束,就运行else
                    name = input("请输入你的姓名:")
                    age = int(input("请输入你的年龄:"))
                    # 把数据写入数据库,sql语句中insert into语句
                    sql = f"insert into student(id, name, age) values('{sid}', '{name}', '{age}');"
                    play_mysql(sql)  # 调用函数运行sql语句
                    print("添加成功")
            else:
                print("学号不能为空,请重新输入")
        except Exception as e:
            print("输入有误,请重新输入:", e)

    def student_del(self):
        """删除学生信息"""
        try:
            sid = int(input("请输入你的学号:"))  # 从键盘上获取的都是字符串类型
            if sid != '':
                sql = f"select * from student;"  # 查询所有的信息
                for value in play_mysql(sql):  # ((20230001, '张三', 20), (20230002, '王五', 20))
                    if sid == value[0]:  # value遍历取值,依次为(20230001, '张三', 20)
                        sql = f"delete from student where id = {sid};"  # 删除指定数据的值
                        play_mysql(sql)  # 调用操作数据库的函数,运行sql语句
                        print("删除成功")
                        break
                else:  # for else语句,当for循环正常结束,就运行else
                    print("用户不存在,请重新输入")
            else:
                print("输入的数据不能为空")
        except Exception as e:  # 把报错信息保存到变量e里面
            print("输入的数据有误:", e)

    def student_update(self):
        # 修改学生信息
        try:
            sid = int(input("请输入你的学号:"))  # 从键盘上获取的都是字符串类型
            sql = "select * from student;"  # 查询学生表中所有的信息
            # print(play_mysql(sql))                      # (20230001, '张三', 20)
            for value in play_mysql(sql):  # value的值依次小元组
                if sid == value[0]:  # 当用户存在的时候,可以去修改,用户去给数据
                    name = input("请输入修改后姓名:")
                    age = input("请输入修改后年龄:")
                    sql = f"update student set name = '{name}', age = {age} where id = {sid};"
                    play_mysql(sql)  # 调用数据库函数,执行修改的语句
                    print("修改成功")
                    break
            else:
                print("用户不存在,请重新输入")
        except Exception as e:
            print("输入有误:", e)

    def student_get_one(self):
        # 查询指定的学生信息
        try:
            sid = int(input("请输入你的学号:"))  # 从键盘上获取的都是字符串类型
            sql = "select * from student;"  # 查询学生表中所有的信息,返回的是双重元组
            for value in play_mysql(sql):  # value的值依次小元组
                if sid == value[0]:  # 当用户存在的时候,可以去修改,用户去给数据
                    print(f"学号:{value[0]}  姓名:{value[1]}  年龄:{value[2]}")
                    break
            else:
                print("用户不存在")
        except ValueError as e:
            print("输入的信息有误:", e)

    def student_get_all(self):
        # 获取所有的学生信息
        sql = "select * from student;"  # 查询学生表中所有的信息,返回的是双重元组
        print("学号\t\t\t姓名\t\t年龄")
        for value in play_mysql(sql):  # (20230001, '张三', 20)
            print(f"{value[0]}\t{value[1]}\t\t{value[2]}")

    def student_system(self):
        while True:  # 条件循环
            self.student_page()                 # self表示自己人,在同一类里面去调用方法
            num = input("请输入你的选项:")
            if num == "1":  # 根据用户的输入去调用对应的功能
                print("添加学生信息的功能")
                self.student_add()  # 调用增加学生信息的函数
            elif num == "2":
                print("删除学生信息的功能")
                self.student_del()
            elif num == "3":
                print("修改学生信息的功能")
                self.student_update()
            elif num == "4":
                print("查询指定学生信息")
                self.student_get_one()
            elif num == "5":
                print("查询所有人的信息")
                self.student_get_all()  # 调用获取所有学生信息的函数
            elif num == "q":
                print("退出系统")
                break
            else:
                print("输入错误,请重新输入")

       三)运行pyhton程序代码

from common.student_system import *         # 导入学生系统里面所有的代码

if __name__ == '__main__':
    user = Student_System()                # 实例化一个对象
    user.student_main()                    # 调用学生系统主程序
    # user.student_get_all()               # 单独调用某一个方法

        四)最后实现的界面

                1.登录页面

python实现学生管理系统-对数据库信息做增删改查_第3张图片

                 2.注册页面

python实现学生管理系统-对数据库信息做增删改查_第4张图片

                3.添加学生页面

python实现学生管理系统-对数据库信息做增删改查_第5张图片

                4.删除用户数据

python实现学生管理系统-对数据库信息做增删改查_第6张图片

                5.修改用户数据

python实现学生管理系统-对数据库信息做增删改查_第7张图片

                 6.查询指定学生信息

python实现学生管理系统-对数据库信息做增删改查_第8张图片

                 7.查询所有学生信息

python实现学生管理系统-对数据库信息做增删改查_第9张图片

你可能感兴趣的:(python,数据库,开发语言)