网络资源模板--Android Studio 图书借阅App

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

网络资源模板--图书借阅App

二、项目测试环境

三、项目详情

首页

这段代码是一个 Android 应用的 `MainActivity` 类,功能简要总结如下:

1. **界面设置**:
   - 在 `onCreate` 方法中,设置活动的布局为 `activity_main.xml`。
   - 通过 `bindView` 方法初始化两个按钮:`btnUserEnter` 和 `btnAdminEnter`。

2. **按钮点击事件**:
   - 为 `btnUserEnter` 和 `btnAdminEnter` 设置点击监听器,点击任一按钮都会启动 `LoginActivity`。

3. **权限请求**:
   - 在 `requestPermissions` 方法中,使用 `XXPermissions` 库请求读写外部存储权限。
   - 如果权限被授予,调用 `DataUtils.init()` 进行初始化。
   - 如果权限被拒绝,弹出一个 Toast 提示用户。

这个活动的主要功能是提供用户和管理员进入登录界面的按钮,并在应用启动时请求所需的存储权限。

 private void initView() {btnUserEnter.setOnClickListener(v->{startActivity(new Intent(MainActivity.this, LoginActivity.class));});btnAdminEnter.setOnClickListener(v -> {startActivity(new Intent(MainActivity.this, LoginActivity.class));});}

登录注册页面

这段代码包含两个活动:`LoginActivity` 和 `RegisterActivity`,它们一起实现了用户登录和注册的功能。以下是它们的功能简要总结:

### `LoginActivity` 功能:
1. **用户界面初始化**:
   - 设置布局并初始化界面元素(用户名、密码输入框、登录按钮、记住我复选框和注册链接)。

2. **记住用户信息**:
   - 从 `CurrentUserUtils` 获取当前用户信息,并填充用户名和密码(如果选中“记住我”复选框)。

3. **登录功能**:
   - 用户点击登录按钮时,首先检查用户名和密码是否为“admin”。
   - 如果是,则跳转到 `BookManageActivity`。
   - 如果不是,则调用 `UserDB.login()` 方法进行登录,处理返回的结果。
   - 登录成功后,将用户信息存储并跳转到 `NavActivity`;否则,弹出错误消息。

4. **注册链接**:
   - 点击注册链接时,启动 `RegisterActivity` 并等待结果。

5. **处理注册结果**:
   - 如果注册成功,将注册的用户信息填充到输入框中。

### `RegisterActivity` 功能:
1. **用户界面初始化**:
   - 设置布局并初始化界面元素(用户名、密码输入框、再次输入密码按钮和返回按钮)。

2. **返回按钮**:
   - 点击返回按钮关闭当前活动。

3. **注册功能**:
   - 用户点击注册按钮时,获取输入的用户名和密码,并创建 `User` 对象。
   - 调用 `UserDB.register()` 方法进行注册,处理返回的结果。
   - 如果注册成功,将用户信息返回到 `LoginActivity` 并关闭当前活动;否则,弹出消息提示注册结果。

### 总结:
整体上,这段代码实现了用户的登录和注册功能,包括记住用户信息、处理注册和登录逻辑,以及相应的界面交互。用户可以在登录页面输入信息,若未注册可通过链接跳转到注册页面。注册完成后,信息会返回至登录页面以便快速登录。

  @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_REGISTER && resultCode == RESULT_OK) {if (data != null) {User user = (User) data.getSerializableExtra("user");etUsername.setText(user.getUsername());etPassword.setText(user.getPassword());}}}this.btn_register.setOnClickListener(v -> {String obj = RegisterActivity.this.etUsername.getText().toString();String obj2 = RegisterActivity.this.etPassword.getText().toString();String obj3 = RegisterActivity.this.etPasswordAgain.getText().toString();User user = new User();user.setUsername(obj);user.setPassword(obj2);BusinessResult<User> register = UserDB.register(user, obj3);Toast.makeText(RegisterActivity.this, register.getMessage(), Toast.LENGTH_SHORT).show();if (register.isSuccess()) {Intent intent = new Intent();intent.putExtra("user", user);RegisterActivity.this.setResult(-1, intent);RegisterActivity.this.finish();}});

图书管理页面

这段代码定义了 `BookManageActivity` 类,主要功能如下:

### 功能总结:
1. **界面设置**:
   - 在 `onCreate` 方法中,初始化活动的布局和界面元素,包括 RecyclerView(书籍管理列表)、添加书籍的文本视图和返回按钮。

2. **书籍管理**:
   - 使用 `BookManageAdapter` 来管理 RecyclerView 中的书籍数据。
   - 设置点击事件,允许用户查看书籍详情或编辑书籍信息。

