Android实训——图书管理系统
在大學課程實訓課程中,通過開發實現一個完整的系統作業是基本操作吧,本次描述的是一個基于Android studio開發的圖書管理系統,大學階段學習的基本知識不牢固,很多地方也沒有完全優化完善,單單實現了一個數據的增刪改查以及各個界面的跳轉關系。
涉及到的只是對于剛接觸開發的人來說比較難的有,數據庫的增、刪、改、查以及列表(List)適配器以及列表item響應事件處理等。以下請看流程:
一、結構圖如以下:
二、系統分為兩個模塊:
(1)、管理員模塊:添加用戶的登錄信息(賦予用戶初始登錄賬號密碼) && (增刪改查)書籍信息 && (增刪改查)用戶基本數據(學號、名稱、等等)&&? 查看已借書籍
(2)、用戶模塊:登錄賬號密碼、借書、還書、顯示用戶所借的書籍
三、主要代碼:
(1)、設置管理員特定賬號密碼:
//設置登錄的賬號密碼為admin、123456 /** *name = 賬號輸入框數據 *pass = 密碼輸入框數據 */ if(name.equals("admin") && pass.equals("123456")){Intent intent=new Intent(MainActivity.this,AdminActivity.class);startActivity(intent);Toast.makeText(getApplicationContext(), "跳轉到管理員界面", Toast.LENGTH_LONG).show(); }(2)、管理員的管理界面(這里簡單介紹對第一個功能:對學生登錄信息的操作)
?2-1、對學生登錄信息的操作界面(這里設計到數據庫的內容、后面單獨介紹數據庫創建以及數據庫列表創建)
//插入數據庫的方法 public void operate(User user){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String name=user.getUsername();String pass=user.getPassword();db.execSQL("insert into user (name,password) values (?,?)",new Object[]{name,pass});Log.d("數據庫操作", "成功");db.close();}else{Toast.makeText(this.context,"error",Toast.LENGTH_LONG).show();} }2-2、查看錄入的數據(這里就涉及到列表、數據適配器的內容了)
//從數據庫查找數據并返回 //User是一個數據的實體類,里面包含username,password以及它們的get和set方法以及構造器 public List<User> findAll(){List<User> users =null;SQLiteDatabase db=help.getReadableDatabase();if(db.isOpen()){Cursor cursor=db.query("user",null,null,null,null,null,null);users=new ArrayList<User>();while(cursor.moveToNext()){User user=new User();String name=cursor.getString(cursor.getColumnIndex("name"));user.setUsername(name);String pass=cursor.getString(cursor.getColumnIndex("password"));user.setPassword(pass);users.add(user);}cursor.close();db.close();}return users;}//調用此方法,userlist為全局變量,這里需要注意 //聲明一個List userlist = new ArrayList(); private void getData() {userdao=new UserBean(this);userlist=userdao.findAll(); }/** * R.layout.userlist:新建的一個布局 * userlist:上面提到的全局變量 * setOnItemClickListener:列表的item的響應事件 * 響應事件為:創建一個對話框,對話框有兩個操作:修改、刪除 */ public void actionFindAllInfo(){getData();UserAdapter myAdapter=new UserAdapter(this,R.layout.userlist,userlist);listview.setAdapter(myAdapter);listview.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) {User user=(User)arg0.getItemAtPosition(arg2);final String name=user.getUsername();final String pass=user.getPassword();AlertDialog.Builder builder=new AlertDialog.Builder(UserViewActivity.this);builder.setTitle("確定以下操作???");builder.setPositiveButton("修改", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {Intent intent=new Intent();Bundle bundel=new Bundle();bundel.putString("name", name);bundel.putString("pass", pass);intent.setClass(getApplicationContext(),UpdateUserActivity.class);intent.putExtras(bundel);startActivity(intent);}});builder.setNegativeButton("刪除", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {User user=new User(name,pass);if(user.getUsername()==null){UserBean del=new UserBean(UserViewActivity.this);del.delete();Toast.makeText(getApplicationContext(), "用戶名不能為空", Toast.LENGTH_LONG).show();}UserBean del=new UserBean(UserViewActivity.this);del.delete(user);Toast.makeText(getApplicationContext(), "刪除成功", Toast.LENGTH_LONG).show();onStart();}});builder.show();}}); )補充說明:適配器使用
//對數據進行列表適配以及展示 public class UserAdapter extends ArrayAdapter{User list;public void setList(User list){this.list=list;}@Overridepublic long getItemId(int position){return position;}public UserAdapter(Context context, int resource,List<User>userlist) {super(context, resource,userlist);}@Overridepublic View getView(int position,View convertView,ViewGroup parent){list=(User)getItem(position);View view=LayoutInflater.from(getContext()).inflate(R.layout.userlist, null);TextView name =(TextView)view.findViewById(R.id.textView1);TextView pass =(TextView)view.findViewById(R.id.textView2);name.setText(list.getUsername());pass.setText(list.getPassword());return view;} }2-2-1、刪除功能:上面我們提到了修改了刪除功能,結合前面我們有貼了一個數據庫添加數據的方法以及查看并返回一個實體類的方法、現在我們我們簡單說一下刪除方法:
//刪除數據庫數據的方法,將獲得用戶的數據傳進來作為條件刪除用戶數據 public void delete(User user){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String name=user.getUsername();String pass=user.getPassword();db.delete("user", "name=?", new String[]{name});} }2-2-2、修改功能
//更新用戶數據方法 public void update(User user){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String name=user.getUsername();String pass=user.getPassword();ContentValues cv=new ContentValues();cv.put("name", name);cv.put("password", pass);//String sql="update user set name=? password=? where name=?,new Object[]{name,pass��name}";db.update("user", cv,"name=?", new String[]{name});Log.v("�?�����", "�?��???�");db.close();} }四、數據庫的創建
//單獨封裝的一個數據庫創建類 public class User_SQliteHelp extends SQLiteOpenHelper{private Context mContext;public User_SQliteHelp(Context context) {super(context, "xxx.db", null, 1);//數據庫創建}public User_SQliteHelp(Context context, String name, CursorFactory cursorFactory, int version) {super(context, name,cursorFactory, version);mContext = context;}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE IF NOT EXISTS user(name varchar(20)primary key,password varchar(20))");}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {} }五、對數據庫操作的方法
//把所有對數據庫操作的方法封裝成一個類 public class UserBean {private Context context;private User_SQliteHelp help;public UserBean(Context context){this.context=context;help=new User_SQliteHelp(context);}//檢查public boolean ischeck(User use){boolean flage=false;if(findone(use).getUsername()!=null)flage=true;return flage;}public User findone(User user){SQLiteDatabase db=help.getReadableDatabase();User use=new User();String name=user.getUsername();String pass=user.getPassword();if(db.isOpen()){Cursor cursor=db.query("user",null,"name=?",new String[]{name},null,null,null);while(cursor.moveToNext()){String username=cursor.getString(cursor.getColumnIndex("name"));use.setUsername(username);String password=cursor.getString(cursor.getColumnIndex("password"));use.setPassword(password);}}return use;}public List<User> findAll(){List<User> users =null;SQLiteDatabase db=help.getReadableDatabase();if(db.isOpen()){Cursor cursor=db.query("user",null,null,null,null,null,null);users=new ArrayList<User>();while(cursor.moveToNext()){User user=new User();String name=cursor.getString(cursor.getColumnIndex("name"));user.setUsername(name);String pass=cursor.getString(cursor.getColumnIndex("password"));user.setPassword(pass);users.add(user);}cursor.close();db.close();}return users;}public void operate(User user){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String name=user.getUsername();String pass=user.getPassword();db.execSQL("insert into user (name,password) values (?,?)",new Object[]{name,pass});Log.d("數據庫操作", "成功");db.close();}else{Toast.makeText(this.context,"error",Toast.LENGTH_LONG).show();} }public void update(User user){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String name=user.getUsername();String pass=user.getPassword();ContentValues cv=new ContentValues();cv.put("name", name);cv.put("password", pass);db.update("user", cv,"name=?", new String[]{name});db.close();}}public void delete(User user){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String name=user.getUsername();String pass=user.getPassword();db.delete("user", "name=?", new String[]{name});} }public void delete(){SQLiteDatabase db=help.getWritableDatabase();if(db.isOpen()){String sql="delet from user where name is null";db.execSQL(sql);}}public boolean login(String username,String password){SQLiteDatabase db=help.getReadableDatabase();String sql="select * from user where username=? and password=?";Cursor cursor=db.rawQuery(sql, new String[]{username,password});if(cursor.moveToFirst()){cursor.close();return true;}return false;} }六、上文提到的用戶實體類User
public class User {String username,password;public User(String username,String password){this.username=username;this.password=password;}public User(){ }public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}總結:這里只簡單介紹了系統其中一個單獨的功能,里面還有很多重復的對數據庫增刪改查功能以及界面的跳轉,就不一一列舉了,學完之后你會發現都是類似的東西。
如需要源碼可私聊。
總結
以上是生活随笔為你收集整理的Android实训——图书管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab两张图片显示,matlab怎
- 下一篇: 大数据入门