当前位置: 首页 > article >正文

气象监测软件的程序设计

老师留了个作业,感觉挺有意思,记录一下

文章目录

  • 气象监测软件的程序设计项目指导书
  • (一)基本信息
  • (二)项目目标
  • (三)任务描述
  • (四)指导内容
    • 任务 1:根据MVC的设计原则,设计气象数据视图
    • 任务 2 :根据MVC的设计原则,设计气象数据的主题模型
    • 任务 3:根据MVC的设计原则,设计气象数据更新的控制器组件
  • (五):源码获取


气象监测软件的程序设计项目指导书

(一)基本信息

运用面向对象的思想设计一个气象监测软件。并综合运用Java的Swing包中GUI容器和组件,以及多线程机制等面向对象的方法与技术进行编程实现。

(二)项目目标

(1)能够运用面向对象设计思想进行项目的整体设计

(2)能够构造图形用户界面程序及根据需要运用GUI组件

(3)能够根据事件驱动的原理搭建类结构

(4)能够利用多线程机制处理多任务

(三)任务描述

编写一个气象监测软件,气象监测软件可以定时从气象站获取最新的气象数据包括:温度、湿度、气压。气象监测软件可以把获得的气象数据通过柱状图、可视化数字窗口或控制台呈现动态气象数据的变化。未来还可以根据用户的需求,对数据呈现方式进行扩展。

备注:测试时可以通过存根模块用随机数的方式模拟气象数据的变化。

(四)指导内容

1、相关知识:

(1)运用面向对象思想进行及项目设计

(2)构造图形用户界面及常用GUI组件

(3)事件处理模型

(4)构建多线程

2、开发环境:

JDK8(及以上)+Eclipse(或Intellij Idea)

3、过程与步骤:

对气象监测软件中涉及的实体进行抽象,分析各个类间的关系,具体步骤如下:

任务 1:根据MVC的设计原则,设计气象数据视图

【解决思路】

一个接口IDisplay定义了所有三种显示视图的共有方法。
CurrentDisplay类是一个具体的观察者,它可以在控制台上显示最新的气象信息;
NumberDisplay类通过可视化数字窗口显示最新的气象信息;
BarDisplay是通过气象数据转化为三条柱状图呈现给用户。

【运行效果】

CurrentDisplay视图的运行效果如下:

在这里插入图片描述

NumberDisplay视图的运行效果如下,位置任意,宽260,高120:
在这里插入图片描述

BarDisplay视图的运行效果如下,位置任意,宽500,高400:
在这里插入图片描述

【类图】
在这里插入图片描述

任务 2 :根据MVC的设计原则,设计气象数据的主题模型

【解决思路】

WeatherData封装了从气象站获取气象数据的方法getTemprature()、getHumidity()、getPressure(),这里可以用随机数的方式模拟气象数据的更新。

【类图】

在这里插入图片描述

任务 3:根据MVC的设计原则,设计气象数据更新的控制器组件

【解决思路】

WeatherStation是模拟气象站的服务器程序,这个气象站每隔5秒钟从WeatherData获取气象数据更新,然后通过三种不同的展示方式,对外展示气象情况。

【类图】
在这里插入图片描述

(五):源码获取

主页私信:气象监测


http://www.kler.cn/a/385146.html

相关文章:

  • JavaScript 实现文本转语音功能
  • 1.每日SQL----2024/11/7
  • 【上云拼团Go】如何在腾讯云双十一活动中省钱
  • OceanBase 安装使用详细说明
  • 在OceanBase 中,实现自增列的4种方法
  • Gitlab新建用户无法收到邮件的问题解决办法
  • 富格林:安全步骤交易稳健出金
  • sql-Incorrect string value
  • wordpress ripro-v5-8.3开心版主题源码
  • 操作系统学习笔记-5.1-IO设备
  • 使用BaGet快速搭建nuget服务
  • SQL,力扣题目1225,报告系统状态的连续日期【窗口函数】
  • 数据库Redis篇
  • 数学建模学习(135):使用Python基于WSM、WPM、WASPAS的多准则决策分析
  • 第10章 多表查询
  • DiskGenius工具扩容Mac OS X Apple APFS分区
  • 高效管理iPhone存储:苹果手机怎么删除相似照片
  • 【论文复现】MSA+抑郁症模型总结(二)
  • 使用最新版的wvp和ZLMediaKit搭建Gb28181测试服务器
  • Spring Boot中集成MyBatis操作数据库详细教程
  • ARXML汽车可扩展标记性语言规范讲解
  • JavaScript 实现文本转语音功能
  • 倒反天罡?程序员没有被AI替代,却间接用AI替代了产品经理
  • C++_判断文件是否存在_access函数
  • Redis - Set 集合
  • Vue项目中点击按钮后浏览器屏幕变黑,再次点击恢复的解决方法