图书馆

发布时间 2023-04-14 18:05:46作者: 她说没有光

这是帮别人写的一个python作业

# @author: zhc
# @Time: 2023/4/14
# @FileName: weixdanzi


import mysql.connector
from ccmysql import connect_to_database

# 创建学生类
class Student:
    def __init__(self, name, student_id, grade, major):
        self.name = name
        self.student_id = student_id
        self.grade = grade
        self.major = major

    def view_grades(self):
        # TODO: Implement view grades function
        pass


# 创建老师类
class Teacher:
    def __init__(self, name, teacher_id, courses):
        self.name = name
        self.teacher_id = teacher_id
        self.courses = courses

    def enter_grade(self, student_id, course_id, grade):
        # TODO: Implement enter grade function
        pass


# 创建课程类
class Course:
    def __init__(self, course_name, course_id, teacher):
        self.course_name = course_name
        self.course_id = course_id
        self.teacher = teacher


# 创建年级类
class Grade:
    def __init__(self, student, course, grade):
        self.student = student
        self.course = course
        self.grade = grade


# 用户类
class User:
    def __init__(self, username, password, role):
        self.username = username
        self.password = password
        self.role = role


# 管理员类
class Admin:
    def __init__(self, name, admin_id):
        self.name = name
        self.admin_id = admin_id

    def manage_users(self):
        # TODO: Implement manage users function
        pass

    def manage_grades(self):
        # TODO: Implement manage grades function
        pass


# 写一个连接数据的方法   # 这里涉及了我的数据库账户密码就不给你看了 我直接导包了
# def connect_to_database():
#     config = {
#         'user': 'root',
#         'password': '数据库密码',
#         'host': '127.0.0.1',
#         'database': '数据库名',
#         'charset': 'utf8mb4',  # 防止乱码
#         'raise_on_warnings': True,
#
#     }
#
#     cnx = mysql.connector.connect(**config)
#
#     return cnx


# 数据库里添加学生
def add_student(student):
    cnx = connect_to_database()

    cursor = cnx.cursor()

    add_student_query = "INSERT INTO students (name, student_id, grade, major) VALUES (%s, %s, %s, %s)"
    student_data = (student.name, student.student_id, student.grade, student.major)

    cursor.execute(add_student_query, student_data)

    cnx.commit()

    cursor.close()
    cnx.close()


# 数据库里删除学生
def delete_student(student_id):
    cnx = connect_to_database()

    cursor = cnx.cursor()

    delete_student_query = f"DELETE FROM students WHERE student_id = {student_id}"

    cursor.execute(delete_student_query)

    cnx.commit()

    cursor.close()
    cnx.close()


# 数据库里更新学生
# def update_student(student_id, new_name, new_grade, new_major):
def update_student(new_name, student_id, new_grade, new_major):
    cnx = connect_to_database()
    cursor = cnx.cursor()

    update_student_query = "UPDATE students SET name = %s, grade = %s, major = %s WHERE student_id = %s"
    student_data = (new_name, new_grade, new_major, student_id)

    cursor.execute(update_student_query, student_data)

    cnx.commit()

    cursor.close()
    cnx.close()


# 添加老师
def add_teacher(teacher):
    cnx = connect_to_database()
    cursor = cnx.cursor()

    add_teacher_query = "INSERT INTO teachers (name, teacher_id, courses) VALUES (%s, %s, %s)"
    teacher_data = (teacher.name, teacher.teacher_id, teacher.courses)

    cursor.execute(add_teacher_query, teacher_data)

    cnx.commit()

    cursor.close()
    cnx.close()


# 数据库里删除老师
def delete_teacher(teacher_id):
    cnx = connect_to_database()
    cursor = cnx.cursor()

    delete_teacher_query = "DELETE FROM teachers WHERE teacher_id = %s"
    teacher_id_data = (teacher_id,)

    cursor.execute(delete_teacher_query, teacher_id_data)

    cnx.commit()

    cursor.close()
    cnx.close()


# 更新老师
def update_teacher(teacher_id, new_name, new_courses):
    cnx = connect_to_database()
    cursor = cnx.cursor()

    update_teacher_query = "UPDATE teachers SET name = %s, courses = %s WHERE teacher_id = %s"
    teacher_data = (new_name, new_courses, teacher_id)

    cursor.execute(update_teacher_query, teacher_data)

    cnx.commit()

    cursor.close()
    cnx.close()


# 学生成绩视图
def view_student_grades():
    cnx = connect_to_database()
    cursor = cnx.cursor()

    grades = []
    query = "SELECT * FROM students"
    cursor.execute(query)

    # 获取查询结果
    for row in cursor.fetchall():
        # print(row)
        grades.append(row)
# ---

    cursor.close()
    cnx.close()

    return grades


# 课程成绩总视图  pass
def view_course_grades(course_id):
    cnx = connect_to_database()
    cursor = cnx.cursor()

    view_grades_query = "SELECT * FROM grades WHERE course_id = %s"
    course_id_data = (course_id,)

    cursor.execute(view_grades_query, course_id_data)

    grades = []

    for (student_id, course_id, grade) in cursor:
        grades.append((student_id, course_id, grade))

    cursor.close()
    cnx.close()

    return grades


# 用户登录
def login(username, password):
    cnx = connect_to_database()
    cursor = cnx.cursor()

    login_query = "SELECT * FROM users WHERE username = %s AND password = %s"
    user_data = (username, password)

    cursor.execute(login_query, user_data)

    user = None

    for (username, password, role) in cursor:
        user = User(username, password, role)

    cursor.close()
    cnx.close()

    return user


def main():
    """现在就是实例化实现功能了  你可以选择自己输入 也就是shell窗口(交互式)  或者 不交互式(这里采用了非交互式)
    """
    # s1 = Student("舒佳琪一号", 2023001, 10, "语文")
    # s2 = Student("舒佳琪二号", 2023002, 20, "语文")
    # s3 = Student("舒佳琪三号", 2023003, 30, "语文")

    # connect_to_database()  # 连接数据库方法
    # add_student(s1)  # 添加你的方法
    # add_student(s2)
    # add_student(s3)

    # delete_student(2023001)  # 学号id是唯一的 (可能存在同名)
    # exit()
    # t1 = Teacher("老师一号", 1110, "语文")
    # add_teacher(t1)
    # t1.enter_grade("舒佳琪3号", 20230101121, 500, )   # 老师有权限改学生成绩
    # update_student("舒佳琪二号", 2023002, 100, "语文")  # 更新0蛋
    #
    # 查看学生成绩  #
    # c = view_student_grades()  #
    # print(c)
    # 可使用for循环打印 c  
    # grades
    # g1 = Grade("舒佳琪三号", "语文", "初一")  # 可实现可不实现 pass







if __name__ == '__main__':
    main()