帮我基于MySQL和Python开发一个学生成绩管理系统,包括代码和开发文档
时间: 2024-04-22 16:22:27 浏览: 11
好的,我可以为您提供一个基于MySQL和Python的学生成绩管理系统。系统包括以下功能:
1. 学生信息管理:包括学生的基本信息,如姓名、班级、学号等。
2. 课程信息管理:包括课程名称、教师姓名、学分等。
3. 成绩管理:包括学生在不同课程中的成绩,可以添加、修改、删除成绩。
4. 统计分析:可以按照班级、课程等维度进行成绩分析,如班级平均成绩、课程平均成绩等。
下面是代码实现和开发文档。
1. 数据库设计
在MySQL中创建一个名为“student”的数据库,包含三张表:学生表(student)、课程表(course)、成绩表(score)。
学生表(student)包含字段:学号(id)、姓名(name)、班级(class)。
课程表(course)包含字段:课程编号(id)、课程名称(name)、学分(credit)、教师姓名(teacher)。
成绩表(score)包含字段:学号(student_id)、课程编号(course_id)、成绩(score)。
2. Python代码实现
使用Python连接MySQL数据库,使用SQLAlchemy库进行ORM开发,实现学生成绩管理系统。
```python
from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
# 连接数据库
engine = create_engine('mysql+pymysql://root:123456@localhost/student')
Session = sessionmaker(bind=engine)
Base = declarative_base()
# 学生表
class Student(Base):
__tablename__ = 'student'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(20), nullable=False)
class = Column(String(20), nullable=False)
scores = relationship('Score', backref='student')
# 课程表
class Course(Base):
__tablename__ = 'course'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(20), nullable=False)
credit = Column(Float, nullable=False)
teacher = Column(String(20), nullable=False)
scores = relationship('Score', backref='course')
# 成绩表
class Score(Base):
__tablename__ = 'score'
student_id = Column(Integer, ForeignKey('student.id'), primary_key=True)
course_id = Column(Integer, ForeignKey('course.id'), primary_key=True)
score = Column(Float, nullable=False)
# 初始化数据库
def init():
Base.metadata.create_all(engine)
# 添加学生
def add_student(name, class):
session = Session()
s = Student(name=name, class=class)
session.add(s)
session.commit()
# 添加课程
def add_course(name, credit, teacher):
session = Session()
c = Course(name=name, credit=credit, teacher=teacher)
session.add(c)
session.commit()
# 添加成绩
def add_score(student_id, course_id, score):
session = Session()
s = Score(student_id=student_id, course_id=course_id, score=score)
session.add(s)
session.commit()
# 删除学生
def delete_student(id):
session = Session()
s = session.query(Student).filter(Student.id == id).first()
session.delete(s)
session.commit()
# 删除课程
def delete_course(id):
session = Session()
c = session.query(Course).filter(Course.id == id).first()
session.delete(c)
session.commit()
# 删除成绩
def delete_score(student_id, course_id):
session = Session()
s = session.query(Score).filter(Score.student_id == student_id, Score.course_id == course_id).first()
session.delete(s)
session.commit()
# 修改成绩
def update_score(student_id, course_id, score):
session = Session()
s = session.query(Score).filter(Score.student_id == student_id, Score.course_id == course_id).first()
s.score = score
session.commit()
# 查询学生
def query_student(id):
session = Session()
s = session.query(Student).filter(Student.id == id).first()
print('id:{} name:{} class:{}'.format(s.id, s.name, s.class))
# 查询课程
def query_course(id):
session = Session()
c = session.query(Course).filter(Course.id == id).first()
print('id:{} name:{} credit:{} teacher:{}'.format(c.id, c.name, c.credit, c.teacher))
# 查询成绩
def query_score(student_id, course_id):
session = Session()
s = session.query(Score).filter(Score.student_id == student_id, Score.course_id == course_id).first()
print('student_id:{} course_id:{} score:{}'.format(s.student_id, s.course_id, s.score))
# 统计分析
def statistics():
session = Session()
# 班级平均成绩
avg_class_score = session.query(Student.class, Score.score).join(Score).group_by(Student.class).\
with_entities(Student.class, func.avg(Score.score)).all()
print('班级平均成绩:', avg_class_score)
# 课程平均成绩
avg_course_score = session.query(Course.name, Score.score).join(Score).group_by(Course.name).\
with_entities(Course.name, func.avg(Score.score)).all()
print('课程平均成绩:', avg_course_score)
if __name__ == '__main__':
init()
add_student('张三', '一班')
add_student('李四', '二班')
add_course('语文', 4.0, '张老师')
add_course('数学', 4.0, '李老师')
add_score(1, 1, 90)
add_score(1, 2, 80)
add_score(2, 1, 85)
add_score(2, 2, 95)
query_student(1)
query_course(1)
query_score(1, 1)
delete_student(1)
delete_course(1)
delete_score(2, 2)
update_score(2, 1, 90)
statistics()
```
3. 开发文档
开发文档包括以下内容:
1. 项目概述:学生成绩管理系统是一个基于MySQL和Python的管理系统,可以方便地管理学生的基本信息、课程信息和成绩信息。
2. 功能模块:包括学生信息管理、课程信息管理、成绩管理和统计分析。
3. 技术选型:使用MySQL作为数据库,使用Python进行开发,使用SQLAlchemy库进行ORM开发。
4. 数据库设计:创建一个名为“student”的数据库,包含三张表:学生表(student)、课程表(course)、成绩表(score)。
5. 详细设计:详细描述了每个功能模块的实现方法,包括Python代码和SQL语句。
6. 测试计划:定义了测试用例和测试方法,保证系统的稳定性和可靠性。
7. 部署和维护:描述了如何部署和维护学生成绩管理系统,包括数据库备份和恢复、代码更新和维护等。