Android Studio实现图书馆订座系统

这篇具有很好参考价值的文章主要介绍了Android Studio实现图书馆订座系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目背景

在校园生活中,图书馆是很多人选择的学习圣地,这里不仅充满书香气息,而且还十分静谧。这样的学习环境,必然会很抢手,导致很多学生早早就来图书馆占座,渐渐地因为一直占不到座的同学就失去了学习的动力。

针对这样的实际问题,我们设计了一款图书馆订座系统。主要有四大功能模块,包括预订座位、查看座位、个人信息和我的步数。预订座位可以选3层楼,每层楼座位表不同,每位学生同一时间只能预订一个座位;查看座位的楼层和座位号,如果离开图书馆了,可以退订座位;在个人信息中可以点击编辑进入编辑模式,保存进入查看模式;最后我的步数可以进行计步,还有每日名言警句。整体功能很完善,界面设计美观。

二、需求分析

订座系统满足以下所有的要求:

  1. 项目主题中要体现解决现实中的某种实际问题
  2. 项目app不能是单机版
  3. UI设计要求简单美观、实用性强
  4. 项目至少包含4个功能模块,功能模块必须与题目相关
  5. 使用技术的要求:
a.网络通信(socket或http) b.数据库 c.传感器 d.多线程

三、开发环境

打开Android Studio,Help——>About,只要你的AS是从官网下载的都可以运行。比如小蜜蜂版本就是2021.1.1,这种日期形式的都完全OK。

Android Studio实现图书馆订座系统

四、详细设计

1、主界面

这里最上面是一个ViewPager,用来显示轮播图,下面就是四个设置了bg的按钮,在预定座位下面是一个RadioGroup,包含3个单选按钮。

Android Studio实现图书馆订座系统

这里实现轮播图的主函数initPager(),声明了图片和小点列表并初始化。对于绑定的ImageView,我们依次设置图片数组中的图片,设置它的ScaleType为FIT_XY,进行平铺图片。接着设置图片view的宽高,然后将这张图片放入ivList,小圆点也是同样的方式, pointLayout.addView(piv);将小圆点添加到布局当中。这样的数据源就添加好了,实例化个适配器,然后ViewPager加载适配器即可。和列表显示的原理很像。

private void initPager() {
        ivList = new ArrayList<>();
        pointList = new ArrayList<>();
        for (int i = 0; i < imgIds.length; i++) {
            ImageView iv = new ImageView(this);
            iv.setImageResource(imgIds[i]);
            iv.setScaleType(ImageView.ScaleType.FIT_XY);
            // 设置图片view的宽高
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
            iv.setLayoutParams(lp);
            // 将图片view加载到集合中
            ivList.add(iv);
            // 创建图片对应的指示器小圆点
            ImageView piv = new ImageView(this);
            piv.setImageResource(R.drawable.point_normal);
            LinearLayout.LayoutParams plp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            plp.setMargins(20, 0, 0, 0);
            piv.setLayoutParams(plp);
            // 将小圆点添加到布局当中
            pointLayout.addView(piv);
            // 为了方便操作,将小圆点加入统一管理的集合
            pointList.add(piv);
        }
        pointList.get(0).setImageResource(R.drawable.point_focus);
        pagerAdapter = new PagerAdapter(this, ivList);
        libraryVp.setAdapter(pagerAdapter);
    }

2、 预定座位

在座位表设置这里,我构思了很长时间,到底使用什么控件来表示座位最好?TextView、Button还是RadioButton,思来想去最好决定还是RadioButton。那么问题又来了,RadioGroup是继承LinearLayout布局的,只能水平和垂直,所以导致了每一行都能选择一个单选按钮,这样就和每位学生选一个座位矛盾了,如何解决?

根据之前在力扣刷题的经验,这里我们需要对每一行控件进行设置,当选中其中某一行的单选按钮时,取消其他行的状态,这样实现虽然很繁琐,但是很有效,主要是由于RadioGroup底层是LinearLayout,其中包含的RadioButton要么全水平要么全垂直,不能自定义排列方式。

Android Studio实现图书馆订座系统

