基于 WPF + SQLite + 三层架构 的 .NET 8 学生课程管理系统,支持三种角色(管理员/教师/学生)的教务管理核心功能。
- ✅ 三种角色自助注册(Admin / Teacher / Student)
- ✅ 用户登录(用户名 + 密码)
- ✅ 管理员对学生/教师信息的增删改查
- ✅ 课程信息维护(课程编号、名称、学分、学期、授课教师)
- ✅ 教师开设课程(教师可查看自己所授课程)
- ✅ 按学期筛选课表
- ✅ 学生自主选课
- ✅ 教师录入/修改成绩
- ✅ 学生查看个人成绩单
- ✅ 成绩统计分析(平均分、总学分)
- ✅ CSV 文件导出
| 层级 | 技术 |
|---|---|
| 前端 UI | WPF (.NET 8, Windows) |
| 后端 | .NET 8 (C#) |
| 数据库 | SQLite (Microsoft.Data.Sqlite) |
| 架构 | 三层架构(DAL / BLL / UI) |
| 依赖注入 | 手动服务定位器 (ServiceLocator) |
EducationalSystem.sln
├── EducationalSystem.DAL # 数据访问层
│ ├── DbHelper.cs # SQLite 数据库连接与初始化
│ ├── Entities/ # 数据实体类
│ │ ├── User.cs # 用户表实体
│ │ ├── Student.cs # 学生表实体
│ │ ├── Teacher.cs # 教师表实体
│ │ ├── Course.cs # 课程表实体
│ │ └── Enrollment.cs # 选课记录实体(含成绩)
│ ├── Repositories/ # 仓储层(数据操作)
│ │ ├── UserRepository.cs
│ │ ├── StudentRepository.cs
│ │ ├── TeacherRepository.cs
│ │ ├── CourseRepository.cs
│ │ └── EnrollmentRepository.cs
│ └── Scripts/ # 建表 SQL 脚本
│
├── EducationalSystem.BLL # 业务逻辑层
│ ├── Services/ # 业务服务
│ │ ├── AuthService.cs # 认证服务
│ │ ├── StudentService.cs
│ │ ├── TeacherService.cs
│ │ ├── CourseService.cs
│ │ └── EnrollmentService.cs
│ └── ServiceLocator.cs # 服务定位器(全局服务注册)
│
└── EducationalSystem.UI # 表示层(WPF)
├── App.xaml / App.xaml.cs # 应用程序入口
├── Windows/ # 主窗口
│ ├── LoginWindow.xaml # 登录窗口
│ ├── AdminMainWindow.xaml # 管理员主窗口
│ ├── TeacherMainWindow.xaml # 教师主窗口
│ └── StudentMainWindow.xaml # 学生主窗口
├── Pages/ # 功能页面
│ ├── StudentManagePage # 学生管理
│ ├── TeacherManagePage # 教师管理
│ ├── CourseManagePage # 课程管理
│ ├── CourseOpenPage # 开课管理
│ ├── EnrollmentPage # 学生选课
│ ├── ScoreEntryPage # 成绩录入
│ ├── ScoreQueryPage # 成绩查询
│ ├── SchedulePage # 课表展示
│ └── TeacherCoursePage # 教师课程查看
└── appsettings.json # 配置文件
UI → BLL → DAL → SQLite
(引用) (引用) (NuGet)
- DAL:底层数据访问,封装 SQLite 操作
- BLL:业务逻辑层,调用 DAL 完成业务规则
- UI:WPF 界面层,仅依赖 BLL 接口
| 表名 | 主键 | 说明 |
|---|---|---|
Users |
Username | 用户登录表(含密码哈希与角色) |
Students |
StudentId | 学生信息表 |
Teachers |
TeacherId | 教师信息表 |
Courses |
CourseId | 课程表(外键 TeacherId → Teachers) |
Enrollments |
(StudentId, CourseId) | 选课记录表(含 Score 字段) |
- 进入
publish_output/目录 - 双击
EducationalSystem.UI.exe - 首次运行会自动创建 SQLite 数据库文件并初始化表结构
要求:目标电脑需安装 .NET 8 Runtime(若未安装,运行时会自动提示下载)
# 还原依赖
cd E:\教务系统
dotnet restore
# 运行
dotnet run --project EducationalSystem.UI
# 发布(生成单文件 exe)
dotnet publish EducationalSystem.UI\EducationalSystem.UI.csproj -c Release -o publish_output截图占位 — 请运行程序后截图并替换此部分
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin |
admin123 |
其他账户请通过注册页面自助创建。