【Android】android studio简单实现图书馆借阅管理系统

news2024/10/9 2:22:59

希望文章能给到你启发和灵感~
点赞+收藏+关注 支持一下吧~

阅读指南

  • 序幕
  • 一、基础环境说明
    • 1.1 硬件环境
    • 1.2 软件环境
  • 二、整体设计
    • 2.1 数据库逻辑处理:
    • 2.2 登录/注册模块
    • 2.3 功能界面初始化:
    • 2.4 图书管理模块
    • 2.5 图书租借服务
    • 2.6 读者服务
    • 2.7 系统管理模块
    • 2.8 关于通用配置
  • 三、展示优化调整
  • 四、总结
    • 4.1 XML文件实现布局
    • 4.2 编程代码实现布局
    • 4.3 其他方式
  • 五、最后

序幕

该项目基于android语言开发,主要实现一个简单的图书馆管理系统,包含登录,注册,租借和归还,以及基础的信息的CURD功能;存储数据采用的是sqlite数据库,和SharedPreferences轻量级存储;

一、基础环境说明

考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境;

1.1 硬件环境

MacOS Monterey 版本 12.6.8 Apple M1

1.2 软件环境

开发工具:Android Studio 2021.2.1
编译环境:Java 1.8.0_171, Android SDK 的版本为 32
数据存储:sqliteSharedPreferences

选择好自己测试使用的机型,我这里测试主要分了两种,一种是在PC开发上测试的,一个是真机上跑的机型;如果需要Iphone机型,需要另外使用模拟器软件和响应的IPhone的模拟器镜像;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:机型的不同,在真机效果的布局和显示上会有偏差,注意调整样式达到最适宜的效果即可;

二、整体设计

首先对接的需求是一个图书管理借阅系统,主要分为五个模块;实现上还是以CRUD为主,主要耗时的是在页面设计和布局调试上;

在这里插入图片描述

2.1 数据库逻辑处理:

首先是数据库,这里定义了一个数据库工具类,继承SQLiteOpenHelper,实现sqlite的功能,onCreate方法只会执行一次创建。包括一些数据库的相关操作也进行了封装;语句上也是基础的DDL语句;唯一注意的就是语句上,因为基于sqlite,所以写法略微会和平时我们常用的mysql,或者oracle有点不同;
在这里插入图片描述
数据处理结果上,常规的使用游标Cursor来接收结果
在这里插入图片描述

2.2 登录/注册模块

关键代码

这里定义我们登录页的组件页面Activity(AppCompatActivity),初始化了按钮,输入框等组件信息;
注:此处使用AppCompatActivity是基于AndroidX,即 androidx.appcompat.app.AppCompatActivity 而不是旧的 android.support.v7.app.AppCompatActivity。这点需要注意;
(AndroidX 是 Android 支持库的更新版本,它提供了更好的性能和更新的功能)
在这里插入图片描述
朋友需求中比如需要一个“记住我”的功能,因为这里数据量不大,我们只要存一下登录的用户信息即可,因此这里考虑使用了SharedPreferences来存储;需要时通过getSharePreferences来获取数据即可;
在这里插入图片描述
这里将所有该页面需要的特定视图查找都封装到了一起;并做了按钮的监听事件设置;
在这里插入图片描述
验证账号和密码,并根据返回结果将登录信息存储到SharedPreferences;
在这里插入图片描述
效果图:
在这里插入图片描述在这里插入图片描述

2.3 功能界面初始化:

在这里插入图片描述
在这里插入图片描述

2.4 图书管理模块

点击图书管理,可进行图书的添加;一开始使用的listview来展示,后续进行了优化;
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.5 图书租借服务

根据展示的图书列表,进行书籍的借阅和归还操作;

在这里插入图片描述

2.6 读者服务

读者可以查看自己的借阅历史记录;
在这里插入图片描述

2.7 系统管理模块

查看当前的系统用户信息列表;支持修改用户信息;
在这里插入图片描述在这里插入图片描述
布局设计上,初期大体结构都是以RelativeLayout,和LinearLayout结合使用;后续将listview 件进行了调整替换为了RecyclerView;加入FrameLayout布局以及swiperefreshlayout来实现;

