【项目实战】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/36592.shtml

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

相关文章

钡铼BL104智慧环保多个485采集转MQTT无线传输

PLC物联网关BL104是一款专为工业环境设计的先进协议转换网关,其集成了钡铼智能技术和环保多个485采集转MQTT无线传输功能,为工业控制系统提供了高效的数据采集、传输和管理解决方案。 技术规格与功能特点 PLC物联网关BL104采用钡铼智能技术&#xff0c…

一招教你用python代码给朋友写一个爱心代码

有人问我马上要跟女朋友一周年了,能不能用代码给他写一个爱心代码呢?那算你问对人了,来上才艺 可以使用Python的turtle模块来绘制一个爱心形状。下面是一个简单的示例代码,我将详细解释每一步: import turtle # 创建一…

回溯法基本思想-01背包、N皇后回溯法图解

基本思想: ​ 回溯法是一种系统地搜索问题解空间的算法,常用于解决组合优化和约束满足问题。其核心思想是利用深度优先搜索逐步构建可能的解,同时在搜索过程中进行剪枝操作,以排除那些无法满足问题约束或不能产生最优解的分支&am…

js修改scss变量

style.scss $color : var(--color,#ccc); // 默认值 #ccc .color{background: $color; } 定义了一个scss变量($color),用普通的css变量(--color)给他赋值,这里需要一个默认值,此时css变量(--co…

数据结构复习指南

数据结构复习指南 本文中列举了数据结构期末考试可能存在的考点 绪论 数据的基本单位 数据元素是数据的基本单位 数据项 数据项是组成数据的、有独立含义的、不可分割的最小单位。 数据对象 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结…

如何借助ai(文心一言)获取tushare的数据

1. 准备工作 确保已安装python ,安装Tushare库 和文心一言的地址(文心一言): 注册Tushare账号并获取Token:在Tushare官方网站注册账号,并获取个人Token。如下 tushare地址:(点击即…

【高级篇】InnoDB引擎深入:核心机制与实战优化(十五)

引言 在探索了MySQL集群与分布式技术之后,我们进入了数据库引擎的核心地带——InnoDB。作为MySQL的默认存储引擎,InnoDB凭借其对事务的支持、行级锁定、高效的恢复机制以及复杂的内存管理,成为众多应用场景的首选。本章,我们将深入InnoDB的内部机制,透彻理解锁管理、事务…

NeRF从入门到放弃6:两种OpenCV去畸变模型

针孔相机和鱼眼相机的去畸变模型是不一样的。 针孔相机的畸变参数有12个,k1~k6是径向畸变参数,p1 p2是切向畸变,s1s4;而鱼眼相机是等距模型,畸变参数只有4个k1k4。 针孔相机 畸变分为径向畸变和切向畸变。 把相机平…

【高考志愿】集成电路科学与工程

目录 一、专业概述 二、课程设置 三、就业前景 四、适合人群 五、院校推荐 六、集成电路科学与工程专业排名 一、专业概述 集成电路科学与工程,这一新兴且引人注目的交叉学科,正在逐渐崭露头角。它集合了电子工程、计算机科学、材料科学等多个领域的…

【Cpolar】如何实现外部网络对内部网络服务的访问

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、什么是Cpolar?三、如何安装Cpolar?3.1 Mac系统安装 四、最后 开篇说…

ChatGPT之母:AI自动化将取代人类,创意性工作或将消失

目录 01 AI取代创意性工作的担忧 1.1 CTO说了啥 02 AI已开始大范围取代人类 01 AI取代创意性工作的担忧 几天前的采访中,OpenAI的CTO直言,AI可能会扼杀一些本来不应该存在的创意性工作。 近来一篇报道更是印证了这一观点。国外科技媒体的老板Miller用…

! Warning: `flutter` on your path resolves to

目录 项目场景: 问题描述 原因分析: 解决方案: 1. 检查并更新.bash_profile或.zshrc文件 2.添加Flutter路径到环境变量 3. 加载配置文件 4.验证Flutter路径 5.重新启动终端 项目场景: 今天重新安装了AndroidStudio,并配置…

北京市大兴区餐饮行业协会成立暨职业技能竞赛总结大会成功举办

2024年6月27日下午,北京市大兴区营商服务中心B1层报告厅迎来了北京市大兴区餐饮行业协会成立仪式暨2024年北京市大兴区餐饮行业职工职业技能竞赛总结大会。此次活动不仅标志着大兴区餐饮行业协会的正式成立,也对在2024年大兴区餐饮行业职工职业技能竞赛中…

创新实训(十三) 项目开发——实现用户终止对话功能

思路分析: 如何实现用户终止AI正在进行的回答? 分析实现思路如下: 首先是在用户点击发送后,切换终止对话,点击后大模型终止对话,停止sse,不再接收后端的消息。同时因为对话记录存入数据库是后…

2小时动手学习扩散模型(pytorch版)【入门版】【代码讲解】

2小时动手学习扩散模型(pytorch版) 课程地址 2小时动手学习扩散模型(pytorch版) 课程目标 给零基础同学快速了解扩散模型的核心模块,有个整体框架的理解。知道扩散模型的改进和设计的核心模块。 课程特色&#xf…

基于VMware的linux操作系统安装(附安装包)

目录 一、linux操作系统下载链接 二、开始导入镜像源 注:若是还没安装VMware请转到高效实现虚拟机(VMware)安装教程(附安装包)-CSDN博客 一、linux操作系统下载链接 1.官网链接下载 ubuntu:ubuntu官网…

港湾周评|胖东来为什么是胖东来?蜜雪冰城为什么差之千里?

《港湾商业观察》李镭 似乎每一次胖东来的热搜,都堪称为教科书般化不利为有利,变坏事为好事。 6月27日凌晨,“胖东来商贸集团”官方公众号发布《关于新乡胖东来餐饮商户“擀面皮加工场所卫生环境差”的调查报告》,对于帮助其发现…

【C++ | 类型转换】转换构造函数、类型转换运算符 详解及例子源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 本文未经允许…

git 代码回退 soft hard区别

一:只是本地修改提交到本地版本库仓库,代码如何回退 git hard 回退 会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到没有修改前的状态 git soft 回退 不会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到当时修改时的状…

Linux /proc目录总结

1、概念 在Linux系统中,/proc目录是一个特殊的文件系统,通常被称为"proc文件系统"或"procfs"。这个文件系统以文件系统的方式为内核与进程之间的通信提供了一个接口。/proc目录中的文件大多数都提供了关于系统状态的信息&#xff0…