Python项目工坊|用代码实现《学生管理》软件

本系列将不定期分享原创Python实用项目,包含完整代码及实现说明,涵盖多种应用场景。如果你是刚学完语法却不知如何实践的新手,或想拓展项目经验的中级开发者,这里或许能为你提供灵感和参考模板。欢迎评论区或私信交流讨论,代码与思路皆可复用,一起精进技术。

图片

一、项目全景速览 🌐

1. 一句话定位

ttkbootstrap构建高颜值Python桌面应用:从零开发SQLite驱动的学生管理系统,涵盖班级管理、数据导入导出等完整功能链,代码即学即用。

2.  技术栈清单

  • 核心库:ttkbootstrap 界面开发 / Peewee 数据库开发
  • 辅助工具:pandas Excel导入 / openpyxl Excel导出
  • 开发环境:Python3.8(过高版本安装ttkbootstrap可能会有问题,这个是我在开发过程中遇到的,版本过高,无法正常使用。如果你的Python版本安装使用没有问题,请忽略。) / VSCode等。

3.  功能地图

📂 项目架构

├── 班级与学生综合管理模块:实现班级管理和学生管理

└── 学生信息全量查询模块:提供对全部学生数据进行查询的功能

4.  功能模块说明

班级与学生综合管理

采用上下分区式GUI布局,精准实现班级-学生的层级化管理:

1.  🏫 班级管理区(上侧)

  • 核心功能:班级的创建/编辑/删除
  • 数据展示:ttkbootstrap表格控件实时渲染班级列表
  • 操作反馈:SQLite数据库持久化存储,变更即时生效

2.  👨🎓 学生管理区(下侧)

  • 单条操作:添加/修改/删除学生
  • 批量处理:Excel导入导出(导入基于Pandas实现,导出基于openpyxl实现)
  • 交互约束:

⚠️ 级联设计原则:

必须先选中目标班级,才能激活该区域功能控件

例如:选中「计算机2班」后,表格仅显示该班级学生,且所有操作均绑定班级ID

学生信息全量查询

基于SQLite全文搜索与ttkbootstrap动态表格开发,突破单班级查询限制,实现全维度数据穿透。

二、部分项目代码展示🧪

创建数据模型,程序运行会自动创建与模型对应的数据库表。

import datetime
from peewee import *
db = SqliteDatabase("database.db")
class BaseModel(Model):
    # 主键id
    id=AutoField()
    # 创建时间
    created_time = DateTimeField(default=datetime.datetime.now)
    class Meta:
        database = db
# 班级
class Clazz(BaseModel):
    def __init__(self, id: int=None, name: str=None, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.name = name
        self.id = id
    # 班级名称
    name = CharField(max_length=50)
    # 班级人数
    number = IntegerField(default=0)
# 学生
class Student(BaseModel):
    def __init__(self, id: int=None, stuno: str=None, name: str=None, clazzid: int=None, clazzname: str=None,
                 birth: str=None, gender: str=None, phone: str=None, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.id = id
        self.stuno = stuno
        self.name = name
        self.clazzid = clazzid
        self.clazzname = clazzname
        self.birth = birth
        self.gender = gender
        self.phone = phone
    # 学号
    stuno = CharField(max_length=20, null=True)
    # 姓名
    name = CharField(max_length=20)
    # 班级id
    clazzid = IntegerField(null=True)
    # 班级名称
    clazzname = CharField(max_length=50, null=True)
    # 出生日期
    birth = DateField(null=True)
    # 性别
    gender = FixedCharField(max_length=1, null=True)
    # 联系方式
    phone = CharField(max_length=15, null=True)
# 创建数据库表
db.create_tables([Clazz, Student])

导出Excel方法。


from ttkbootstrap.dialogs.dialogs import Messagebox
from openpyxl import Workbook
def export_excel(headers: list, data: list, file_path: str):
    """ 导出Excel,参数说明:
            headers (list):Excel表头
            data (list):导出数据
            file_path (str):Excel文件路径
    """
    # 创建一个工作簿对象
    workbook = Workbook()
    # 获取活动工作表
    sheet = workbook.active
    # 定义表头
    sheet.append(headers)
    # 将数据逐行添加到工作表中
    for row in data:
        sheet.append(row)
    # 保存工作簿
    try:
        workbook.save(file_path)
        Messagebox.ok("数据导出完成", title="消息")
    except Exception as e:
        Messagebox.show_error("数据导出出错,请稍后重试", title="提示")

三、源码获取

项目地址:Python-Open-Projects: 本仓库是Python开源项目的集合,适用于个人学习

欢迎关注我的公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值