当前位置: 首页 > 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.gsyq.cn/news/45595.html

相关文章:

  • python-3.10.11安装
  • 实用指南:微信PC版本4.0后小程序目录变更
  • CompletableFuture常见的java场景
  • MySQL性能优化|InnoDB存储引擎深度解析:从表空间到数据行的设计哲学 - 指南
  • 2025年次氯酸钠储罐订做厂家权威推荐榜单:K方箱/废酸储罐/酸碱储罐源头厂家精选
  • 分治+字符串(p3612)
  • 2025年钢结构艺术造型直销厂家权威推荐榜单:钢结构景观造型/艺术钢结构/扭曲螺旋钢结构艺术造型源头厂家精选
  • 伊克罗德信息成为 Dify 官方代理商,携手共创企业级 Agentic AI 应用新未来!
  • 2025年沼气直燃品牌综合评测:徐州海德测控领跑行业
  • 2025年沼气直燃生产厂家实力对比:徐州海德测控领跑
  • 2025年市场低氮燃烧器供应商前十强
  • 2025年低氮燃烧器厂家综合实力排行榜TOP10
  • 2025年低氮燃烧器制造企业top10:行业排名与深度解析
  • 封装电气性能新径
  • 在Docker中live-restore
  • 11月10日打卡
  • 从局部性原理到一致性模型:深入剖析缓存设计的核心权衡
  • 逆向基础--数据传输指令mov和xchg (10)
  • P8186-传递闭包
  • P3623 免费道路 - Kruskal
  • 幂塔问题-扩展欧拉函数
  • 手持贴标机生产源头厂家2025年市场洞察
  • 奶牛抗议-二维偏序优化
  • 4G摄像机国标GB28181接入EasyGBS突然不上线?双网卡智能切换惹的锅!
  • 详细介绍:热门编程语言的排名及开源贡献比例表格-截至2025年10月
  • SQLite 连接串说明
  • 完整教程:深度学习实战:从图像分类到自然语言处理的完整指南
  • 【完整源码+内容集+部署教程】 黄瓜叶片检测系统源码和数据集:改进yolo11-RVB
  • 国产化Word处理控件Spire.Doc教程:使用Java将RTF文件转换为PDF的全面教程
  • 2025年门卫室岗亭源头厂家综合实力榜单:形象岗亭/小区值班岗亭/钢结构吸烟亭源头厂家精选