3. **添加书籍**:
   - 点击添加书籍文本时,启动 `BookEditActivity` 以添加新书籍。

4. **返回功能**:
   - 点击返回图标时,结束当前活动并返回到上一个界面。

5. **刷新书籍列表**:
   - 在 `onResume` 方法中,调用 `BookDB.getAllBooks()` 更新书籍列表,确保显示最新数据。

总体而言,`BookManageActivity` 提供了书籍管理的基本界面和交互功能,用户可以查看、编辑书籍或添加新书籍。

  private void bindView() {this.rvBookManage = (RecyclerView) findViewById(R.id.rv_book_manage);this.tvAdd = (TextView) findViewById(R.id.tv_add);this.ivBack = (ImageView) findViewById(R.id.iv_back);}private void initView() {this.ivBack.setOnClickListener(view -> finish());this.tvAdd.setOnClickListener(view ->startActivity(new Intent(BookManageActivity.this, BookEditActivity.class)));BookManageAdapter bookManageAdapter = new BookManageAdapter();this.adapter = bookManageAdapter;bookManageAdapter.setOnItemClickListener(new BookManageAdapter.OnItemClickListener() {@Overridepublic void onItemDetailClick(int position, Book book) {Intent intent = new Intent(BookManageActivity.this, BookDetailActivity.class);intent.putExtra("book", book);startActivity(intent);}@Overridepublic void onItemEditClick(int position, Book book) {Intent intent = new Intent(BookManageActivity.this, BookEditActivity.class);intent.putExtra("book", book);startActivity(intent);}});this.rvBookManage.setAdapter(this.adapter);this.rvBookManage.setLayoutManager(new LinearLayoutManager(this));}

添加修改图书页面

这段代码实现了 `BookEditActivity` 类,主要用于编辑或添加书籍信息,功能如下:

### 功能总结:
1. **界面初始化**:
   - 在 `onCreate` 方法中,设置布局并初始化各个视图元素,包括返回按钮、书籍信息输入框、图片选择和提交按钮。

2. **数据处理**:
   - 从意图中获取书籍对象。如果存在,则填充书籍信息并显示编辑选项;否则,准备添加新书籍。

3. **用户交互**:
   - 用户可以通过点击返回按钮关闭活动。
   - 点击书籍图片或选择文本框可打开相册选择书籍封面。
   - 提交按钮根据是否编辑更新或添加书籍,使用 `BookDB` 进行数据库操作,并通过 Toast 显示操作结果。

4. **删除功能**:
   - 提供删除书籍的选项,调用数据库方法删除书籍并反馈结果。

5. **处理相册选择结果**:
   - 在 `onActivityResult` 中处理用户选择的图片路径,并更新书籍封面。

整体而言,`BookEditActivity` 提供了完整的书籍信息编辑和添加功能,允许用户更新现有书籍信息或添加新书籍,同时提供了删除书籍的选项。

 private void initView() {tvTitle.setText(isEdit ? "编辑图书" : "添加图书");ivBack.setOnClickListener(view -> finish());ivBookImg.setOnClickListener(view -> AlbumUtils.openAlbum(BookEditActivity.this));tvSelect.setOnClickListener(view -> AlbumUtils.openAlbum(BookEditActivity.this));btnSubmit.setOnClickListener(view -> {book.setName(etBookName.getText().toString());book.setAuthor(etBookAuthor.getText().toString());book.setDesc(etBookDesc.getText().toString());book.setTotal(Integer.parseInt(etBookTotal.getText().toString()));BusinessResult<Book> businessResult = isEdit ? BookDB.updateBook(book) : BookDB.addBook(book);Toast.makeText(BookEditActivity.this, businessResult.getMessage(), Toast.LENGTH_SHORT).show();if (businessResult.isSuccess()) {finish();}});tvDelete.setOnClickListener(view -> {BusinessResult<Void> deleteBook = BookDB.deleteBook(book.getId().intValue());Toast.makeText(BookEditActivity.this, deleteBook.getMessage(), Toast.LENGTH_SHORT).show();if (deleteBook.isSuccess()) {finish();}});}

图书详情页

这段代码实现了 `BookDetailActivity` 类,用于显示书籍详细信息,功能总结如下:

### 功能总结:
1. **界面设置**:
   - 在 `onCreate` 方法中,设置活动的布局并从意图中获取书籍对象。

2. **信息展示**:
   - 使用 Glide 加载书籍封面图片,并显示书名、作者、描述以及剩余数量和总数。

3. **返回功能**:
   - 设置返回按钮的点击事件,允许用户返回到前一个界面。

