Android版之数据库增删改查图书信息

终于做出来了,之前的图书管理系统都是用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>
View Code

 

 

 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>
View Code

 

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>
View Code

 

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>
View Code

 

 

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>
View Code

 

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>
View Code

 

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>
View Code

 

注意:上面的四个功能页面都是采用了对话框式的活动,所以要在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>
View Code

 

二、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;
    }


}
View Code

 

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);

}
View Code

 

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;
    }

}
View Code

 

 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();
        }
    }

}
View Code

 

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);
                }
            }
        });
    }
}
View Code

 

图书管理系统界面实现增删查改功能代码:

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);
    }
}
View Code

 

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 + "]";
    }
}
View Code

 

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);//删除书籍
}
View Code

 

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)+"\n"+"书籍名称:"+rs.getString(2)+"\n"+"书籍价格:"+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();
        }
    }



}
View Code

 

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();
    }
}
View Code

 

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();

    }
}
View Code

 

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();
    }
}
View Code

 

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();

    }
}
View Code

 

结束啦,功夫不负有心人。

posted @ 2020-05-13 09:57  PLG  阅读(2974)  评论(12编辑  收藏  举报