日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android实训——图书管理系统

發(fā)布時(shí)間:2023/12/14 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实训——图书管理系统 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在大學(xué)課程實(shí)訓(xùn)課程中,通過(guò)開(kāi)發(fā)實(shí)現(xiàn)一個(gè)完整的系統(tǒng)作業(yè)是基本操作吧,本次描述的是一個(gè)基于Android studio開(kāi)發(fā)的圖書(shū)管理系統(tǒng),大學(xué)階段學(xué)習(xí)的基本知識(shí)不牢固,很多地方也沒(méi)有完全優(yōu)化完善,單單實(shí)現(xiàn)了一個(gè)數(shù)據(jù)的增刪改查以及各個(gè)界面的跳轉(zhuǎn)關(guān)系。

涉及到的只是對(duì)于剛接觸開(kāi)發(fā)的人來(lái)說(shuō)比較難的有,數(shù)據(jù)庫(kù)的增、刪、改、查以及列表(List)適配器以及列表item響應(yīng)事件處理等。以下請(qǐng)看流程:

一、結(jié)構(gòu)圖如以下:

二、系統(tǒng)分為兩個(gè)模塊:

(1)、管理員模塊:添加用戶的登錄信息(賦予用戶初始登錄賬號(hào)密碼) && (增刪改查)書(shū)籍信息 && (增刪改查)用戶基本數(shù)據(jù)(學(xué)號(hào)、名稱、等等)&&? 查看已借書(shū)籍

(2)、用戶模塊:登錄賬號(hào)密碼、借書(shū)、還書(shū)、顯示用戶所借的書(shū)籍

三、主要代碼:

(1)、設(shè)置管理員特定賬號(hào)密碼:

//設(shè)置登錄的賬號(hào)密碼為admin、123456 /** *name = 賬號(hào)輸入框數(shù)據(jù) *pass = 密碼輸入框數(shù)據(jù) */ if(name.equals("admin") && pass.equals("123456")){Intent intent=new Intent(MainActivity.this,AdminActivity.class);startActivity(intent);Toast.makeText(getApplicationContext(), "跳轉(zhuǎn)到管理員界面", Toast.LENGTH_LONG).show(); }

(2)、管理員的管理界面(這里簡(jiǎn)單介紹對(duì)第一個(gè)功能:對(duì)學(xué)生登錄信息的操作)

?2-1、對(duì)學(xué)生登錄信息的操作界面(這里設(shè)計(jì)到數(shù)據(jù)庫(kù)的內(nèi)容、后面單獨(dú)介紹數(shù)據(jù)庫(kù)創(chuàng)建以及數(shù)據(jù)庫(kù)列表創(chuàng)建)

//插入數(shù)據(jù)庫(kù)的方法 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("數(shù)據(jù)庫(kù)操作", "成功");db.close();}else{Toast.makeText(this.context,"error",Toast.LENGTH_LONG).show();} }

2-2、查看錄入的數(shù)據(jù)(這里就涉及到列表、數(shù)據(jù)適配器的內(nèi)容了)

//從數(shù)據(jù)庫(kù)查找數(shù)據(jù)并返回 //User是一個(gè)數(shù)據(jù)的實(shí)體類,里面包含username,password以及它們的get和set方法以及構(gòu)造器 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;}//調(diào)用此方法,userlist為全局變量,這里需要注意 //聲明一個(gè)List userlist = new ArrayList(); private void getData() {userdao=new UserBean(this);userlist=userdao.findAll(); }/** * R.layout.userlist:新建的一個(gè)布局 * userlist:上面提到的全局變量 * setOnItemClickListener:列表的item的響應(yīng)事件 * 響應(yīng)事件為:創(chuàng)建一個(gè)對(duì)話框,對(duì)話框有兩個(gè)操作:修改、刪除 */ 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();}}); )

補(bǔ)充說(shuō)明:適配器使用

//對(duì)數(shù)據(jù)進(jìn)行列表適配以及展示 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、刪除功能:上面我們提到了修改了刪除功能,結(jié)合前面我們有貼了一個(gè)數(shù)據(jù)庫(kù)添加數(shù)據(jù)的方法以及查看并返回一個(gè)實(shí)體類的方法、現(xiàn)在我們我們簡(jiǎn)單說(shuō)一下刪除方法:

//刪除數(shù)據(jù)庫(kù)數(shù)據(jù)的方法,將獲得用戶的數(shù)據(jù)傳進(jìn)來(lái)作為條件刪除用戶數(shù)據(jù) 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、修改功能

//更新用戶數(shù)據(jù)方法 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();} }

四、數(shù)據(jù)庫(kù)的創(chuàng)建

//單獨(dú)封裝的一個(gè)數(shù)據(jù)庫(kù)創(chuàng)建類 public class User_SQliteHelp extends SQLiteOpenHelper{private Context mContext;public User_SQliteHelp(Context context) {super(context, "xxx.db", null, 1);//數(shù)據(jù)庫(kù)創(chuàng)建}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) {} }

五、對(duì)數(shù)據(jù)庫(kù)操作的方法

//把所有對(duì)數(shù)據(jù)庫(kù)操作的方法封裝成一個(gè)類 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("數(shù)據(jù)庫(kù)操作", "成功");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;} }

六、上文提到的用戶實(shí)體類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;}}

總結(jié):這里只簡(jiǎn)單介紹了系統(tǒng)其中一個(gè)單獨(dú)的功能,里面還有很多重復(fù)的對(duì)數(shù)據(jù)庫(kù)增刪改查功能以及界面的跳轉(zhuǎn),就不一一列舉了,學(xué)完之后你會(huì)發(fā)現(xiàn)都是類似的東西。

如需要源碼可私聊。

總結(jié)

以上是生活随笔為你收集整理的Android实训——图书管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。