整体而言,`BookDetailActivity` 提供了简单明了的界面,展示了书籍的详细信息,确保用户能方便地查看书籍内容。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><FrameLayoutandroid:layout_width="fill_parent"android:layout_height="54.0dip"android:background="@color/main"><androidx.appcompat.widget.AppCompatImageViewandroid:id="@id/iv_back"android:layout_width="54.0dip"android:layout_height="54.0dip"android:gravity="center"android:padding="12.0dip"android:src="@drawable/ic_back"android:text="返回"android:textColor="@color/white" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="详情"android:textColor="@color/white"android:textSize="18.0sp"android:textStyle="bold" /></FrameLayout><androidx.core.widget.NestedScrollViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="16.0dip"android:orientation="vertical"><com.google.android.material.imageview.ShapeableImageViewandroid:id="@id/iv_book_img"android:layout_width="120.0dip"android:layout_height="wrap_content"android:adjustViewBounds="true"android:src="@drawable/book1"app:shapeAppearanceOverlay="@style/RoundedCorner" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@id/tv_book_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="16.0dip"android:ellipsize="end"android:gravity="start"android:maxLines="1"android:text="思辨力35讲:像辩手一样思考"android:textColor="@color/black"android:textSize="15.0sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@id/tv_book_detail"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@id/tv_book_num"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="剩余:6       总数:10"android:textColor="@color/main"android:textSize="10.0sp" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@id/tv_book_author"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="16.0dip"android:text="庞颖"android:textColor="#ffb0b0b0"android:textSize="12.0sp" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@id/tv_book_desc"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="bottom"android:text="本书是一套帮助你识破逻辑陷阱,迅速提升分析、表达问题的实用指南。"android:textColor="#ffb0b0b0"android:textSize="12.0sp" /></LinearLayout></androidx.core.widget.NestedScrollView>
</LinearLayout>

图书列表

借阅信息

四、完整的项目源码 

👇👇👇👇👇快捷获取方式👇👇👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145679.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构不再难懂:带你轻松搞定图

数据结构入门学习&#xff08;全是干货&#xff09;——图 1 图 1.1 什么是图 图是一种用于表示多对多关系的数学模型。它由一组顶点和一组边构成&#xff0c;用于描述事物之间的复杂关联。 顶点&#xff1a;通常用 V (Vertex) 表示&#xff0c;代表事物或对象。边&#xf…

2024华为杯研赛E题保姆级教程思路分析

E题题目&#xff1a;高速公路应急车道紧急启用模型 今年的E题设计到图像/视频处理&#xff0c;实际上&#xff0c;E题的难度相对来说较低&#xff0c;大家不用畏惧视频的处理&#xff0c;被这个吓到。实际上&#xff0c;这个不难&#xff0c;解决了视频的处理问题&#xff0c;…

华为---代理ARP工作过程示例分析

目录 1. 示例场景 2. 基本配置 3. 配置代码 4. 测试验证 5. 抓包分析 5.1 在代理ARP环境下PC1和PC2通信分析 5.2 取消代理ARP环境下PC1和PC2通信分析 【1】取消R1路由器GE 0/0/1端口ARP代理 【2】取消R2路由器GE 0/0/1端口ARP代理 1. 示例场景 如上图所示&#xff0c;…

windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘

文章目录 问题解决方法 问题 今天在windows环境下配置MySQL主从同步&#xff0c;在修改my.ini文件后发现MySQL启动失败了 打开my.ini检查参数发现没有问题 [mysqld] #开启二进制日志&#xff0c;记录了所有更改数据库数据的SQL语句 log‐bin mysql‐bin #设置服务id&#x…

java重点学习-总结

十五 总结 https://kdocs.cn/l/crbMWc8xEZda &#xff08;总结全部的精华&#xff09; 1.面试准备 企业筛选简历规则简历编写注意事项(亮点)项目怎么找&#xff0c;学习到什么程度面试过程(表达结构、什么样的心态去找工作) 2.redis 缓存相关(缓存击穿、穿透、雪崩、缓存过期淘…

农业电商服务系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;会员管理&#xff0c;商家管理&#xff0c;商品分类管理&#xff0c;商品信息管理&#xff0c;农产品监督管理&#xff0c;助农信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页…

使用Renesas R7FA8D1BH (Cortex®-M85)实现多功能UI

目录 概述 1 系统框架介绍 1.1 模块功能介绍 1.2 UI页面功能 2 软件框架结构实现 2.1 软件框架图 2.1.1 应用层API 2.1.2 硬件驱动层 2.1.3 MCU底层驱动 2.2 软件流程图 4 软件功能实现 4.1 状态机功能核心代码 4.2 页面功能函数 4.3 源代码文件 5 功能测试 5.1…

AI字幕翻译器行业分析:前五大厂商占有大约29.5%的市场份额

