|
|
4 weeks ago | |
|---|---|---|
| .kiro/steering | 1 month ago | |
| .sonarlint | 2 months ago | |
| android | 4 weeks ago | |
| backend | 4 weeks ago | |
| cli | 4 weeks ago | |
| core | 4 weeks ago | |
| docs | 4 weeks ago | |
| gradle/wrapper | 1 month ago | |
| gui | 4 weeks ago | |
| launcher | 4 weeks ago | |
| scripts | 1 month ago | |
| uml | 1 month ago | |
| .gitignore | 4 weeks ago | |
| Jenkinsfile | 4 weeks ago | |
| README.md | 1 month ago | |
| build-dist.bat | 4 weeks ago | |
| build.gradle | 4 weeks ago | |
| gradle.properties | 1 month ago | |
| gradlew.bat | 2 months ago | |
| local.properties | 2 months ago | |
| settings.gradle | 1 month ago | |
| sonar-project.properties | 1 month ago | |
README.md
MCSLMS - 多客户端智能图书馆管理系统
Multi-Client Smart Library Management System
项目概述
MCSLMS 是一个现代化的图书馆管理系统,支持四种客户端界面:
- CLI - 命令行界面
- GUI - 图形用户界面 (JavaFX)
- Web - 浏览器访问 (Spring Boot)
- Android - 移动应用
快速开始
1. 启动应用
最简单的方式是使用统一启动器:
# Windows
start.bat
# 或直接运行
scripts\run-launcher.bat
启动器会显示菜单,让你选择要使用的客户端。
2. 构建所有模块
scripts\build-all.bat
3. 单独启动客户端
# CLI 客户端
scripts\run-cli.bat
# GUI 客户端
scripts\run-gui.bat
# Web 客户端
scripts\run-web.bat
# Android 客户端(需要模拟器或真机)
scripts\run-android.bat
4. 默认账号
系统会在首次运行时自动创建一个默认管理员账号,方便登录和审核新用户:
- 管理员邮箱:
admin@library.com - 初始密码:
admin123 - 角色:
ADMIN
建议在首次登录后及时修改管理员密码,并通过“用户管理/审核”功能为读者创建正式账号。
项目结构
MCSLMS/
├── core/ # 核心业务逻辑模块
├── cli/ # CLI 客户端
├── gui/ # GUI 客户端
├── backend/ # 后端服务(Web)
├── android/ # Android 客户端
├── launcher/ # 统一启动器
├── docs/ # 项目文档
│ ├── architecture/ # 架构设计
│ ├── guides/ # 使用指南
│ ├── development/ # 开发文档
│ ├── deployment/ # 部署文档
│ └── reports/ # 测试报告
├── scripts/ # 构建和运行脚本
├── data/ # 数据文件
├── config/ # 配置文件
├── .jenkins/ # Jenkins 配置
├── start.bat # 主启动脚本
└── README.md # 本文件
功能特性
基础功能
- ✅ 图书管理(增删改查)
- ✅ 借阅管理
- ✅ 用户管理
- ✅ 借阅记录查询
智能功能
- ✅ AI 图书推荐
- ✅ 智能搜索
- ✅ 语音交互
- ✅ 图书摘要生成
四端切换
- ✅ 统一启动器
- ✅ 客户端间切换
- ✅ 会话保持
技术栈
- 语言: Java 21, Kotlin
- 构建工具: Gradle 8.5
- 数据库: SQLite (开发), PostgreSQL (生产)
- 前端框架: JavaFX, Spring Boot + Thymeleaf
- 移动端: Android SDK 34 (Android 14)
- CI/CD: Jenkins, SonarQube
- 版本控制: Git, Gitea
开发指南
环境要求
- JDK 21+
- Gradle 8.5+
- Android SDK (用于 Android 客户端)
构建命令
# 构建所有模块
./gradlew build
# 构建特定模块
./gradlew :core:build
./gradlew :cli:build
./gradlew :gui:build
./gradlew :android:assembleDebug
# 打包可执行 JAR(推荐使用 --no-daemon 避免端口占用)
./gradlew :cli:fatJar -x test --no-daemon
./gradlew :gui:fatJar -x test --no-daemon
./gradlew :launcher:fatJar -x test --no-daemon
四端运行指南
CLI 命令行客户端
# 1. 构建
.\gradlew.bat :cli:fatJar -x test --no-daemon
# 2. 运行(直接运行JAR,避免gradle run的调试端口问题)
java -jar cli\build\libs\mcslms-cli-v1.11.0.0-all.jar
GUI 图形界面客户端
# 1. 构建
.\gradlew.bat :gui:fatJar -x test --no-daemon
# 2. 运行
java -jar gui/build/libs/mcslms-gui-v1.11.0.0-all.jar
Web 后端服务
# 1. 构建
.\gradlew.bat :backend:bootJar -x test --no-daemon
# 2. 运行
java -jar backend/build/libs/mcslms-backend-v1.11.0.0.jar
# 3. 访问
# 浏览器打开 http://localhost:8082
Android 移动客户端
# 1. 构建 APK
.\gradlew.bat :android:assembleDebug -x test --no-daemon
# 2. APK 位置
# android/build/outputs/apk/debug/android-debug.apk
# 3. 安装到设备
adb install android/build/outputs/apk/debug/android-debug.apk
快速登录测试账号
四端应用均支持快速登录功能,内置三个测试账号:
| 角色 | 邮箱 | 密码 | 权限 |
|---|---|---|---|
| 👨🏫 教师 | teacher@test.com | 123456 | 馆员权限(可审核用户) |
| 👨🎓 学生 | student@test.com | 123456 | 读者权限 |
| 👤 访客 | guest@test.com | 123456 | 读者权限 |
在登录界面点击对应的快速登录按钮即可一键登录。
运行测试
# 运行所有测试
./gradlew test
# 运行特定模块测试
./gradlew :core:test
./gradlew :cli:test
文档
详细文档位于 docs/ 目录,查看 文档中心 获取完整索引。
快速链接:
🤖 AI服务配置与使用
MCSLMS 提供了多种AI服务实现,可以通过系统属性或环境变量进行切换:
AI服务类型
- SmartAIService(默认):基于本地馆藏数据的智能分析服务
- DeepSeekAIService:基于DeepSeek API的AI服务
- ZhipuAIService:基于智谱AI API的服务
- MockAIService:简单的模拟服务,用于测试
使用方式
CLI端使用不同AI服务
# 使用默认SmartAIService
java -cp ".;cli/build/libs/mcslms-cli-v1.11.0.0-all.jar" com.smartlibrary.cli.Main
# 使用DeepSeek AI服务
java "-Dai.provider=deepseek" -cp ".;cli/build/libs/mcslms-cli-v1.11.0.0-all.jar" com.smartlibrary.cli.Main
# 使用智谱AI服务
java "-Dai.provider=zhipu" -cp ".;cli/build/libs/mcslms-cli-v1.11.0.0-all.jar" com.smartlibrary.cli.Main
# 使用Mock服务
java "-Dai.provider=mock" -cp ".;cli/build/libs/mcslms-cli-v1.11.0.0-all.jar" com.smartlibrary.cli.Main
其他端配置
- GUI端:通过系统属性启动:
java "-Dai.provider=deepseek" -jar gui/build/libs/mcslms-gui-v1.11.0.0.jar - Web端:在启动应用时设置环境变量:
AI_PROVIDER=deepseek java -jar web/build/libs/mcslms-web-v1.11.0.0.jar - Android端:通过系统设置菜单切换AI服务类型
API配置
如需使用DeepSeek或智谱AI服务,请确保:
- 在相应的AI服务实现类中配置了有效的API密钥
- 网络连接正常,可以访问相应的API服务
- 账户有足够的API调用额度
🏗️ 架构设计
系统采用分层架构:
┌─────────────────────────────────────────┐
│ Client Applications (四端) │
│ CLI │ GUI │ Web │ Android │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Core Module (核心模块) │
│ - Business Logic │
│ - Domain Models │
│ - Data Access │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Database (数据库) │
│ SQLite / PostgreSQL │
└─────────────────────────────────────────┘
贡献指南
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
联系方式
致谢
感谢所有为本项目做出贡献的开发者!
版本: 1.20.0
最后更新: 2025-12-03
Jenkins.instance.getItemByFullName("mcslms").getBuildByNumber(120)?.queueItem?.doCancel();println("mcslms#120排队构建已取消")
sqp_28dee20a416dd020466799252e09228a1799e2be 账号密码:sonar gitaiops123 http://localhost:9000
请将sonarqube扫描的结果保存:sonarqube-mcslms-扫描报告.md mclsms项目许多问题怎么修复?请制作详细的修复计划: sonarqube-mcslms-修复计划.md sonarqube与jenkins整合的,现在的修复非常低效,怎么更好更高效解决修复质量问题,给出具体操作步骤: sonarqube-mcslms-jenkins修复操作.md
claude-key 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
./gradlew sonar -Dsonar.projectKey=mcslms -Dsonar.projectName='MCSLMS - 智能图书管理系统' -Dsonar.host.url=http://localhost:9000 -Dsonar.token=sqp_0e3f005f3c9c8df6bf8d731872e5d373692c9394
gradlew.bat clean build sonar -Dsonar.gradle.skipCompile=true -Dsonar.projectKey=mcslms -Dsonar.projectName=MCSLMS -Dsonar.host.url=http://localhost:9000 -Dsonar.token=sqp_0e3f005f3c9c8df6bf8d731872e5d373692c9394 -Dsonar.sourceEncoding=UTF-8 -Dsonar.java.source=21