『牛角书』鸿蒙——简易通讯录项目开发
目录
# 简易通讯录小项目
作为一名初级学者来说,这个小项目适合初学者,综合多个文章,写出了此篇文章,如有不足,还请担待。
CV一下代码,一小时内也能运行,适合新手接触鸿蒙,想做一个有意思的小项目的朋友们。欢迎大家点赞收藏,支持~
什么是鸿蒙
鸿蒙目前作为主流的华为国产新系统,在某种程度上,热度空前的高。所以萌生的想了解一下鸿蒙的初步的开端。
正文开始
1.项目运行
系统:windows11 DevEco Studio
2.代码示例
2.1 前端代码示例
主要由text和btton控件完成 颜色随机
- 1.
2.3后端数据库创建
public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); //初始化数据库 initDB(); //初始化组件 initCompoment(); } //初始化数据库 private void initDB() { config = StoreConfig.newDefaultConfig(DB_NAME); dbHelper = new DatabaseHelper(this); //回调初始化 rdbOpenCallback = new RdbOpenCallback() { @Override public void onCreate(RdbStore store) { //创建表 store.executeSql("create table if not exists " + TABLE_NAME + " (" + COLUMN_ID + " integer primary key, " + COLUMN_NAME + " text not null, " + COLUMN_SEX + " , " + COLUMN_AGE + " integer)"); } @Override public void onUpgrade(RdbStore store, int oldVersion, int newVersion) { } }; //创建数据库 rdbStore = dbHelper.getRdbStore(config, DB_VERSION, rdbOpenCallback, null); }
2.3 思路
用增加,删除,修改和查询 来保证通讯录的运行
> 联系人信息添加至数据库中,
> 在数据库中存储,通过编号查询联系人信息,
> 可用修改来及时更新联系人信息。
//初始化组件 private void initCompoment() { //编号 tf_id = (TextField) findComponentById(ResourceTable.Id_tf_id); //姓名 tf_name = (TextField) findComponentById(ResourceTable.Id_tf_name); //性别 tf_sex = (TextField) findComponentById(ResourceTable.Id_tf_sex); //年龄 tf_age = (TextField) findComponentById(ResourceTable.Id_tf_age); //添加按钮 btn_add = (Button) findComponentById(ResourceTable.Id_btn_add); //删除按钮 btn_delete = (Button) findComponentById(ResourceTable.Id_btn_delete); //修改按钮 btn_update = (Button) findComponentById(ResourceTable.Id_btn_update); //查询全部数据按钮 btn_query = (Button) findComponentById(ResourceTable.Id_btn_query); //显示文本 t_show = (Text) findComponentById(ResourceTable.Id_t_show); //设置按钮监听 setListener(); } private void setListener() { //添加按钮监听 btn_add.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { int id = Integer.parseInt(tf_id.getText()); String name = tf_name.getText(); String sex = tf_sex.getText(); int age = Integer.parseInt(tf_age.getText()); ToastDialog d = new ToastDialog(getContext()); //根据输入的数据,加入到数据表中 if (id > 0 && name.length() > 0) { //准备添加数据 ValuesBucket valuesBucket = new ValuesBucket(); valuesBucket.putInteger(COLUMN_ID, id); valuesBucket.putString(COLUMN_NAME, name); valuesBucket.putString(COLUMN_SEX, sex); valuesBucket.putInteger(COLUMN_AGE, age); //调用接口添加数据,返回-1表示失败 long rowid = rdbStore.insert(TABLE_NAME, valuesBucket); if( rowid==-1 ) d.setText("添加数据记录失败"); else d.setText("添加数据记录成功"); } else { d.setText("编号必须为非负整数且姓名不能为空"); } //显示提示 d.show(); } }); //删除按钮监听 btn_delete.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { int id = Integer.parseInt(tf_id.getText()); ToastDialog d = new ToastDialog(getContext()); //根据输入的编号,删除对应编号的记录 if (id > 0) { //设置删除条件 RdbPredicates predicates = new RdbPredicates(TABLE_NAME); predicates.equalTo(COLUMN_ID, id); //调用接口删除记录,返回影响的记录数 int rows = rdbStore.delete(predicates); d.setText("删除 " + rows + " 行记录"); } else { d.setText("请输入编号"); } //提示信息 d.show(); } }); //修改按钮监听 btn_update.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { int id = Integer.parseInt(tf_id.getText()); String name = tf_name.getText(); String sex = tf_sex.getText(); int age = Integer.parseInt(tf_age.getText()); ToastDialog d = new ToastDialog(getContext()); //修改对应编号的记录数据信息 if (id > 0) { //设置修改的数据 ValuesBucket valuesBucket = new ValuesBucket(); valuesBucket.putString(COLUMN_NAME, name); valuesBucket.putString(COLUMN_SEX, sex); valuesBucket.putInteger(COLUMN_AGE, age); //设置删除条件和数据的编号相等 RdbPredicates predicates = new RdbPredicates(TABLE_NAME); predicates.equalTo(COLUMN_ID, id); //调用接口进行数据修改,返回修改的记录数 int rows = rdbStore.update(valuesBucket, predicates); if(rows>0) d.setText("修改了编号为 " + id + " 的记录"); else d.setText("没有修改任何记录"); } else { d.setText("请输入编号"); } //提示显示 d.show(); } }); //查询全部按钮监听 btn_query.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { //查询条件 RdbPredicates predicates = new RdbPredicates(TABLE_NAME); String[] columns = new String[]{COLUMN_ID, COLUMN_NAME, COLUMN_SEX, COLUMN_AGE}; //调用query接口进行查询,返回结果集 ResultSet resultSet = rdbStore.query(predicates, columns); if (resultSet.getRowCount() > 0) { resultSet.goToFirstRow(); StringBuilder show = new StringBuilder(); show.append("编号 姓名 性别 年龄" + System.lineSeparator()); //遍历结果集 do { int id = resultSet.getInt(resultSet.getColumnIndexForName(COLUMN_ID)); String name = resultSet.getString(resultSet.getColumnIndexForName(COLUMN_NAME)); String sex = resultSet.getString(resultSet.getColumnIndexForName(COLUMN_SEX)); int age = resultSet.getInt(resultSet.getColumnIndexForName(COLUMN_AGE)); show.append(id + " " + name + " " + sex + " " + age); show.append(System.lineSeparator()); } while (resultSet.goToNextRow()); //显示到Text中 t_show.setText(show.toString()); } else { t_show.setText("没有数据记录!"); } } }); }
**参考:**#星光计划2.0# HarmonyOS 项目实战之通讯录Demo(JS)-开源基础软件社区-51CTO.COM