关于Android的轻量级数据库SQLlite的使用实践小项目 (生管理系统(附源码))

来源:互联网 发布:淘宝美工将来有前途么 编辑:程序博客网 时间:2024/06/05 18:45

关于Android的轻量级数据库SQLlite的使用实践小项目 (生管理系统(附源码))

项目部分UI截图展示:





项目比较小,非常适合的Android新手刚入门 练习SQLlite数据库的使用,

下面介绍一下这个小项目的主要框架实现和功能讲解


项目框架实现:

         一:整个项目最底层只涉及到数据库的操作,所以程序一经启动就要将底层搭建好,我使用的方法是一进入主界面

就创建好需要的数据库几关系表.由于整个项目只涉及到学生数据,所以应该只要创建一个数据库,所以我这里使用了

java的单例设计模式(懒汉式)

        

public class MydatabaseHelper  extends SQLiteOpenHelper {    private  static  MydatabaseHelper instance;    //创建管理员表    public static final String CREATE_MANAGER="create table manager(id integer primary key autoincrement,name text ,password text)";    //创建学生表    public static final String CREATE_STUDENT="create table student(id integer primary key autoincrement,name text ,sex text,phone text,password text,mathScore integer,chineseScore integer,englishScore integer)";    private MydatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);    }
首先创建一个类继承自SQLiteOpenHelper,将构造方法私有化,内部定义一个静态的本
类对象和获取本类对象的静态方法,
public  static MydatabaseHelper getInstance(Context context){    if (instance==null){        instance=new MydatabaseHelper(context,"studen_tmanager.db",null,3);    }    return instance;}
然后思路就很清晰了,在我们首次创建数据库的时候就会产生一个该类的实例化对象,
而且只会有一个对象,也就是上面所说的单例设计模式.
单利设计模式常用的应用场景有:
1. Windows的Task Manager(任务管理器)
2. windows的Recycle Bin(回收站)

       二:数据的显示,既然涉及到数据的显示,肯定是不同的数据,所以首先考虑Android中最常用的也是最难用的ListView

了,我这里不涉及太多数据展示,所以用到的适配器是ArrayAdapter(主要用于显示一行数据时首先考虑);

public class StudentAdapter extends ArrayAdapter {    private int resourseid;    public StudentAdapter(@NonNull Context context, int resource, @NonNull List objects) {        super(context, resource, objects);        this.resourseid=resource;    }
这里因为我要主要只需要显示一行数据,所以用的是ArrayAdapter ;

关于设配器的话有很多实现类,最常见的也最常用的主要是

  • BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
  • ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
  • SimpleAdapter有最好的扩充性,可以自定义出各种效果。
  • SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。

        三:数据的存取,这就不用说了 ,首先得要有数据才行,所以数据肯定是要存到数据库里面去的,所以数据存哪我们就去

哪取,所以这也是整个项目的核心操作,主要熟练掌握使用数据库的增(insert)  删(delect)  改(update) 差(select)四种语言

,实现数据存取主要涉及到 execSQL()方法和rawQuery()方法,还有Cursor:结果集游标,

dbHelper=MydatabaseHelper.getInstance(this);SQLiteDatabase db=dbHelper.getReadableDatabase();//检测密码是否是六个纯数字if (firstpassinfo.matches("[0-9]{6}")){    //判断两次密码是否相同    if (firstpassinfo.equals(secondpassinfo)){        Cursor cursor=db.rawQuery("select name from manager where name=? ",new String[]{nameinfo});        //判断用户名是否存在        if(cursor.moveToNext()){            Toast.makeText(this,"用户名已存在",Toast.LENGTH_LONG).show();        }else {            //将用户名,密码存入数据库            db.execSQL("insert into manager (name,password) values(?,?)",new String[]{nameinfo,firstpassinfo});            Intent intent=new Intent(this,Manager_login_Activity.class);            intent.putExtra("username",nameinfo);            startActivity(intent);            Toast.makeText(this,"注册成功!",Toast.LENGTH_LONG).show();        }    }else {        Toast.makeText(this,"两次密码不相同",Toast.LENGTH_LONG).show();    }}else {    Toast.makeText(this,"密码为6个纯数字",Toast.LENGTH_LONG).show();}

