当前位置: 首页 > news >正文

课程设计


面向对象大作业课程设计初步选题

选题名称:简易图书借阅管理系统

**博客链接****:https://www.cnblogs.com/vvX1nJ/p/19207306

组员名单:王鑫杰


博客内容

1. 我使用了什么AI工具辅助选题

在本次选题过程中,我主要使用了 DeepSeek 辅助完成。

  • DeepSeek:基于"需要包含管理员和学生角色"的要求,生成了多个方案选项,如"图书借阅系统"、"实验室设备借用系统"等。最终选定"简易图书借阅管理系统",因为它角色清晰、业务流程明确,且能很好地体现面向对象中的继承、多态、封装等概念。

2. 选题与前期调查

想要做什么
我想要开发一个简易图书借阅管理系统。该系统模拟小型图书馆的基本业务流程,包含管理员和学生两种角色。管理员负责管理图书信息和学生账户,学生可以查询图书、借阅图书、归还图书。

别人是怎么做的

  • 大学图书馆系统:功能完善但复杂,如汇文系统。我将参考其核心的借还书流程。
  • 小型图书管理软件:如"晨光图书管理系统",功能相对简单,适合小规模使用。
  • 开源项目:GitHub上有许多简单的图书馆管理系统,大多使用Spring Boot开发,但我的版本会更简化。
    • 参考链接:https://github.com/topics/library-management-system

准备实现哪几部分
考虑到单人开发,我专注于最核心的功能:

  1. 用户管理模块:学生注册登录、管理员账户管理。
  2. 图书管理模块:图书信息的增删改查。
  3. 借阅管理模块:借书、还书、查看借阅记录。

3. 系统功能设计

系统角色

  • 学生(Student):查询图书、借阅图书、归还图书、查看个人借阅记录
  • 管理员(Admin):管理所有图书(添加、删除、修改)、管理学生账户、查看所有借阅记录

系统所要实现的功能

  • 功能1:用户认证与权限管理

    • 学生使用学号和密码登录
    • 管理员使用管理员账号登录
    • 根据不同角色显示不同的功能菜单
  • 功能2:图书信息管理(管理员)

    • 添加新书(书号、书名、作者、出版社、总数、可借数)
    • 修改图书信息
    • 删除图书
    • 查看所有图书
  • 功能3:学生账户管理(管理员)

    • 查看所有学生账户
    • 重置学生密码
    • 禁用/启用学生账户
  • 功能4:图书查询与借阅(学生)

    • 按书名、作者查询图书
    • 查看图书详情和可借状态
    • 借阅图书(检查可借数、更新库存)
    • 归还图书(更新库存)
  • 功能5:借阅记录查询

    • 学生查看自己的借阅记录
    • 管理员查看所有借阅记录

4. 准备使用哪些Java生态的的第三方工具

  • 构建工具:Maven
  • JSON处理:Jackson(用于数据序列化到文件)
  • 密码加密:Apache Commons Codec(用于MD5加密密码)
  • 单元测试:JUnit 5
  • 代码质量:阿里巴巴Java开发规范插件

5. 数据如何存储

使用文件存储方式,分为多个JSON文件:

  • students.json - 存储学生信息(学号、密码、姓名、状态等)
  • admins.json - 存储管理员信息
  • books.json - 存储图书信息(书号、书名、作者、总数、可借数等)
  • borrow_records.json - 存储借阅记录(记录ID、学号、书号、借书时间、应还时间、状态等)

程序启动时加载所有数据到内存,操作在内存中进行,退出时保存到文件。

6. 界面

采用控制台(Console) 界面,通过清晰的菜单导航:

=== 图书借阅管理系统 ===
1. 学生登录
2. 管理员登录
3. 退出请选择:

7. 开发工具

  • IDE:IntelliJ IDEA
  • 版本控制:Git (Gitee)
  • 测试工具:JUnit 5
  • 代码规范:阿里巴巴Java开发规范IDE插件
  • AI工具:DeepSeek (辅助代码编写和调试)

