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

补充说明:适配器使用

//对数据进行列表适配以及展示
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、删除功能:上面我们提到了修改了删除功能,结合前面我们有贴了一个数据库添加数据的方法以及查看并返回一个实体类的方法、现在我们我们简单说一下删除方法:

//删除数据库数据的方法,将获得用户的数据传进来作为条件删除用户数据
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("�û�����", "�û��޸ijɹ�");
	  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;
	}
	@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) {
		
	}
}

五、对数据库操作的方法

//把所有对数据库操作的方法封装成一个类
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;
	}

}

总结:这里只简单介绍了系统其中一个单独的功能,里面还有很多重复的对数据库增删改查功能以及界面的跳转,就不一一列举了,学完之后你会发现都是类似的东西。

如需要源码可私聊。

  • 11
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值