职业体验应用


欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

一、项目概述

运行效果图

image-20260407235115339

image-20260407235131931

image-20260407235137558

image-20260407235143775

image-20260407235153260

image-20260407235157458

1.1 应用简介

职业体验是一款创新的职业探索应用,让用户能够模拟体验不同职业的一天。通过精心设计的职业场景和事件系统,用户可以深入了解各种职业的工作内容、挑战和成就感,帮助用户做出更明智的职业选择。

应用以沉浸式体验为核心,将每个职业的一天分解为多个时间段的事件,包括日常工作、挑战任务、关键决策和成就时刻。用户在体验过程中需要做出选择,这些选择会影响满意度和精力值,最终获得完整的职业体验报告。

应用采用清新的蓝色主题,界面设计简洁直观。内置六大职业分类,涵盖医疗、教育、科技、服务、创意和公共领域,每个职业都有详细的介绍、技能要求和薪资信息。

1.2 核心功能

功能模块 功能描述 实现方式
职业展示 展示各种职业信息 卡片网格布局
职业详情 查看职业详细信息 底部弹窗
体验系统 模拟职业一天体验 事件触发+对话框
决策系统 职业相关选择决策 多选项对话框
状态追踪 满意度和精力值追踪 进度条显示
体验记录 记录体验历史 时间线列表
统计分析 职业体验数据分析 图表展示

1.3 职业分类

应用包含六大职业分类,覆盖主流职业领域:

序号 分类名称 图标 颜色 典型职业
1 医疗 local_hospital #E91E63 医生、护士、药剂师
2 教育 school #4CAF50 教师、培训师、教授
3 科技 computer #2196F3 程序员、产品经理、设计师
4 服务 restaurant #FF9800 厨师、服务员、理发师
5 创意 palette #9C27B0 设计师、作家、艺术家
6 公共 local_fire_department #F44336 消防员、警察、公务员

1.4 技术栈

技术领域 技术选型 版本要求
开发框架 Flutter >= 3.0.0
编程语言 Dart >= 2.17.0
设计规范 Material Design 3 -
状态管理 setState -
动画系统 AnimationController -
目标平台 鸿蒙OS / Web API 21+

1.5 项目结构

lib/
└── main_career_experience.dart
    ├── CareerExperienceApp           # 应用入口
    ├── CareerCategory                # 职业分类枚举
    ├── Career                        # 职业模型
    ├── CareerEvent                   # 职业事件模型
    ├── EventType                     # 事件类型枚举
    ├── CareerChoice                  # 职业选择模型
    ├── ExperienceRecord              # 体验记录模型
    ├── CareerExperienceHomePage      # 主页面(底部导航)
    ├── _buildCareerPage              # 职业页面
    ├── _buildHistoryPage             # 历史页面
    └── _buildStatsPage               # 统计页面

二、设计理念

2.1 职业探索理念

用户进入应用

浏览职业分类

选择感兴趣的职业

查看职业详情

是否开始体验?

开始职业体验

体验日常工作

面对挑战任务

做出关键决策

获得成就时刻

是否继续?

生成体验报告

查看统计数据

做出职业选择

2.2 体验系统设计

职业体验系统将一天的工作分解为多个事件:

早晨

上午

中午

下午

傍晚

晨间准备

工作任务

休息调整

挑战决策

成就时刻

2.3 决策影响模型

用户的选择会影响体验结果:

决策影响

满意度

正面选择 +10~30

负面选择 -10~20

影响最终评价

精力值

高强度任务 -20~35

常规任务 -5~15

休息恢复 +10~20

成就系统

关键成就解锁

技能提升记录

体验报告生成

2.4 职业信息架构

每个职业包含完整的信息体系:

职业信息

基本信息

技能要求

工作安排

体验系统

职业名称

职业描述

薪资范围

难度等级

核心技能列表

技能进度追踪

时间线事件

事件类型

决策选项

满意度系统

精力值系统

成就系统


三、系统架构

3.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
CareerExperienceHomePage

职业页

历史页

统计页

职业卡片

分类筛选

职业详情

记录列表

记录详情

统计卡片

分布图表

洞察建议

体验引擎
事件触发系统

决策系统
选择影响计算

状态管理
满意度/精力值

Career
职业模型

CareerEvent
事件模型

ExperienceRecord
记录模型

3.2 类图设计

belongs to

has events

has type

has choices

records

manages

records

CareerExperienceApp

+Widget build()

«enumeration»

CareerCategory

+medical 医疗

+education 教育

+technology 科技

+service 服务

+creative 创意

+public 公共

+String label

+IconData icon

