终于做出来了,之前的图书管理系统都是用io流实现的,信息存储到txt文件中,之前因为选修课接触过数据库,一直就希望能安卓与数据库结合一起来巩固一下知识,话不多说,直接看代码:
连接数据库的方法:https://www.cnblogs.com/panqiaoyan/p/12869971.html
一、设置各种界面xml文件
1、activity_main.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#FFFFFF"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:layout_gravity="center" android:paddingLeft="16dp" android:paddingRight="16dp" android:text="图书管理系统" android:textSize="30dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="20dp" android:src="@drawable/pic_logo1"/> <!-- 用户名子布局,水平布局,包含一个TextView控件与EditView控件 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="5dp"> <TextView android:padding="8dp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="30dp" android:layout_marginLeft="70dp" android:text="用户名:" android:gravity="center" android:textSize="20dp"/> <EditText android:id="@+id/username_text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginTop="30dp" android:layout_marginRight="90dp" android:layout_weight="2" android:background="@drawable/eidttext_background" android:hint="请输入用户名" android:maxLines="1" android:padding="8dp" /> </LinearLayout> <!-- 密码子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:padding="8dp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="30dp" android:layout_marginLeft="70dp" android:text="密码:" android:gravity="center" android:textSize="20dp"/> <EditText android:padding="8dp" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:id="@+id/password_text" android:layout_marginTop="30dp" android:layout_marginLeft="0dp" android:layout_marginRight="90dp" android:maxLines="1" android:hint="请输入密码" android:background="@drawable/eidttext_background" android:inputType="textPassword"/> <!--inputType是设置密码输入框的文本是密码的形式,这步很关键--> </LinearLayout> <!-- 记住密码子布局--> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <CheckBox android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkbox_text" android:layout_marginLeft="90dp" android:checked="false" android:text="记住密码" android:textSize="12dp"/> <CheckBox android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/password_checkbook" android:layout_marginLeft="70dp" android:checked="false" android:text="显示密码" android:textSize="12dp" /> </LinearLayout> <!-- 注册登录按钮子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="30dp" android:layout_marginLeft="40dp"> <!-- 注册按钮--> <Button android:id="@+id/register_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="60dp" android:backgroundTint="#000000" android:paddingRight="20dp" android:paddingLeft="20dp" android:textSize="20dp" android:textColor="#FFFFFF" android:text="注册"/> <!--登录按钮--> <Button android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:backgroundTint="#000000" android:paddingRight="20dp" android:paddingLeft="20dp" android:textSize="20dp" android:textColor="#FFFFFF" android:text="登录"/> </LinearLayout> </LinearLayout>
2.注册界面,activity_register.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="70dp" android:text="用户注册" android:textSize="35dp" /> <!-- 用户名子布局,水平布局,包含一个TextView控件与EditView控件 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:padding="8dp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="30dp" android:layout_marginLeft="70dp" android:text="用户名:" android:gravity="right" android:textSize="20dp"/> <EditText android:id="@+id/newusername_text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginTop="30dp" android:layout_marginRight="90dp" android:layout_weight="2" android:background="@drawable/eidttext_background" android:hint="请输入用户名" android:maxLines="1" android:padding="8dp" /> </LinearLayout> <!-- 密码子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:padding="8dp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="30dp" android:layout_marginLeft="70dp" android:text="密码:" android:gravity="right" android:textSize="20dp"/> <EditText android:padding="8dp" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:id="@+id/newpassword_text" android:layout_marginTop="30dp" android:layout_marginLeft="0dp" android:layout_marginRight="90dp" android:maxLines="1" android:hint="请输入密码" android:background="@drawable/eidttext_background" android:inputType="textPassword"/> <!--inputType是设置密码输入框的文本是密码的形式,这步很关键--> </LinearLayout> <!-- 再次确认密码--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginRight="0dp" android:layout_marginTop="30dp" android:layout_weight="1" android:gravity="right" android:padding="0dp" android:paddingLeft="0dp" android:paddingRight="0dp" android:text="确认密码:" android:textSize="20dp" /> <EditText android:padding="8dp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:id="@+id/new_again_password_text" android:layout_marginTop="30dp" android:layout_marginLeft="0dp" android:layout_marginRight="90dp" android:maxLines="1" android:hint="请再次输入密码" android:background="@drawable/eidttext_background" android:inputType="textPassword"/> <!--inputType是设置密码输入框的文本是密码的形式,这步很关键--> </LinearLayout> <CheckBox android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/new_password_checkbook" android:layout_marginLeft="220dp" android:checked="false" android:text="显示密码" android:textSize="12dp" /> <!-- 注册以及返回按钮子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="30dp" android:layout_marginLeft="40dp"> <!-- 注册按钮--> <Button android:id="@+id/yes_register_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="60dp" android:backgroundTint="#000000" android:paddingRight="20dp" android:paddingLeft="20dp" android:textSize="20dp" android:textColor="#FFFFFF" android:text="注册"/> <!--返回按钮--> <Button android:id="@+id/back_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:backgroundTint="#000000" android:paddingRight="20dp" android:paddingLeft="20dp" android:textSize="20dp" android:textColor="#FFFFFF" android:text="返回"/> </LinearLayout> <ImageView android:layout_width="68dp" android:layout_height="57dp" android:layout_gravity="center" android:layout_marginTop="90dp" android:src="@drawable/pic_logo1" /> </LinearLayout>
3.功能界面,activity_library_function.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/find_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查询书籍" android:textSize="25dp" android:textColor="#FFFFFF" android:background="@drawable/eidttext_background" android:backgroundTint="#000000" android:layout_marginTop="70dp" android:layout_gravity="center" android:paddingLeft="50dp" android:paddingRight="50dp" android:paddingTop="10dp" android:paddingBottom="10dp"/> <Button android:id="@+id/add_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="增添书籍" android:textSize="25dp" android:textColor="#FFFFFF" android:background="@drawable/eidttext_background" android:backgroundTint="#000000" android:layout_marginTop="70dp" android:layout_gravity="center" android:paddingLeft="50dp" android:paddingRight="50dp" android:paddingTop="10dp" android:paddingBottom="10dp"/> <Button android:id="@+id/alter_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改书籍" android:textSize="25dp" android:textColor="#FFFFFF" android:background="@drawable/eidttext_background" android:backgroundTint="#000000" android:layout_marginTop="70dp" android:layout_gravity="center" android:paddingLeft="50dp" android:paddingRight="50dp" android:paddingTop="10dp" android:paddingBottom="10dp"/> <Button android:id="@+id/cancel_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除书籍" android:textSize="25dp" android:textColor="#FFFFFF" android:background="@drawable/eidttext_background" android:backgroundTint="#000000" android:layout_marginTop="70dp" android:layout_gravity="center" android:paddingLeft="50dp" android:paddingRight="50dp" android:paddingTop="10dp" android:paddingBottom="10dp"/> </LinearLayout>
4.查询书籍页面,find.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="300dp" android:layout_height="match_parent" android:background="@drawable/eidttext_background" android:backgroundTint="#FFFFFF"> <!-- 书籍名称子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍名称:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/find_bookname_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <!-- 操作结果文本框--> <EditText android:id="@+id/find_result_text" android:layout_width="250dp" android:layout_height="90dp" android:layout_marginTop="15dp" android:layout_gravity="center" android:textColor="#000000" android:background="@drawable/eidttext_background"/> <!-- 确定以及取消按钮--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="20dp" android:gravity="center" > <!-- 确定按钮--> <Button android:id="@+id/find_yes_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="确定"/> <!--登录按钮--> <Button android:id="@+id/find_no_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="取消"/> </LinearLayout> </LinearLayout>
5.增添书籍页面,activity_dialog.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="300dp" android:layout_height="match_parent" android:background="@drawable/eidttext_background" android:backgroundTint="#FFFFFF"> <!-- 书籍名称子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍名称:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/add_bookname_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <!-- 书籍编号子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍编号:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/add_bookID_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" android:maxLines="5" /> </LinearLayout> <!-- 书籍价格子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍价格:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/add_bookPrice_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <!-- 操作结果文本框--> <EditText android:id="@+id/add_result_text" android:layout_width="250dp" android:layout_height="90dp" android:layout_marginTop="15dp" android:layout_gravity="center" android:background="@drawable/eidttext_background" android:textColor="#000000"/> <!-- 确定以及取消按钮--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="20dp" android:gravity="center" > <!-- 确定按钮--> <Button android:id="@+id/add_yes_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="确定"/> <!--登录按钮--> <Button android:id="@+id/add_no_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="取消"/> </LinearLayout> </LinearLayout>
6.修改书籍信息页面,alter_activity.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="300dp" android:layout_height="match_parent" android:background="@drawable/eidttext_background" android:backgroundTint="#FFFFFF"> <!-- 书籍名称子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp" android:layout_gravity="center"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="原书籍名称:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/alter_bookname_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp" android:layout_gravity="center"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍新名称:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/new_alter_bookname_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <!-- 书籍编号子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍新编号:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/alter_bookID_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" android:maxLines="5" /> </LinearLayout> <!-- 书籍价格子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍新价格:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/alter_bookPrice_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <!-- 操作结果文本框--> <EditText android:id="@+id/alter_result_text" android:layout_width="250dp" android:layout_height="90dp" android:layout_marginTop="15dp" android:layout_gravity="center" android:textColor="#000000" android:background="@drawable/eidttext_background"/> <!-- 确定以及取消按钮--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="20dp" android:gravity="center" > <!-- 确定按钮--> <Button android:id="@+id/alter_yes_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="确定"/> <!--登录按钮--> <Button android:id="@+id/alter_no_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="取消"/> </LinearLayout> </LinearLayout>
7.删除书籍信息页面,cancel_activity.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="300dp" android:layout_height="match_parent" android:background="@drawable/eidttext_background" android:backgroundTint="#FFFFFF"> <!-- 书籍名称子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍名称:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/cancel_bookname_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" /> </LinearLayout> <!-- 书籍编号子布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:text="书籍编号:" android:textSize="20dp" android:textColor="#000000" /> <EditText android:id="@+id/cancel_bookID_text" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:layout_marginRight="20dp" android:background="@drawable/eidttext_background" android:layout_gravity="center" android:textColor="#000000" android:maxLines="5" /> </LinearLayout> <!-- 操作结果文本框--> <EditText android:id="@+id/cancel_result_text" android:layout_width="250dp" android:layout_height="90dp" android:layout_marginTop="15dp" android:layout_gravity="center" android:textColor="#000000" android:background="@drawable/eidttext_background"/> <!-- 确定以及取消按钮--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="20dp" android:gravity="center" > <!-- 确定按钮--> <Button android:id="@+id/cancel_yes_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="确定"/> <!--登录按钮--> <Button android:id="@+id/cancel_no_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="#000000" android:paddingRight="10dp" android:paddingLeft="10dp" android:textSize="15dp" android:textColor="#FFFFFF" android:text="取消"/> </LinearLayout> </LinearLayout>
注意:上面的四个功能页面都是采用了对话框式的活动,所以要在AndroidManist.xml文件中每个活动里加入一句:android:theme="@style/Theme.AppCompat.Dialog"
AndroidManist.xml代码:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.library"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".cancel" android:theme="@style/Theme.AppCompat.Dialog"></activity> <activity android:name=".find" android:theme="@style/Theme.AppCompat.Dialog"></activity> <activity android:name=".Alter_activity" android:theme="@style/Theme.AppCompat.Dialog" /> <activity android:name=".Dialog_Activity" android:theme="@style/Theme.AppCompat.Dialog" /> <activity android:name=".Library_function" /> <activity android:name=".RegisterActivity" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
二、java文件
登录注册界面的java代码:
1.user.java:用户信息类
package com.example.library; /** * * @author Asus */ public class User { private String username;//用户名 private String password;//用户密码 public User(){} public User(String username, String password) { this.username = username; this.password = password; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public String getPassword() { return password; } }
2.userDao.java:登录注册功能接口
package com.example.library; import android.content.Context; import java.io.FileNotFoundException; /** *这是一个用户登录注册接口 * @author Asus */ public interface UserDao { /** * 这是判断登录是否成功的方法 * @param username 用户名 * @param password 用户的密码 * @return 用户是否登录成功 */ public abstract boolean isloging(Context context,String username, String password) ; /** * 这是注册方法 * */ public abstract boolean register(Context context,User user); }
3.userDaoImpl.java:登录注册功能实现类
package com.example.library; import android.content.Context; import android.content.res.Resources; import android.os.Environment; import android.util.Log; import android.widget.Toast; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.Properties; import java.util.Set; /** * 用户登录注册功能实现类 * * @author Asus */ public class UserDaoImpl implements UserDao { private static File sdpath= Environment.getExternalStorageDirectory(); private static File myfile=new File(sdpath,"panq.txt"); //创建类的时候就创建文件 static { try { if(myfile.exists()) System.out.println("文件已存在"); else{ myfile.createNewFile(); } } catch (IOException ex) { ex.printStackTrace(); } } /** * 登录功能 * @param context Activity的上面的某一层是Context,所以传值过来的是一个Activity,此处可以写成Context * @param username 用户名 * @param password 用户的密码 * @return */ @Override public boolean isloging(Context context,String username, String password) { boolean flag =false;//判断是否登录成功 BufferedReader br = null; try{ //读取文件信息,看用户名与密码是否匹配 br = new BufferedReader(new FileReader(myfile)); String line = null; while ((line = br.readLine()) != null) { String[] date = line.split("="); System.out.println("用户名:"+date[0]+",密码:"+date[1]); if (date[0].equals(username) && date[1].equals(password)) { //信息匹配,登录成功 flag = true; break; } } }catch (Exception e1){ e1.printStackTrace(); }finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } return flag; } /** * * @param context Activity的上面的某一层是Context,所以传值过来的是一个Activity,此处可以写成Context * @param user 用户信息 * @return */ @Override public boolean register(Context context,User user) { BufferedWriter bw=null; BufferedReader br=null; boolean isregister=false;//判断是否注册成功 try{ //先读取文件,查看用户名是否已注册 br=new BufferedReader(new FileReader(myfile)); boolean flag=myload(user.getUsername());//通过myload函数判断用户名是否已存在 if(!flag){ //用户名不存在,即可以使用该用户名,注册成功 isregister=true; //把用户信息写到文件中 bw=new BufferedWriter(new FileWriter(myfile,true)); bw.write(user.getUsername()+"="+user.getPassword()); bw.newLine(); bw.flush(); } }catch (Exception e){ e.printStackTrace(); }finally { if (br!=null&bw != null) { try { bw.close(); br.close(); } catch (IOException e) { e.printStackTrace(); } } } return isregister; } /** * 判断用户名是否已存在 * @param username 用户注册时输入的用户名 * @return * @throws IOException */ private boolean myload(String username) throws IOException { boolean flag = false; Properties p = new Properties(); BufferedReader br = new BufferedReader(new FileReader(myfile)); p.load(br); br.close(); Set<String> key = p.stringPropertyNames();//获取所有已注册的用户名 for (String user : key) { if (username.equals(user)) { flag = true; break; } } return flag; } }
4.MainActivity.java
package com.example.library; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.text.InputType; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText username; //用户名输入框 private EditText password; //密码输入框 private Button LoginButton; //登录按钮 private Button RegisterButton; //注册按钮 private CheckBox passwordCheck; //显示密码复选框 // private EditText new_username;//注册页面的用户名输入框 // private EditText new_password;//注册页面的密码输入框 // private EditText new_again_password;//注册页面的再次输入密码框 private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); verifyStoragePermissions(this); initialize(); //初始化各种控件 ischeck(passwordCheck); //设置密码显示或不显示 LoginButton.setOnClickListener(this); RegisterButton.setOnClickListener(this); } /** * 初始化控件 */ private void initialize(){ username=(EditText)findViewById(R.id.username_text); //创建用户名输入框对象 password=(EditText)findViewById(R.id.password_text); //创建密码输入框对象 RegisterButton=(Button)findViewById(R.id.register_button); //创建注册按钮对象 LoginButton =(Button)findViewById(R.id.login_button); //创建登录按钮对象 passwordCheck=(CheckBox)findViewById(R.id.password_checkbook); //创建显示密码复选框对象 } /** * 设置显示密码的点击操作 * */ private void ischeck(CheckBox passwordCheck){ passwordCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ //显示明文,即设置为可见的密码 password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); }else{ //不显示明文,即设置为不可见的密码 password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); } } }); } /** * 点击登录或注册按钮时触发的点击事件 * @param v */ @Override public void onClick(View v) { switch (v.getId()){ case R.id.login_button://登录的点击事件 login(); break; case R.id.register_button://注册的点击事件 //点击注册按钮时转去第二个活动页面 Intent intent=new Intent(MainActivity.this,RegisterActivity.class); startActivity(intent); break; default: break; } } /** * 登录 */ private void login() { //获取输入的用户名与密码 String usernametext=username.getText().toString().trim(); String passwordtext=password.getText().toString().trim(); //System.out.println(usernametext+" "+passwordtext); //定义用户名和密码规则 String usernameregex = "[a-zA-Z]{5}"; String passwordregex = "[0-9]{5}"; //校验用户名 if (!(usernametext.matches(usernameregex))) { // JOptionPane.showMessageDialog(this, "用户名格式不对,请输入5位单词字母)"); // new AlertDialog.Builder(MainActivity.this) // .setTitle("error").setMessage("用户名格式不对,请输入5位单词字母") // .setPositiveButton("好的",null).show(); Toast.makeText(MainActivity.this,"用户名格式不对,请输入5位单词字母",Toast.LENGTH_LONG).show(); //清空用户名框文本,并把输入光标放回到输入框 this.username.setText(""); this.username.requestFocus(); return; } //校验密码 if (!(passwordtext.matches(passwordregex))) { //JOptionPane.showMessageDialog(this, "密码格式不对,请输入6-12位任意字符)"); Toast.makeText(MainActivity.this,"密码格式不正确,请输入6-12位任意字符",Toast.LENGTH_LONG).show(); // new AlertDialog.Builder(MainActivity.this) // .setTitle("error").setMessage("密码格式不正确,请输入6-12位任意字符") // .setPositiveButton("好的",null).show(); // //清空用户名框文本,并把输入光标放回到输入框 this.password.setText(""); this.username.requestFocus(); return; } //调用登录功能 UserDaoImpl loginImpl=new UserDaoImpl(); boolean flag=loginImpl.isloging(this,usernametext,passwordtext); if(!flag){ //如果登录不成功 Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_LONG).show(); //将用户名框与密码框清空,并把光标放回框中 this.username.setText(""); this.password.setText(""); this.username.requestFocus(); this.password.requestFocus(); }else{ //登录成功 Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_LONG).show(); Intent intent=new Intent(MainActivity.this,Library_function.class); startActivity(intent); } } private void openPerssion() { verifyStoragePermissions(this); } /** * @des 权限组的获取 * @author DELL * @time 10:44 */ public void verifyStoragePermissions(Activity activity) { try { //检测是否有写的权限 int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE"); if (permission != PackageManager.PERMISSION_GRANTED) { // 没有写的权限,去申请写的权限,会弹出对话框 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } } catch (Exception e) { e.printStackTrace(); } } }
5.RegisetrActivity.java:注册功能的活动代码
package com.example.library; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.text.InputType; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.Toast; public class RegisterActivity extends AppCompatActivity implements View.OnClickListener{ private EditText new_username;//注册页面的用户名输入框 private EditText new_password;//注册页面的密码输入框 private EditText new_again_password;//注册页面的再次输入密码框 private Button new_register;//注册按钮 private Button back;//返回按钮 private CheckBox ispassword;//显示密码按钮 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); init();//初始化控件 ischeck(ispassword); new_register.setOnClickListener(this); back.setOnClickListener(this); } /** * 初始化控件 */ private void init() { new_username=(EditText)findViewById(R.id.newusername_text);//创建注册页面的用户名输入框对象 new_password=(EditText)findViewById(R.id.newpassword_text);//创建注册页面的密码输入框对象 new_again_password=(EditText)findViewById(R.id.new_again_password_text);//创建注册页面的再次确认密码输入框对象 new_register=(Button)findViewById(R.id.yes_register_button);//创建注册按钮对象 back=(Button)findViewById(R.id.back_button);//创建返回按钮对象 ispassword=(CheckBox)findViewById(R.id.new_password_checkbook);//创建显示密码按钮对象 } private void register(){ //获取输入的用户名与密码 String usernametext=new_username.getText().toString().trim(); String passwordtext=new_password.getText().toString().trim(); //定义用户名和密码规则 String usernameregex = "[a-zA-Z]{5}"; String passwordregex = "[0-9]{5}"; //校验用户名 if (!(usernametext.matches(usernameregex))) { // JOptionPane.showMessageDialog(this, "用户名格式不对,请输入5位单词字母)"); // new AlertDialog.Builder(MainActivity.this) // .setTitle("error").setMessage("用户名格式不对,请输入5位单词字母") // .setPositiveButton("好的",null).show(); Toast.makeText(RegisterActivity.this,"用户名格式不对,请输入5位单词字母",Toast.LENGTH_LONG).show(); //清空用户名框文本,并把输入光标放回到输入框 this.new_username.setText(""); this.new_username.requestFocus(); return; } //校验密码 if (!(passwordtext.matches(passwordregex))) { //JOptionPane.showMessageDialog(this, "密码格式不对,请输入6-12位任意字符)"); Toast.makeText(RegisterActivity.this,"密码格式不正确,请输入6-12位任意字符",Toast.LENGTH_LONG).show(); // new AlertDialog.Builder(MainActivity.this) // .setTitle("error").setMessage("密码格式不正确,请输入6-12位任意字符") // .setPositiveButton("好的",null).show(); // //清空用户名框文本,并把输入光标放回到输入框 this.new_password.setText(""); this.new_password.requestFocus(); return; } //校验两次输入的密码是否一致 String again_password=new_again_password.getText().toString().trim(); if(!again_password.equals(new_password)){ Toast.makeText(RegisterActivity.this,"密码不一致",Toast.LENGTH_LONG).show(); } //调用注册功能 User user=new User(usernametext,passwordtext); UserDaoImpl loginImpl=new UserDaoImpl(); boolean result=loginImpl.register(this,user);//判断是否注册成功 if(result){ Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_LONG).show(); }else { Toast.makeText(RegisterActivity.this, "用户名已存在", Toast.LENGTH_LONG).show(); //清空用户名框文本,并把输入光标放回到输入框 this.new_username.setText(""); this.new_username.requestFocus(); } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.yes_register_button: register();//校验输入的用户名与密码 break; case R.id.back_button: Intent intent=new Intent(RegisterActivity.this,MainActivity.class); startActivity(intent); break; default: break; } } /** * 设置显示密码的点击操作 * */ private void ischeck(CheckBox passwordCheck){ passwordCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ //显示明文,即设置为可见的密码 new_password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); new_again_password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); }else{ //不显示明文,即设置为不可见的密码 new_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); new_again_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); } } }); } }
图书管理系统界面实现增删查改功能代码:
6.Library_function.java:图书馆功能活动代码
package com.example.library; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.sql.Connection; public class Library_function extends AppCompatActivity implements View.OnClickListener { private Button addButton;//增添书籍按钮 private Button findButton;//查询书籍按钮 private Button alterButton;//修改书籍信息按钮 private Button cancelButton;//删除书籍按钮 //private Connection con; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_library_function); init(); //dbConnect(); addButton.setOnClickListener(this); alterButton.setOnClickListener(this); findButton.setOnClickListener(this); cancelButton.setOnClickListener(this); } // private void dbConnect() { // new Thread(new Runnable() { // @Override // public void run() { // BookDaoImpl bookImpl=new BookDaoImpl(); // bookImpl.connect(); // } // }).start(); // // } @Override public void onClick(View v) { switch (v.getId()){ case R.id.add_button: Intent intent1=new Intent(Library_function.this,Dialog_Activity.class); startActivity(intent1); break; case R.id.find_button: Intent intent3=new Intent(Library_function.this,find.class); startActivity(intent3); break; case R.id.alter_button: Intent intent2=new Intent(Library_function.this,Alter_activity.class); startActivity(intent2); break; case R.id.cancel_button: Intent intent4=new Intent(Library_function.this,cancel.class); startActivity(intent4); break; default: break; } } private void init(){ addButton=(Button)findViewById(R.id.add_button); findButton=(Button)findViewById(R.id.find_button); alterButton=(Button)findViewById(R.id.alter_button); cancelButton=(Button)findViewById(R.id.cancel_button); } }
7.Book.java:书籍的信息类
package com.example.library; public class Book { private String ID;//书的编号 private String Name;//书名 private String price;//书的价格 public Book() { super(); } public Book(String iD, String name, String price) { super(); ID = iD; Name = name; this.price = price; } public String getID() { return ID; } public void setID(String iD) { ID = iD; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Book other = (Book) obj; if (ID == null) { if (other.ID != null) return false; } else if (!ID.equals(other.ID)) return false; if (Name == null) { if (other.Name != null) return false; } else if (!Name.equals(other.Name)) return false; if (price == null) { if (other.price != null) return false; } else if (!price.equals(other.price)) return false; return true; } @Override public String toString() { return "Book [ID=" + ID + ", Name=" + Name + ", price=" + price + "]"; } }
8.BookDao.java:图书管理系统的4个功能接口
package com.example.library; import java.sql.Connection; /** * 图书管理系统功能的接口 * 2020.04.26 */ interface BookDao { public String addBook(Connection con, Book book) ;//增添书籍 public String findBook(Connection con,String bookName); //查询书籍 public String alterBook(Connection con,String BookName,Book book); //修改书籍内容 public void cancelBook(Connection con,String bookName,String ID);//删除书籍 }
9.BookDaoImpl.java:功能实现类
package com.example.library; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; /** * 图书管理系统的功能实现类 */ public class BookDaoImpl implements BookDao{ public Connection con; private static Statement st; private static ResultSet rs; private static PreparedStatement pstmt; private static String userName;//数据库用户名 private static String userPwd;//数据库密码 /** * 数据库的连接并创建数据库、表 */ public Connection connect() { String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:jtds:sqlserver://192.168.56.1:1433;DatabaseName=JDBCDemo"; userName="sa"; userPwd="sasasa"; try { Class.forName(driverName); //jdk版本6.0以上可以省略这句话 con= DriverManager.getConnection(dbURL,userName,userPwd); System.out.println("连接成功"); // DatabaseMetaData dm=con.getMetaData(); // //获取数据库中表名为"Book"的表信息 // rs=dm.getTables(null, null, "Book", new String[] { "TABLE" }); // System.out.println(dm.getUserName()); // if(rs.next()) { // System.out.println("表已存在"); // }else { // //创建一个数据库LibrarySystem // st=con.createStatement(); // st.executeUpdate("create database Library"); // // //打开已创建的数据库 // st.close(); // con.close(); // String newUrl="jdbc:jtds:sqlserver://192.168.56.1:1433;DatabaseName=Library"; // con=DriverManager.getConnection(newUrl,userName,userPwd); // st=con.createStatement(); // // //创建表books // st.executeUpdate("create table Book(书籍编号 nchar(10),书籍名称 nchar(20),书籍价格 nchar(10))"); // System.out.println("创建表成功"); // } }catch(Exception e) { e.printStackTrace(); } return con; } /** * 添加数据到数据库中 * @param con */ public String addBook(Connection con,Book book) { String result=null;//返回结果 try { String sql="insert into Library values(?,?,?)"; pstmt=con.prepareStatement(sql); pstmt.setString(1, book.getID());//第一个参数 pstmt.setString(2, book.getName());//第二个参数 pstmt.setString(3, book.getPrice());//第三个参数 int row=pstmt.executeUpdate();//SQL 数据操作语言 (DML) 语句的行数 ,对于无返回内容的 SQL 语句,返回 0 if(row>0) { result="添加数据成功"; }else { result="添加数据失败"; } pstmt.close(); con.close(); }catch(Exception e) { e.printStackTrace(); } return result; } /** * 查询数据库信息 * @param con * @param bookName 用户要查询的书名 */ public String findBook(Connection con ,String bookName) { String result=null; try { String sql="select * from Library where 书籍名称=?"; pstmt=con.prepareStatement(sql); //设置参数的值 pstmt.setString(1, bookName); rs=pstmt.executeQuery(); while(rs.next()) { //getString(n):获取第n列的内容,数据库中列数从1开始 result= new String("书籍编号:"+rs.getString(1)+" "+"书籍名称:"+rs.getString(2)+" "+"书籍价格:"+rs.getString(3)); } rs.close(); pstmt.close(); con.close(); }catch(Exception e) { e.printStackTrace(); } return result; } /** * 修改数据库的信息 * @param con * @param bookName 要修改的书籍名 * @param book 修改后的信息 */ public String alterBook(Connection con,String bookName,Book book) { String result=null; try { //判断是否有这本书 PreparedStatement pstmt=con.prepareStatement("select * from Library where 书籍名称=?"); pstmt.setString(1,bookName); ResultSet rs=pstmt.executeQuery(); if (!rs.next()){ result="没有这本书"; }else{ String sql="update Library set 书籍编号=?,书籍名称=?,书籍价格=? where 书籍名称=?"; pstmt=con.prepareStatement(sql); //设置参数的值 pstmt.setString(1, book.getID()); pstmt.setString(2, book.getName()); pstmt.setString(3, book.getPrice()); pstmt.setString(4, bookName); pstmt.executeUpdate(); result="修改成功"; } //释放资源 pstmt.close(); rs.close(); con.close(); }catch(Exception e) { e.printStackTrace(); } return result; } /** * 删除数据 * @param con * @param bookName 要删除的书籍名 * @param ID 要删除书籍对应的书籍编号(编号对不上则删除失败) */ public void cancelBook(Connection con,String bookName,String ID) { try { String sql="delete from Library where 书籍名称=? and 书籍编号=?"; pstmt=con.prepareStatement(sql); pstmt.setString(1, bookName);//第一个参数 pstmt.setString(2, ID);//第二个参数 pstmt.executeUpdate(); pstmt.close(); con.close(); }catch(Exception e) { e.printStackTrace(); } } }
10.Dialog_Activity.java:增添书籍功能代码
package com.example.library; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.sql.Connection; public class Dialog_Activity extends AppCompatActivity implements View.OnClickListener{ private EditText name;//书名文本框 private EditText ID;//书的编号文本框 private EditText price;//价格文本框 private EditText add_result;//操作结果文本框 private Button yes_button;//确定文本框 private Button no_button;//取消文本框 private Connection con; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog_); setTitle("增添书籍");//设置标题 init();//控件初始化 yes_button.setOnClickListener(this); no_button.setOnClickListener(this); } /** * 初始化各种控件 */ private void init(){ name=(EditText)findViewById(R.id.add_bookname_text); ID=(EditText)findViewById(R.id.add_bookID_text); price=(EditText)findViewById(R.id.add_bookPrice_text); add_result=(EditText)findViewById(R.id.add_result_text); yes_button=(Button)findViewById(R.id.add_yes_button); no_button=(Button)findViewById(R.id.add_no_button); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.add_yes_button: getResult(); break; case R.id.add_no_button: Intent intent=new Intent(Dialog_Activity.this,Library_function.class); startActivity(intent); break; default: break; } } /** * 操作的类 * @param */ private void getResult() { new Thread(new Runnable() { @Override public void run() { String bookId=ID.getText().toString().trim(); String bookName=name.getText().toString().trim(); String bookPrice=price.getText().toString().trim(); Book book=new Book(bookId,bookName,bookPrice); try{ BookDaoImpl impl=new BookDaoImpl(); con=impl.connect(); String result=impl.addBook(con,book); add_result.setText(result); }catch (Exception e){ e.printStackTrace(); } } }).start(); } }
11.find.java:查询书籍信息功能代码
package com.example.library; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.sql.Connection; public class find extends AppCompatActivity implements View.OnClickListener { private EditText findBookName; private EditText findResult; private Button find_yes; private Button find_no; private Connection con; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_find); setTitle("查询书籍"); init(); find_yes.setOnClickListener(this); find_no.setOnClickListener(this); } private void init() { findBookName=(EditText)findViewById(R.id.find_bookname_text); findResult=(EditText)findViewById(R.id.find_result_text); find_yes=(Button)findViewById(R.id.find_yes_button); find_no=(Button)findViewById(R.id.find_no_button); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.find_yes_button: getresult(); break; case R.id.find_no_button: Intent intent=new Intent(find.this,Library_function.class); startActivity(intent); break; default: break; } } private void getresult() { new Thread(new Runnable() { @Override public void run() { String find_bookName=findBookName.getText().toString().trim(); try { BookDaoImpl impl=new BookDaoImpl(); con=impl.connect(); String result=impl.findBook(con,find_bookName); if(result!=null){ findResult.setText(result); }else{ findResult.setText("无查询结果"); } }catch(Exception e) { e.printStackTrace(); } } }).start(); } }
12.alter_activity:修改书籍信息功能代码
package com.example.library; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.sql.Connection; public class Alter_activity extends AppCompatActivity implements View.OnClickListener{ private EditText alter_name;//原书名文本框 private EditText alter_new_name;//新书名文本框 private EditText alter_ID;//书的新编号文本框 private EditText alter_price;//新价格文本框 private EditText alter_result;//操作结果文本框 private Button alter_yes_button;//确定文本框 private Button alter_no_button;//取消文本框 private Connection con; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alter_activity); setTitle("修改书籍");//设置标题 init();//控件初始化 alter_yes_button.setOnClickListener(this); alter_no_button.setOnClickListener(this); } /** * 初始化各种控件 */ private void init(){ alter_name=(EditText)findViewById(R.id.alter_bookname_text); alter_new_name=(EditText)findViewById(R.id.new_alter_bookname_text); alter_ID=(EditText)findViewById(R.id.alter_bookID_text); alter_price=(EditText)findViewById(R.id.alter_bookPrice_text); alter_result=(EditText)findViewById(R.id.alter_result_text) ; alter_yes_button=(Button)findViewById(R.id.alter_yes_button); alter_no_button=(Button)findViewById(R.id.alter_no_button); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.alter_yes_button: getResult(); break; case R.id.alter_no_button: Intent intent=new Intent(Alter_activity.this,Library_function.class); startActivity(intent); break; default: break; } } /** * 操作的类 * @param */ private void getResult() { final String bookName=this.alter_name.getText().toString().trim();//获取用户键盘录入的书名 String newbookname=this.alter_new_name.getText().toString().trim();//获取用户输入的新书名 String bookid=this.alter_ID.getText().toString().trim();//获取用户输入的新编号 String bookprice=this.alter_price.getText().toString().trim();//获取用户键盘录入的价格 final Book book=new Book(bookid,newbookname,bookprice); new Thread(new Runnable() { @Override public void run() { try{ BookDaoImpl impl=new BookDaoImpl(); con=impl.connect(); String result=impl.alterBook(con,bookName,book); alter_result.setText(result); }catch (Exception e){ e.printStackTrace(); } } }).start(); } }
13.cancel.java:删除书籍信息功能代码
package com.example.library; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.sql.Connection; public class cancel extends AppCompatActivity implements View.OnClickListener{ private EditText cancelBookName; private EditText cancelID; private EditText cancelRecult; private Button cancel_yes; private Button cancel_no; private Connection con; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cancel); setTitle("删除书籍"); init(); cancel_yes.setOnClickListener(this); cancel_no.setOnClickListener(this); } private void init() { cancelBookName=(EditText)findViewById(R.id.cancel_bookname_text); cancelID=(EditText)findViewById(R.id.cancel_bookID_text); cancelRecult=(EditText)findViewById(R.id.cancel_result_text); cancel_yes=(Button)findViewById(R.id.cancel_yes_button); cancel_no=(Button)findViewById(R.id.cancel_no_button); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.cancel_yes_button: getResult(); break; case R.id.cancel_no_button: Intent intent=new Intent(cancel.this,Library_function.class); startActivity(intent); break; } } private void getResult() { final String cancel_bookName=this.cancelBookName.getText().toString().trim(); final String cancel_ID=this.cancelID.getText().toString().trim(); new Thread(new Runnable() { @Override public void run() { try{ BookDaoImpl impl=new BookDaoImpl(); con=impl.connect();//连接数据库 impl.cancelBook(con,cancel_bookName,cancel_ID);//调用删除功能 cancelRecult.setText("删除成功"); }catch (Exception e){ e.printStackTrace(); } } }).start(); } }
结束啦,功夫不负有心人。