根据数据库中记录的状态,设置所有单选按钮的状态。

        // 遍历所有单选按钮
        for (int i = 0; i < radioArray.length; i++) {
            int id = radioArray[i].getId();
            boolean ordered = false;
            // 遍历已选中的单选列表
            for (int j = 0; j < seatList.size(); j++) {
                if (seatList.get(j).getId() == id) {
                    radioArray[i].setBackgroundResource(R.drawable.bg_seats_ordered);
                    radioArray[i].setEnabled(false);
                    ordered = true;
                    break;
                }
            }
            // 退订座位后恢复可选
            if (!ordered && !radioArray[i].isEnabled()) {
                    radioArray[i].setEnabled(true);
                    radioArray[i].setBackgroundResource(R.drawable.bg_seats);
            }
        }

单选按钮的监听器逻辑,梦回当年的力扣刷题。

        // 每一组的监听器
        radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                // 清除其他组的选择
                for (int k = 0; k < radioGroups.length; k++) {
                    if (k == 0) continue;
                    if (radioGroups[k].getCheckedRadioButtonId() != -1) {
                        radioGroups[k].clearCheck();
                    }
                }
                // 获取seat对象
                seat = new Seat(i, account);
            }
        });

3、 查看座位

这里可以看到你的座位信息,如果没有订座则默认显示“暂无信息”。

Android Studio实现图书馆订座系统
这里的java文件实在太简单了,没必要讲了,提一下用到的数据库方法,退订的逻辑就是先找到它的楼层,然后在对应的楼层表中删除这个座位信息。

    // 退订
    public void cancelFloor(Seat seat) {
        String table[] = new String[]{"First", "Second", "Third"};
        int index = getFloor(seat);
        sqLiteDatabase.delete(table[index - 1], "account = ?", new String[] {seat.getAccount()});
    }

4、个人信息

这里图标和TextView的背景的设置是最花时间的,布局倒非常简单。

Android Studio实现图书馆订座系统

定义两个方法,进行模式切换,就是利用enable这个属性。

    // 编辑模式,可以编辑
    private void enableEditor() {
        etName.setEnabled(true);
        etAge.setEnabled(true);
        etPhone.setEnabled(true);
        etCollege.setEnabled(true);
        btnSave.setVisibility(View.VISIBLE);
        btnUpdate.setVisibility(View.INVISIBLE);
    }

5、我的步数

这里使用了android传感器技术和多线程,首先看下布局,虽然简单但是设计上还是额外花了1个多小时,反复调整样式。最上面是名言警句,调用的天行api接口,然后下面是步数显示。

Android Studio实现图书馆订座系统

这里我们使用的是加速度传感器,通过检测加速度变化的峰值来判断我们移动,从而记录步数,我们手机会有很多传感器,比如:温度传感器、距离传感器、角速度传感器、重力传感器等。下面是传感器的使用模板:

 sManager = (SensorManager) getSystemService(SENSOR_SERVICE);
 mSensorAccelerometer = sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
 sManager.registerListener(this, mSensorAccelerometer, SensorManager.SENSOR_DELAY_UI);

我们创建client实例,然后创建一个request实例,封装了url请求地址,使用newCall让客户端向服务器发送http请求,并且自动放入子进程中进行请求。这样,我们在onResponse中得到服务器返回的具体内容,然后解析数据,在UI线程中更新数据。

public class HttpUtil {
    public static void sendOkHttpRequest(String address, okhttp3.Callback callback) {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(address)
                .build();
        client.newCall(request).enqueue(callback);
    }
}

我们对获取的数据进行json解析,就像天气预报、星座配对一样,json数据其实就分为数组和对象,而且java帮我们封装的非常好,使用GSON来处理非常简单方便。

        // 使用gson解析数据
        Aphorism aphorism = new Gson().fromJson(result, Aphorism.class);
        Aphorism.NewslistDTO newslistDTO = aphorism.getNewslist().get(0);
        String saying = newslistDTO.getSaying();
        String transl = newslistDTO.getTransl();
        String source = newslistDTO.getSource();

6、数据库

