基于 Python 的学生成绩管理系统

在这里插入图片描述

基于 Python 的学生成绩管理系统

1. 项目背景

学生成绩管理系统是学校用于管理学生信息、课程信息和成绩的工具。通过开发一个简单的学生成绩管理系统,学生可以掌握 Python 的基本语法、文件操作、数据库交互以及面向对象编程等技能。该系统可以帮助学校高效地管理学生成绩,并提供查询、统计等功能。


2. 功能需求

  • 学生管理:添加、删除、修改和查询学生信息。
  • 课程管理:添加、删除、修改和查询课程信息。
  • 成绩管理:录入、修改和查询学生成绩。
  • 数据存储:使用 SQLite 数据库存储学生、课程和成绩信息。

3. 技术选型

  • 编程语言:Python
  • 数据库:SQLite(轻量级,适合小型项目)
  • 前端:命令行界面(CLI)

4. 系统设计

4.1 数据库设计
  • 学生表(Students)
    • id:学生编号(主键)
    • name:学生姓名
    • age:学生年龄
    • gender:学生性别
  • 课程表(Courses)
    • id:课程编号(主键)
    • name:课程名称
    • teacher:授课教师
  • 成绩表(Scores)
    • id:成绩编号(主键)
    • student_id:学生编号(外键)
    • course_id:课程编号(外键)
    • score:成绩
4.2 功能模块
  • 学生管理模块:实现学生的增删改查功能。
  • 课程管理模块:实现课程的增删改查功能。
  • 成绩管理模块:实现成绩的录入、修改和查询功能。

5. 核心代码实现

import sqlite3

# 连接数据库
conn = sqlite3.connect('school.db')
cursor = conn.cursor()

# 创建学生表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Students (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER,
    gender TEXT
)
''')

# 创建课程表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Courses (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    teacher TEXT
)
''')

# 创建成绩表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Scores (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    student_id INTEGER,
    course_id INTEGER,
    score REAL,
    FOREIGN KEY (student_id) REFERENCES Students (id),
    FOREIGN KEY (course_id) REFERENCES Courses (id)
)
''')

# 添加学生
def add_student(name, age, gender):
    cursor.execute('''
    INSERT INTO Students (name, age, gender)
    VALUES (?, ?, ?)
    ''', (name, age, gender))
    conn.commit()
    print("学生添加成功!")

# 添加课程
def add_course(name, teacher):
    cursor.execute('''
    INSERT INTO Courses (name, teacher)
    VALUES (?, ?)
    ''', (name, teacher))
    conn.commit()
    print("课程添加成功!")

# 录入成绩
def add_score(student_id, course_id, score):
    cursor.execute('''
    INSERT INTO Scores (student_id, course_id, score)
    VALUES (?, ?, ?)
    ''', (student_id, course_id, score))
    conn.commit()
    print("成绩录入成功!")

# 查询学生成绩
def query_scores(student_id):
    cursor.execute('''
    SELECT Students.name, Courses.name, Scores.score
    FROM Scores
    JOIN Students ON Scores.student_id = Students.id
    JOIN Courses ON Scores.course_id = Courses.id
    WHERE Students.id = ?
    ''', (student_id,))
    scores = cursor.fetchall()
    for score in scores:
        print(f"学生: {score[0]}, 课程: {score[1]}, 成绩: {score[2]}")

# 主程序
if __name__ == "__main__":
    # 添加测试数据
    add_student("张三", 20, "男")
    add_student("李四", 21, "女")
    add_course("Python编程", "王老师")
    add_course("数据结构", "李老师")
    
    # 录入成绩
    add_score(1, 1, 95)  # 张三的 Python 编程成绩
    add_score(1, 2, 88)  # 张三的数据结构成绩
    add_score(2, 1, 92)  # 李四的 Python 编程成绩
    
    # 查询学生成绩
    print("张三的成绩:")
    query_scores(1)
    print("\n李四的成绩:")
    query_scores(2)

6. 运行效果

  1. 添加学生和课程
    • 学生“张三”和“李四”被添加到数据库中。
    • 课程“Python编程”和“数据结构”被添加到数据库中。
  2. 录入成绩
    • 张三的 Python 编程成绩为 95 分,数据结构成绩为 88 分。
    • 李四的 Python 编程成绩为 92 分。
  3. 查询成绩
    • 查询张三的成绩,输出:
      学生: 张三, 课程: Python编程, 成绩: 95.0
      学生: 张三, 课程: 数据结构, 成绩: 88.0
      
    • 查询李四的成绩,输出:
      学生: 李四, 课程: Python编程, 成绩: 92.0
      

7. 总结

通过本项目的开发,我们实现了一个简单的学生成绩管理系统,涵盖了学生管理、课程管理和成绩管理等功能。Python 的简洁语法和 SQLite 的轻量级特性使得该项目易于实现和扩展。未来可以进一步优化系统,例如:

  • 添加用户权限管理。
  • 开发图形用户界面(GUI)。
  • 支持数据导出和导入功能。

希望这篇文章能为你的毕业设计提供帮助!如果需要更多功能或优化建议,可以随时告诉我!😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值