宠物领养系统技术报告

目录

宠物领养系统技术报告..................................................................................................... 1

1. 项目背景............................................................................................................... 1

2. 需求分析............................................................................................................... 2

2.1 功能性需求.................................................................................................. 2

2.2 非功能性需求............................................................................................... 2

3. 总体方案............................................................................................................... 3

3.1 技术架构...................................................................................................... 3

3.2 开发环境...................................................................................................... 4

3.3 项目结构...................................................................................................... 4

4. 功能设计............................................................................................................... 4

4.1 用户管理模块............................................................................................... 4

4.2 宠物管理模块............................................................................................... 5

4.3 领养管理模块............................................................................................... 5

4.4 系统管理模块............................................................................................... 6

5. 数据库设计........................................................................................................... 6

5.1 数据库表结构............................................................................................... 6

5.2 表关系设计.................................................................................................. 8

6. 界面实现............................................................................................................... 8

6.1 设计原则...................................................................................................... 8

6.2 主要界面...................................................................................................... 8

6.3 交互设计...................................................................................................... 9

7. 功能实现............................................................................................................... 9

7.1 数据库管理实现.......................................................................................... 10

7.2 用户服务实现............................................................................................. 12

7.3 宠物服务实现............................................................................................. 14

7.4 领养服务实现............................................................................................. 15

7.5 主页面实现................................................................................................. 17

8. 测试.................................................................................................................... 19

8.1 测试策略.................................................................................................... 19

8.2 测试用例.................................................................................................... 19

8.3 性能测试.................................................................................................... 20

8.4 兼容性测试................................................................................................. 21

9. 工作小结............................................................................................................. 21

9.1 项目成果.................................................................................................... 21

9.2 技术收获.................................................................................................... 21

9.3 项目亮点.................................................................................................... 22

9.4 不足与改进................................................................................................. 22

9.5 总结........................................................................................................... 22

1. 项目背景

随着社会的发展和人们生活水平的提高,宠物已经成为许多家庭的重要成员。然而,流浪动物问题日益严重,许多宠物因为各种原因被遗弃,需要寻找新的家庭。同时,也有许多爱心人士希望能够领养宠物,为它们提供温暖的家。

传统的宠物领养方式主要依靠线下渠道,如宠物收容所、宠物店等,存在信息不对称、效率低下、覆盖面有限等问题。为了解决这些问题,我们开发了基于 HarmonyOS 的宠物领养系统,旨在为宠物领养提供一个便捷、高效的数字化平台。

该系统采用现代化的移动应用技术,支持用户注册登录、宠物信息发布、领养申请、审核管理等核心功能,为宠物领养双方搭建了一个安全、可靠的交流平台。

2. 需求分析

2.1 功能性需求

用户管理需求:

  • 用户注册和登录功能
  • 个人信息管理
  • 密码修改功能
  • 用户权限控制

宠物管理需求:

  • 宠物信息发布(名称、物种、品种、年龄、性别、描述、照片)
  • 宠物信息编辑和删除
  • 宠物状态管理(可领养 / 已领养)
  • 宠物搜索功能
  • 宠物详情查看

领养管理需求:

  • 领养申请提交
  • 领养申请审核
  • 领养记录管理
  • 领养状态跟踪

系统管理需求:

  • 数据持久化存储
  • 图片上传和管理
  • 系统权限管理

2.2 非功能性需求

性能需求:

  • 应用启动时间不超过 3 秒
  • 页面切换响应时间不超过 1 秒
  • 支持离线数据访问

可用性需求:

  • 界面简洁美观,操作直观
  • 支持不同屏幕尺寸适配
  • 提供友好的错误提示

安全性需求:

  • 用户数据加密存储
  • 防止 SQL 注入攻击
  • 权限验证机制

兼容性需求:

  • 支持 HarmonyOS 3.0 及以上版本
  • 兼容不同设备类型

3. 总体方案

3.1 技术架构

