Android Studio实现图书管理系统

一、项目概述

本项目实现了简单的图书管理系统,核心功能为借书信息的增删改查,利用SQLite数据库存储数据,使用SharedPreferences存储用户的账号和密码,并且密码采用MD5加密方式存储,保证了用户数据安全。进入系统,映入眼帘的是欢迎页面,然后跳转至登录页面,没注册就先进行注册,注册成功后自动跳转回登录页面,登录前可以勾选记住密码,下次打开应用就不用重新输入。成功登录系统,进入到主页面,包含添加、修改、删除和查询四个方形按钮,分别对应四个功能页面。在添加页面输入借书信息可以成功添加记录;在修改页面可以先输入学号查询借书信息,然后修改借书信息即可;在删除页面可以先输入学号查询借书信息,然后删除借书信息即可;在查询页面能够查询到所有的借书记录。总体而言,系统功能完善,代码逻辑清晰,注释详细,可以非常好地学习Android数据存储的相关技术。

二、开发环境

在这里插入图片描述

三、详细设计

3.1、SQLite存储

在应用中先创建一个数据库辅助类(MyDBHelper),它继承自SQLiteOpenHelper抽象类,用于创建和管理SQLite数据库。下面是对代码中各个部分的具体解释:

  1. 类定义
    MyDBHelper是这个类的名称。它扩展了SQLiteOpenHelper来处理数据库相关的操作。

  2. 数据库名称和版本
    DB_NAME是数据库文件的名称,默认值为“book.db”。
    DB_VERSION是数据库的版本号,当需要对数据库结构进行修改时,可以通过增加这个版本号来触发onUpgrade方法。

  3. 创建表的SQL语句
    CREATE_TABLE_BOOK定义了一个名为“Book”的表格,其中包含四个字段:

    • sid:学生ID,数据类型为文本(text),设置为主键(primary key)。
    • sname:学生姓名,数据类型为文本(text)。
    • major:学生的专业,数据类型为文本(text)。
    • barcode:学生证的条形码,数据类型为文本(text)。
  4. 构造函数
    MyDBHelper有一个构造函数,接受一个Context参数。Context是一个Android概念,代表应用程序环境的一部分,这里主要是用来与数据库建立连接。

  5. 数据库创建和升级的回调方法

    • onCreate:当数据库第一次被创建时调用,这里执行了创建“Book”表格的SQL语句。
    • onUpgrade:当数据库从一个较低版本升级到一个较高版本时调用。在本应用中,这个方法是空的,意味着不会自动进行任何版本升级时的数据迁移或结构更改。

这个类的目的是为了简化对数据库的操作,特别是在创建新的数据库实例时。我们可以通过创建MyDBHelper的实例并传入一个Context对象来获取SQLiteDatabase对象,然后就可以执行插入、删除、更新、查询等数据库操作了。

public class MyDBHelper extends SQLiteOpenHelper {
    // 定义数据库名和版本号
    public static final String DB_NAME = "book.db";
    public static final int DB_VERSION = 1;
    // 定义建表语句(借书记录其实用记录Record命名更恰当,但考虑到是图书管理系统,所以还是用Book)
    public static final String CREATE_TABLE_BOOK =
            "create table Book (" +
                    "sid text primary key," +
                    "sname text," +
                    "major text," +
                    "barcode text)";
    // 构造函数
    public MyDBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_BOOK);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

3.2、SharedPreferences存储

图书管理系统在注册和登录页面的逻辑中主要使用SharedPreferences存储用户信息到本地文件中,这也是Android开发中用于数据持久化的解决方案之一,它允许我们存储键值对数据。先来看下保存用户信息的代码段:

public void saveLoginInfo(String userName, String passWord) {
    // 获取SharedPreferences对象,这里指定了一个文件名为"userInfo",仅当前应用可访问
    SharedPreferences sp = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
    // 获取SharedPreferences的Editor对象,用于进行数据的修改
    SharedPreferences.Editor editor = sp.edit();
    // 使用putString方法将用户名和密码分别保存到SharedPreferences文件中
    editor.putString("username", userName);
    editor.putString("password", passWord);
    // putBoolean方法用于保存复选框的状态,虽然在这个上下文中看起来是多余的
    editor.putBoolean("check", cbSave.isChecked());
    // 最后使用commit方法将所做的修改提交到文件中
    // commit是一个同步操作,如果提交失败则会抛出异常
    boolean result = editor.commit();
    // 可以根据result的值来判断提交是否成功
}

在上面的代码中,saveLoginInfo方法接收两个参数:userName(用户名)和passWord(密码)。然后,它使用getSharedPreferences方法获取一个SharedPreferences实例,该实例使用指定的文件名和模式(在这里是Context.MODE_PRIVATE,表示仅当前应用可见)。

