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

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

阅读指南

  • 序幕
  • 一、基础环境说明
    • 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.mzph.cn/web/34488.shtml

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

相关文章

Java25年还有更多的工作岗位适合二本学生就业吗?

Java作为一种广泛使用的编程语言。尽管技术领域不断发展和变化,Java依然在许多行业中占据重要地位。以下是一些原因,刚好我有一些资料,是我根据网友给的问题精心整理了一份「JAVA的资料从专业入门到高级教程」, 点个关注在评论区…

基于Java的软件测试管理系统【附源码】

毕业(设计)论文 题 目: 软件测试管理系统 学 号: 姓 名: 院 部: 专 业: 班 级: 指导教师: 职 称: 完成日期: 年 月 日 摘要 随着信息技术的不断…

[leetcode]insert-into-a-binary-search-tree

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:TreeNode* insertIntoBST(TreeNode* root, int val) {if (root nullptr) {return new TreeNode(val);}TreeNode* pos root;while (pos ! nullptr) {if (val < pos->val) {if (pos->left nullptr…

如何从0构建一款类jest工具

Jest工作原理 Jest 是一个流行的 JavaScript 测试框架&#xff0c;特别适用于 React 项目&#xff0c;但它也可以用来测试任何 JavaScript 代码。Jest 能够执行用 JavaScript 编写的测试文件的原因在于其设计和内部工作原理。下面是 Jest 的工作原理及其内部机制的详细解释&…

NetSuite Account Merge 科目合并功能分析

最近项目中&#xff0c;客户有提到过能否将不用的Account与新建的Account进行合并&#xff0c;即我们所说的Merge功能&#xff5e;可以&#xff0c;但是该功能有使用的限制&#xff0c;比如最直接的一点需要注意&#xff0c;不同类型的Account是不可以使用Merge功能的&#xff…

汽车软件开发者的必修课:ASPICE 4.0主要特点、优势及与之前版本的变化之处

ASPICE&#xff08;汽车SPICE&#xff09;4.0是专为汽车行业量身定制的过程评估模型&#xff0c;旨在确保软件和系统开发过程的质量和可靠性。它是更广泛的 ISO/IEC 330xx 系列标准的一部分&#xff0c;源自通用 SPICE&#xff08;软件流程改进和能力确定&#xff09;框架。 AS…

批归一化(Batch Normalization)和层归一化(Layer Normalization)的作用

在深度学习领域&#xff0c;归一化技术被广泛用于加速神经网络的训练速度并提高其稳定性。本文将介绍两种常见的归一化方法&#xff1a;批归一化&#xff08;Batch Normalization, BN&#xff09;和层归一化&#xff08;Layer Normalization, LN&#xff09;&#xff0c;并通过…

ATA-7025高压放大器的优势如何

高压放大器是一类在电子领域中具有重要作用的设备&#xff0c;其主要功能是将输入信号的电压放大到更高的水平。在许多应用中&#xff0c;高压放大器展现出独特的优势&#xff0c;下面将介绍高压放大器的优势以及它们在不同领域的应用。 高压放大器的优势 1.信号驱动能力强 高压…

ATA-3040C功率放大器的基本要求包括什么

功率放大器是电子设备中常用的一个组件&#xff0c;用于将输入信号增强到足够大的电平&#xff0c;以驱动负载而不失真。要设计一个高效和性能优越的功率放大器&#xff0c;需要考虑多个基本要求和设计考虑因素。下面安泰电子将介绍功率放大器的基本要求&#xff0c;以及如何满…

中兴光猫破解telnet配置命令汇总

中兴光猫telnet配置命令汇总 | LogDicthttps://www.logdict.com/archives/zhong-xing-guang-mao-telnetpei-zhi-ming-ling-hui-zong

【王道数据结构笔记】单链表的基本操作之指定结点的后插操作(代码分析)

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 【王道数据结构笔记】单链表的基本操作之指定结点的后插操作(代码分析) 引言一 代码二 分析总结…

【LeetCode:2741. 特别的排列 + 递归 + 记忆化搜索 + 动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

解决GPU 显存未能完全释放

一、 现象 算法同学反馈显存未能完全释放。 二、解决方法 一条命令搞定 注意&#xff1a;执行时注意不要误杀其他的python进程&#xff0c;需要确认好。 我的这条命令是将所有python进程都杀死了 ps -elf | grep python | awk {print $4} | xargs kill -s 9

使用AI技术实现语言练习

使用人工智能技术实现语言场景练习&#xff0c;可以有效地提高学习者的语言能力&#xff0c;包括口语、听力、阅读和写作。以下是一些常见的应用场景。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 口语练习 虚拟对话伙伴: 利用…

FullCalendar日历组件集成实战(16)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

Linux上使用 git 命令行

在 Github或者 gitee 注册账号 这个比较简单 , 参考着官网提示即可 . 需要进行邮箱校验.以下以创建Github为例。 创建项目 1. 登陆成功后 , 进入个人主页 , 点击下方的 create a new repository 按钮新建项目 2. 在创建好的项目页面中复制项目的链接 , 以备接下来进行下…

10分钟掌握Python缓存,效率提升1000%

全文速览 python的不同缓存组件的使用场景和使用样例cachetools的使用 项目背景 代码检查项目&#xff0c;需要存储每一步检查的中间结果&#xff0c;最终把结果汇总并写入文件中 在中间结果的存储中 可以使用context进行上下文的传递&#xff0c;但是整体对代码改动比较大…

Linux系统中文件权限详解

一、Linux文件权限设计 Linux系统中任何内容都可以用文件表示&#xff0c;其对文件设计了一套权限进行管理&#xff1b;文件权限共有11个字符&#xff0c;从左向右共分为5段&#xff08;每段的具体说明如下表Linux权限设计说明所示&#xff09;&#xff1a; Linux权限设计说明 …

揭秘:企业如何防盗版软件

在当前的数字化时代&#xff0c;软件盗版问题一直困扰着软件开发者和企业。为了维护软件的合法权益&#xff0c;保护创新成果&#xff0c;许多企业采取了各种技术手段来防止软件被非法复制和分发。其中&#xff0c;白名单机制作为一种有效的防盗版软件手段&#xff0c;被广泛采…

书酒共舞:品味文字之韵,沉醉酒香之境

在喧嚣的都市中&#xff0c;我们常常渴望找到一片宁静的角落&#xff0c;让心灵得到片刻的休憩。此刻&#xff0c;一杯雷盛红酒与一本心仪的书籍&#xff0c;便成了很好的伴侣&#xff0c;它们相互映衬&#xff0c;共同编织出一幅优雅的画卷&#xff0c;让我们在品味中感受文字…