本系统采用分层架构设计,主要包含以下层次:

表现层(UI Layer):

  • 基于 ArkUI 框架构建用户界面
  • 使用 TypeScript/ArkTS 开发
  • 响应式布局设计

业务逻辑层(Service Layer):

  • UserService:用户相关业务逻辑
  • PetService:宠物相关业务逻辑
  • AdoptionService:领养相关业务逻辑

数据访问层(Data Access Layer):

  • DatabaseManager:数据库操作管理
  • 使用 HarmonyOS 关系型数据库

数据模型层(Model Layer):

  • User:用户数据模型
  • Pet:宠物数据模型
  • AdoptionRecord:领养记录数据模型

3.2 开发环境

  • 开发工具: DevEco Studio 4.0+
  • 开发语言: TypeScript/ArkTS
  • UI 框架: ArkUI
  • 数据库: HarmonyOS 关系型数据库
  • 目标平台: HarmonyOS API 9+

3.3 项目结构

PetAdoption/

├── entry/

│   ├── src/main/ets/

│   │   ├── model/           # 数据模型

│   │   ├── service/         # 业务服务

│   │   ├── database/        # 数据库管理

│   │   ├── pages/           # 页面组件

│   │   ├── utils/           # 工具类

│   │   └── constants/       # 常量定义

│   └── src/main/resources/  # 资源文件

└── build-profile.json5      # 构建配置

4. 功能设计

4.1 用户管理模块

登录注册功能:

  • 支持用户名和密码登录
  • 新用户注册功能
  • 登录状态保持
  • 密码验证机制

个人中心功能:

  • 个人信息查看和编辑
  • 密码修改功能
  • 退出登录功能

4.2 宠物管理模块

宠物发布功能:

  • 宠物基本信息录入
  • 宠物照片上传
  • 宠物状态设置
  • 信息验证和保存

宠物浏览功能:

  • 宠物列表展示
  • 宠物详情查看
  • 宠物搜索功能
  • 分类筛选功能

宠物管理功能:

  • 我的宠物列表
  • 宠物信息编辑
  • 宠物删除功能
  • 状态更新功能

4.3 领养管理模块

领养申请功能:

  • 领养申请提交
  • 申请信息填写
  • 申请状态查询

领养审核功能:

  • 申请列表查看
  • 申请审核处理
  • 审核结果通知

4.4 系统管理模块

数据管理功能:

  • 数据库初始化
  • 数据备份恢复
  • 数据同步机制

权限管理功能:

  • 用户权限验证
  • 操作权限控制
  • 安全机制保障

5. 数据库设计

5.1 数据库表结构

表名

字段名

数据类型

约束

说明

users

id

INTEGER

PRIMARY KEY AUTOINCREMENT

用户 ID

username

TEXT

UNIQUE NOT NULL

用户名

password

TEXT

NOT NULL

密码

email

TEXT

UNIQUE NOT NULL

邮箱

avatar

TEXT

头像路径

create_time

TEXT

NOT NULL

创建时间

update_time

TEXT

NOT NULL

更新时间

表名

字段名

数据类型

约束

说明

pets

id

INTEGER

PRIMARY KEY AUTOINCREMENT

宠物 ID

name

TEXT

NOT NULL

宠物名称

species

TEXT

NOT NULL

物种

breed

TEXT

品种

age

INTEGER

DEFAULT 0

年龄(月)

gender

TEXT

性别

description

TEXT

描述

photo

TEXT

照片路径

status

TEXT

DEFAULT 'available'

状态

user_id

INTEGER

NOT NULL

发布者 ID

create_time

TEXT

NOT NULL

创建时间

update_time

TEXT

NOT NULL

更新时间

表名

字段名

数据类型

约束

说明

adoption_records

id

INTEGER

PRIMARY KEY AUTOINCREMENT

记录 ID

pet_id

INTEGER

NOT NULL

宠物 ID

user_id

INTEGER

NOT NULL

申请用户 ID

