Android Studio 实现图书借阅(管理)体系

打印 上一主题 下一主题

主题 580|帖子 580|积分 1740

一、高质量源码(非开源,白嫖低价勿扰)

   
关注公众号:《编程乐学》

   
后台回复:24012101

  目录
前言
一、任务介绍
1.1 背景
1.2目的和意义
二、 实现介绍
视频演示
2.1 启动页实现
2.2 注册页面实现
2.3 登陆页面实现
2.4 图书列表的实现
2.5 当前借阅页面实现               
 2.6 我的页面实现  
 2.7 归还图书页面实现 
三、获取源码


前言

       本体系将充分使用Android Studio提供的丰富功能和良好性能,以用户友好的界面设计和智能化的功能模块,为用户带来全新的图书借阅体验。同时,该体系的开发将有助于促进图书馆管理的现代化和智能化进程,提升图书馆的服务质量和焦点竞争力。
一、任务介绍

1.1 背景

        随着社会的发展,图书馆作为知识的堆栈和学习的场所,扮演着至关紧张的角色。然而,传统的图书借阅管理方式已经难以满意当代信息化、智能化的需求。为了更好地顺应现代化管理需求,本体系基于Android Studio平台,旨在实现一套便捷高效的图书借阅和管理体系。
1.2目的和意义

         提升借阅体验:传统的图书借阅方式必要读者亲身到图书馆办理借书手续,耗费时间和精力。通过该体系,读者可以在线浏览图书馆的书籍目录、借阅图书,无需到图书馆现场,大大提升了借阅的便捷性和效率。
二、实现介绍

视频演示

     Android studio期末设计大作业~图书借阅(管理)体系
  2.1 启动页实现


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="#ffffff"
  8.     tools:context=".Activity.StartActivity">
  9.     <ImageView
  10.         android:id="@+id/imageView"
  11.         android:layout_width="0dp"
  12.         android:layout_height="0dp"
  13.         app:layout_constraintBottom_toBottomOf="parent"
  14.         app:layout_constraintEnd_toEndOf="parent"
  15.         app:layout_constraintStart_toStartOf="parent"
  16.         app:layout_constraintTop_toTopOf="parent"
  17.         app:srcCompat="@drawable/logo" />
  18. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
2.2 注册页面实现



  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="#fff"
  8.     tools:context=".Activity.RegisterActivity">
  9.     <ImageView
  10.         android:id="@+id/imageView3"
  11.         android:layout_width="0dp"
  12.         android:layout_height="250dp"
  13.         app:layout_constraintEnd_toEndOf="parent"
  14.         app:layout_constraintStart_toStartOf="parent"
  15.         app:layout_constraintTop_toTopOf="parent"
  16.         app:srcCompat="@drawable/logo" />
  17.     <LinearLayout
  18.         android:id="@+id/linearLayout3"
  19.         android:layout_width="0dp"
  20.         android:layout_height="wrap_content"
  21.         android:layout_marginStart="32dp"
  22.         android:layout_marginTop="24dp"
  23.         android:layout_marginEnd="32dp"
  24.         android:orientation="vertical"
  25.         app:layout_constraintEnd_toEndOf="parent"
  26.         app:layout_constraintStart_toStartOf="parent"
  27.         app:layout_constraintTop_toBottomOf="@+id/imageView3">
  28.         <EditText
  29.             android:id="@+id/mUserNameEditText"
  30.             android:layout_width="match_parent"
  31.             android:layout_height="wrap_content"
  32.             android:ems="10"
  33.             android:hint="请输入用户名"
  34.             android:inputType="textPersonName" />
  35.         <EditText
  36.             android:id="@+id/mPasswordEditText"
  37.             android:layout_width="match_parent"
  38.             android:layout_height="wrap_content"
  39.             android:layout_marginTop="24dp"
  40.             android:ems="10"
  41.             android:hint="请输入密码"
  42.             android:inputType="textPassword" />
  43.         <EditText
  44.             android:id="@+id/rPassword_edittext"
  45.             android:layout_width="match_parent"
  46.             android:layout_height="wrap_content"
  47.             android:layout_marginTop="24dp"
  48.             android:ems="10"
  49.             android:hint="请再次输入密码"
  50.             android:inputType="textPassword" />
  51.         <TextView
  52.             android:id="@+id/tv_login"
  53.             android:layout_width="match_parent"
  54.             android:layout_height="wrap_content"
  55.             android:layout_marginTop="10dp"
  56.             android:gravity="center|right"
  57.             android:text="已有帐号,立即登录!"
  58.             android:textColor="#000" />
  59.     </LinearLayout>
  60.     <Button
  61.         android:id="@+id/btn_register"
  62.         android:layout_width="0dp"
  63.         android:layout_height="40dp"
  64.         android:background="@drawable/btn_lr"
  65.         android:text="立 即 注 册"
  66.         android:textColor="#fff"
  67.         android:textSize="16sp"
  68.         app:layout_constraintBottom_toBottomOf="parent"
  69.         app:layout_constraintEnd_toEndOf="@+id/linearLayout3"
  70.         app:layout_constraintStart_toStartOf="@+id/linearLayout3"
  71.         app:layout_constraintTop_toBottomOf="@+id/linearLayout3" />
  72. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
        这段代码实现了一个简单的注册页面,可以输入用户名和密码进行注册,同时要求输入的密码和重复密码一致。注册成功后,会插入数据库并跳转到登录页面;注册失败则显示失败的提示。
  1. package com.example.booklendingsystem.Activity;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.EditText;
  7. import android.widget.TextView;
  8. import android.widget.Toast;
  9. import androidx.appcompat.app.AppCompatActivity;
  10. import com.example.booklendingsystem.R;
  11. public class RegisterActivity extends AppCompatActivity {
  12.     @Override
  13.     protected void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.activity_register);
  16.         initView();
  17.         register();
  18.         login();
  19.     }
  20.     // 返回到登陆页面
  21.     private void login() {
  22.         tvLogin.setOnClickListener(new View.OnClickListener() {
  23.             @Override
  24.             public void onClick(View view) {
  25.                 finish();
  26.             }
  27.         });
  28.     }
  29.     private void register() {
  30.         // 点击注册按钮进行验证
  31.         btnRegister.setOnClickListener(new View.OnClickListener() {
  32.             @Override
  33.             public void onClick(View v) {
  34.                                // 判断是否输入内容
  35.                 if (username.isEmpty() || password.isEmpty()) {
  36.                     Toast.makeText(getApplicationContext(), "请输入账号或密码", Toast.LENGTH_SHORT).show();
  37.                     return;
  38.                 }
  39.                 // 判断两次密码是否一致
  40.                 if (passwordrepeat.equals(password) && password.equals(passwordrepeat)) {
  41.                                     if (result) {
  42.                         Toast.makeText(getApplicationContext(), "注册成功", Toast.LENGTH_SHORT).show();
  43.                         Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
  44.                         startActivity(intent);
  45.                         finish();
  46.                     } else {
  47.                         Toast.makeText(getApplicationContext(), "注册失败", Toast.LENGTH_SHORT).show();
  48.                     }
  49.                 } else {
  50.                     Toast.makeText(getApplicationContext(), "两次密码不同,请检查!", Toast.LENGTH_SHORT).show();
  51.                 }
  52.             }
  53.         });
  54.     }
  55.    
  56. }