2.8 关于通用配置

类似Java开发中的propertities文件一样,Android也有自己的配置常量文件,例如我们这里的colors.xmlstrings.xml; 这里我们根据自己需要可以配置许多常量数据;
在这里插入图片描述
在这里插入图片描述
获取数据方式也比较简单:
在这里插入图片描述
在这里插入图片描述

三、展示优化调整

初期只是做了基础布局和功能实现,老样子,实现完基础功能后,我们再对基础的样式做个美化和点缀;
最终效果图:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
优化后,自己又加了一些下拉刷新效果,以及数据更新后的即时刷新回显的能力;把原来列表展示的ListView换成了RecyclerView,个人感觉原生的写法没有小程序开发中来的方便,美观上也会体现差一些,不过作为基础学习和组件的熟悉还是很不错的;

四、总结

这个需求项目算是Android入门级的应用吧,不难看出我们实现页面布局的展示方式主要用到了两种:

4.1 XML文件实现布局

这是Android开发中定义用户界面布局的主要方式,博主这里使用的是Android Studio可视化工具来编辑布局;他偏向于做静态页面的设计
在这里插入图片描述

在Java或Kotlin代码中,通过setContentView(R.layout.your_layout_file)方法将XML布局文件与Activity或Fragment关联起来;
在这里插入图片描述
在这里插入图片描述

XML布局文件具有结构清晰、易于阅读和维护的优点,并且支持各种UI组件和布局容器的组合使用

4.2 编程代码实现布局

处了XML文件,我们还可以使用代码编程来实现动态的界面变化,如设置一些组件的显示与隐藏,同时也能设置各种样式;
在这里插入图片描述

4.3 其他方式

感兴趣的也可以研究一下第三方库或者框架,以及使用WebView加载HTML可能会有更好的效果展现

五、最后

作为安卓项目单子的小尝试,满足了朋友的基本需求,自己做了后续的小优化和调整,至少体验上提高了不少,开发完才感觉现在的uniapp,和Vue啥的还是挺香的,功能实现的同时还是美化效果;

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

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

相关文章

[物联网专题] - 螺钉式接线端子的选择和辨识

工业设备上大量使用各式各样的端子来连接外部设备和电缆电线,其中用得最多的就是标准的螺钉式端子,其外形如下: 标准端子一般是2位(2个接线端子),端子与端子之间可以级联,组成任意数量的位数。…

vue项目无后台版本打包上传到服务器

打包项目 也可以在文件目录下npm run build 生成dist文件夹 将dist文件夹里的所有文件拷贝到站点的根目录,这里使用宝塔面板进行操作 前提你得先创建站点,域名绑定等操作

项目菜单配置

stores/index.js import {createStore } from "vuex"; //计算高度 let height window.innerHeight;//计算分辨率 let width window.innerWidth;let activeIndex localStorage.getItem("activeIndex"); if (activeIndex null || activeIndex "&q…

制图工具(14)导出图层字段属性信息表

在制图工具(13)地理数据库初始化工具中我们提到,有一个参数为:“输入Excel表”,并要求表格中的图层字段属性项需要按工具的帮助文档中的示例进行组织… 如下图: 此外,总有那个一个特别的需求&am…

【单片机毕业设计选题24028】-基于STM32的大棚温湿度采集系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值 自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补 光,水位过低后自动开启水泵…

Android 界面库 (二) 之 Data binding 详细介绍

1. 简介 回顾我们在前面文章《Android 界面库 (一) 之 View binding 简单使用》中学习的 View Binding,它旨在简化 View 与代码之间的绑定过程。它会在编译时期为每个 XML 布局文件生成相应的绑定类(Binding class),该类里包含了布局文件每个有 ID 的 Vi…

L59---101.对称二叉树(广搜)---Java版

1.题目描述 2.思路和知识点 (1)根节点为空: 如果根节点为空,树是对称的。 (2)递归检查: isMirror 方法递归检查两个子树是否是镜像对称的。 (3)辅助函数 isMirror: 1)如果两个节点都为空,它们是镜像对称的…