AI 字幕翻译器正在彻底改变我们使用不同语言消费媒体的方式&#xff0c;使内容可以普遍访问。这些先进的技术利用机器学习和自然语言处理&#xff0c;将口语对话实时翻译成字幕。这一功能不仅打破了语言障碍&#xff0c;提升了观众的体验&#xff0c;而且还使内容创作者能够毫不…

火语言RPA流程组件介绍--获取关联元素

&#x1f6a9;【组件功能】&#xff1a;获取指定元素的父元素、子元素、相邻元素等关联信息 配置预览 配置说明 目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath&#xff0c;指定对应网页元素作为操作目标 关联…

Arthas jvm(查看当前JVM的信息)

文章目录 二、命令列表2.1 jvm相关命令2.1.3 jvm&#xff08;查看当前JVM的信息&#xff09; 二、命令列表 2.1 jvm相关命令 2.1.3 jvm&#xff08;查看当前JVM的信息&#xff09; 基础语法&#xff1a; jvm [arthas18139]$ jvmRUNTIME …

JUC 高并发编程的入门学习

课程内容概览 什么是 JUCLock 接口线程间通信集合的线程安全多线程锁Callable 接口JUC 三大辅助类: CountDownLatch CyclicBarrier Semaphore读写锁: ReentrantReadWriteLock阻塞队列ThreadPool 线程池Fork/Join 框架CompletableFuture 1 什么是 JUC 1.1 JUC 简介 在 Java …

小tips:MySQL中如何导出表中的数据(Navicat)

1.在Navicat中找出想要导出数据的表 2.将箭头放在目的表上&#xff0c;点击右键--->点击复制表--->点击结构和数据或者仅结构&#xff08;根据需求选择需要复制的内容&#xff09;

CertiK因发现Apple Vision Pro眼动追踪技术漏洞,第6次获苹果认可

​2024年9月20日&#xff0c;头部Web3.0安全机构CertiK自豪地宣布&#xff0c;CertiK的工程师因发现Apple Vision Pro MR&#xff08;混合现实&#xff09;头显设备中的关键漏洞而获得Apple公司认可&#xff0c;这已经是Apple公司第六次公开发布对CertiK的致谢&#xff0c;Cert…

JAVA自助高效安全无人台球茶室棋牌室系统小程序源码

​探索“自助高效安全无人台球茶室棋牌室系统”的奇妙之旅 &#x1f3b1;&#x1f375;&#x1f3b2; &#x1f50d; 初见惊艳&#xff1a;未来娱乐新体验 &#x1f50d; 走进这家无人值守的台球茶室棋牌室&#xff0c;第一感觉就像是穿越到了未来&#xff01;没有繁琐的前台登…

伊犁云计算22-1 ftp 配置

1 局域网搭建好 2 yum 编译好 开干 查看有没有安装vsftpd 加载iso 光盘

如何短期提高品牌声量?说几个有效策略

在如今竞争激烈的市场环境中&#xff0c;品牌声量成为了衡量一个品牌市场影响力的关键指标。一个强大的品牌声量不仅可以增加品牌的可见度&#xff0c;还能有效提升品牌的市场竞争力。但是&#xff0c;如何有效提升品牌声量&#xff0c;成为很多企业面临的挑战。首先我们要明确…

球形包围框-Bounding Sphere-原理-代码实现

定义&#xff1a;通过一个球体包围所有点云点&#xff0c;该球体的球心和半径由点云的分布决定&#xff0c;并且球体的半径尽可能小。优点&#xff1a;计算简单&#xff0c;通常用于快速粗略估计物体的范围。缺点&#xff1a;对于不规则形状的物体&#xff0c;包围不紧密&#…

VMware tools安装

1.安装VMware tools工具 2.将压缩文件拖到桌面再解压 3. 进入终端 4.输入sudo ./vmware-install.pl 5.等待即安装成功 6.可以选择自动调整大小 7.自行调试即可

Lucene 倒排索引原理详解:深入探讨相关算法设计

引言 随着互联网的快速发展&#xff0c;数据量呈现爆炸性的增长&#xff0c;如何从海量数据中快速准确地获取所需信息成为了一项挑战。全文搜索引擎的出现极大地解决了这个问题&#xff0c;而 Lucene 正是一款优秀的开源全文搜索引擎库。本文将深入探讨 Lucene 的核心技术之一…

为人机交互保持预见性丨基于G32A1445的T-BOX应用方案

T-BOX是一种集成了通信、计算和控制功能的车载信息处理终端&#xff0c;通过车辆与云端、移动网络等进行数据交互&#xff0c;用于车、人、外部环境的互联互通&#xff0c;支持车辆定位、车载通信、远程控制、故障诊断、数据传输、紧急呼叫等功能&#xff0c;帮助车辆实现更加智…