复制代码
2.3 登陆页面实现


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="#fff"
  8.     tools:context=".Activity.LoginActivity">
  9.     <ImageView
  10.         android:id="@+id/imageView2"
  11.         android:layout_width="0dp"
  12.         android:layout_height="250dp"
  13.         app:layout_constraintEnd_toEndOf="parent"
  14.         app:layout_constraintStart_toStartOf="parent"
  15.         app:layout_constraintTop_toTopOf="parent"
  16.         app:srcCompat="@drawable/logo" />
  17.     <LinearLayout
  18.         android:id="@+id/linearLayout2"
  19.         android:layout_width="0dp"
  20.         android:layout_height="wrap_content"
  21.         android:layout_marginStart="32dp"
  22.         android:layout_marginTop="24dp"
  23.         android:layout_marginEnd="32dp"
  24.         android:orientation="vertical"
  25.         app:layout_constraintEnd_toEndOf="parent"
  26.         app:layout_constraintStart_toStartOf="parent"
  27.         app:layout_constraintTop_toBottomOf="@+id/imageView2">
  28.         <EditText
  29.             android:id="@+id/username_edittext"
  30.             android:layout_width="match_parent"
  31.             android:layout_height="57dp"
  32.             android:ems="10"
  33.             android:hint="请输入用户名"
  34.             android:inputType="textPersonName" />
  35.         <EditText
  36.             android:id="@+id/rPassword_edittext"
  37.             android:layout_width="match_parent"
  38.             android:layout_height="wrap_content"
  39.             android:layout_marginTop="24dp"
  40.             android:ems="10"
  41.             android:hint="请输入密码"
  42.             android:inputType="textPassword" />
  43.         <LinearLayout
  44.             android:layout_width="match_parent"
  45.             android:layout_height="wrap_content"
  46.             android:layout_marginTop="20dp"
  47.             android:gravity="center"
  48.             android:orientation="horizontal">
  49.             <CheckBox
  50.                 android:id="@+id/savePwd_checkBox"
  51.                 android:layout_width="wrap_content"
  52.                 android:layout_height="wrap_content"
  53.                 android:layout_weight="1"
  54.                 android:text="记住密码"
  55.                 android:textSize="14sp" />
  56.             <TextView
  57.                 android:id="@+id/register_text"
  58.                 android:layout_width="wrap_content"
  59.                 android:layout_height="match_parent"
  60.                 android:layout_weight="1"
  61.                 android:gravity="center|right"
  62.                 android:text="还没有账号?立即注册!"
  63.                 android:textColor="#000" />
  64.         </LinearLayout>
  65.     </LinearLayout>
  66.     <Button
  67.         android:id="@+id/login_button"
  68.         android:layout_width="0dp"
  69.         android:layout_height="40dp"
  70.         android:background="@drawable/btn_lr"
  71.         android:text="立 即 登 录"
  72.         android:textColor="#fff"
  73.         android:textSize="16sp"
  74.         app:layout_constraintBottom_toBottomOf="parent"
  75.         app:layout_constraintEnd_toEndOf="@+id/linearLayout2"
  76.         app:layout_constraintStart_toStartOf="@+id/linearLayout2"
  77.         app:layout_constraintTop_toBottomOf="@+id/linearLayout2" />
  78. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
        这段代码实现了一个简单的登录页面,可以输入用户名和密码进行登录,可以选择是否生存密码,还可以跳转到注册页面进行账号注册。
  1. package com.example.booklendingsystem.Activity;
  2. import android.content.Intent;
  3. import android.content.SharedPreferences;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.CheckBox;
  8. import android.widget.EditText;
  9. import android.widget.TextView;
  10. import android.widget.Toast;
  11. import androidx.appcompat.app.AppCompatActivity;
  12. import com.example.booklendingsystem.R;
  13. public class LoginActivity extends AppCompatActivity {
  14.     @Override
  15.     protected void onCreate(Bundle savedInstanceState) {
  16.         super.onCreate(savedInstanceState);
  17.         setContentView(R.layout.activity_login);
  18.         initView();
  19.         register();
  20.         login();
  21.     }
  22.     // 进行账号密码验证实现登录
  23.     private void login() {
  24.         mLoginButton.setOnClickListener(new View.OnClickListener() {
  25.             @Override
  26.             public void onClick(View v) {
  27.                 // 获取输入的内容
  28.                 String username = mUserNameEditText.getText().toString().trim();
  29.                 String password = mPasswordEditText.getText().toString().trim();
  30.                     
  31.                 // 判断输入的内容是否为空
  32.                 if (username.isEmpty() || password.isEmpty()) {
  33.                     Toast.makeText(getApplicationContext(), "请输入账号或密码", Toast.LENGTH_SHORT).show();
  34.                     return;
  35.                 }
  36.                 if (result) {
  37.                     Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
  38.                     Intent intent = new Intent(LoginActivity.this, MainActivity.class);
  39.                     startActivity(intent);
  40.                     finish();
  41.                 } else {
  42.                     Toast.makeText(getApplicationContext(), "账号或密码错误", Toast.LENGTH_SHORT).show();
  43.                 }
  44.             }
  45.         });
  46.     }
  47.     // 跳转注册页面
  48.     private void register() {
  49.         rEgisterText.setOnClickListener(new View.OnClickListener() {
  50.             @Override
  51.             public void onClick(View v) {
  52.                 Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
  53.                 startActivity(intent);
  54.             }
  55.         });
  56.     }
  57.     }