php composer 报错

引用文章: Composer设置国内镜像_composer 国内源-CSDN博客 php composer.phar require --prefer-dist yiidoc/yii2-redactor "*" A connection timeout was encountered. If you intend to run Composer without connecting to the internet, run the …

day49---数据结构与算法(四)

三. 基础算法 3.1 查找概述 查找算法是一种在数据集中寻找特定数据项的方法。通常,数据集是在计算机程序中存储的,例如数组、链表或散列表。在编写程序时,查找算法是非常重要的,它有助于快速找到所需的数据。在本文中&#xff0…

Linux系统安装Lua语言及Lua外部库

安装Lua Lua语言是一种轻量级、高效且可扩展的脚本语言,具有简洁易学的语法和占用资源少的特点。它支持动态类型,提供了丰富的表达式和运算符,同时具备自动垃圾回收机制和跨平台性。Lua语言易于嵌入到其他应用程序中,并可与其他语…

高性能并行计算华为云实验五:PageRank算法实验

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建PageRank源码 3.2 makefile的创建和编译 3.3 主机配置文件建立与运行监测 四、实验结果与分析 4.1 采用默认的节点数量及迭代次数进行测试 4.2 分析并行化下节点数量与耗时的变化规律 4.3 分析迭代次数与耗时的变…

2024广东省职业技能大赛云计算赛项实战——集群部署GitLab Agent

集群部署GitLab Agent 前言 题目如下: 部署GitLab Agent 将Kubernetes集群添加到demo-2048项目中,并命名为kubernetes-agent,项目命名空间选择gitlab-ci。 说是部署GitLab Agent,但据我了解,Agent就是Runner,看题目…

5.How Fast Should You Be When Learning?(你应该用多快的速度学习? (一))

Normally when I talk about learing quickly, I’m using speed as a synonym for efficiency.Use more effective methods and you’ll learn more in less time.All else being equal, that means you’re learing faster. 通常我在谈到快速学习时,是把“速度&qu…

【神经网络】神经元的基本结构和训练过程

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 神经元的基本结构和训练过程 …

Redis数据库(三):Redis数据库三种特殊数据类型

除了上一篇博客讲的五种基本数据类型外,Redis还有三种特殊的数据类型,它们有着不同的应用场景,这一篇博客,我们来学习它。 目录 一、geospatial 地理空间 1.1 添加地理位置 1.2 返回给定名称的纬度和经度 1.3 返回两个给定位…

小柴冲刺嵌入式系统设计师系列总目录

工作两年 逐渐意识到基础知识的重要性✌️ 意识到掌握了这个证书好像就已经掌握了80%工作中用到的知识了。剩下的就在工作的实战中学习 来和小柴一起冲刺软考吧!加油😜 【小柴冲刺软考中级嵌入式系统设计师系列】总目录 前言 专栏目标:冲刺…

ros2_control 使用教程

系列文章目录 前言 0.1 欢迎阅读 ros2_control 文档! ros2_control 是一个使用(ROS 2)对机器人进行(实时)控制的框架。其软件包是对 ROS(机器人操作系统)中使用的 ros_control 软件包的重写。r…

NetSuite CSV导入类型与记录类型梳理

最近有用户问到我们的一个问题是,哪些数据可以使用CSV导入,哪些数据不能使用CSV导入,干脆咱们就整理出来可使用CSV导入功能的类型和记录类型,供大家直接参考~ 但是有一些内容或多或少由于每个企业的环境不一样而有所不…

jenkins环境搭建--关于jenkins在Ubuntu下的安装篇(一)

在ubuntu下使用命令进行下载安装包: 关于jenkins的安装有多种,可以借助docker容器进行安装,也可以通过传统方法手动一步步的进行安装,以下介绍手动一步步的安装方法,后续我们将解释关于jenkins的相关配置以及实战使用…

mongodb 查询语句学习笔记

基础查询 正则查询 {status: A,$or: [{ qty: { $lt: 30 } }, { item: { $regex: ^p } }] }AND 查询 { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" }OR 查询 { $or: [ { status: "A" }, { qty: { $lt: 30 } …