Android 图书管理实现增删改查
Posted yangchas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 图书管理实现增删改查相关的知识,希望对你有一定的参考价值。
目录结构如下:
java代码>>
Book.java
BookActivity.java
BookAdapter.java
MainActivity.java
MyDatabaseHelper.java
UpdateBookActivity.java
layout>>
activity_book.xml
activity_main.xml
activity_update_book.xml
book_item.xml
Book.java
package com.example.p229; import java.io.Serializable; public class Book implements Serializable private int id; private String author; private double price; private int pages; private String name; public Book(int id, String author, double price, int pages, String name) super(); this.id = id; this.author = author; this.price=price; this.pages = pages; this.name = name; public Book(String author, double price, int pages, String name) super(); this.author = author; this.price=price; this.pages = pages; this.name = name; public Book() super(); public int getId() return id; public void setId(int id) this.id = id; public String getAuthor() return author; public void setAuthor(String author) this.author = author; public int getPages() return pages; public void setPages(int pages) this.pages = pages; public String getName() return name; public void setName(String name) this.name = name; public double getPrice() return price; public void setPrice(double price) this.price = price;
BookActivity
package com.example.p229; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.preference.DialogPreference; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.ButtonBarLayout; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class BookActivity extends AppCompatActivity private List<Book> bookList = new ArrayList<>(); private ListView lv_book; private MyDatabaseHelper dbhelper; private Button data_clear; private BookAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_book); dbhelper = new MyDatabaseHelper(this, "BookStore.db", null, 1); //给数据源赋值 initBooks(); //创建适配器 //获取列表并设置适配器 lv_book = (ListView) findViewById(R.id.lv_book); if (adapter == null) adapter = new BookAdapter(BookActivity.this, R.layout.book_item, bookList); lv_book.setAdapter(adapter); else adapter.notifyDataSetChanged(); //短时间选中该书触发的事件———弹出修改对话框 lv_book.setOnItemClickListener(new AdapterView.OnItemClickListener() @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) Book book = bookList.get(position); showBookInfoDialog(book); // Toast.makeText(BookActivity.this,book.getName(),Toast.LENGTH_SHORT).show(); ); //长时间选中该书触发的事件———弹出删除对话框 lv_book.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) Book book = bookList.get(position); //Toast.makeText(BookActivity.this,book.getName(),Toast.LENGTH_SHORT).show(); showDeleteInfoDialog(book); return false; ); data_clear = (Button) findViewById(R.id.data_clear); data_clear.setOnClickListener(new View.OnClickListener() @Override public void onClick(View v) clear(); ); @Override protected void onResume() super.onResume(); initBooks(); protected void showBookInfoDialog(final Book book) AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setIcon(R.mipmap.ic_launcher); dialog.setTitle("图书信息"); dialog.setMessage("" + "id:" + book.getId() + "\n作者:" + book.getAuthor() + "\n单价:" + book.getPrice() + "\n页数:" + book.getPages() + "\n书名:" + book.getName() ); dialog.setPositiveButton("修改", new DialogInterface.OnClickListener() @Override public void onClick(DialogInterface dialog, int which) //由当前活动跳转到UpdateBookActivity活动,病传递数据book Intent intent=new Intent(BookActivity.this,UpdateBookActivity.class); intent.putExtra("book",book); startActivity(intent); ); dialog.setNegativeButton("取消", null); dialog.show(); protected void showDeleteInfoDialog(final Book book) AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setIcon(R.mipmap.ic_launcher); dialog.setTitle("提示信息"); dialog.setMessage("请问您要删除这条数据吗"); dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() @Override public void onClick(DialogInterface dialog, int which) //删除图书,首先从数据课表中删除,其次从集合中删除,目的就是让lv能同步显示删除后的状态或结果 SQLiteDatabase db=dbhelper.getWritableDatabase(); int count=db.delete("Book","id=?",new String[]book.getId()+""); if(count!=0) Toast.makeText(BookActivity.this, "数据库中删除成功!!", Toast.LENGTH_SHORT).show(); bookList.remove(book); adapter.notifyDataSetChanged(); else Toast.makeText(BookActivity.this, "没有删除!!", Toast.LENGTH_SHORT).show(); db.close(); ); dialog.setNegativeButton("取消", null); dialog.show(); public void clear() SQLiteDatabase db = dbhelper.getWritableDatabase(); int count = db.delete("Book", null, null); if (count!= 0) Toast.makeText(this, "数据库表删除成功!!", Toast.LENGTH_SHORT).show(); bookList.clear(); adapter.notifyDataSetChanged(); else Toast.makeText(this, "没有内容可以删除!!", Toast.LENGTH_SHORT).show(); db.close(); private void initBooks() SQLiteDatabase db = dbhelper.getWritableDatabase(); bookList.clear(); //给数据源赋值 Cursor cursor = db.query("Book", null, null, null, null, null, null); //2.进行遍历 if (cursor.moveToFirst()) do // String name=cursor.getString(cursor.getColumnIndex("name")); // String author=cursor.getString(cursor.getColumnIndex("author")); // int pages=cursor.getInt(cursor.getColumnIndex("pages")); // int id=cursor.getInt(cursor.getColumnIndex("id")); // double price=cursor.getDouble(cursor.getColumnIndex("price")); //id列的索引号为0 int id = cursor.getInt(0); String author = cursor.getString(cursor.getColumnIndex("author")); double price = cursor.getDouble(cursor.getColumnIndex("price")); int pages = cursor.getInt(cursor.getColumnIndex("pages")); String name = cursor.getString(cursor.getColumnIndex("name")); //Book book=new Book(id,author,price,pages,name); Book book = new Book(); book.setId(id); book.setName(name); book.setPages(pages); book.setPrice(price); book.setAuthor(author); bookList.add(book); while (cursor.moveToNext()); // 3.关闭游标 cursor.close(); db.close();
BookAdapter
package com.example.p229; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; public class BookAdapter extends ArrayAdapter<Book> private int resourceId; public BookAdapter(Context context, int resource, List<Book> objects) super(context, resource, objects); resourceId = resource; @Override public View getView(int position, View convertView, ViewGroup parent) Book book = getItem(position); View view; ViewHolder viewHolder; if (convertView == null) //是否有布局缓存,否 view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false); //创建viewHolder viewHolder = new ViewHolder(); //获取ViewHolder的控件 viewHolder.bookId = (TextView) view.findViewById(R.id.book_id); viewHolder.bookAuthor = (TextView) view.findViewById(R.id.book_author); viewHolder.bookPrice = (TextView) view.findViewById(R.id.book_price); viewHolder.bookPages = (TextView) view.findViewById(R.id.book_pages); viewHolder.bookName = (TextView) view.findViewById(R.id.book_name); //将viewHolder对象存储view中 view.setTag(viewHolder); else //有缓存 view = convertView; viewHolder = (ViewHolder) view.getTag(); viewHolder.bookId.setText(book.getId() + ""); viewHolder.bookAuthor.setText(book.getAuthor() + ""); viewHolder.bookPrice.setText(book.getPrice() + ""); viewHolder.bookPages.setText(book.getPages() + ""); viewHolder.bookName.setText(book.getName() + ""); //fruitImage.setImageResource(fruit.getImageId()); // fruitname.setText(fruit.getName()); return view; class ViewHolder TextView bookId; TextView bookAuthor; TextView bookPrice; TextView bookPages; TextView bookName;
MainActivity
package com.example.p229; import android.content.ContentValues; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener private EditText author_et; private EditText price_et; private EditText pages_et; private EditText name_et; private Button insert_data; private Button query_data; private MyDatabaseHelper dbhelper; @Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbhelper = new MyDatabaseHelper(this, "BookStore.db", null, 1); dbhelper.getWritableDatabase(); author_et = (EditText) findViewById(R.id.author_et); price_et = (EditText) findViewById(R.id.price_et); pages_et = (EditText) findViewById(R.id.pages_et); name_et = (EditText) findViewById(R.id.name_et); insert_data = (Button) findViewById(R.id.add_data); insert_data.setOnClickListener(this); query_data = (Button) findViewById(R.id.query_data); query_data.setOnClickListener(this); @Override public void onClick(View v) switch (v.getId()) case R.id.add_data: insertData(); break; case R.id.query_data: Intent intent = new Intent(MainActivity.this, BookActivity.class); startActivity(intent); break; private void insertData() SQLiteDatabase db = dbhelper.getWritableDatabase(); ContentValues values = new ContentValues(); String author = author_et.getText().toString(); String name = name_et.getText().toString(); String price = price_et.getText().toString(); String pages = pages_et.getText().toString(); values.put("name", name); values.put("author", author); values.put("price", Double.parseDouble(price)); values.put("pages", Integer.parseInt(pages)); long count = db.insert("Book", null, values); if (count != -1) Toast.makeText(this, "插入成功!!", Toast.LENGTH_SHORT).show(); author_et.setText(""); name_et.setText(""); price_et.setText(""); pages_et.setText(""); else Toast.makeText(this, "插入失败!!", Toast.LENGTH_SHORT).show(); db.close();
MyDatabaseHelper
package com.example.p229; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; /** * Created by user on 2019/4/27. */ public class MyDatabaseHelper extends SQLiteOpenHelper public static final String CREATE_BOOK="create table Book(" +"id integer primary key autoincrement," + "author text," + "price real," + "pages integer," +"name text)"; private Context mContext; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) super(context, name, factory, version); mContext=context; @Override public void onCreate(SQLiteDatabase db) db.execSQL(CREATE_BOOK); Toast.makeText(mContext,"成功建表!!",Toast.LENGTH_SHORT).show(); @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
UpdateBookActivity
package com.example.p229; import android.content.ContentValues; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class UpdateBookActivity extends AppCompatActivity private EditText update_author_et; private EditText update_price_et; private EditText update_pages_et; private EditText update_name_et; private MyDatabaseHelper dbhelper; private Book book; @Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_update_book); //第一步:获取上一个活动传递过来的序列化book Intent intent=getIntent(); book=(Book)intent.getSerializableExtra("book"); //第二步:获取控件并显示数据 update_author_et=(EditText) findViewById(R.id.update_author_et); update_price_et=(EditText) findViewById(R.id.update_price_et); update_pages_et=(EditText) findViewById(R.id.update_pages_et); update_name_et=(EditText) findViewById(R.id.update_name_et); update_author_et.setText(book.getAuthor()); update_price_et.setText(book.getPrice()+""); update_pages_et.setText(book.getPages()+""); update_name_et.setText(book.getName()); dbhelper=new MyDatabaseHelper(this,"BookStore.db",null,1); //按照页面上重新输入的信息去库中修改该书 public void updateInfo(View view) //获取重新输入的信息 String authorStr=update_author_et.getText().toString(); String nameStr=update_name_et.getText().toString(); String priceStr=update_price_et.getText().toString(); String pagesStr=update_pages_et.getText().toString(); //按照获取的信息是否合法决定进行的操作 if(TextUtils.isEmpty(authorStr)||TextUtils.isEmpty(nameStr) ||TextUtils.isEmpty(pagesStr)||TextUtils.isEmpty(priceStr)) Toast.makeText(this, "数据不完整,重新输入!", Toast.LENGTH_SHORT).show(); else //打开数据库 SQLiteDatabase db=dbhelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name",nameStr); values.put("author",authorStr); values.put("pages",Integer.parseInt(pagesStr)); values.put("price",Double.parseDouble(priceStr)); int count=db.update("Book",values,"id=?",new String[]book.getId()+""); if(count!=0) Toast.makeText(this, "修改成功!!", Toast.LENGTH_SHORT).show(); finish(); else Toast.makeText(this, "修改失败!!", Toast.LENGTH_SHORT).show(); db.close(); //关闭页面 public void cancel(View view) finish();
activity_book.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/data_clear" android:text="清空" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="id" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:text="name" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:text="price" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:text="author" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:text="pages" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> </LinearLayout> <ListView android:id="@+id/lv_book" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView> </LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.p229.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="作者" android:textSize="18dp" /> <EditText android:id="@+id/author_et" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:hint="输入作者" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="单价" android:textSize="18dp" /> <EditText android:id="@+id/price_et" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:hint="输入单价" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="页数" android:textSize="18dp" /> <EditText android:id="@+id/pages_et" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:hint="输入页数" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="书名" android:textSize="18dp" /> <EditText android:id="@+id/name_et" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:hint="输入书名" /> </LinearLayout> <Button android:id="@+id/add_data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加记录" /> <Button android:id="@+id/query_data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示数据库信息" /> </LinearLayout>
activity_update_book.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_update_book" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.p229.UpdateBookActivity"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="作者" android:textSize="18dp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> <EditText android:id="@+id/update_author_et" android:layout_width="0dp" android:layout_weight="4" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="单价" android:textSize="18dp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> <EditText android:id="@+id/update_price_et" android:layout_width="0dp" android:layout_weight="4" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="页数" android:textSize="18dp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> <EditText android:id="@+id/update_pages_et" android:layout_width="0dp" android:layout_weight="4" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="书名" android:textSize="18dp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> <EditText android:id="@+id/update_name_et" android:layout_width="0dp" android:layout_weight="4" android:layout_height="wrap_content" /> </LinearLayout> <Button android:onClick="updateInfo" android:textSize="18sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改" /> <Button android:onClick="cancel" android:textSize="18sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消" /> </LinearLayout>
book_item.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"> <TextView android:id="@+id/book_id" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/book_name" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/book_price" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/book_author" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/book_pages" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> </LinearLayout>
完!
以上是关于Android 图书管理实现增删改查的主要内容,如果未能解决你的问题,请参考以下文章
求一个简单的基于Java语言的图书管理系统,实现增删改查功能
学习WAMP,做一个PHP+MYSQL的简单的图书管理系统,实现增删改查功能,做到增就遇到问题
JAVA面向对象 要求做一个小型的图书管理系统 要有book Order OrderItem三个类 实现购买图书的增删改查