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

一、项目概述

运行效果图

image-20260410231222100

image-20260410231227360

image-20260410231231811

image-20260410231236007

1.1 应用简介

校园兼职信息发布是一款面向高校学生的兼职招聘信息平台。支持兼职信息发布、浏览搜索、在线申请、消息通知等功能,帮助学生便捷找到合适的兼职工作,同时为商家提供高效的招聘渠道。应用以清新的绿色为主色调,象征活力与机遇。涵盖兼职广场、发布兼职、我的兼职、消息中心四大模块。

1.2 核心功能

功能模块 功能描述 实现方式
兼职分类 8种兼职类型分类 枚举定义
信息发布 发布兼职招聘信息 表单提交
浏览搜索 搜索筛选兼职信息 条件过滤
在线申请 一键申请兼职岗位 状态管理
消息通知 申请状态实时通知 消息列表
收藏管理 收藏感兴趣的兼职 数据存储

1.3 兼职类型定义

序号 类型名称 Emoji 时薪范围 描述
1 家教辅导 📚 50-200元 学科辅导、语言培训
2 餐饮服务 🍔 15-30元 服务员、收银、后厨
3 促销导购 🛒 20-50元 商场促销、地推活动
4 设计美工 🎨 50-150元 平面设计、UI设计
5 程序开发 💻 80-300元 前端、后端、小程序
6 文案编辑 ✍️ 30-80元 公众号、文案撰写
7 翻译服务 🌐 50-200元 笔译、口译服务
8 其他兼职 📋 面议 其他类型兼职

1.4 兼职状态定义

序号 状态名称 Emoji 描述
1 招聘中 🟢 正在招聘,可申请
2 已招满 🔴 名额已满
3 已下架 信息已下架
4 已暂停 🟡 暂停招聘

1.5 申请状态定义

序号 状态名称 Emoji 描述
1 待处理 等待雇主查看
2 已通过 申请已通过
3 已拒绝 申请被拒绝
4 已取消 🚫 用户取消申请

1.6 技术栈

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

1.7 项目结构

lib/
└── main_campus_part_time_job.dart
    ├── CampusPartTimeJobApp          # 应用入口
    ├── JobType                       # 兼职类型枚举
    ├── JobStatus                     # 兼职状态枚举
    ├── ApplyStatus                   # 申请状态枚举
    ├── PartTimeJob                   # 兼职信息模型
    ├── JobApplication                # 申请记录模型
    ├── Message                       # 消息模型
    ├── CampusPartTimeJobHomePage     # 主页面(底部导航)
    ├── _buildJobSquarePage           # 兼职广场页
    ├── _buildPublishPage             # 发布兼职页
    ├── _buildMyJobsPage              # 我的兼职页
    ├── _buildMessagesPage            # 消息中心页
    └── 各类辅助组件

二、系统架构

2.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
CampusPartTimeJobHomePage

兼职广场

发布兼职

我的兼职

消息中心

分类筛选

搜索功能

兼职详情

信息填写

预览发布

我的发布

我的申请

我的收藏

消息列表

通知详情

兼职管理器
JobManager

申请处理器
ApplicationHandler

消息服务
MessageService

PartTimeJob
兼职信息

JobApplication
申请记录

Message
消息

JobType
兼职类型

2.2 类图设计

has

has

has

CampusPartTimeJobApp

+Widget build()

«enumeration»

JobType

+String label

+String emoji

+int minSalary

+int maxSalary

+tutor()

+catering()

+promotion()

+design()

+programming()

+writing()

+translation()

+other()

«enumeration»

JobStatus

+String label

+String emoji

+recruiting()

+filled()

+offline()

+paused()

«enumeration»

ApplyStatus

+String label

+String emoji

+pending()

+accepted()

+rejected()

+cancelled()

PartTimeJob

+String id

+String title

+String description

+JobType type

+JobStatus status

+int salary