+Color color

Career

+String id

+String title

+String emoji

+String description

+CareerCategory category

+Color color

+List<String> skills

+String salary

+String difficulty

+List<CareerEvent> dailyEvents

CareerEvent

+String time

+String title

+String description

+String emoji

+EventType type

+List<CareerChoice> choices

«enumeration»

EventType

+routine 日常

+challenge 挑战

+decision 决策

+break_ 休息

+achievement 成就

CareerChoice

+String text

+String result

+int satisfaction

+int energy

ExperienceRecord

+String id

+Career career

+DateTime startTime

+DateTime endTime

+int satisfaction

+int energy

+List<String> achievements

+Map<String,int> skills

CareerExperienceHomePage

-int _currentIndex

-List<Career> _careers

-List<ExperienceRecord> _records

-Career _selectedCareer

-int _currentEventIndex

-bool _isExperiencing

-int _satisfaction

-int _energy

-AnimationController _progressController

+void _startExperience()

+void _showEventDialog()

+void _makeChoice()

+void _endExperience()

3.3 体验流程时序图

记录系统 状态系统 事件对话框 体验引擎 职业详情 职业页 用户 记录系统 状态系统 事件对话框 体验引擎 职业详情 职业页 用户 alt [有决策选项] loop [每个事件] 浏览职业列表 查看职业信息 点击开始体验 启动职业体验 初始化状态 显示当前事件 展示事件描述 做出选择 更新满意度/精力值 显示选择结果 继续下一事件 保存体验记录 显示体验总结

四、核心功能实现

4.1 职业数据模型

职业模型包含完整的职业信息:

class Career {
  final String id;              // 唯一标识
  final String title;           // 职业名称
  final String emoji;           // 职业图标
  final String description;     // 职业描述
  final CareerCategory category;// 所属分类
  final Color color;            // 主题颜色
  final List<String> skills;    // 所需技能
  final String salary;          // 薪资范围
  final String difficulty;      // 难度等级
  final List<CareerEvent> dailyEvents; // 一天的事件列表
}

职业数据示例:

Career(
  id: 'doctor',
  title: '医生',
  emoji: '👨‍⚕️',
  description: '救死扶伤,守护生命健康的白衣天使',
  category: CareerCategory.medical,
  color: const Color(0xFFE91E63),
  skills: ['诊断能力', '沟通技巧', '抗压能力', '专业知识'],
  salary: '15k-50k',
  difficulty: '困难',
  dailyEvents: [
    CareerEvent(
      time: '07:00',
      title: '晨间查房',
      description: '清晨来到医院,开始查房了解病人情况...',
      emoji: '🏥',
      type: EventType.routine,
    ),
    // 更多事件...
  ],
)

4.2 事件触发系统

事件系统是体验的核心:

void _showEventDialog(CareerEvent event) {
  showDialog(
    context: context,
    barrierDismissible: false,
    builder: (context) => AlertDialog(
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)),
      title: Row(
        children: [
          Text(event.emoji, style: const TextStyle(fontSize: 32)),
          const SizedBox(width: 12),
          Expanded(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(event.time, style: TextStyle(fontSize: 12)),
                Text(event.title, style: const TextStyle(fontSize: 20)),
              ],
            ),
          ),
        ],
      ),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          // 事件描述
          Container(
            padding: const EdgeInsets.all(16),
            child: Text(event.description),
          ),
          // 状态栏
          _buildStatusBars(),
          // 决策选项(如果有)
          if (event.choices != null)
            ...event.choices!.map((choice) {
              return ElevatedButton(
                onPressed: () => _makeChoice(choice),
                child: Text(choice.text),
              );
            }),
        ],
      ),
    ),
  );
}

4.3 决策影响系统

用户的选择会影响体验结果:

class CareerChoice {
  final String text;          // 选项文本
  final String result;        // 选择结果
  final int satisfaction;     // 满意度变化
  final int energy;           // 精力值变化
}

void _makeChoice(CareerChoice choice) {
  Navigator.pop(context);
  
  // 更新状态
  setState(() {
    _satisfaction = (_satisfaction + choice.satisfaction).clamp(0, 100);
    _energy = (_energy + choice.energy).clamp(0, 100);
  });
  
  // 显示选择结果
  showDialog(
    context: context,
    builder: (context) => AlertDialog(
      title: const Text('选择结果'),
      content: Column(
        children: [
          Text(choice.result),
          // 显示状态变化
          Row(
            children: [
              _buildChangeIndicator('满意度', choice.satisfaction),
              _buildChangeIndicator('精力值', choice.energy),
            ],
          ),
        ],
      ),
    ),
  );
}