数据库名称为library.db,一共有五张表,每张表的属性主要是根据Bean实体类进行设置。

    // 创建用户表User
    public static final String CREATE_USER = "create table User ("
            + "account text primary key,"
            + "password text)";

    // 创建一楼已预定座位表
    public static final String CREATE_FIRST = "create table First ("
            + "id integer primary key,"
            + "account text)";

    // 创建二楼已预定座位表
    public static final String CREATE_SECOND = "create table Second ("
            + "id integer primary key,"
            + "account text)";

    // 创建三楼已预定座位表
    public static final String CREATE_THIRD = "create table Third ("
            + "id integer primary key,"
            + "account text)";

    // 创建学生表Student
    public static final String CREATE_STUDENT = "create table Student ("
            + "account text primary key,"
            + "name text,"
            + "age text,"
            + "phone text,"
            + "college text)";

五、运行演示

1、运行项目,进入欢迎界面。

Android Studio实现图书馆订座系统
2、进入登录界面,我们点击新用户注册,进入注册界面。

Android Studio实现图书馆订座系统
3、进入注册界面,我们输入学号和密码之后,点击注册,如果注册成功则返回登录界面。
Android Studio实现图书馆订座系统

4、注册完学号和密码都会被传递过来,弹出“注册成功”的消息,我们直接点击登录。

Android Studio实现图书馆订座系统

5、进入主界面,顶上是轮播图,一共五张精美图片在自动切换,我们也可以手动切换,然后下面的小圆点就对应了图片的下标。下面分别是四个功能栏。我们选择1楼,然后点预订座位

Android Studio实现图书馆订座系统

6、进入一楼座位表,我们可以选择座位,选中会有颜色变化,然后点击悬浮按钮确定选座。

Android Studio实现图书馆订座系统

选择某个座位时,座位会变为深青色,还有金色花边。

Android Studio实现图书馆订座系统

7、我们预订个6排1座的位置,成功预定会有提示信息。

Android Studio实现图书馆订座系统
Android Studio实现图书馆订座系统

8、因为我们同一时间最多只能预订一个座位,所以再预约其他座位必须退掉已预订的座位才行,否则会提示“你有预定的座位未退订”。

Android Studio实现图书馆订座系统

9、返回主界面,点击查看座位,可以看到我们座位的楼层和座位号。

Android Studio实现图书馆订座系统

10、点击退订,然后我们退出该界面,再次点击查看信息,发现暂无信息。

Android Studio实现图书馆订座系统
Android Studio实现图书馆订座系统

11、点击个人信息,进入个人信息界面,点击修改信息按钮,进入编辑模式,编辑完之后点击保存按钮,则进入查看模式。

Android Studio实现图书馆订座系统
12、我们输入个人信息,编辑完之后,点击保存信息。
Android Studio实现图书馆订座系统
13、返回主界面,点击进入我的步数,这里最上面是名人名言、译文和出处。名人名言会每次在进入该界面时都更新。下面是计步显示。

Android Studio实现图书馆订座系统

14、我们点开模拟器右侧的省略号,跳出Extended controls,然后点击Virtual sensors,进入虚拟传感器界面。

Android Studio实现图书馆订座系统

15、点击开始计步,然后我们左侧选择Move模式,然后不断左右拖动Y的进度条,因为手机在竖直放置时,Y轴是垂直于地面的,所以会产生加速度,进而记录步数。

Android Studio实现图书馆订座系统

16、点击停止会清零步数,重新计步。

Android Studio实现图书馆订座系统

17、我们点击退出登录,然后再注册个用户111,点击预订座位,进入座位表,可以看到6排1座已经无法选中了,因为被123用户预订了。我们选择3排2座,然后预订。

Android Studio实现图书馆订座系统
Android Studio实现图书馆订座系统
Android Studio实现图书馆订座系统

18、再次进入选座界面,可以看到这两个座位都变为灰色无法选中了。

Android Studio实现图书馆订座系统

19、三层楼的座位布局都不尽相同,我们可以查看二楼、三楼的座位表,和一楼有很大差别。

Android Studio实现图书馆订座系统

六、项目总结

本次项目使用了ViewPager、Sqlite、FloatingButton、RadioGroup、Http请求、Adapter、Sensor等知识。相对来说还是很简单的,与之前不同的主要是Sensor传感器这一项,其实Android知识非常多,想要深入学习学通还需要花很长时间。不过我个人来看,程序开发相对于深度学习搞算法来说还是非常容易的,毕竟创造有突破性的算法比创造新的软件要难100倍。