复制代码
2.4 图书列表的实现


        在点击借阅按钮的点击监听器中,获取了输入的学号和借阅人的信息,并进行了一些判断和处理。如果输入为空,会显示提示消息;如果输入不为空,会查抄数据库中是否已有借阅记载,如果有,则显示提示消息,如果没有,则将借阅信息添加到数据库中,并显示借阅成功的提示消息。
        末了,将适配器设置给 ListView,并返回显示列表的视图。        
  1. package com.example.booklendingsystem.Fragment;
  2. import android.os.Bundle;
  3. import android.text.TextUtils;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.AdapterView;
  8. import android.widget.ArrayAdapter;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.ImageView;
  12. import android.widget.ListView;
  13. import android.widget.TextView;
  14. import android.widget.Toast;
  15. import androidx.annotation.NonNull;
  16. import androidx.annotation.Nullable;
  17. import androidx.appcompat.app.AlertDialog;
  18. import androidx.fragment.app.Fragment;
  19. import com.example.booklendingsystem.Bean.BookList;
  20. import com.example.booklendingsystem.Bean.BorrowInfo;
  21. import com.example.booklendingsystem.Helper.BookHelper;
  22. import com.example.booklendingsystem.R;
  23. import java.util.ArrayList;
  24. import java.util.Calendar;
  25. import java.util.List;
  26. import java.util.Locale;
  27. import java.util.TimeZone;
  28. public class BookListFragment extends Fragment {
  29.     @Override
  30.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  31.                              Bundle savedInstanceState) {
  32.         View view = inflater.inflate(R.layout.fragment_book_list, container, false);
  33.         // 创建 BorrowInfo 对象
  34.         final ArrayList<BookList> bookList = new ArrayList<>();
  35.         bookList.add(new BookList(R.drawable.gava, "《Java从入门到精通(第7版)》", "明日科技", "《Java从入门到精通(第7版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细讲解了使用Java语言进行程序开发需要掌握的知识。全书分为4篇共24章,内容包括初识Java,开发工具(IDEA、Eclipse),Java语言基础,流程控制,数组,类和对象,继承、多态、抽象类与接口,包和内部类,异常处理,字符串,常用类库,集合类,枚举类型与泛型,lambda表达式与流处理,I/O(输入/输出),反射与注解,数据库操作,Swing程序设计,Java绘图,多线程,并发,网络通信,飞机大战游戏,MR人脸识别打卡系统。书中所有知识都结合具体实例进行讲解,涉及的程序代码都给出了详细的注释,这可以帮助读者轻松领会Java程序开发的精髓,并快速提高开发技能。"));
  36.          // 创建适配器
  37.         ArrayAdapter<BookList> adapter = new ArrayAdapter<BookList>(getActivity(), R.layout.item_book, bookList) {
  38.             @NonNull
  39.             @Override
  40.             public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
  41.                 if (convertView == null) {
  42.                     convertView = getLayoutInflater().inflate(R.layout.item_book, parent, false);
  43.                 }
  44.                 ImageView imageView = convertView.findViewById(R.id.img_book);
  45.                 TextView bookNameView = convertView.findViewById(R.id.tv_bookName);
  46.                 TextView authorView = convertView.findViewById(R.id.tv_author);
  47.                 TextView descriptionView = convertView.findViewById(R.id.tv_description);
  48.                 BookList currentBook = getItem(position);
  49.                 if (currentBook != null) {
  50.                     imageView.setImageResource(currentBook.getImageResource());
  51.                     bookNameView.setText(currentBook.getTitle());
  52.                     authorView.setText(currentBook.getAuthor());
  53.                     descriptionView.setText(currentBook.getDescription());
  54.                 }
  55.                 return convertView;
  56.             }
  57.         };
  58.         ListView listView = view.findViewById(R.id.lv);
  59.         listView.setAdapter(adapter);
  60.         return view;
  61.     }
  62. }