application_date

TEXT

NOT NULL

申请日期

approval_date

TEXT

审核日期

status

TEXT

DEFAULT 'pending'

状态

notes

TEXT

备注

create_time

TEXT

NOT NULL

创建时间

update_time

TEXT

NOT NULL

更新时间

5.2 表关系设计

  • users 表与 pets 表: 一对多关系,一个用户可以发布多只宠物
  • users 表与 adoption_records 表: 一对多关系,一个用户可以申请领养多只宠物
  • pets 表与 adoption_records 表: 一对多关系,一只宠物可以被多个用户申请领养

6. 界面实现

6.1 设计原则

  • 简洁美观: 采用现代化的 UI 设计风格,界面简洁清晰
  • 用户友好: 操作流程简单直观,符合用户使用习惯
  • 响应式设计: 适配不同屏幕尺寸,保证良好的用户体验
  • 一致性: 保持界面元素和交互方式的一致性

6.2 主要界面

登录注册界面:

  • 渐变背景设计
  • 表单输入验证
  • 状态切换功能
  • 错误提示显示

首页界面:

  • 顶部导航栏
  • 搜索功能区域
  • 标签页切换
  • 宠物列表展示
  • 浮动添加按钮

宠物详情界面:

  • 大图展示
  • 详细信息展示
  • 操作按钮区域
  • 状态标识

添加宠物界面:

  • 表单输入区域
  • 图片选择功能
  • 信息验证
  • 保存操作

6.3 交互设计

  • 导航设计: 采用底部标签导航和页面内导航相结合
  • 反馈机制: 提供加载状态、成功提示、错误提示等反馈
  • 手势操作: 支持滑动、点击等手势操作
  • 动画效果: 适当的动画效果提升用户体验

7. 功能实现

7.1 数据库管理实现

export class DatabaseManager {

  private static instance: DatabaseManager;

  private store: relationalStore.RdbStore | null = null;

  private readonly DB_NAME = 'PetAdoption.db';

  private readonly DB_VERSION = 1;

  public static getInstance(): DatabaseManager {

    if (!DatabaseManager.instance) {

      DatabaseManager.instance = new DatabaseManager();

    }

    return DatabaseManager.instance;

  }

  public async initDatabase(context: Context): Promise<void> {

    const config: relationalStore.StoreConfig = {

      name: this.DB_NAME,

      securityLevel: relationalStore.SecurityLevel.S1

    };

    try {

      this.store = await relationalStore.getRdbStore(context, config);

      await this.createTables();

      console.info('数据库初始化成功');

    } catch (error) {

      console.error('数据库初始化失败:', error);

      throw new Error('数据库初始化失败');

    }

  }

  private async createTables(): Promise<void> {

    if (!this.store) {

      throw new Error('数据库未初始化');

    }

    // 创建用户表

    const createUserTable = `

      CREATE TABLE IF NOT EXISTS users (

        id INTEGER PRIMARY KEY AUTOINCREMENT,

        username TEXT UNIQUE NOT NULL,

        password TEXT NOT NULL,

        email TEXT UNIQUE NOT NULL,

        avatar TEXT,

        create_time TEXT NOT NULL,

        update_time TEXT NOT NULL

      )

    `;

    // 创建宠物表

    const createPetTable = `

      CREATE TABLE IF NOT EXISTS pets (

        id INTEGER PRIMARY KEY AUTOINCREMENT,

        name TEXT NOT NULL,

        species TEXT NOT NULL,

        breed TEXT,

        age INTEGER DEFAULT 0,

        gender TEXT,

        description TEXT,

        photo TEXT,

        status TEXT DEFAULT 'available',

        user_id INTEGER NOT NULL,

        create_time TEXT NOT NULL,

        update_time TEXT NOT NULL,

        FOREIGN KEY (user_id) REFERENCES users (id)

      )

    `;

    // 创建领养记录表

    const createAdoptionRecordTable = `

      CREATE TABLE IF NOT EXISTS adoption_records (

        id INTEGER PRIMARY KEY AUTOINCREMENT,

        pet_id INTEGER NOT NULL,

        user_id INTEGER NOT NULL,

        application_date TEXT NOT NULL,

        approval_date TEXT,

        status TEXT DEFAULT 'pending',

        notes TEXT,

        create_time TEXT NOT NULL,

        update_time TEXT NOT NULL,

        FOREIGN KEY (pet_id) REFERENCES pets (id),

        FOREIGN KEY (user_id) REFERENCES users (id)

      )

    `;

    await this.store.executeSql(createUserTable);

    await this.store.executeSql(createPetTable);

    await this.store.executeSql(createAdoptionRecordTable);

  }

}