4.4 体验记录系统

记录每次体验的详细信息:

class ExperienceRecord {
  final String id;                  // 唯一标识
  final Career career;              // 体验的职业
  final DateTime startTime;         // 开始时间
  final DateTime endTime;           // 结束时间
  final int satisfaction;           // 最终满意度
  final int energy;                 // 最终精力值
  final List<String> achievements;  // 获得的成就
  final Map<String, int> skills;    // 技能提升
}

void _endExperience() {
  final record = ExperienceRecord(
    id: DateTime.now().millisecondsSinceEpoch.toString(),
    career: _selectedCareer!,
    startTime: _experienceStartTime!,
    endTime: DateTime.now(),
    satisfaction: _satisfaction,
    energy: _energy,
    achievements: List.from(_achievements),
    skills: Map.from(_skillProgress),
  );
  
  setState(() {
    _records.insert(0, record);
    _isExperiencing = false;
  });
  
  _showExperienceSummary(record);
}

4.5 状态追踪系统

实时追踪用户的满意度和精力值:

Widget _buildStatusBars() {
  return Column(
    children: [
      // 满意度进度条
      Row(
        children: [
          const Icon(Icons.sentiment_satisfied, size: 20),
          const SizedBox(width: 8),
          Expanded(
            child: Column(
              children: [
                Text('满意度: $_satisfaction%'),
                LinearProgressIndicator(
                  value: _satisfaction / 100,
                  valueColor: AlwaysStoppedAnimation<Color>(
                    _selectedCareer!.color,
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
      const SizedBox(height: 12),
      // 精力值进度条
      Row(
        children: [
          const Icon(Icons.battery_charging_full, size: 20),
          const SizedBox(width: 8),
          Expanded(
            child: Column(
              children: [
                Text('精力值: $_energy%'),
                LinearProgressIndicator(
                  value: _energy / 100,
                  valueColor: AlwaysStoppedAnimation<Color>(Colors.green),
                ),
              ],
            ),
          ),
        ],
      ),
    ],
  );
}

五、UI设计规范

5.1 配色方案

应用采用蓝色为主色调,象征专业与信任:

颜色类型 色值 用途
主色 #2196F3 (Blue) 导航、按钮、强调元素
辅助色 #03A9F4 (Light Blue) 渐变、次要元素
分类-医疗 #E91E63 (Pink) 医疗职业
分类-教育 #4CAF50 (Green) 教育职业
分类-科技 #2196F3 (Blue) 科技职业
分类-服务 #FF9800 (Orange) 服务职业
分类-创意 #9C27B0 (Purple) 创意职业
分类-公共 #F44336 (Red) 公共职业

5.2 字体规范

元素 字号 字重 颜色
应用标题 24px Bold #FFFFFF
职业名称 18px Bold #000000
事件标题 20px Bold #000000
状态数值 20px Bold 动态颜色
描述文字 14-15px Regular #757575
辅助文字 11-12px Regular #9E9E9E

5.3 组件规范

5.3.1 职业卡片
┌─────────────────────────────────┐
│  👨‍⚕️  医生                      │
│      医疗                       │
├─────────────────────────────────┤
│  救死扶伤,守护生命健康...       │
│                                 │
│  💰 15k-50k                     │
│  ⭐ 困难                        │
└─────────────────────────────────┘
5.3.2 事件时间线
  🏥 ───┐
        │  07:00 晨间查房
        │  清晨来到医院,开始查房...
        │
  👥 ───┤
        │  09:00 门诊接诊
        │  门诊大厅已经排起了长队...
5.3.3 状态进度条
满意度: 75%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
███████████████████████████████░░░

精力值: 60%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
████████████████████████░░░░░░░░░░

六、交互设计

6.1 职业体验流程

结果页 状态栏 体验系统 职业详情 职业列表 用户 结果页 状态栏 体验系统 职业详情 职业列表 用户 alt [需要决策] loop [每个事件] 浏览职业 选择职业 显示详细信息 开始体验 启动体验 显示事件 做出选择 更新状态 显示变化 生成报告 显示体验总结

6.2 决策影响流程

用户面临决策

查看选项

选项A

选项B

显示结果A

显示结果B

满意度+20
精力-30

满意度+15
精力-15

更新状态

继续下一事件

6.3 页面切换状态

点击历史Tab

点击统计Tab

点击职业Tab

点击统计Tab

点击职业Tab

点击历史Tab

点击职业卡片

关闭详情

开始体验

体验结束

职业页

历史页

统计页

职业详情

体验中


七、职业设计指南

7.1 职业选择原则

选择职业时应考虑以下因素:

因素 描述 示例
代表性 选择具有代表性的职业 医生、教师、程序员
多样性 覆盖不同行业和领域 医疗、教育、科技、服务
趣味性 包含有趣的工作场景 消防员的紧急救援
教育性 能够传递职业知识 了解不同职业的日常工作
平衡性 正面和负面事件平衡 成就与挑战并存

7.2 事件设计原则

设计职业事件时应遵循:

事件设计

真实性

多样性

互动性

教育性

贴近实际工作

符合职业特点

不同类型事件

不同时间段

决策选项

状态影响

职业知识

技能展示

7.3 决策设计原则

设计决策选项时应考虑:

  1. 真实性:选项应符合实际工作场景
  2. 平衡性:每个选项都有利弊
  3. 教育性:让用户了解职业的挑战
  4. 多样性:不同类型的决策场景

7.4 职业信息完整性

每个职业应包含完整信息:

信息类型 内容 用途
基本信息 名称、描述、分类 快速了解职业
薪资信息 薪资范围 了解收入水平
难度等级 入门难度 评估职业门槛
技能要求 核心技能列表 了解所需能力
工作安排 一天的事件列表 体验工作内容

八、扩展功能规划

8.1 后续版本规划

2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 职业展示 体验系统 决策系统 记录统计 更多职业 自定义职业 分享功能 职业匹配测试 AI职业建议 社区分享 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 职业体验开发计划

8.2 功能扩展建议

8.2.1 更多职业

扩展职业库,增加更多职业类型:

  • 金融行业:银行家、投资顾问、会计师
  • 艺术领域:画家、音乐家、演员
  • 体育行业:运动员、教练、裁判
  • 科技前沿:AI工程师、数据科学家、产品经理
8.2.2 职业匹配测试

通过问卷测试推荐适合的职业:

  • 性格测试
  • 兴趣测试
  • 能力评估
  • 职业推荐
8.2.3 社区分享

建立职业体验社区:

  • 分享体验心得
  • 真实职业故事
  • 职业问答
  • 行业交流

九、注意事项

9.1 开发注意事项

  1. 事件设计:确保事件真实可信,符合职业特点

  2. 状态管理:使用setState管理本地状态

  3. 用户体验:保持体验流程流畅,避免卡顿

  4. 数据验证:确保满意度、精力值在合理范围内

9.2 常见问题

问题 原因 解决方案
事件不显示 事件列表为空 检查dailyEvents
状态不更新 setState未调用 检查状态更新逻辑
决策无效果 选择未处理 检查_makeChoice方法
记录未保存 记录列表未更新 检查_records操作

9.3 使用提示

💼 职业体验使用小贴士 💼

每种职业都有其独特的价值和挑战。
体验不同职业可以帮助你找到真正的兴趣。
职业选择不仅关乎薪资,更关乎成就感。
保持开放心态,认真体验每个职业的一天。

提示:这只是模拟体验,真实职业需要更多了解。


十、运行说明

10.1 环境要求

环境 版本要求
Flutter SDK >= 3.0.0
Dart SDK >= 2.17.0
鸿蒙OS API 21+

10.2 运行命令

# 查看可用设备
flutter devices

# 运行到Web服务器
flutter run -d web-server -t lib/main_career_experience.dart --web-port 8123

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_career_experience.dart

# 运行到Windows
flutter run -d windows -t lib/main_career_experience.dart

# 代码分析
flutter analyze lib/main_career_experience.dart

十一、总结

职业体验是一款创新的职业探索应用,通过模拟体验不同职业的一天,帮助用户深入了解各种职业的工作内容、挑战和成就感。应用以沉浸式体验为核心,将每个职业的一天分解为多个时间段的事件,包括日常工作、挑战任务、关键决策和成就时刻。

从技术实现来看,应用使用事件触发系统模拟职业体验,通过决策系统让用户做出选择,影响满意度和精力值;采用状态追踪系统实时显示用户体验状态;使用记录系统保存每次体验的详细信息。从用户体验来看,应用提供丰富的职业信息,包括薪资、难度、技能要求等;设计真实的工作场景和决策选项;生成详细的体验报告和统计数据。

应用不仅是一个职业体验工具,更是一个职业探索平台。它提醒我们:每种职业都有其独特的价值和挑战;体验不同职业可以帮助你找到真正的兴趣;职业选择不仅关乎薪资,更关乎成就感。在职业选择的关键时刻,职业体验为我们提供了一种全新的探索方式——通过模拟体验,做出更明智的选择。

体验职业人生,探索未来可能


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