Android移动应用开发(微课视频版)课件 第10章 综合实例:图书馆管理系统_第1页
Android移动应用开发(微课视频版)课件 第10章 综合实例:图书馆管理系统_第2页
Android移动应用开发(微课视频版)课件 第10章 综合实例:图书馆管理系统_第3页
Android移动应用开发(微课视频版)课件 第10章 综合实例:图书馆管理系统_第4页
Android移动应用开发(微课视频版)课件 第10章 综合实例:图书馆管理系统_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章

综合实例:

图书馆管理系统本章是对本书知识点的综合应用,包括GUI、数据存储、短信应用等诸多内容。CONTENTS目录02

系统注册与登录01

系统功能03

管理员功能04

读者功能系统功能0110.1系统功能图书馆管理系统分为管理员和读者两种角色。管理员具有读者管理、图书管理、借阅管理和系统管理四个模块。读者管理负责对读者信息的增删改查;图书管理用于对图书信息的增删改查;借阅管理负责借书和还书功能;系统设置用于设置系统超期期限和超期单位罚金。读者具有图书查询和借书功能。

图书馆管理系统的功能模块如图10.1所示。图书馆管理系统管理员读者图书管理读者管理借还管理系统管理查询图书借阅图书借阅历史图10.1功能模块设计系统注册与登录0210.2.1系统首页其对应布局文件activity_main.xml代码如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:padding="24dp"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:background="#FAFAFA"><TextViewandroid:id="@+id/welcomeText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/app_name"android:textSize="24sp"android:textStyle="bold"android:layout_marginBottom="16dp"android:textColor="#000000"/><!--插入图片--><ImageViewandroid:layout_width="300dp"android:layout_height="300dp"android:src="@drawable/glxt"android:layout_marginBottom="16dp"/><Buttonandroid:id="@+id/btnLogin"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/login"android:layout_marginBottom="16dp"android:backgroundTint="#3F51B5"android:textColor="#FFFFFF"/><Buttonandroid:id="@+id/btnRegister"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/register"android:backgroundTint="#4CAF50"android:textColor="#FFFFFF"/></LinearLayout>图10.2系统首页MainActivity实现了跳转注册页和登录页的功能,并且启动了定时提醒任务。代码如下:packageroduction.librarymanagement;importandroid.Manifest;importandroid.content.Intent;importandroid.os.Bundle;importandroid.widget.Button;importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.app.ActivityCompat;publicclassMainActivityextendsAppCompatActivity{privateButtonbtnLogin,btnRegister;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//DBHelperdbHelper=newDBHelper(this);//SQLiteDatabasedb=dbHelper.getWritableDatabase();//dbHelper.onUpgrade(db,1,2);btnLogin=findViewById(R.id.btnLogin);btnRegister=findViewById(R.id.btnRegister);btnLogin.setOnClickListener(v->{Intentintent=newIntent(MainActivity.this,LoginActivity.class);startActivity(intent);});btnRegister.setOnClickListener(v->{Intentintent=newIntent(MainActivity.this,RegisterActivity.class);startActivity(intent);});//每日发送超期提醒信息ReminderScheduler.scheduleDailyReminder(this);//初始化提醒服务ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.SEND_SMS},1001);}}其中DBHelperdbHelper=newDBHelper(this);SQLiteDatabasedb=dbHelper.getWritableDatabase();dbHelper.onUpgrade(db,1,2);这三行代码用于首次运行时初始化数据库,并写入基础测试数据。ReminderScheduler.scheduleDailyReminder(this);//初始化提醒服务ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.SEND_SMS},1001);用于启动每日的定时任务,并且申请发送短信的权限。10.2.2注册功能登录界面如图10.4所示。“记住我”的功能是通过SharedPreferences实现了记录上次登录的人的信息。图10.4登录界面其布局文件activity_login.xml代码如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="24dp"><EditTextandroid:id="@+id/edtEmail"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/email"/><EditTextandroid:id="@+id/edtPassword"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/password"android:inputType="textPassword"/><CheckBoxandroid:id="@+id/chkRemember"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/remember_me"/><Buttonandroid:id="@+id/btnLogin"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/login"/></LinearLayout>LoginActivity.java代码如下:packageroduction.librarymanagement;importandroid.content.Intent;importandroid.content.SharedPreferences;importandroid.os.Bundle;importandroid.widget.Button;importandroid.widget.CheckBox;importandroid.widget.EditText;importandroid.widget.Toast;importandroidx.appcompat.app.AppCompatActivity;publicclassLoginActivityextendsAppCompatActivity{privateEditTextedtEmail,edtPassword;privateCheckBoxchkRemember;privateButtonbtnLogin;privateDBHelperdbHelper;privateSharedPreferencessharedPreferences;privatestaticfinalStringPREFS_NAME="LoginPrefs";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);edtEmail=findViewById(R.id.edtEmail);edtPassword=findViewById(R.id.edtPassword);chkRemember=findViewById(R.id.chkRemember);btnLogin=findViewById(R.id.btnLogin);dbHelper=newDBHelper(this);sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);loadSavedCredentials();btnLogin.setOnClickListener(v->{Stringemail=edtEmail.getText().toString();Stringpassword=edtPassword.getText().toString();intuserId=dbHelper.validateUser(email,password);if(userId!=-1){if(chkRemember.isChecked()){saveCredentials(email,password);}else{clearCredentials();}Stringrole=dbHelper.getUserRole(userId);Intentintent;if("admin".equals(role)){intent=newIntent(LoginActivity.this,AdminDashboardActivity.class);}else{intent=newIntent(LoginActivity.this,BorrowActivity.class);}intent.putExtra("student_id",userId);startActivity(intent);finish();}else{Toast.makeText(this,"登录失败:账号或密码错误",Toast.LENGTH_SHORT).show();}});}privatevoidsaveCredentials(Stringemail,Stringpassword){SharedPreferences.Editoreditor=sharedPreferences.edit();editor.putString("email",email);editor.putString("password",password);editor.putBoolean("remember",true);editor.apply();}privatevoidloadSavedCredentials(){booleanremember=sharedPreferences.getBoolean("remember",false);if(remember){edtEmail.setText(sharedPreferences.getString("email",""));edtPassword.setText(sharedPreferences.getString("password",""));chkRemember.setChecked(true);}}privatevoidclearCredentials(){sharedPreferences.edit().clear().apply();}}10.2.4数据库操作类DBHelper图书馆管理系统中Sqlite数据库repairdb中创建了三个数据表,分别是Users、Books和BorrowRecords表。操作数据库是基于DBHelper这个类,实现了数据库的创建、测试数据插入,以及数据表的增删改查功能。DBHelper.java的代码如下:packageroduction.librarymanagement;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Locale;publicclassDBHelperextendsSQLiteOpenHelper{privatestaticfinalStringDB_NAME="library.db";privatestaticfinalintDB_VERSION=1;publicDBHelper(Contextcontext){super(context,DB_NAME,null,DB_VERSION);}@OverridepublicvoidonCreate(SQLiteDatabasedb){//db.execSQL("CREATETABLEUsers(idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXT,roleTEXT,emailTEXTUNIQUE,passwordTEXT,phoneTEXTUNIQUE)");//db.execSQL("CREATETABLEBooks(idINTEGERPRIMARYKEYAUTOINCREMENT,titleTEXT,authorTEXT,available_copiesINTEGER,total_copiesINTEGER)");//db.execSQL("CREATETABLEBorrowRecords(idINTEGERPRIMARYKEYAUTOINCREMENT,user_idINTEGER,book_idINTEGER,borrow_dateTEXT,due_dateTEXT,return_dateTEXT,fineINTEGER)");//////SampleUsers//db.execSQL("INSERTINTOUsers(name,role,email,password,phone)VALUES('AdminUser','admin','admin@','admin123',)");//db.execSQL("INSERTINTOUsers(name,role,email,password,phone)VALUES('StudentUser','student','student@','student123',)");//db.execSQL("INSERTINTOUsers(name,role,email,password,phone)VALUES('a1','student','a1@','1234',)");//db.execSQL("INSERTINTOUsers(name,role,email,password,phone)VALUES('a2','student','a2@','1234',)");//////SampleBooks//db.execSQL("INSERTINTOBooks(title,author,available_copies,total_copies)VALUES('JavaProgramming','JohnDoe',5,5)");//db.execSQL("INSERTINTOBooks(title,author,available_copies,total_copies)VALUES('AndroidDevelopment','JaneSmith',3,3)");}privatevoidinsertTestData(SQLiteDatabasedb){//插入20条图书数据for(inti=1;i<=20;i++){ContentValuesbook=newContentValues();book.put("title","测试图书"+i);book.put("author","作者"+((char)('A'+i%5)));book.put("available_copies",5+(i%3));db.insert("Books",null,book);}//插入20条借书记录(假设用户ID1-3之间轮流借阅)SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd",Locale.getDefault());Calendarcalendar=Calendar.getInstance();for(inti=1;i<=20;i++){ContentValuesborrow=newContentValues();borrow.put("user_id",(i%3)+1);borrow.put("book_id",i);calendar.set(2024,Calendar.JANUARY,i);borrow.put("borrow_date",sdf.format(calendar.getTime()));calendar.add(Calendar.DAY_OF_MONTH,14);borrow.put("due_date",sdf.format(calendar.getTime()));borrow.put("fine",0);if(i%4==0){calendar.add(Calendar.DAY_OF_MONTH,1);borrow.put("return_date",sdf.format(calendar.getTime()));}else{borrow.putNull("return_date");}db.insert("BorrowRecords",null,borrow);}}@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){db=this.getWritableDatabase();db.execSQL("DROPTABLEIFEXISTSUsers");db.execSQL("DROPTABLEIFEXISTSBooks");db.execSQL("DROPTABLEIFEXISTSBorrowRecords");onCreate(db);}//验证用户是否存在并返回其IDpublicintvalidateUser(Stringemail,Stringpassword){SQLiteDatabasedb=this.getReadableDatabase();Cursorcursor=db.rawQuery("SELECTidFROMUsersWHEREemail=?ANDpassword=?",newString[]{email,password});if(cursor.moveToFirst()){intuserId=cursor.getInt(0);cursor.close();returnuserId;}cursor.close();return-1;//用户不存在或密码错误}//获取用户的角色publicStringgetUserRole(intuserId){SQLiteDatabasedb=this.getReadableDatabase();Cursorcursor=db.rawQuery("SELECTroleFROMUsersWHEREid=?",newString[]{String.valueOf(userId)});if(cursor.moveToFirst()){Stringrole=cursor.getString(0);cursor.close();returnrole;}cursor.close();returnnull;}}管理员功能0310.3.1功能界面其布局文件activity_admin_dashboard.xml代码如下:<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><!--2×2网格容器--><androidx.gridlayout.widget.GridLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:columnCount="2"app:rowCount="2"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"><!--1管理图书--><ImageButtonandroid:id="@+id/manageBooksBtn"android:layout_width="150dp"android:layout_height="150dp"android:src="@drawable/tsgl"android:scaleType="fitCenter"android:adjustViewBounds="true"android:background="?attr/selectableItemBackgroundBorderless"android:contentDescription="@string/manage_books"android:layout_margin="8dp"/>图10.5系统功能界面<!--2管理学生--><ImageButtonandroid:id="@+id/manageStudentsBtn"android:layout_width="150dp"android:layout_height="150dp"android:src="@drawable/dzgl"android:scaleType="fitCenter"android:adjustViewBounds="true"android:background="?attr/selectableItemBackgroundBorderless"android:contentDescription="@string/manage_students"android:layout_margin="8dp"/><!--3借阅管理--><ImageButtonandroid:id="@+id/returnBookBtn"android:layout_width="150dp"android:layout_height="150dp"android:src="@drawable/jygl"android:scaleType="fitCenter"android:adjustViewBounds="true"android:background="?attr/selectableItemBackgroundBorderless"android:contentDescription="@string/borrow_book"android:layout_margin="8dp"/><!--3系统设置--><ImageButtonandroid:id="@+id/borrowBookBtn"android:layout_width="150dp"android:layout_height="150dp"android:src="@drawable/xtsz"android:scaleType="fitCenter"android:adjustViewBounds="true"android:background="?attr/selectableItemBackgroundBorderless"android:contentDescription="@string/return_book"android:layout_margin="8dp"/></androidx.gridlayout.widget.GridLayout></androidx.constraintlayout.widget.ConstraintLayout>AdminDashboardActivity.java代码如下:packageroduction.librarymanagement;importandroid.content.Intent;importandroid.os.Bundle;importandroidx.appcompat.app.AppCompatActivity;publicclassAdminDashboardActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_admin_dashboard);findViewById(R.id.manageBooksBtn).setOnClickListener(v->startActivity(newIntent(this,ManageBooksActivity.class)));findViewById(R.id.manageStudentsBtn).setOnClickListener(v->startActivity(newIntent(this,ManageStudentsActivity.class)));findViewById(R.id.borrowBookBtn).setOnClickListener(v->startActivity(newIntent(this,AdminProfileActivity.class)));findViewById(R.id.returnBookBtn).setOnClickListener(v->startActivity(newIntent(this,ReturnActivity.class)));}}10.3.2图书管理图10.6系统功能界面管理员的图书管理界面如图10.6所示。长按列表中的某一项,会弹出上下文菜单,如图10.7所示,实现对某一本图书的修改和删除操作。图10.7图书管理上下文菜单其布局文件activity_borrow_books.xml代码如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="/apk/res-auto"android:orientation="vertical"android:padding="16dp"><Buttonandroid:id="@+id/addBookBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/add_book"/><ListViewandroid:id="@+id/listBooks"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/><com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomNavigationView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?android:attr/windowBackground"app:menu="@menu/admin_bottom_nav_menu"android:layout_gravity="bottom"/></LinearLayout>ManageBooksActivity.java代码如下:packageroduction.librarymanagement;importandroid.app.AlertDialog;importandroid.content.ContentValues;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ListView;importandroidx.appcompat.app.AppCompatActivity;importcom.google.android.material.bottomnavigation.BottomNavigationView;importjava.util.ArrayList;importjava.util.List;publicclassManageBooksActivityextendsAppCompatActivity{privateListViewlistView;privateArrayAdapter<Book>adapter;privateList<Book>books;privateDBHelperdbHelper;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_manage_books);dbHelper=newDBHelper(this);listView=findViewById(R.id.listBooks);books=loadBooksFromDatabase();adapter=newBookAdapter(this,books);listView.setAdapter(adapter);//Long-clicktoeditordeletebooklistView.setOnItemLongClickListener((parent,view,position,id)->{Bookbook=books.get(position);String[]options={"Edit","Delete"};newAlertDialog.Builder(this).setTitle(book.getTitle()).setItems(options,(dialog,which)->{if(which==0){showEditBookDialog(book);}else{deleteBook(book.getId());books.remove(position);adapter.notifyDataSetChanged();}}).show();returntrue;});ButtonaddBookBtn=findViewById(R.id.addBookBtn);addBookBtn.setOnClickListener(v->showAddBookDialog());BottomNavigationViewbottomNav=findViewById(R.id.bottomNavigationView1);AdminBottomNavUtil.setupBottomNavigation(this,bottomNav,R.id.nav_books);}privateList<Book>loadBooksFromDatabase(){List<Book>bookList=newArrayList<>();SQLiteDatabasedb=dbHelper.getReadableDatabase();Cursorcursor=db.rawQuery("SELECT*FROMBooks",null);if(cursor.moveToFirst()){do{Bookbook=newBook(cursor.getInt(0),cursor.getString(1),cursor.getString(2),cursor.getInt(3));bookList.add(book);}while(cursor.moveToNext());}cursor.close();returnbookList;}privatevoiddeleteBook(intbookId){SQLiteDatabasedb=dbHelper.getWritableDatabase();db.delete("Books","id=?",newString[]{String.valueOf(bookId)});}privatevoidshowAddBookDialog(){ViewdialogView=getLayoutInflater().inflate(R.layout.dialog_add_book,null);EditTexttitleInput=dialogView.findViewById(R.id.inputTitle);EditTextauthorInput=dialogView.findViewById(R.id.inputAuthor);EditTextcopiesInput=dialogView.findViewById(R.id.inputCopies);newAlertDialog.Builder(this).setTitle("AddBook").setView(dialogView).setPositiveButton("Add",(dialog,which)->{Stringtitle=titleInput.getText().toString();Stringauthor=authorInput.getText().toString();intcopies=Integer.parseInt(copiesInput.getText().toString());addBookToDatabase(title,author,copies);books.clear();books.addAll(loadBooksFromDatabase());adapter.notifyDataSetChanged();}).setNegativeButton("Cancel",null).show();}privatevoidshowEditBookDialog(Bookbook){ViewdialogView=getLayoutInflater().inflate(R.layout.dialog_add_book,null);EditTexttitleInput=dialogView.findViewById(R.id.inputTitle);EditTextauthorInput=dialogView.findViewById(R.id.inputAuthor);EditTextcopiesInput=dialogView.findViewById(R.id.inputCopies);titleInput.setText(book.getTitle());authorInput.setText(book.getAuthor());copiesInput.setText(String.valueOf(book.getAvailableCopies()));newAlertDialog.Builder(this).setTitle("EditBook").setView(dialogView).setPositiveButton("Update",(dialog,which)->{StringnewTitle=titleInput.getText().toString();StringnewAuthor=authorInput.getText().toString();intnewCopies=Integer.parseInt(copiesInput.getText().toString());updateBookInDatabase(book.getId(),newTitle,newAuthor,newCopies);books.clear();books.addAll(loadBooksFromDatabase());adapter.notifyDataSetChanged();}).setNegativeButton("Cancel",null).show();}privatevoidaddBookToDatabase(Stringtitle,Stringauthor,intcopies){SQLiteDatabasedb=dbHelper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put("title",title);values.put("author",author);values.put("available_copies",copies);values.put("total_copies",copies);db.insert("Books",null,values);}privatevoidupdateBookInDatabase(intid,Stringtitle,Stringauthor,inttotalCopies){SQLiteDatabasedb=dbHelper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put("title",title);values.put("author",author);values.put("total_copies",totalCopies);values.put("available_copies",totalCopies);//resetavailableforsimplicitydb.update("Books",values,"id=?",newString[]{String.valueOf(id)});}}10.3.3读者管理读者管理界面如图10.8所示。图10.8系统功能界面其布局文件activity_manage_students.xml代码如下:<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="/apk/res-auto"android:orientation="vertical"android:padding="16dp"><Buttonandroid:id="@+id/addStudentBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/add_student"/><ListViewandroid:id="@+id/listStudents"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/><!--底部导航栏--><com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomNavigationView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?android:attr/windowBackground"app:menu="@menu/admin_bottom_nav_menu"android:layout_gravity="bottom"/></LinearLayout>ManageStudentsActivity.java代码如下:packageroduction.librarymanagement;importandroid.app.AlertDialog;importandroid.content.ContentValues;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ListView;importandroidx.appcompat.app.AppCompatActivity;importcom.google.android.material.bottomnavigation.BottomNavigationView;importjava.util.ArrayList;importjava.util.List;publicclassManageStudentsActivityextendsAppCompatActivity{privateListViewlistView;privateArrayAdapter<Student>adapter;privateList<Student>students;privateDBHelperdbHelper;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_manage_students);dbHelper=newDBHelper(this);listView=findViewById(R.id.listStudents);students=loadStudentsFromDatabase();adapter=newStudentAdapter(this,students);listView.setAdapter(adapter);ButtonaddStudentBtn=findViewById(R.id.addStudentBtn);addStudentBtn.setOnClickListener(v->showAddStudentDialog());listView.setOnItemLongClickListener((parent,view,position,id)->{Studentstudent=students.get(position);newAlertDialog.Builder(this).setTitle("DeleteStudent").setMessage("Delete"+student.getName()+"?").setPositiveButton("Yes",(dialog,which)->{deleteStudent(student.getId());students.remove(position);adapter.notifyDataSetChanged();}).setNegativeButton("No",null).show();returntrue;});BottomNavigationViewbottomNav=findViewById(R.id.bottomNavigationView1);AdminBottomNavUtil.setupBottomNavigation(this,bottomNav,R.id.nav_students);}privateList<Student>loadStudentsFromDatabase(){List<Student>studentList=newArrayList<>();SQLiteDatabasedb=dbHelper.getReadableDatabase();Cursorcursor=db.rawQuery("SELECTid,name,emailFROMUsersWHERErole='student'",null);if(cursor.moveToFirst()){do{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论