基于Android Studio开发的安卓图书借阅管理系统

图书借阅管理系统

点击下载完整代码

一、项目概述

1.1 项目简介

本项目是一款基于 Android 平台的图书借阅管理应用,采用 Kotlin 语言开发,使用 SQLite 本地数据库存储,无需后端服务器即可独立运行。应用面向大学生群体,提供图书查询、借阅管理、个人中心、通知系统等完整功能。

1.2 开发环境

  • 开发语言: Kotlin
  • 开发工具: Android Studio
  • 最低SDK版本: API 24 (Android 7.0)
  • 目标SDK版本: API 36 (Android 16)
  • 编译SDK版本: API 36
  • 数据库: SQLite
  • UI框架: XML布局 + Material Design 3组件

1.3 技术架构

项目采用基础 MVC 架构,代码结构清晰,适合课程作业和学习参考:

  • Model(模型层): 定义数据实体类(Book、Student、BorrowRecord等)
  • View(视图层): XML布局文件和Activity界面
  • Controller(控制层): Activity处理业务逻辑,DAO处理数据访问

二、页面预览

三、功能模块详解

3.1 用户认证模块

  • 登录功能: 支持学号/账号和密码登录,验证通过后保存登录状态
  • 注册功能: 学生可填写学号、姓名、密码、院系等信息进行注册
  • 测试账号 :
    • 管理员: admin / 123456
    • 学生: 2021001 / 123456

3.2 图书查询模块

  • 首页展示: 展示热门推荐(横向滚动)和新书上架(纵向列表)
  • 分类浏览: 按图书分类(计算机、文学、历史、科幻等)筛选查看
  • 搜索功能: 支持按书名、作者、ISBN进行模糊搜索
  • 图书详情: 展示图书基本信息、库存状态、馆藏位置、评分评论等

3.3 借阅功能模块

  • 在线借阅: 选择图书后一键借阅,自动计算应还日期
  • 借阅记录: 查看当前借阅和历史借阅记录
  • 续借功能: 在借阅期内可申请续借,延长归还时间
  • 归还功能: 支持正常归还和逾期归还(自动计算罚金)
  • 逾期提醒: 自动检测逾期图书,计算罚金金额

3.4 个人中心模块

  • 个人信息: 展示姓名、学号、院系、专业等基本信息
  • 借阅证管理: 显示借阅证状态、有效期、借阅额度
  • 我的收藏: 管理收藏的图书列表
  • 阅读笔记: 记录阅读心得,支持添加和删除
  • 阅读计划: 制定阅读目标和进度追踪
  • 借阅统计: 统计累计借阅、当前借阅、逾期次数等数据

3.5 通知系统模块

  • 借书通知: 借阅成功后的系统通知
  • 到期提醒: 图书即将到期或已逾期的提醒通知
  • 预约通知: 预约图书到馆通知
  • 系统消息: 其他系统公告和消息
  • 消息管理: 支持标记已读、清空通知

3.6 管理功能模块(管理员专属)

  • 数据统计: 展示图书总数、用户总数、借阅总数、当前借阅数
  • 图书管理: 查看和管理所有图书信息
  • 用户管理: 查看和管理注册用户
  • 借阅管理: 查看和管理所有借阅记录
  • 规则设置: 配置借阅天数、续借次数、罚金金额等参数

四、数据库设计

4.1 数据库表结构

表名 说明 主要字段
books 图书表 id, title, author, isbn, category, publisher, quantity, rating
students 学生/用户表 id, student_id, name, password, department, card_status
borrow_records 借阅记录表 id, book_id, student_id, borrow_date, due_date, status
book_reviews 图书评论表 id, book_id, student_id, rating, content
favorites 收藏表 id, book_id, student_id
reading_notes 阅读笔记表 id, book_id, student_id, title, content, page_number
notifications 通知表 id, student_id, title, content, type, is_read
borrow_rules 借阅规则表 id, max_borrow_days, max_renew_times, fine_per_day
reading_plans 阅读计划表 id, student_id, plan_title, target_pages, current_pages

4.2 初始数据