复制代码
对应的布局文件代码如下所示:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     tools:context=".Fragment.BookListFragment">
  8.     <ListView
  9.         android:id="@+id/lv"
  10.         android:layout_width="0dp"
  11.         android:layout_height="0dp"
  12.         android:background="#fff"
  13.         app:layout_constraintBottom_toBottomOf="parent"
  14.         app:layout_constraintEnd_toEndOf="parent"
  15.         app:layout_constraintHorizontal_bias="0.238"
  16.         app:layout_constraintStart_toStartOf="parent"
  17.         app:layout_constraintTop_toBottomOf="@+id/view2"
  18.         app:layout_constraintVertical_bias="1.0" />
  19.     <View
  20.         android:id="@+id/view2"
  21.         android:layout_width="0dp"
  22.         android:layout_height="50dp"
  23.         android:background="#80D3F8"
  24.         app:layout_constraintEnd_toEndOf="parent"
  25.         app:layout_constraintStart_toStartOf="parent"
  26.         app:layout_constraintTop_toTopOf="parent" />
  27.     <TextView
  28.         android:id="@+id/textView2"
  29.         android:layout_width="wrap_content"
  30.         android:layout_height="wrap_content"
  31.         android:text="图书列表"
  32.         android:textColor="#fff"
  33.         android:textSize="20sp"
  34.         android:textStyle="bold"
  35.         app:layout_constraintBottom_toBottomOf="@+id/view2"
  36.         app:layout_constraintEnd_toEndOf="parent"
  37.         app:layout_constraintStart_toStartOf="@+id/view2"
  38.         app:layout_constraintTop_toTopOf="parent" />
  39. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
 2.5 当前借阅页面实现               


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     tools:context=".Fragment.LoanRecordFragment">
  8.     <View
  9.         android:id="@+id/view3"
  10.         android:layout_width="wrap_content"
  11.         android:layout_height="50dp"
  12.         android:background="#80D3F8"
  13.         app:layout_constraintEnd_toEndOf="parent"
  14.         app:layout_constraintStart_toStartOf="parent"
  15.         app:layout_constraintTop_toTopOf="parent" />
  16.     <TextView
  17.         android:id="@+id/textView5"
  18.         android:layout_width="wrap_content"
  19.         android:layout_height="wrap_content"
  20.         android:text="当前借阅"
  21.         android:textColor="#fff"
  22.         android:textSize="20sp"
  23.         android:textStyle="bold"
  24.         app:layout_constraintBottom_toBottomOf="@+id/view3"
  25.         app:layout_constraintEnd_toEndOf="@+id/view3"
  26.         app:layout_constraintStart_toStartOf="@+id/view3"
  27.         app:layout_constraintTop_toTopOf="parent" />
  28.     <ListView
  29.         android:id="@+id/lst_orders"
  30.         android:layout_width="0dp"
  31.         android:layout_height="0dp"
  32.         app:layout_constraintBottom_toBottomOf="parent"
  33.         app:layout_constraintEnd_toEndOf="parent"
  34.         app:layout_constraintStart_toStartOf="parent"
  35.         app:layout_constraintTop_toBottomOf="@+id/view3">
  36.     </ListView>
  37. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
         首先,在 onCreateView 方法中,加载了布局文件并初始化了视图。然后,在 setupListView 方法中,获取了所有的借阅信息,并将其倒序分列。