7.2 用户服务实现

export class UserService {

  private static instance: UserService;

  private dbManager: DatabaseManager;

  private currentUser: User | null = null;

  public static getInstance(): UserService {

    if (!UserService.instance) {

      UserService.instance = new UserService();

    }

    return UserService.instance;

  }

  public async register(username: string, password: string, email: string): Promise<boolean> {

    try {

      // 检查用户名是否已存在

      const existingUser = await this.dbManager.getUserByUsername(username);

      if (existingUser) {

        throw new Error('用户名已存在');

      }

      // 创建新用户

      const user = new User(username, password, email);

      const userId = await this.dbManager.insertUser(user);

     

      if (userId > 0) {

        user.id = userId;

        this.currentUser = user;

        return true;

      }

      return false;

    } catch (error) {

      console.error('注册失败:', error);

      throw new Error('注册失败');

    }

  }

  public async login(username: string, password: string): Promise<boolean> {

    try {

      const user = await this.dbManager.getUserByUsername(username);

      if (user && user.password === password) {

        this.currentUser = user;

        return true;

      }

      return false;

    } catch (error) {

      console.error('登录失败:', error);

      throw new Error('登录失败');

    }

  }

  public logout(): void {

    this.currentUser = null;

  }

}

7.3 宠物服务实现

export class PetService {

  private static instance: PetService;

  private dbManager: DatabaseManager;

  public static getInstance(): PetService {

    if (!PetService.instance) {

      PetService.instance = new PetService();

    }

    return PetService.instance;

  }

  public async addPet(pet: Pet): Promise<boolean> {

    try {

      const petId = await this.dbManager.insertPet(pet);

      return petId > 0;

    } catch (error) {

      console.error('添加宠物失败:', error);

      throw new Error('添加宠物失败');

    }

  }

  public async getAllPets(): Promise<Pet[]> {

    try {

      return await this.dbManager.getAllPets();

    } catch (error) {

      console.error('获取宠物列表失败:', error);

      throw new Error('获取宠物列表失败');

    }

  }

  public async searchPets(keyword: string): Promise<Pet[]> {

    try {

      return await this.dbManager.searchPets(keyword);

    } catch (error) {

      console.error('搜索宠物失败:', error);

      throw new Error('搜索宠物失败');

    }

  }

}

7.4 领养服务实现

export class AdoptionService {

  private static instance: AdoptionService;

  private dbManager: DatabaseManager;

  public static getInstance(): AdoptionService {

    if (!AdoptionService.instance) {

      AdoptionService.instance = new AdoptionService();

    }

    return AdoptionService.instance;

  }

  public async applyForAdoption(petId: number, userId: number, notes?: string): Promise<boolean> {

    try {

      // 检查宠物是否存在且可领养

      const pet = await this.dbManager.getPetById(petId);

      if (!pet || pet.status !== PetStatus.AVAILABLE) {

        throw new Error('宠物不可领养');

      }

      // 检查是否已有待审核的申请

      const existingRecord = await this.dbManager.getAdoptionRecordByPetAndUser(petId, userId);

      if (existingRecord) {

        throw new Error('您已申请领养此宠物,请等待审核');

      }

      // 创建领养申请

      const adoptionRecord = new AdoptionRecord(petId, userId, notes);

      const recordId = await this.dbManager.insertAdoptionRecord(adoptionRecord);

     

      return recordId > 0;

    } catch (error) {

      console.error('申请领养失败:', error);

      throw new Error('申请领养失败');

    }

  }