+String salaryUnit

+String location

+String contactName

+String contactPhone

+DateTime publishTime

+DateTime startTime

+DateTime endTime

+int applicantCount

+int maxApplicants

+String publisherId

+List requirements

JobApplication

+String id

+String jobId

+String applicantId

+String applicantName

+ApplyStatus status

+DateTime applyTime

+String message

Message

+String id

+String title

+String content

+String type

+DateTime time

+bool isRead

+String relatedJobId

2.3 页面导航流程

广场

发布

我的

消息

应用启动

兼职广场

底部导航

浏览兼职

发布兼职

个人中心

消息列表

筛选分类

搜索关键词

查看详情

申请兼职

收藏兼职

填写信息

预览确认

发布成功

我的发布

我的申请

我的收藏

系统通知

申请通知

2.4 兼职申请流程

消息中心 雇主 申请处理 兼职详情 兼职广场 学生 消息中心 雇主 申请处理 兼职详情 兼职广场 学生 浏览兼职列表 显示兼职信息 点击查看详情 展示完整信息 点击申请 验证条件 发送申请通知 查看申请 审核通过/拒绝 更新状态 推送结果通知

三、核心模块设计

3.1 兼职广场模块

兼职广场是用户浏览和搜索兼职信息的主要入口,提供分类筛选、关键词搜索、排序等功能。

核心功能:

  1. 分类筛选 - 按兼职类型筛选
  2. 关键词搜索 - 标题、描述关键词搜索
  3. 薪资筛选 - 按薪资范围筛选
  4. 排序方式 - 按发布时间、薪资排序
  5. 兼职卡片 - 展示关键信息预览

3.2 发布兼职模块

发布兼职模块允许用户发布招聘信息,填写职位详情、薪资待遇、联系方式等。

核心功能:

  1. 基本信息 - 标题、类型、描述
  2. 薪资待遇 - 薪资金额、结算方式
  3. 时间地点 - 工作时间、工作地点
  4. 联系方式 - 联系人、联系电话
  5. 任职要求 - 技能要求、经验要求
  6. 预览发布 - 信息预览确认

3.3 我的兼职模块

我的兼职模块管理用户发布的兼职和申请的兼职,提供状态追踪和管理功能。

核心功能:

  1. 我的发布 - 查看发布的兼职信息
  2. 我的申请 - 查看申请记录和状态
  3. 我的收藏 - 查看收藏的兼职
  4. 状态管理 - 上架/下架/编辑兼职

3.4 消息中心模块

消息中心接收和展示系统通知、申请通知等消息。

核心功能:

  1. 系统通知 - 平台公告、活动通知
  2. 申请通知 - 申请状态变更通知
  3. 消息列表 - 按时间排序展示
  4. 已读标记 - 标记消息已读

四、数据模型设计

4.1 兼职信息模型

class PartTimeJob {
  final String id;              // 兼职ID
  final String title;           // 兼职标题
  final String description;     // 职位描述
  final JobType type;           // 兼职类型
  JobStatus status;             // 兼职状态
  final int salary;             // 薪资金额
  final String salaryUnit;      // 薪资单位
  final String location;        // 工作地点
  final String contactName;     // 联系人
  final String contactPhone;    // 联系电话
  final DateTime publishTime;   // 发布时间
  final DateTime startTime;     // 开始时间
  final DateTime endTime;       // 结束时间
  final int applicantCount;     // 申请人数
  final int maxApplicants;      // 最大人数
  final String publisherId;     // 发布者ID
  final List<String> requirements; // 任职要求
}

4.2 申请记录模型

class JobApplication {
  final String id;              // 申请ID
  final String jobId;           // 兼职ID
  final String applicantId;     // 申请人ID
  final String applicantName;   // 申请人姓名
  ApplyStatus status;           // 申请状态
  final DateTime applyTime;     // 申请时间
  final String message;         // 申请留言
}