接下来,创建了一个自定义的适配器 BookAdapter,并将其设置给 ListView。
        末了,在 getAllBorrowInfoFromDatabase 方法中,通过 BookHelper 类从数据库中获取了所有的借阅信息。
  1. package com.example.booklendingsystem.Fragment;
  2. import android.os.Bundle;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.ListView;
  7. import androidx.fragment.app.Fragment;
  8. import com.example.booklendingsystem.Adapter.BookAdapter;
  9. import com.example.booklendingsystem.Bean.BorrowInfo;
  10. import com.example.booklendingsystem.R;
  11. import java.util.ArrayList;
  12. import java.util.Collections;
  13. import java.util.List;
  14. public class LoanRecordFragment extends Fragment {
  15.     private ListView listView;
  16.     private BookAdapter bookAdapter; // 自定义适配器
  17.     @Override
  18.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  19.         View view = inflater.inflate(R.layout.fragment_loan_record, container, false);
  20.         initView(view);
  21.         setupListView(); // 设置ListView
  22.         return view;
  23.     }
  24.     private void initView(View view) {
  25.         listView = view.findViewById(R.id.lst_orders);
  26.     }
  27.     // 设置ListView及其适配器
  28.     private void setupListView() {      
  29.         listView.setAdapter(bookAdapter); // 设置适配器
  30.     }
  31.   }
复制代码
 2.6 我的页面实现  


        实现了一个包含三个按钮的界面,分别是归还图书、修改密码和退出登录。当用户点击这些按钮时,会触发相应的操纵。
        在 onCreateView 方法中,通过 findViewById 方法获取到了三个按钮的实例,并分别为它们设置了点击事件监听器。
        当用户点击归还图书按钮时,会跳转到 BackBookActivity 页面;当用户点击修改密码按钮时,会弹出一个自定义的对话框,让用户输入新密码并进行确认,然后更新密码并跳转到登录页面;
        当用户点击退出按钮时,会弹出一个对话框确认是否退出,并在用户确认退出后跳转到登录页面。
        还实现了一个 initView 方法用于初始化界面的控件,以及 edit、modify 和 backbook 方法用于处理按钮的点击事件。
  1. package com.example.booklendingsystem.Fragment;
  2. import android.content.DialogInterface;
  3. import android.content.Intent;
  4. import android.content.SharedPreferences;
  5. import android.os.Bundle;
  6. import android.text.TextUtils;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.Button;
  11. import android.widget.EditText;
  12. import android.widget.LinearLayout;
  13. import android.widget.Toast;
  14. import androidx.appcompat.app.AlertDialog;
  15. import androidx.fragment.app.Fragment;
  16. import com.example.booklendingsystem.Activity.BackBookActivity;
  17. import com.example.booklendingsystem.Activity.LoginActivity;
  18. import com.example.booklendingsystem.Helper.UsersHelper;
  19. import com.example.booklendingsystem.R;
  20. import static android.content.Context.MODE_PRIVATE;
  21. public class MineFragment extends Fragment {
  22.     private LinearLayout llBackBook;
  23.     private LinearLayout llEdit;
  24.     private LinearLayout llModifymm;
  25.     @Override
  26.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  27.                              Bundle savedInstanceState) {
  28.         View view = inflater.inflate(R.layout.fragment_mine, container, false);
  29.         initView(view);
  30.         edit();
  31.         modify();
  32.         backbook();
  33.         return view;
  34.     }
  35.     // 进入归还图书页面
  36.     private void backbook() {
  37.         llBackBook.setOnClickListener(new View.OnClickListener() {
  38.             @Override
  39.             public void onClick(View v) {
  40.                 Intent intent = new Intent(getActivity(), BackBookActivity.class);
  41.                 startActivity(intent);
  42.             }
  43.         });
  44.     }
  45.     private void modify() {
  46.         llModifymm.setOnClickListener(new View.OnClickListener() {
  47.             private EditText dialogEtRmm;
  48.             private EditText dialogEtNmm;
  49.             private EditText dialogEtUser;
  50.             private Button btnCancel;
  51.             private Button btnModify;
  52.             @Override
  53.             public void onClick(View v) {
  54.                 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  55.                 final View dialogView = getLayoutInflater().inflate(R.layout.dialog_modifymm, null);
  56.                 // 获取控件
  57.                 dialogEtUser = dialogView.findViewById(R.id.dialog_et_user);
  58.                 dialogEtNmm = dialogView.findViewById(R.id.dialog_et_nmm);
  59.                 dialogEtRmm = dialogView.findViewById(R.id.dialog_et_rmm);
  60.                 btnModify = dialogView.findViewById(R.id.btn_modify);
  61.                 btnCancel = dialogView.findViewById(R.id.btn_cancel);
  62.                 builder.setView(dialogView);
  63.                 // 创建对话框并声明为 final
  64.                 final AlertDialog dialog = builder.create();
  65.                 dialog.show();
  66.                 // 点击取消关闭对话框
  67.                 btnCancel.setOnClickListener(new View.OnClickListener() {
  68.                     @Override
  69.                     public void onClick(View v) {
  70.                         dialog.dismiss();
  71.                     }
  72.                 });
  73.                 // 点击修改按钮后的添加操作
  74.                 btnModify.setOnClickListener(new View.OnClickListener() {
  75.                     @Override
  76.                     public void onClick(View v) {
  77.                           dialog.dismiss();
  78.                         } else {
  79.                             Toast.makeText(getActivity(), "修改密码失败,请检查用户名是否正确!", Toast.LENGTH_SHORT).show();
  80.                         }
  81.                     }
  82.                 });
  83.             }
  84.         });
  85.     }
  86.     // 退出
  87.     private void edit() {
  88.         llEdit.setOnClickListener(new View.OnClickListener() {
  89.             @Override
  90.             public void onClick(View v) {
  91.                 // 创建一个AlertDialog.Builder对象
  92.                 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  93.                 // 设置对话框的标题和内容
  94.                 builder.setTitle("提示")
  95.                         .setMessage("确定要退出吗?")
  96.                         // 设置取消按钮(左边的按钮)
  97.                         .setNegativeButton("取消", new DialogInterface.OnClickListener() {
  98.                             public void onClick(DialogInterface dialog, int id) {
  99.                                 // 用户点击取消按钮时,不执行任何操作
  100.                                 dialog.dismiss();
  101.                             }
  102.                         })
  103.                         // 设置确定按钮(右边的按钮)
  104.                         .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  105.                             public void onClick(DialogInterface dialog, int id) {
  106.                                 // 跳转登陆页面
  107.                                 Intent intent = new Intent(getActivity(), LoginActivity.class);
  108.                                 Toast.makeText(getActivity(), "退出成功!", Toast.LENGTH_SHORT).show();
  109.                                 startActivity(intent);
  110.                             }
  111.                         });
  112.                 // 创建并显示AlertDialog
  113.                 AlertDialog dialog = builder.create();
  114.                 dialog.show();
  115.             }
  116.         });
  117.     }
  118.     // 获取控件
  119.     private void initView(View view) {
  120.         llBackBook = view.findViewById(R.id.ll_back_book);
  121.         llEdit = view.findViewById(R.id.ll_edit);
  122.         llModifymm = view.findViewById(R.id.ll_modifymm);
  123.     }
  124. }
