Press Subscription System
Find a file
Rikki ce8567e1eb
Some checks failed
Build and Release / test (push) Successful in 31s
Build and Release / build-and-release (push) Failing after 48s
fix: 修复错误的测试用例的问题
2025-06-13 16:34:32 +08:00
.direnv feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
.forgejo/workflows fix: 修复action环境无数据库导致测试失败的问题 2025-06-13 16:30:04 +08:00
gradle/wrapper feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
src fix: 修复错误的测试用例的问题 2025-06-13 16:34:32 +08:00
.envrc feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
.gitattributes feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
.gitignore feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
build.gradle feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
flake.lock init: java24 env 2025-06-07 18:19:48 +08:00
flake.nix feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
gradlew feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
gradlew.bat feat: 完成初步的系统 2025-06-09 01:15:19 +08:00
README.md fix: 修复错误的使用指南 2025-06-09 08:21:15 +08:00
settings.gradle feat: 完成初步的系统 2025-06-09 01:15:19 +08:00

企业报刊订阅管理系统

基于 Spring Boot 3 开发的企业报刊订阅管理系统,用于数字化管理企业的报刊订阅业务。

项目特性

  • Spring Boot 3.4.6 - 最新的Spring Boot框架
  • Spring Data JPA - 数据持久化
  • Thymeleaf - 模板引擎
  • PostgreSQL - 数据库
  • Bootstrap 5 - 前端UI框架
  • Maven - 项目管理

功能模块

1. 录入功能

  • 员工信息管理:录入员工编号、姓名、性别、部门、联系方式等基本信息
  • 报刊信息管理:录入报刊编号、名称、类型、单价、出版周期等基本信息
  • 数据唯一性检查:确保员工编号和报刊编号唯一,重复录入时提示并取消操作

2. 订阅功能

  • 订阅关系建立:关联订阅人员与报刊,记录订阅起始日期、订阅时长
  • 金额自动计算:根据报刊单价和订阅时长自动计算订阅金额
  • 订阅记录修改:允许对已建立的订阅关系进行调整

3. 查询功能

  • 按人员查询:输入员工编号或姓名,显示该员工的所有订阅信息
  • 按报刊查询:输入报刊编号或名称,显示订阅该报刊的所有员工信息
  • 按部门查询:选择部门,显示该部门所有员工的订阅情况
  • 查询结果展示:提供清晰的数据展示界面

4. 统计功能

  • 按报刊统计:统计每种报刊的订阅人数和总金额
  • 按人员统计:统计每位员工的订阅报刊数量和总花费
  • 按部门统计:统计各部门的订阅情况和总费用
  • 统计结果展示:支持图表和数据表格形式展示

5. 系统维护

  • 数据初始化:系统首次启动时自动添加示例数据
  • 数据验证:完整的输入数据验证机制
  • 错误处理:友好的错误提示和处理

技术架构

┌─ 控制层 (Controller)
│  ├─ HomeController        # 主页控制器
│  ├─ EmployeeController    # 员工管理控制器
│  ├─ NewspaperController   # 报刊管理控制器
│  └─ SubscriptionController # 订阅管理控制器
│
├─ 服务层 (Service)
│  ├─ EmployeeService       # 员工服务
│  ├─ NewspaperService      # 报刊服务
│  └─ SubscriptionService   # 订阅服务
│
├─ 数据访问层 (Repository)
│  ├─ EmployeeRepository    # 员工数据访问
│  ├─ NewspaperRepository   # 报刊数据访问
│  └─ SubscriptionRepository # 订阅数据访问
│
└─ 实体层 (Entity)
   ├─ Employee              # 员工实体
   ├─ Newspaper            # 报刊实体
   └─ Subscription         # 订阅关系实体

数据库设计

员工表 (employees)

  • employee_id (主键) - 员工编号
  • name - 姓名
  • gender - 性别
  • department - 部门
  • contact_info - 联系方式
  • created_at, updated_at - 时间戳

报刊表 (newspapers)

  • newspaper_id (主键) - 报刊编号
  • name - 报刊名称
  • type - 报刊类型
  • unit_price - 单价
  • publishing_cycle - 出版周期
  • description - 描述
  • created_at, updated_at - 时间戳

订阅表 (subscriptions)

  • id (主键) - 订阅ID
  • employee_id (外键) - 员工编号
  • newspaper_id (外键) - 报刊编号
  • start_date - 订阅起始日期
  • duration_months - 订阅时长(月)
  • end_date - 订阅结束日期
  • total_amount - 订阅总金额
  • status - 订阅状态
  • notes - 备注
  • created_at, updated_at - 时间戳

环境要求

  • Java 21+
  • PostgreSQL 12+
  • Maven 3.6+

快速开始

  1. 克隆项目
git clone ssh://git@code.rikki.ltd/Rikki/subpress.git
cd subpress
  1. 配置数据库 创建PostgreSQL数据库
CREATE DATABASE subpress;

修改 src/main/resources/application.yml 中的数据库配置:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/subpress
    username: your_username
    password: your_password
  1. 运行项目
./gradlew bootRun
  1. 访问系统 打开浏览器访问:http://localhost:8080/subpress

系统截图

首页概览

  • 显示系统统计数据
  • 快速操作入口
  • 功能模块导航

员工管理

  • 员工列表查看
  • 员工信息录入
  • 员工信息编辑
  • 按部门筛选

报刊管理

  • 报刊列表管理
  • 报刊信息维护
  • 类型和价格管理

订阅管理

  • 订阅关系建立
  • 订阅记录查询
  • 金额自动计算
  • 订阅状态管理

统计报表

  • 多维度数据统计
  • 图表可视化展示
  • 数据导出功能

开发说明

项目采用标准的Spring Boot MVC架构

  • 实体类:定义数据模型和数据库映射
  • Repository数据访问层提供CRUD和复杂查询
  • Service:业务逻辑层,处理业务规则
  • Controller控制层处理HTTP请求
  • 模板Thymeleaf模板提供用户界面

课程实践要点

  1. 系统分析与设计

    • 功能模块分析
    • 数据库设计
    • 类层次设计
  2. 面向对象编程

    • 实体类设计
    • 继承和多态应用
    • 设计模式实践
  3. 数据库应用

    • JPA/Hibernate应用
    • 复杂查询实现
    • 事务管理
  4. Web开发技术

    • Spring MVC架构
    • 模板引擎使用
    • 前端交互设计
  5. 软件工程实践

    • 项目结构组织
    • 代码规范
    • 测试与调试

贡献

不开源,等阁下有授权的时候再说吧

许可证

© Copyright