在大學(xué)課程實(shí)訓(xùn)課程中,通過(guò)開(kāi)發(fā)實(shí)現(xiàn)一個(gè)完整的系統(tǒng)作業(yè)是基本操作吧,本次描述的是一個(gè)基于Android studio開(kāi)發(fā)的圖書管理系統(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ù)據(jù)(學(xué)號(hào)、名稱、等等)&&? 查看已借書籍
(2)、用戶模塊:登錄賬號(hào)密碼、借書、還書、顯示用戶所借的書籍
三、主要代碼:
(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(){
@Override
public 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;
}
@Override
public long getItemId(int position){
return position;
}
public UserAdapter(Context context, int resource,List<User>userlist) {
super(context, resource,userlist);
}
@Override
public 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;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS user(name varchar(20)primary key,password varchar(20))");
}
@Override
public 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文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-461114.html
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)都是類似的東西。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461114.html
如需要源碼可私聊。
到了這里,關(guān)于Android實(shí)訓(xùn)——圖書管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!