复制代码
对应的xml布局代码如下所示:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="#fff"
  8.     tools:context=".Fragment.MineFragment">
  9.     <LinearLayout
  10.         android:layout_width="match_parent"
  11.         android:layout_height="match_parent"
  12.         android:orientation="vertical"
  13.         app:layout_constraintBottom_toBottomOf="parent"
  14.         app:layout_constraintEnd_toEndOf="parent"
  15.         app:layout_constraintStart_toStartOf="parent"
  16.         app:layout_constraintTop_toTopOf="parent">
  17.         <ImageView
  18.             android:id="@+id/imageView5"
  19.             android:layout_width="match_parent"
  20.             android:layout_height="200dp"
  21.             android:src="@drawable/logo" />
  22.         <LinearLayout
  23.             android:id="@+id/ll_back_book"
  24.             android:layout_width="match_parent"
  25.             android:layout_height="wrap_content"
  26.             android:layout_marginLeft="20dp"
  27.             android:layout_marginRight="20dp"
  28.             android:gravity="center"
  29.             android:orientation="horizontal">
  30.             <ImageView
  31.                 android:id="@+id/imageView4"
  32.                 android:layout_width="25dp"
  33.                 android:layout_height="25dp"
  34.                 android:src="@drawable/backbook" />
  35.             <TextView
  36.                 android:id="@+id/textView7"
  37.                 android:layout_width="wrap_content"
  38.                 android:layout_height="30dp"
  39.                 android:layout_marginLeft="10dp"
  40.                 android:layout_weight="1"
  41.                 android:gravity="center|left"
  42.                 android:text="归还图书"
  43.                 android:textColor="#000"
  44.                 android:textSize="16sp" />
  45.             <ImageView
  46.                 android:id="@+id/imageView6"
  47.                 android:layout_width="15dp"
  48.                 android:layout_height="15dp"
  49.                 android:src="@drawable/right" />
  50.         </LinearLayout>
  51.         <View
  52.             android:id="@+id/view4"
  53.             android:layout_width="match_parent"
  54.             android:layout_height="2dp"
  55.             android:layout_marginLeft="20dp"
  56.             android:layout_marginTop="10dp"
  57.             android:layout_marginRight="20dp"
  58.             android:background="#EFEFEF" />
  59.         <LinearLayout
  60.             android:id="@+id/ll_modifymm"
  61.             android:layout_width="match_parent"
  62.             android:layout_height="wrap_content"
  63.             android:layout_marginLeft="20dp"
  64.             android:layout_marginTop="10dp"
  65.             android:layout_marginRight="20dp"
  66.             android:gravity="center"
  67.             android:orientation="horizontal">
  68.             <ImageView
  69.                 android:id="@+id/imageView9"
  70.                 android:layout_width="25dp"
  71.                 android:layout_height="25dp"
  72.                 android:src="@drawable/modifymm" />
  73.             <TextView
  74.                 android:id="@+id/textView15"
  75.                 android:layout_width="wrap_content"
  76.                 android:layout_height="30dp"
  77.                 android:layout_marginLeft="10dp"
  78.                 android:layout_weight="1"
  79.                 android:gravity="center|left"
  80.                 android:text="修改密码"
  81.                 android:textColor="#000"
  82.                 android:textSize="16sp" />
  83.             <ImageView
  84.                 android:id="@+id/imageView10"
  85.                 android:layout_width="15dp"
  86.                 android:layout_height="15dp"
  87.                 android:src="@drawable/right" />
  88.         </LinearLayout>
  89.         <View
  90.             android:id="@+id/view5"
  91.             android:layout_width="match_parent"
  92.             android:layout_height="2dp"
  93.             android:layout_marginLeft="20dp"
  94.             android:layout_marginTop="10dp"
  95.             android:layout_marginRight="20dp"
  96.             android:background="#EFEFEF" />
  97.         <LinearLayout
  98.             android:id="@+id/ll_edit"
  99.             android:layout_width="match_parent"
  100.             android:layout_height="wrap_content"
  101.             android:layout_marginLeft="20dp"
  102.             android:layout_marginTop="10dp"
  103.             android:layout_marginRight="20dp"
  104.             android:gravity="center"
  105.             android:orientation="horizontal">
  106.             <ImageView
  107.                 android:id="@+id/imageView7"
  108.                 android:layout_width="25dp"
  109.                 android:layout_height="25dp"
  110.                 android:src="@drawable/edit" />
  111.             <TextView
  112.                 android:id="@+id/textView12"
  113.                 android:layout_width="wrap_content"
  114.                 android:layout_height="30dp"
  115.                 android:layout_marginLeft="10dp"
  116.                 android:layout_weight="1"
  117.                 android:gravity="center|left"
  118.                 android:text="退出登录"
  119.                 android:textColor="#000"
  120.                 android:textSize="16sp" />
  121.             <ImageView
  122.                 android:id="@+id/imageView8"
  123.                 android:layout_width="15dp"
  124.                 android:layout_height="15dp"
  125.                 android:src="@drawable/right" />
  126.         </LinearLayout>
  127.     </LinearLayout>
  128. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
  2.7 归还图书页面实现 


 我们先来看一下布局代码:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="#fff"
  8.     tools:context=".Activity.BackBookActivity">
  9.     <View
  10.         android:id="@+id/view6"
  11.         android:layout_width="0dp"
  12.         android:layout_height="50dp"
  13.         android:background="#80D3F8"
  14.         app:layout_constraintEnd_toEndOf="parent"
  15.         app:layout_constraintStart_toStartOf="parent"
  16.         app:layout_constraintTop_toTopOf="parent" />
  17.     <TextView
  18.         android:id="@+id/textView17"
  19.         android:layout_width="wrap_content"
  20.         android:layout_height="wrap_content"
  21.         android:text="归还图书"
  22.         android:textColor="#fff"
  23.         android:textSize="20sp"
  24.         android:textStyle="bold"
  25.         app:layout_constraintBottom_toBottomOf="@+id/view6"
  26.         app:layout_constraintEnd_toEndOf="@+id/view6"
  27.         app:layout_constraintStart_toStartOf="@+id/view6"
  28.         app:layout_constraintTop_toTopOf="@+id/view6" />
  29.     <LinearLayout
  30.         android:id="@+id/linearLayout4"
  31.         android:layout_width="0dp"
  32.         android:layout_height="wrap_content"
  33.         android:layout_marginStart="8dp"
  34.         android:layout_marginTop="8dp"
  35.         android:layout_marginEnd="8dp"
  36.         android:gravity="center"
  37.         android:orientation="horizontal"
  38.         app:layout_constraintEnd_toEndOf="parent"
  39.         app:layout_constraintStart_toStartOf="parent"
  40.         app:layout_constraintTop_toBottomOf="@+id/view6">
  41.         <EditText
  42.             android:id="@+id/et_id"
  43.             android:layout_width="wrap_content"
  44.             android:layout_height="wrap_content"
  45.             android:ems="10"
  46.             android:hint="请输入学号进行查询"
  47.             android:inputType="textPersonName" />
  48.         <Button
  49.             android:id="@+id/btn_inquire"
  50.             android:layout_width="100dp"
  51.             android:layout_height="30dp"
  52.             android:layout_marginLeft="15dp"
  53.             android:background="@drawable/btn_lr"
  54.             android:text="查询"
  55.             android:textColor="#fff" />
  56.     </LinearLayout>
  57.     <ListView
  58.         android:id="@+id/lv"
  59.         android:layout_width="0dp"
  60.         android:layout_height="0dp"
  61.         android:layout_marginStart="16dp"
  62.         android:layout_marginTop="8dp"
  63.         android:layout_marginEnd="16dp"
  64.         app:layout_constraintBottom_toBottomOf="parent"
  65.         app:layout_constraintEnd_toEndOf="parent"
  66.         app:layout_constraintStart_toStartOf="parent"
  67.         app:layout_constraintTop_toBottomOf="@+id/linearLayout4" />
  68.     <ImageView
  69.         android:id="@+id/back"
  70.         android:layout_width="25dp"
  71.         android:layout_height="25dp"
  72.         android:layout_marginStart="8dp"
  73.         app:layout_constraintBottom_toBottomOf="@+id/view6"
  74.         app:layout_constraintStart_toStartOf="parent"
  75.         app:layout_constraintTop_toTopOf="parent"
  76.         app:srcCompat="@drawable/back" />
  77. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
        在 setButtonClickListener 方法中,用户为 btnInquire 按钮设置了点击监听器。当点击该按钮时,用户首先获取输入框中的学号值,并判断该学号是否为空。
        如果为空,则显示一个 Toast 提示用户输入借阅者的学号;否则,调用 getBorrowInfoByBorrowerId 方法来根据学号查询借阅信息列表。
        如果查询效果为空,显示一个 Toast 提示用户未找到干系借阅信息,并清空搜索框;如果查询效果不为空,则将查询效果设置到 ListView 控件中,并清空搜索框。
        在 getBorrowInfoByBorrowerId 方法中,用户创建了一个 BookHelper 对象,并调用其 getBorrowInfoByBorrowerId 方法来获取借阅信息列表。该方法担当一个借阅者学号作为参数,并返回一个借阅信息列表。
        在 setListViewAdapter 方法中,用户首先创建了一个 BackBookAdapter 对象,并将借阅信息列表作为参数通报给它。然后,将适配器设置给 ListView 控件,以显示借阅信息列表。
        在 initView 方法中,用户使用 findViewById 方法获取了 EditText、Button、ListView 和 ImageView 控件的实例,并将它们生存在相应的变量中。
  1. package com.example.booklendingsystem.Activity;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.widget.Button;
  5. import android.widget.EditText;
  6. import android.widget.ImageView;
  7. import android.widget.ListView;
  8. import android.widget.Toast;
  9. import androidx.appcompat.app.AppCompatActivity;
  10. import com.example.booklendingsystem.Adapter.BackBookAdapter;
  11. import com.example.booklendingsystem.Bean.BorrowInfo;
  12. import com.example.booklendingsystem.Helper.BookHelper;
  13. import com.example.booklendingsystem.R;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. public class BackBookActivity extends AppCompatActivity {
  17.     // 声明变量
  18.     private BackBookAdapter backBookAdapter;
  19.     private EditText etId;
  20.     private Button btnInquire;
  21.     private ListView lv;
  22.     private ImageView back;
  23.     @Override
  24.     protected void onCreate(Bundle savedInstanceState) {
  25.         super.onCreate(savedInstanceState);
  26.         setContentView(R.layout.activity_back_book);
  27.         // 初始化界面
  28.         initView();
  29.         // 设置按钮点击监听器
  30.         setButtonClickListener();
  31.         // 返回
  32.         back();
  33.     }
  34.     // 返回
  35.     private void back() {
  36.         back.setOnClickListener(new View.OnClickListener() {
  37.             @Override
  38.             public void onClick(View v) {
  39.                 finish();
  40.             }
  41.         });
  42.     }
  43.     private void setButtonClickListener() {
  44.         btnInquire.setOnClickListener(new View.OnClickListener() {
  45.             @Override
  46.             public void onClick(View v) {
  47.                 // 获取输入框中的id值
  48.                 String id = etId.getText().toString().trim();
  49.                 // 判断输入框中的id是否为空
  50.                 if (id.isEmpty()) {
  51.                     // 若输入框中的id为空,提示Toast
  52.                     Toast.makeText(BackBookActivity.this, "请输入借阅者的学号!", Toast.LENGTH_SHORT).show();
  53.                 } else {
  54.                
  55.                     // 判断查询结果是否为空
  56.                     if (borrowInfoList.isEmpty()) {
  57.                         // 若查询结果为空,提示Toast
  58.                         Toast.makeText(BackBookActivity.this, "未找到相关借阅信息", Toast.LENGTH_SHORT).show();
  59.                         // 清空搜索框
  60.                         etId.setText("");
  61.                     } else {
  62.                       // 清空搜索框
  63.                         etId.setText("");
  64.                     }
  65.                 }
  66.             }
  67.         });
  68.     }
  69.    
  70.     // 设置ListView控件的适配器
  71.     private void setListViewAdapter(List<BorrowInfo> borrowInfoList) {
  72.               lv.setAdapter(backBookAdapter);
  73.     }
  74.     // 获取控件
  75.     private void initView() {
  76.         etId = findViewById(R.id.et_id);
  77.         btnInquire = findViewById(R.id.btn_inquire);
  78.         lv = findViewById(R.id.lv);
  79.         back = findViewById(R.id.back);
  80.     }
  81. }
复制代码
        到此为止,我们的项目就已经完成了! 
三、获取源码

   
关注公众号《编程乐学》

  

   
后台回复:24012101

  

   
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表