七、源码获取

关注公众号《萌新加油站》,后台回复:订座

点此直接下载源码:👉Android Studio实现图书馆订座系统


🚀这有你错过的精彩内容文章来源地址https://www.toymoban.com/news/detail-463259.html


🚀这有你错过的精彩内容🚀
Android Studio实现五子棋小游戏
Android Studio实现知乎日报App
Android Studio实现订餐系统
Android Studio实现仓库管理系统
Android Stduio实现天气预报系统

到了这里,关于Android Studio实现图书馆订座系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学校图书馆管理系统的架构设计与实现

    随着大学生越来越多,学校图书馆的管理变得愈发复杂。为了更好地管理和服务于学生和教职工,学校需要建立一个高效的图书馆管理系统。本文将介绍学校图书馆管理系统的架构设计与实现。 1. 架构设计 学校图书馆管理系统的架构设计主要分为三个部分: 展示层:展示层

    2024年02月22日
    浏览(51)
  • 基于JAVA图书馆管理系统设计与实现

    【后台管理员功能】 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 资讯分类:录入、修改、查看、删除资讯分类 录入资讯:录入资讯标题、内容等信息 管理资讯:查看已录入资讯列

    2024年02月13日
    浏览(52)
  • 微信图书馆座位预约小程序系统设计与实现,

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月05日
    浏览(47)
  • 微信小程序的图书馆预约系统设计与实现

    摘 要 近年来随着社会竞争压力的不断加剧,人们需要不断充实自己的学识来提升自己的竞争力,对于在校的大学生而言需要利用在校期间实现考研考编的内容,职场的上班族需要通过考取职业技能资格证书来实现升职加薪,各行各业的人们都在利用有限的时间去提升和充实

    2024年02月11日
    浏览(47)
  • 【HTML】原生js实现的图书馆管理系统

    1、引言 设计结课作业,课程设计无处下手,网页要求的总数量太多?没有合适的模板?数据库,java,python,vue,html作业复杂工程量过大?毕设毫无头绪等等一系列问题。你想要解决的问题,在微信公众号“coding加油站”中全部会得到解决 2、作品介绍 原生js实现的图书馆管理

    2024年02月06日
    浏览(42)
  • 33基于Java简单实现图书馆借书管理系统设计与实现

    本章节给大家介绍一个基于Java简单实现图书馆借书管理系统的设计与实现 项目总体分为俩种角色,分别是管理员和阅读者,管理员可以登录系统中,进行图书管理,上架下架图书,对用户进行管理、对读者进行管理、查看借阅记录管理等,读者角色可以登录系统查询图书信息

    2024年02月03日
    浏览(61)
  • java毕业设计——基于java+Java Swing+sqlserver的图书馆书库管理系统设计与实现(毕业论文+程序源码)——图书馆书库管理系统

    大家好,今天给大家介绍基于java+Java Swing+sqlserver的图书馆书库管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 毕业

    2024年02月03日
    浏览(47)
  • Java连接数据库实现图书馆管理系统(详细教程)

    该功能用到的软件为 IDEA 、Navicat 、云服务器(非必须) 源码下载 https://www.aliyundrive.com/s/UTz8pNxobGK 在自己的服务器或者电脑本机安装数据库系统,本次系统演示的数据库版本为5.6。 1.创建图书管理数据库library 字符集为:utf8 -utf8_general_ci 2.设计好将要使用的sql语句 视图、存储

    2024年02月06日
    浏览(47)
  • 【计算机毕业设计】图书馆管理系统设计与实现

            以往的图书馆管理事务处理主要使用的是传统的人工管理方式,这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点,长期的人工管理模式会产生大量的文本借书与文本数据,这对事务的查询、更新以及维护带来不少困难。随着互联网时代的到来,现如

    2024年02月04日
    浏览(50)
  • 54基于java的高校图书馆座位预约系统设计与实现

    本章节给大家带来一个基于java的座位预约系统,可以用于图书馆占位系统,图书馆座位预约系统,大学自习室占座系统,自习室座位预约系统,图书馆预约占座系统,自习室预约占座系统,高校图书馆座位预约系统等等; 下面以图书馆为例,大家把源码下载下来后,还可以

    2024年02月09日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包