     四:界面的切换跳转,UI的美观设计,这里主要涉及到的是圆形头像(CircleImageView)的使用.

首先需要在gradle文件进行配置;

dependencies {    compile 'com.android.support:design:26.1.0'
}

然后在布局文件里直接使用,要写完整的包名.类名

<de.hdodenhof.circleimageview.CircleImageView    android:id="@+id/manager_layout_pic"    android:layout_centerHorizontal="true"    android:layout_width="100dp"    android:layout_height="100dp"    android:layout_marginTop="100dp"    android:src="@drawable/admin_photo"    />
这样就可以很简单实现一个圆形头像了,使用开源框架主要是为了显示多张圆形图片
当然不使用开源框架也行,也可以这样,
<ImageView    android:id="@+id/Iv_user"    android:layout_width="60dp"    android:layout_height="60dp"    android:layout_gravity="center_horizontal"    android:layout_marginTop="30dp" />

/** 获取圆形头像** */public void initInmage(){    //通过BitmapFactory将资源文件图片转换为一个Bitmap对象    Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.user1);    //取得圆角实现类    RoundedBitmapDrawable drawable= RoundedBitmapDrawableFactory.create(getResources(),bitmap);    //通过Drawable对象获取画笔并设置画笔    drawable.getPaint().setAntiAlias(true);    //设置圆角半径    drawable.setCornerRadius(Math.max(bitmap.getWidth(),bitmap.getHeight()));    //将做好的Drawable显示到ImageView    iv_user.setImageDrawable(drawable);}

还有就是自定义圆角按钮的使用,也是很简单的,我这里只说最简便的方法;

首先在drawable文件下创建一个login_btn.xml文件,

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android">     <corners  android:radius="15dp"/>//设置圆角半径    <solid android:color="#aee4f9"/>//设置背景颜色</shape>
然后设置一下shape属性即可,

然后将背景设置为你做好的文件就行了.

android:background="@drawable/login_btn"
当然还可以设置的更加美观,自定义style.这里我就不再说了 ,只说简单易懂的.




主要功能实现:

    一:管理员功能:注册账号,登录管理系统,查询学生信息,添加学生信息,查修改学生信息,删除学生信息

    二:学生功能:登录账户,查询个人信息,更改个人密码.

    三:UI美工部分:主要用了自定义圆形图片(应用了开源框架  CircleImageView),

          自定义圆角按钮, 

          自定义Alertdialog对话框布局(使用了布局填充器inflate()方法),

         使用Google在2015的IO大会上带来的TextInputLayout构造一个酷炫的登录框架


最后总结一下在实践的时候容易忽视的也是我自己会犯的一些错误:

1.首先最最容易犯的错误就是activity没有在AndroidManifest.xml(清单文件)中配置了,

要是跳转界面的时候挂了,十有八九就是这个问题啦.

2.凡是涉及到数据库的应用,也是很容易出错的,sql语句是很容易写错的,可以用记事本写好直接复制,这样可以减少出错,还有就是有时候会吧数据库的列名,表名字母拼写错,

所以数据库操作出错了话,先检查sql语句有没有错,在看一下数据名有没有写错啦.

3.涉及到activity之间的回调及数据的传送,两个页面跳转同一个activity界面的时候,如果一个回传数据,一个不回传,那么都需要设置一个Boolean类型的传送值以便判断是从哪一个

activity跳转过来的.


最后说一句:当然这个小项目也是借鉴了其他博主的代码,但不管怎样,取其精华去其糟粕.

好的东西拿出来大家一起交流分享,

到这里差不多项目也就完成了,项目很小,很适合刚入门的新手练习实践,和刚刚接触sqllite的朋友,这里只是做一次分享和自我总结复习,欢迎各路大神指导交流意见.不喜勿喷!!


附上源码:

github源码:点击打开链接

码云地址:点击打开链接







阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 沙比利衣柜 沙比利木材价格 沙比利怎么样 沙比利实木门价格 沙比利图片 沙比利颜色 沙比利实木门图片 么沙比利 沙比利生态板 沙比利是什么颜色 沙比利面板贴图 沙比利饰面板 沙比利木 沙比利吉他 沙比利木皮价格 沙比利色门 非洲沙比利木 枸橼酸莫沙比利 沙比利木门图片 莫沙比利作用 沙比利饰面板颜色 莫沙比利说明书 沙比利饰面板贴图 曼谷芭提雅沙美岛旅游攻略 芭提雅沙美岛 芭提雅到沙美岛 芭提雅去沙美岛 沙汤的做法 沙汤做法 沙骨汤的做法大全 我的老婆是天师 折戟vs沉沙 沙河到石家庄 沙河乡 沙河子小区二手房 五常到沙河子客车时刻表 河北沙河市 干沙河粉怎么泡软 沙河粉图片 沙河有什么好玩的地方 沙河旅游景点大全 沙河镇蛋糕