学生信息系统 (StudentInfoSystem)介绍

2025 年 3 月 24 日 星期一(已编辑)
19

学生信息系统 (StudentInfoSystem)介绍

之前写了爬取教务系统的代码,前端不想动了,放在GitHub上谁需要就拿吧。写得非常烂,多包涵,毕竟寒假才开始学😂。

项目概述

学生信息系统是一个基于微服务架构的应用程序,旨在提供学生信息管理的完整解决方案。系统通过爬虫技术从学校教务系统获取数据,并提供统一的API接口供前端或其他系统调用。


本系统采用分布式微服务架构,每个服务负责特定的功能域,通过API网关统一对外提供服务。系统使用JWT进行身份验证和授权,确保数据安全和用户隐私。


系统架构

系统由以下六个主要微服务组成:


1. 认证服务 (AuthService)

负责用户认证和授权管理,是系统安全的核心组件。


主要功能:

  • 用户登录验证

  • JWT令牌生成与管理

  • 令牌验证与刷新

  • 浏览器自动化登录实现

核心组件:

  • LoginService: 处理用户登录请求,生成JWT令牌

  • BrowserManager: 管理Playwright浏览器实例,实现自动化登录

2. 公共库 (Common)

包含所有服务共享的组件,确保代码复用和一致性。


主要内容:

  • 数据模型 (Models):定义系统中使用的数据结构

  • 中间件 (Middleware):如API安全中间件

  • 过滤器 (Filters):如年份限制过滤器

  • 通用服务 (Services):如登录服务、解析服务等

  • 工具类:提供通用功能

核心组件:

  • AuthModels: 定义认证相关的数据模型

  • StudentInfoParser: 解析学生信息HTML

  • GradeParser: 解析成绩信息HTML

  • ScheduleParserService: 解析课表信息HTML

3. API网关 (Gateway)

作为系统的统一入口,负责请求路由和负载均衡。


主要功能:

  • 请求路由:将请求转发到相应的微服务

  • API聚合:组合多个服务的结果

  • 跨域资源共享(CORS):处理前端跨域请求

  • 请求限流:防止服务过载

技术实现:

  • 使用YARP作为反向代理

  • 集成JWT认证

  • 配置化路由规则

4. 成绩服务 (GradeService)

负责获取和管理学生成绩信息。


主要功能:

  • 查询学生历史成绩

  • 成绩统计与分析

  • 成绩数据爬取与解析

核心组件:

  • GradeService: 处理成绩查询请求

  • GradeParser: 解析成绩HTML数据

5. 课表服务 (ScheduleService)

负责获取和管理学生课表信息。


主要功能:

  • 查询当前学期课表

  • 按学年学期查询历史课表

  • 课表数据爬取与解析

  • 课表格式化输出

核心组件:

  • CourseScheduleService: 处理课表查询请求

  • ScheduleParserService: 解析课表HTML数据

6. 学生信息服务 (StudentService)

负责获取和管理学生基本信息。


主要功能:

  • 学籍信息查询

  • 个人信息查询

  • 联系方式查询

  • 学生信息爬取与解析

核心组件:

  • StudentInfoService: 处理学生信息查询请求

  • StudentInfoCrawlerService: 爬取学生信息

  • StudentInfoParser: 解析学生信息HTML数据

技术栈

  • 后端框架: ASP.NET Core 8.0

  • 认证授权: JWT (JSON Web Token)

  • API文档: Swagger

  • 浏览器自动化: Microsoft Playwright

  • HTML解析: HtmlAgilityPack

  • API网关: YARP

  • 日志记录: 内置.NET日志系统

  • 依赖注入: 内置.NET DI容器

  • HTTP客户端: HttpClient

系统工作流程

  1. 用户认证流程:

   - 用户通过Gateway发送登录请求到AuthService

   - AuthService使用Playwright模拟浏览器登录教务系统

   - 验证成功后生成JWT令牌返回给用户

   - 用户后续请求携带JWT令牌访问其他服务


  1. 数据获取流程:

   - 用户携带JWT令牌请求特定服务(成绩/课表/学生信息)

   - 服务验证令牌有效性

   - 服务使用Playwright爬虫从教务系统获取数据

   - 使用专用解析器解析HTML数据

   - 将解析后的数据返回给用户


  1. 服务间通信:

   - 服务之间通过HTTP API进行通信

   - 共享数据模型确保数据一致性

   - 使用依赖注入管理服务依赖


环境要求

  • .NET SDK: 8.0

  • 操作系统: Windows/macOS/Linux (支持.NET 8.0的任何系统)

  • 内存: 至少2GB RAM (推荐4GB以上)

  • 存储: 至少1GB可用空间

  • 网络: 稳定的互联网连接

安装与配置

前提条件

  1. 安装.NET 8.0 SDK

   # 检查是否已安装

   dotnet --version
  1. 安装Playywright

    ```bash

    dotnet tool install --global Microsoft.Playwright.CLI

    playwright install


  

3. 克隆仓库
bash

    git clone https://github.com/ExXTong/StudentInfoSystem

    cd StudentInfoSystem


  

### 配置服务

  

每个服务都有自己的 appsettings.json 配置文件,需要根据实际环境进行配置:

  

JWT配置
json

    {

      "Jwt": {

        "Secret": "your_secret_key",

        "Expiration": "12:00:00"

      }

    }


  

### 构建与运行

  

#### 构建项目
bash

dotnet restore

dotnet build


  

#### 运行服务

  

需要按照依赖顺序启动各个服务,当然需要开多个终端:

  

1. 启动认证服务
bash

cd StudentInfoSystem.AuthService

dotnet run


  

2. 启动学生信息服务
bash

cd StudentInfoSystem.StudentService

dotnet run


3. 启动成绩服务
bash

cd StudentInfoSystem.GradeService

dotnet run


4. 启动课表服务
bash

cd StudentInfoSystem.ScheduleService

dotnet run


5. 启动API网关
bash

cd StudentInfoSystem.Gateway

dotnet run

```

API文档

服务启动后,可以通过以下URL访问各服务的Swagger文档:

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...