Android实训——图书管理系统

这篇具有很好参考价值的文章主要介绍了Android实训——图书管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在大学课程实训课程中,通过开发实现一个完整的系统作业是基本操作吧,本次描述的是一个基于Android studio开发的图书管理系统,大学阶段学习的基本知识不牢固,很多地方也没有完全优化完善,单单实现了一个数据的增删改查以及各个界面的跳转关系。

涉及到的只是对于刚接触开发的人来说比较难的有,数据库的增、删、改、查以及列表(List)适配器以及列表item响应事件处理等。以下请看流程:

一、结构图如以下:

Android实训——图书管理系统

二、系统分为两个模块:

(1)、管理员模块:添加用户的登录信息(赋予用户初始登录账号密码) && (增删改查)书籍信息 && (增删改查)用户基本数据(学号、名称、等等)&&  查看已借书籍

(2)、用户模块:登录账号密码、借书、还书、显示用户所借的书籍

三、主要代码:

(1)、设置管理员特定账号密码:

Android实训——图书管理系统

//设置登录的账号密码为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)、管理员的管理界面(这里简单介绍对第一个功能:对学生登录信息的操作)

Android实训——图书管理系统

 2-1、对学生登录信息的操作界面(这里设计到数据库的内容、后面单独介绍数据库创建以及数据库列表创建)

Android实训——图书管理系统

Android实训——图书管理系统

//插入数据库的方法
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、查看录入的数据(这里就涉及到列表、数据适配器的内容了)

Android实训——图书管理系统

//从数据库查找数据并返回
//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、修改功能

Android实训——图书管理系统

//更新用户数据方法
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;
	}

}

总结:这里只简单介绍了系统其中一个单独的功能,里面还有很多重复的对数据库增删改查功能以及界面的跳转,就不一一列举了,学完之后你会发现都是类似的东西。文章来源地址https://www.toymoban.com/news/detail-461114.html

如需要源码可私聊。

到了这里,关于Android实训——图书管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言课程设计】图书管理系统

    引言 : 图书管理系统是一个重要的信息管理系统,对于图书馆和书店等机构来说,它能够方便地管理图书的录入、显示、查询、修改和删除等操作。本实验基于C语言开发了一个简单的图书管理系统,通过账户名和密码进行系统访问和权限控制,并实现了上述功能。在本实验

    2024年02月15日
    浏览(35)
  • 图书管理系统——C语言课程设计

    新进图书基本信息的输入 图书借本信息的查询 对撤销图书的删除 办理借书手续 办理还书手续 提供使用文件方式存储数据 新进图书的输入,首先要输入要添加的书的基本信息,如:书名、书号、价格、作者,再通过fprintf()函数将输入的信息写入文件中 图书信息的查询可分为

    2024年02月09日
    浏览(37)
  • C++课程设计:图书管理系统【附源码】

    课程设计目的   作为软件工程和计算机科学与技术专业的基本课程,课程设计不仅涵盖了C++语言的知识体系,又与工程的实际需要切实相关。通过课程设计的综合性训练,对开发者解决实际问题能力,编程能力,动手能力有很大的提升,更有助于样成良好的编程习惯。 图

    2024年02月07日
    浏览(39)
  • c语言课程设计(图书馆管理系统)

    大一c语言课程设计:图书馆管理系统。 图书管理系统,功能齐全拿来就能用 1.主界面   代码段  2.图书录入界面 运用文件录入多次使用   代码段  3.图书查询界面 根据输入书的数据与文件中数据进行比对 ,查找后输出。 代码段 4.图书修改 输入修改图书数据并在文件中查找

    2024年02月11日
    浏览(38)
  • RFID课程设计-图书管理系统用户端设计

    RFID课程设计-图书管理系统用户端设计 课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 Android 清单中请求 NFC 访问权限过滤 NFC IntentACTION_NDEF_DISCOVEREDACTION_TAG_DISCOVERED从 Intent 中获取信息

    2024年02月08日
    浏览(54)
  • 【Java课程设计】基于Java Swing 的图书管理系统

    🎁 作者简介 :在校大学生一枚,Java领域新星创作者,Java、Python正在学习中。 💗 个人主页: 我是一棵卷心菜的个人主页 🍂 日常学习网站: 牛客网,可以用来刷算法题、工作内推、面经复习、练习SQL等等,很不错的多功能网站。点击注册学习刷题吧! 📕 自我提醒: 多

    2024年02月07日
    浏览(72)
  • 数据库课程设计-图书馆管理系统(3. 用户软件,基于QT)

    如果对你有帮助,可以给卑微的博主留个赞、关注、收藏   (不是)  (骗一下数据,说不定以后面试就过了,拜谢) 用户软件的实现根据自己所用语言选择对应开发工具,c++ 较常用的是QT或者MFC。这里使用QT做个示例,但博主前端属实现学现卖,也就是能用级别,可以参考一下

    2024年02月09日
    浏览(47)
  • 南京航空航天大学民航管理系统课程设计

    趁着最近备战c++实习,通过以前帮朋友写的课设复习一下c++,后面附有各个模块的功能实现。 建议通过多文件封装各个类的功能。 1.总体描述 : 本程序实现对民航飞行与地图管理系统的简单操作。 2.程序菜单功能: 地图记录是一个数据库列表,每一个记录包含一个城市的信

    2024年02月08日
    浏览(58)
  • 【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业&课程设计

    作者主页:paper jie 的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将javaSE基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详

    2024年02月09日
    浏览(45)
  • 学校图书借阅管理系统,Mysql数据库课程设计期末作品或练手项目

    使用Navicat操作,未包含Java代码。 目录 一、课程设计的目的1 二、课程设计内容1 2.1课程设计功能分析说明1 2.2数据库需求分析1 2.2.1系统功能分析说明1 (1)信息需求分析1 (2)功能需求2 2.3数据字典2 2.3.1数据项2 2.3.2数据结构3 2.3.3系统功能图6 2.3.4数据流图6 2.4数据库概念结构

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包