数据库创建时会自动插入以下演示数据:

  • 管理员账号: admin / 123456
  • 学生账号: 2021001 / 123456
  • 示例图书: 10本涵盖计算机、文学、历史、科幻等分类的图书
  • 默认规则: 最大借阅30天,可续借2次,每次15天,罚金0.5元/天

五、核心代码解释

5.1 数据库帮助类 (DatabaseHelper)

kotlin 复制代码
// 采用单例模式,确保全局只有一个数据库实例
companion object {
    @Volatile
    private var instance: DatabaseHelper? = null
    
    fun getInstance(context: Context): DatabaseHelper {
        return instance ?: synchronized(this) {
            instance ?: DatabaseHelper(context.applicationContext).also { instance = it }
        }
    }
}

5.2 数据访问对象 (DAO) 模式

每个实体对应一个DAO类,封装所有数据库操作:

kotlin 复制代码
class BookDao(context: Context) {
    private val dbHelper: DatabaseHelper = DatabaseHelper.getInstance(context)
    
    fun insertBook(book: Book): Long { ... }
    fun getBookById(bookId: Long): Book? { ... }
    fun searchBooks(keyword: String): List<Book> { ... }
}

5.3 登录状态管理 (SharedPrefsUtil)

使用SharedPreferences保存用户登录状态,避免重复登录:

kotlin 复制代码
fun saveLoginState(userId: Long, studentId: String, userName: String, isAdmin: Boolean) {
    prefs.edit().apply {
        putBoolean(KEY_IS_LOGGED_IN, true)
        putLong(KEY_CURRENT_USER_ID, userId)
        // ...
        apply()
    }
}

5.4 借阅业务逻辑

kotlin 复制代码
// 1. 检查借阅证状态和借阅上限
// 2. 检查图书库存
// 3. 创建借阅记录
// 4. 更新图书库存(减1)
// 5. 更新用户借阅数量(加1)
// 6. 发送借阅成功通知

六、运行说明

6.1 导入项目

  1. 打开 Android Studio
  2. 选择 "Open an existing Android Studio project"
  3. 选择项目根目录 code 文件夹
  4. 等待 Gradle 同步完成

6.2 运行应用

  1. 连接 Android 设备或启动模拟器(API 24+)
  2. 点击工具栏的 "Run" 按钮(绿色三角形)
  3. 等待应用安装并启动

6.3 首次使用

  1. 在登录页面输入测试账号:
    • 管理员: admin / 123456
    • 学生: 2021001 / 123456
  2. 或点击 "注册账号" 创建新用户
  3. 登录后进入主页面,即可使用全部功能

注意事项

  1. 纯本地运行: 本应用使用 SQLite 本地数据库,所有数据存储在设备本地,卸载应用后数据会丢失
  2. 初始数据: 首次安装会自动插入演示数据,方便测试体验
  3. 权限要求: 无需特殊权限,基础功能即可正常使用
  4. 兼容性: 支持 Android 7.0 (API 24) 及以上版本

点击下载完整代码

相关推荐
技术小结-李爽2 小时前
【工具】Maven的使用
java·maven
sou_time2 小时前
从 0 到 商用:AI Agent x SKILL x MCP 全栈实战教程:L2 高等篇:MCP 协议 + Spring AI + Agent 编排
java·人工智能·spring
冷小鱼2 小时前
高级研发编码习惯:从规范到艺术,再到AI+时代的人机协同
java·开发语言·python·编码习惯
齐 飞2 小时前
JDK21虚拟线程
java·后端
小马爱打代码2 小时前
Java 并发 Bug 深度分析与实战
java
极客先躯2 小时前
高级java每日一道面试题-2026年02月09日-实战篇[Docker]-Docker 容器有哪些安全风险?如何缓解?
java·运维·网络·安全·docker·容器
_Aaron___2 小时前
MyBatis 动态排序别乱用 ${}:ORDER BY 的安全写法
java·spring·mybatis
摇滚侠2 小时前
SpringMVC 入门到实战 HttpMessageConverter 65-74
java·后端·spring·intellij-idea
逢君学术论文AI写作2 小时前
Java第24课:会话技术CookieSession
java·开发语言