核心类设计预览

// 用户基类
abstract class User {private String username;private String password;private String role;// getter/setter...
}// 学生类
class Student extends User {private String studentId;private String name;private boolean active;// getter/setter...
}// 管理员类  
class Admin extends User {private String adminId;// getter/setter...
}// 图书类
class Book {private String bookId;private String title;private String author;private int totalCount;private int availableCount;// getter/setter...
}// 借阅记录类
class BorrowRecord {private String recordId;private String studentId;private String bookId;private Date borrowDate;private Date dueDate;private String status; // "借阅中"/"已归还"// getter/setter...
}

课程设计规范自查表

序号 自查项目 负责人
1 代码:编码规范(类、属性、方法、变量命名)、代码格式化 王鑫杰
2 代码:是否去除了IDE中的警告、包的划分 王鑫杰
3 代码:代码是否滥用了super() 王鑫杰
4 代码:如果使用了Map,请说明为何使用Map 王鑫杰
5 代码:说明如何管理借阅记录的状态变更 王鑫杰
6 博客、PPT:UML图、功能结构图与流程图的绘制 王鑫杰
7 设计:按照面向对象设计建议进行检查 王鑫杰
http://www.jsqmd.com/news/36680/

相关文章:

  • 2025年尼龙共挤膜直销厂家权威推荐:五层共挤膜/洁净尼龙多层共挤膜/无菌设备保护套厂家精选
  • 2025年全封闭超声波清洗机制造企业权威推荐榜单:零排放清洗机/蒸馏回收机/双溶剂清洗机源头厂家精选
  • 【RK3568 NPU实战】别再闲置你的NPU!手把手带你用迅为资料跑通Android AI检测Demo,附完整流程与效果
  • 智能守护绿水青山:视频融合平台EasyCVR在森林防火监控中的实战应用
  • 微算法科技(NASDAQ MLGO)将租赁权益证明(LPoS)共识算法与零知识证明结合,实现租赁代币的隐私保护
  • 在 Java 中实现插件化:使用 PF4J 的实战指南
  • 【SKILL】Layer Size
  • 中标喜报 | 璞华大数据中标成都苑东生物项目:制药设备管理数字化再树标杆
  • 胶粘剂行业PLM是什么?一文读懂胶粘剂(粘合剂)PLM系统的功能、价值、解决方案等
  • 非常简单的基于 Docker 自建 RustDesk 远程桌面教程
  • 2025年云南geo推广公司权威推荐榜单:GEO优化/geo/geo推广源头公司精选
  • 基于STM32F407与LAN8720A实现以太网通信
  • python-3.10.11安装
  • 实用指南:微信PC版本4.0后小程序目录变更
  • 2025年水泥砖纤维托板直销厂家权威推荐:水泥砖托板/水泥砖纤维托板/纤维托板源头厂家精选
  • 2025年北京地漏防臭治理服务权威推荐榜单:家政服务/小便池防臭治理/浴缸防臭治理服务供应商精选
  • CompletableFuture常见的java场景
  • D - Deductive Snooker Scoring
  • MySQL性能优化|InnoDB存储引擎深度解析:从表空间到数据行的设计哲学 - 指南
  • 从零开始的C++学习生活 7:vector的入门使用 - 教程
  • .net9 BundlerMinifier与StaticWebAssets冲突
  • 淘宝店铺全量商品接口实战:分类穿透采集与增量同步的技术方案
  • 分治+字符串(p3612)
  • Python详细学习教程
  • ubuntu 安装使用 qemu
  • TypeScript 中的策略模式
  • NProgress 给 Vue 路由切换加个 “假” 进度条提升用户体验
  • 2025年钢结构艺术造型直销厂家权威推荐榜单:钢结构景观造型/艺术钢结构/扭曲螺旋钢结构艺术造型源头厂家精选
  • 伊克罗德信息成为 Dify 官方代理商,携手共创企业级 Agentic AI 应用新未来!
  • 数组的定义、访问、输出