一.设计概述

主要技术:

  1. 通过rdbStore进行数据的增删改查
  2.  实现了用户的登录、注册、修改密码
  3. 实现了用户对商品的收藏、搜索、购买
  4. 可以查看自己购买的订单信息,对个人信息进行编辑
  5.  可以给购物商城系统给出自己的一些建议

系统基于DevEco Studio编写代码,用rdbstore进行数据的增删查改。

在商品搜索功能中引入模糊匹配算法,优化关键词容错率,结合用户浏览历史生成个性化推荐列表。

二.需求分析

1. 功能需求分析

用户模块:

注册 / 登录:支持唯一账号(手机号 / 邮箱)注册,密码强度校验(需包含字母 + 数字)。

个人中心:编辑个人信息(昵称、地址等)、修改密码、查看收藏夹 / 订单记录。

商品模块:

商品展示:分类浏览(如电子产品、服饰等)、关键词搜索、热门推荐、商品详情页(图文 + 视频介绍)。

购物车:添加 / 删除商品、修改数量、多商品结算。

交易模块:

订单管理:生成订单(含商品清单、金额、配送信息)、模拟支付流程、订单状态更新(待支付 / 已发货 / 已完成)。

数据需求分析

实体关系:

用户(用户 ID、账号、密码、姓名、手机号、地址)

商品(商品 ID、名称、类别、价格、库存、图片 URL)

订单(订单 ID、用户 ID、商品 ID、数量、总价、支付状态、创建时间)

收藏(用户 ID、商品 ID、收藏时间)

3. 性能需求分析

响应时间:界面跳转<1 秒,网络请求(如商品搜索)超时时间≤3 秒。

并发处理:支持 50 个用户同时在线浏览商品。


三.设计方案

  1. 设计目标


基于 HarmonyOS 开发跨设备购物应用,实现多端协同、本地数据快速访问、云端动态同步三大核心能力,满足用户便捷购物需求

2. 系统架构

采用分层架构模式,将系统划分为表现层、业务层、数据层,确保模块解耦与可维护性:

表现层:负责用户交互界面,基于 HarmonyOS ArkUI 实现跨设备 UI 适配。

业务层:处理核心逻辑(如登录验证、订单生成),调用数据层接口。

数据层:管理本地与云端数据交互,保障数据一致性。

3. 技术选型

4、 功能模块设计

5、方案总结

本方案以分层设计跨设备能力为核心,通过 ArkUI 实现高效 UI 开发,结合 rdbStore 与云端 API 保障数据可靠性。后续开发将优先实现用户登录、商品浏览等基础功能,并通过单元测试验证各模块逻辑正确性,确保系统满足性能与扩展性要求。

四.系统设计与实现

系统架构设计:

运行结果:

用户登录”的实现流程
 

登录的主要代码:

        try {

              const tasks1 = await taskModel.getTaskList();

              const tasks:users[] = await taskModel.getUserByName(this.username);

              let isMatch = false;

              for (const task of tasks) {

                if (task.name === this.username && task.password === this.password) {

                  this.phoneNum=task.phoneNum

                  isMatch = true;

                  break;

                }

              }

              if (isMatch) {

                promptAction.showToast({ message: '登录成功' });

                router.pushUrl({ url: "pages/shop",

                  params: {

                    username: this.username,

                    phoneNum: this.phoneNum  // 从数据库查询结果中获取手机号

                  }}

                );

              } else {

                this.errorMsg = '   用户名或密码错误';

              }

            }

async getByname(name:string): Promise<ShopInfo[]> {

    if (!this.rdbStore) {

      console.warn('数据库未初始化');

      return [];

    }

    try {

      const predicates = new relationalStore.RdbPredicates(this.TABLE_NAME)

        .like('name', `%${name}%`);

      const result = await this.rdbStore.query(predicates, [

        'id', 'image', 'name', 'description',

        'detail', 'price', 'live', 'isshop', 'isbuy'

      ]);

      const shopList: ShopInfo[] = [];

      console.log('updates',`查询到 ${result.rowCount} 条记录`);

      // 遍历结果集

      for (let i = 0; i < result.rowCount; i++) {

        result.goToRow(i);

        shopList.push(new ShopInfo(

          result.getLong(result.getColumnIndex('id')),

          result.getString(result.getColumnIndex('image')),

          result.getString(result.getColumnIndex('name')),

          result.getString(result.getColumnIndex('description')),

          result.getString(result.getColumnIndex('detail')),

          result.getDouble(result.getColumnIndex('price')),

          result.getLong(result.getColumnIndex('live')),

          result.getLong(result.getColumnIndex('isshop')),

          result.getLong(result.getColumnIndex('isbuy'))

        ));

      }

登录时,进行没有输入密码,密码输入错误的密码,登录页面都会给出相应的提示。

五.系统测试

类型

工具 / 方式

说明

单元测试

DevEco Studio 自带测试框架

验证单个函数 / 组件逻辑(如密码加密、数据查询)。

功能测试

手工遍历操作

模拟用户真实场景操作,检查功能完整性。

测试流程:

测试用例设计:

模块

测试场景

输入数据

预期结果

实际结果

状态

用户登录

正常登录(有效账号密码)

账号:13812345678
密码:Abc12345

跳转主页,显示用户名

成功

通过

错误密码登录

账号:13812345678
密码:错误密码

提示 “账号或密码错误”

成功

通过

商品搜索

关键词模糊搜索

输入 “手机”

显示含 “手机” 的商品列表

成功

通过

无结果搜索

输入 “不存在的商品”

提示 “未找到相关商品”

成功

通过

购物车结算

添加多商品结算

商品 A(单价 100 元)×2 + 商品 B(单价 200 元)×1

总价显示 400 元,生成订单

成功

通过

测试结果分析

功能测试结论

所有核心功能(登录、搜索、购物车、订单)均通过测试,未发现影响使用的严重缺陷。

优化点:意见反馈模块的图片上传功能在弱网环境下偶发延迟,需增加进度提示。

性能测试结论

响应时间、内存占用等指标均满足需求(如商品列表加载平均 1.2 秒,低于预期 1.5 秒)。

压力测试中,当并发数超过 80 时出现接口超时,需优化后端 API 限流策略。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