4.3 消息模型

class Message {
  final String id;              // 消息ID
  final String title;           // 消息标题
  final String content;         // 消息内容
  final String type;            // 消息类型
  final DateTime time;          // 消息时间
  bool isRead;                  // 是否已读
  final String? relatedJobId;   // 关联兼职ID
}

五、界面设计

5.1 配色方案

颜色类型 色值 用途
主色 #4CAF50 品牌色、按钮
次色 #81C784 辅助色、背景
强调色 #FF9800 重要信息
背景色 #F5F5F5 页面背景
卡片色 #FFFFFF 卡片背景
文字色 #212121 主要文字
次文字 #757575 次要文字

5.2 字体规范

字体类型 字号 字重 用途
大标题 24sp Bold 页面标题
标题 18sp Medium 卡片标题
正文 14sp Regular 正文内容
辅助文字 12sp Regular 辅助信息
小字 10sp Regular 标签、时间

5.3 间距规范

间距类型 数值 用途
页面边距 16dp 页面左右边距
卡片间距 12dp 卡片之间间距
内容间距 8dp 内容元素间距
紧凑间距 4dp 紧凑元素间距

六、关键代码实现

6.1 主入口

void main() {
  runApp(const CampusPartTimeJobApp());
}

class CampusPartTimeJobApp extends StatelessWidget {
  const CampusPartTimeJobApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '校园兼职信息发布',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
          seedColor: const Color(0xFF4CAF50),
          brightness: Brightness.light,
        ),
        useMaterial3: true,
      ),
      home: const CampusPartTimeJobHomePage(),
    );
  }
}

6.2 兼职类型枚举

enum JobType {
  tutor(label: '家教辅导', emoji: '📚', minSalary: 50, maxSalary: 200),
  catering(label: '餐饮服务', emoji: '🍔', minSalary: 15, maxSalary: 30),
  promotion(label: '促销导购', emoji: '🛒', minSalary: 20, maxSalary: 50),
  design(label: '设计美工', emoji: '🎨', minSalary: 50, maxSalary: 150),
  programming(label: '程序开发', emoji: '💻', minSalary: 80, maxSalary: 300),
  writing(label: '文案编辑', emoji: '✍️', minSalary: 30, maxSalary: 80),
  translation(label: '翻译服务', emoji: '🌐', minSalary: 50, maxSalary: 200),
  other(label: '其他兼职', emoji: '📋', minSalary: 0, maxSalary: 0);

  final String label;
  final String emoji;
  final int minSalary;
  final int maxSalary;

  const JobType({
    required this.label,
    required this.emoji,
    required this.minSalary,
    required this.maxSalary,
  });
}

七、测试用例

7.1 功能测试

测试项 测试步骤 预期结果
浏览兼职 进入兼职广场 显示兼职列表
筛选分类 点击分类标签 显示对应类型兼职
搜索兼职 输入关键词搜索 显示匹配结果
发布兼职 填写信息并提交 发布成功
申请兼职 点击申请按钮 申请成功
查看消息 进入消息中心 显示消息列表

7.2 边界测试

测试项 测试条件 预期结果
空列表 无兼职数据 显示空状态提示
超长文本 标题超长 自动截断显示
无搜索结果 搜索无匹配 显示无结果提示

八、部署说明

8.1 环境要求

  • Flutter SDK >= 3.0.0
  • Dart SDK >= 2.17.0
  • Android SDK >= 21 (鸿蒙OS兼容)

8.2 运行命令

flutter run -d web-server --web-port 8150 --web-hostname 0.0.0.0

九、版本记录

版本 日期 更新内容
v1.0.0 2024-01-XX 初始版本发布

十、联系方式

项目地址: [GitHub仓库地址]

问题反馈: [Issues地址]

作者博客: [博客地址]

开源社区: https://openharmonycrossplatform.csdn.net

Logo

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

更多推荐