接下来,使用edit方法获取SharedPreferences.Editor实例,它可以用来添加、删除和修改SharedPreferences中的键值对数据。通过调用putString方法,将用户名和密码保存为字符串类型的键值对。putBoolean方法用于保存cbSave复选框的选中状态。这里的cbSave是当前活动中的一个复选框控件,但在实际应用中,通常不建议将UI控件的状态直接保存到SharedPreferences中,除非该状态确实需要持久化。

最后,调用commit方法来提交所有的更改。这个方法会立即写入数据并返回一个布尔值,指示操作是否成功。如果需要异步提交数据,可以使用apply方法代替commit

3.3、页面绘制

应用包括欢迎、登录、注册等8个页面,其中欢迎页面和主页面设计简单,增删改查页面稍复杂但是设计理念类似,因此介绍下登录页面和更新页面的绘制步骤。

登录页面

activity_login包括了几个基本的UI组件:一个TextView显示文字,一个ImageView用于显示图片,以及三个用于输入的EditText控件和一个CheckBox控件。这个布局的根元素是一个垂直方向的LinearLayout,它包含了所有的子视图。布局的顶部是一个TextView,用于显示"图书管理系统"的标题。紧接着是一个ImageView,用于显示应用的图标。

布局中间部分是一个RelativeLayout,它包含了两个EditText和一个LinearLayout。第一个EditText用于输入用户名,第二个EditText用于输入密码。这两个EditText都设置了背景、提示文本、大小和其他属性。LinearLayout包含了一个CheckBox和一个TextView。CheckBox的文本是"记住密码",而TextView的文本是"用户注册"。这两个组件都被水平排列,并且各自占据了一半的空间。

布局的底部是一个Button,其文本是"登录"。这个按钮设置了白色的文字颜色和一个选择器作为背景,以便在不同的状态下显示不同的颜色。整个布局的背景色是通过引用一个名为@drawable/bg的资源文件来设置的。每个组件都根据需要设置了大小、边距、对齐方式和其他视觉属性。
在这里插入图片描述

更新页面

activity_update采用了垂直方向的LinearLayout作为根布局,包含了以下几个部分:

  1. 页面顶部的TextView,显示文本“更新借书记录”,具有一定的字体大小和颜色,背景设为透明。

  2. 页面中间的ImageView,显示一个人物头像图标,用于标识更新借书记录的主题。

  3. 紧接着的是一个水平方向的LinearLayout,包含三个子视图:一个显示文本“学号:”的TextView,一个宽度为150dp的EditText用于输入学号,以及一个宽度为120dp的Button用于查询。这个水平Layout的左右两侧各有5dp的外边距。

  4. 紧接着的是另一个水平方向的LinearLayout,包含三个子视图:一个显示文本“姓名:”的TextView,一个宽度为match_parent的EditText用于输入姓名,以及一个右侧有5dp外边距的Button用于提交。这个水平Layout的左右两侧各有10dp的外边距。

  5. 紧接着的是另一个水平方向的LinearLayout,包含三个子视图:一个显示文本“专业:”的TextView,一个右侧有5dp外边距的Button用于提交,以及一个右侧有5dp外边距的Button用于提交。这个水平Layout的左右两侧各有10dp的外边距。

  6. 最后,页面底部是一个宽度为match_parent的Button,显示文本“修改”,用于提交注册信息。这个Button的高度为50dp,上下左右各有10dp的外边距。

整个布局文件使用了多个drawable资源文件作为背景和图标,这些资源文件需要在项目的res/drawable目录下定义。总的来说,这个布局文件设计得十分简洁明了,每个组件都有明确的功能和定位,方便用户进行操作和提交。
在这里插入图片描述

四、运行演示

Android Studio实现图书管理系统

五、源码获取

♻️下面两种方式都可以获取源代码
1️⃣ 点击直接下载 Android Studio 图书管理系统
2️⃣关注公众号《 萌新加油站 》,后台回复: 图书

🚀这有你错过的精彩内容
Android Studio实现飞机大战
Android Studio实现钢琴块小游戏
Android Studio实现一笔画完小游戏
Android Studio实现会议室预约系统
Android Studio实现俄罗斯方块

强烈推荐4本可以改变命运的经典著作:

  1. 《寿康宝鉴》在线阅读白话文
  2. 《欲海回狂》在线阅读白话文
  3. 《阴律无情》在线阅读白话文
  4. 《了凡四训》在线阅读白话文
  5.    电子书百度网盘下载链接
  • 29
    点赞
  • 461
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

振华OPPO

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值