zoukankan      html  css  js  c++  java
  • Android : SQLite 版学生系统

    Android : ListView 学生管理 中已经使用 ListView 控件实现简易学生管理功能,现在尝试采用 SQLite 数据库本地保存学生信息,并完善查询功能。

    使用工具

    • android studio (ver. 3.5.1)
    • android(sdk 29)
    • java(ver.1.8.0)
    • gradle(ver. 5.4.1)

    功能实现

    1.创建学生实体类。

    public class StuInfo implements Serializable {
        private String name;
        private String major;
        private String age;
        private String sex;
        private String kecheng;
        private String academy;
        private String date;
        private int id;
      	······
    

    2.设计一个的列表来显示学生信息。

    pic0

    3.创建 MySQLiteAccess 类访问数据库。

    public class MySQLiteAccess extends SQLiteOpenHelper {
        /**
         * @param context:上下文
         * @param version:版本号
         */
        public MySQLiteAccess(Context context, int version) {
            super(context, "stu4.db", null, version);
        }
        /**
         * 数据库文件创建成功后调用
         * SQL操作的语句
         * @param db 数据库 stuAdmin.db
         *           列:
         *           id(int类型主键:学号)
         *           name(text)
         *           sex(text)
         *           age(int)
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            System.out.println("数据库创建");
            db.execSQL("create table students(
    " +
                    "id integer primary key  autoincrement,
    " +
                    "name text,
    " +
                    "sex text,
    " +
                    "age integer,
    " +
                    "academy text,
    " +
                    "major text
    ," +
                    "date text
    " +
                    ");");
            db.execSQL("create table courseTable(
    " +
                    "stuno text ,
    " +
                    "course text 
    " +
                    ");"
            );
        }
        	······
    

    3.创建 DBop 类对数据库中数据进行操作。

    public class DBop {
        private MySQLiteAccess mySQLiteAccess;
        private SQLiteDatabase database;
    
        public void test(Context context) {
            mySQLiteAccess = new MySQLiteAccess(context, 3);
            database = mySQLiteAccess.getReadableDatabase();
        }
    
        public void insert(StuInfo s) {
            int age = Integer.parseInt(s.getAge());
            database.execSQL("insert into students values(?,?,?,?,?,?,?" +
                    ")", new Object[]{null, s.getName(), s.getSex(), age, s.getAcademy(), s.getMajor(), s.getDate()});
            System.out.println("插入数据成功");
        }
    
        public void delete(int id) {
            Integer I = new Integer(id);
            //  String n=new String(name);
            database.execSQL("delete from students where id=?", new Object[]{I});
        }
    
        public List<StuInfo> searchByName(String key) {
            List<StuInfo> listByName = new ArrayList<StuInfo>();
            key = "%" + key + "%";
            Cursor cursor = database.rawQuery("select * from students where name like?", new String[]{key});
            while (cursor.moveToNext()) {
    
                //   int id=cursor.getInt(cursor.getColumnIndex("id"));
    
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String sex = cursor.getString(cursor.getColumnIndex("sex"));
                String age = cursor.getString(cursor.getColumnIndex("age"));
                listByName.add(new StuInfo(name, sex, age));
            }
            return listByName;
        }
        	······
    

    4.创建 StudentAdapter

    public class StudentAdapter extends BaseAdapter implements View.OnClickListener {
         ······
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View stuView = View.inflate(stuContext, R.layout.list, null);
            TextView tv_id = stuView.findViewById(R.id.li_id);
            TextView tv_name = stuView.findViewById(R.id.li_name);
            TextView tv_academy = stuView.findViewById(R.id.li_academy);
            ImageView iv_edit = stuView.findViewById(R.id.li_edit);
            ImageView iv_delete = stuView.findViewById(R.id.li_delete);
            final StuInfo student = (StuInfo) stuDates.get(position);
            tv_id.setText(String.valueOf(student.getId()));
            tv_name.setText(student.getName());
            tv_academy.setText(student.getAcademy());
            iv_edit.setImageResource(R.drawable.edit);
            iv_delete.setImageResource(R.drawable.delete);
            //增加监听
            iv_edit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Intent intent = new Intent();
                    intent.setClass(context, Edit.class);
                    intent.putExtra("altStu", student);
                    ((Activity) context).startActivity(intent);
                }
            });
            iv_delete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dbOperate.delete(student.getId());
                    stuDates.remove(student);
                    StudentAdapter.this.notifyDataSetChanged();
                }
            });
            //给删除和编辑设置标志
            iv_edit.setTag(position);
            iv_delete.setTag(position);
            return stuView;
        }
        ······
    

    5.创建 searchActivity

    public class searchActivity extends AppCompatActivity implements View.OnClickListener {
        private Button btn_return;
        private ListView lv_searchlist;
        DBop dbOperate = new DBop();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search);
            lv_searchlist = (ListView) findViewById(R.id.lv_searchlist);
            btn_return = (Button) findViewById(R.id.btn_return);
            btn_return.setOnClickListener(this);
            dbOperate.test(this);
            Bundle bundle = getIntent().getExtras();
            String searchKey = bundle.getString("searchKey");
            List<StuInfo> searchList = dbOperate.searchByAll(searchKey);
            if (!searchList.isEmpty()) {
                StudentAdapter myAdapter = new StudentAdapter(this, searchList);
                lv_searchlist.setAdapter(myAdapter);
            } else {
                Toast.makeText(this, "无结果", Toast.LENGTH_SHORT);
            }
        }
            ······
    

    演示

    pic1pic2

    pic1pic2

    代码下载地址

    StudentDemo

  • 相关阅读:
    微软开源Counterfit,用于AI系统安全测试的自动化工具
    吴恩达教你如何读论文:绘制进度表格,论文至少看三遍,还要问自己问题
    前帝国理工金融数学PhD易聪先生的书单
    以机器学习的视角来看时序点过程的最新进展
    文献阅读第一利器:文献笔记法(Literature Notes)
    死磕论文前,不如先找齐一套好用的工具
    后悔没早点认识论文工具大盘点!
    写论文、搞科研、读大学必备的28款软件。
    2-1-HC32F460(华大)+BC260Y(NB-IOT)基本控制篇(自建物联网平台)-基础外设例程-工程模板使用说明
    1-HC32F460(华大)+BC260Y(NB-IOT)基本控制篇(自建物联网平台)--硬件使用说明
  • 原文地址:https://www.cnblogs.com/esllovesn/p/12222488.html
Copyright © 2011-2022 走看看