  public async approveAdoption(recordId: number): Promise<boolean> {

    try {

      // 获取领养记录

      const record = await this.dbManager.getAdoptionRecordById(recordId);

     

      if (!record) {

        throw new Error('领养记录不存在');

      }

      // 更新记录状态

      record.status = AdoptionStatus.APPROVED;

      record.approvalDate = new Date().toISOString();

      const updateResult = await this.dbManager.updateAdoptionRecord(record);

      if (updateResult) {

        // 更新宠物状态为已领养

        const pet = await this.dbManager.getPetById(record.petId);

        if (pet) {

          pet.status = PetStatus.ADOPTED;

          await this.dbManager.updatePet(pet);

        }

      }

      return updateResult;

    } catch (error) {

      console.error('审核领养申请失败:', error);

      throw new Error('审核领养申请失败');

    }

  }

}

7.5 主页面实现

@Entry

@Component

struct Index {

  @State pets: Pet[] = [];

  @State searchKeyword: string = '';

  @State loading: boolean = false;

  @State currentTabIndex: number = 0;

  private petService: PetService = PetService.getInstance();

  private userService: UserService = UserService.getInstance();

  async aboutToAppear() {

    await this.loadPets();

  }

  build() {

    Column() {

      // 顶部标题栏

      Column() {

        Row() {

          // 左侧Logo和标题

          Row() {

            Image($r('app.media.logo_icon'))

              .width(28)

              .height(28)

              .margin({ right: 12 })

           

            Column() {

              Text('宠物领养')

                .fontSize(20)

                .fontWeight(FontWeight.Bold)

                .fontColor(Color.White)

             

              Text('为宠物找到温暖的家')

                .fontSize(12)

                .fontColor('rgba(255, 255, 255, 0.8)')

                .margin({ top: 2 })

            }

            .alignItems(HorizontalAlign.Start)

          }

          .layoutWeight(1)

         

          // 右侧功能按钮

          Row() {

            Image($r('app.media.ic_public_user'))

              .width(34)

              .height(34)

              .fillColor(Color.White)

              .padding(8)

              .backgroundColor('rgba(255, 255, 255, 0.2)')

              .borderRadius(20)

              .onClick(() => {

                router.pushUrl({

                  url: 'pages/ProfilePage'

                });

              })

          }

        }

        .width('100%')

        .height(64)

        .padding({ left: 20, right: 20 })

        .justifyContent(FlexAlign.SpaceBetween)

        .alignItems(VerticalAlign.Center)

      }

      .width('100%')

      .linearGradient({

        direction: GradientDirection.Bottom,

        colors: [['#667eea', 0.0], ['#764ba2', 1.0]]

      })

      // 搜索栏和内容区域

      // ... 其他UI组件

    }

    .width('100%')

    .height('100%')

    .backgroundColor('#F5F7FA')

  }

  private async loadPets() {

    this.loading = true;

    try {

      this.pets = await this.petService.getAllPets();

    } catch (error) {

      console.error('加载宠物列表失败:', error);

    } finally {

      this.loading = false;

    }

  }

}

8. 测试

8.1 测试策略

本系统采用单元测试和集成测试相结合的测试策略,确保系统功能的正确性和稳定性。

8.2 测试用例

测试模块

测试用例

测试内容

预期结果

实际结果

状态

用户管理

用户注册

输入有效用户名、密码、邮箱

注册成功,返回登录页面

注册成功

通过

用户登录

输入正确的用户名和密码

登录成功,跳转到首页

登录成功

通过

密码验证

输入错误的密码

显示错误提示

显示错误提示

通过

宠物管理

添加宠物

填写完整的宠物信息

宠物添加成功

添加成功

通过

宠物搜索

输入关键词搜索

返回匹配的宠物列表

返回正确结果

通过

宠物编辑

修改宠物信息

信息更新成功

更新成功

通过

宠物删除

删除宠物记录

宠物从列表中移除

删除成功

通过

领养管理

申请领养

提交领养申请

申请提交成功

提交成功

通过

审核申请

审核领养申请

申请状态更新

状态更新成功

通过

重复申请

对同一宠物重复申请

提示已申请过

提示正确

通过

数据库

数据存储

保存用户和宠物数据

数据正确存储

存储正确

通过

数据查询

查询各种数据

返回正确结果

查询正确

通过

数据更新

更新数据记录

数据正确更新

更新正确

通过

界面交互

页面跳转

点击按钮跳转页面

正确跳转到目标页面

跳转正确

通过

表单验证

输入无效数据

显示验证错误

验证正确

通过

加载状态

数据加载过程

显示加载动画

显示正确

通过

8.3 性能测试

测试项目

测试指标

目标值

实际值

状态

应用启动

启动时间

≤3 秒

2.1 秒

通过

页面切换

响应时间

≤1 秒

0.8 秒

通过

数据加载

加载时间

≤2 秒

1.5 秒

通过

搜索功能

搜索响应

≤1 秒

0.6 秒

通过

内存使用

内存占用

≤100MB

85MB

通过

8.4 兼容性测试

测试项目

测试环境

测试结果

状态

系统版本

HarmonyOS 3.0

正常运行

通过

系统版本

HarmonyOS 3.1

正常运行

通过

设备类型

手机

正常运行

通过

屏幕尺寸

不同分辨率

界面适配正常

通过

9. 工作小结

9.1 项目成果

本项目成功开发了一个功能完整的宠物领养系统,主要成果包括:

  • 完整的系统功能: 实现了用户管理、宠物管理、领养管理等核心功能模块
  • 良好的用户体验: 采用现代化的 UI 设计,界面简洁美观,操作流畅
  • 稳定的数据存储: 使用 HarmonyOS 关系型数据库,确保数据安全可靠
  • 完善的测试覆盖: 通过全面的测试验证,确保系统功能正确性

9.2 技术收获

通过本项目的开发,获得了以下技术收获:

  • HarmonyOS 开发技能: 掌握了 ArkUI 框架的使用,熟悉了 HarmonyOS 应用开发流程
  • TypeScript/ArkTS 编程: 提升了 TypeScript 编程能力,了解了 ArkTS 的特性
  • 数据库设计能力: 学会了关系型数据库的设计和操作
  • 软件工程实践: 体验了完整的软件开发流程,包括需求分析、设计、编码、测试等

9.3 项目亮点

  • 架构设计合理: 采用分层架构,代码结构清晰,便于维护和扩展
  • 用户体验优秀: 界面设计美观,交互流畅,符合现代移动应用标准
  • 功能完整实用: 涵盖了宠物领养的核心业务流程,具有实际应用价值
  • 代码质量高: 代码规范,注释完整,易于理解和维护

9.4 不足与改进

  • 功能扩展: 可以增加更多功能,如消息通知、评价系统、地图定位等
  • 性能优化: 可以进一步优化数据加载和界面渲染性能
  • 安全加强: 可以增加更多的安全验证机制
  • 用户体验: 可以增加更多的动画效果和交互细节

9.5 总结

本项目是一个成功的 HarmonyOS 应用开发实践,不仅实现了预期的功能目标,还在技术学习和工程实践方面取得了良好效果。通过这个项目,深入理解了移动应用开发的全过程,为今后的软件开发工作奠定了坚实基础。

项目代码结构清晰,功能实现完整,具有良好的可维护性和扩展性。虽然在功能丰富度和用户体验方面还有提升空间,但作为学习和实践项目,已经达到了预期目标,为宠物领养提供了一个实用的数字化解决方案。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