项目描述
临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给在家介绍一篇基于移动应用的城市公共气象服务平台的设计与实现。
功能需求
当前主流移动气象信息服务系统的服务器端主要采用GCD技术来构建,在这种结构中客户端对于数据的查询请求都是通过执行Objective-C代码来实现的。Objective-C虽然简单容易开发,但是存在两方面的缺陷,其一是在处理大量并发请求时资源开销大,执行速度慢。其二是允许用户直接访问数据库,安全性差。为了充分发挥服务器端性能,提高系统安全性。系统改进了服务器端架构,通过引入MVC技术优化执行效率 ,增加监控系统提高了管理效率。系统主要由五部分组成。
APP客户端,负责与用户的交互,发送用户请求到服务器端。天气APP应用主要是通过手机客户端为用户提供详细的未来目的城市天气信息以及与天气信息内容相关的提示。天气APP应用包括选择城市、添加多个城市、删除所选城市、查看所选城市当日天气详情、查看所选城市未来一周天气状况趋势图、查看所选城市生活指数等六个主要功能。
(1)选择城市,初次使用APP时选择一个城市进行查看相应模块。
(2)添加多个城市 ,如果想查看除了当前所选城市以外的其他城市天气信息,可点击主页里的加号进行添加城市操作。
(3)删除所选城市 ,如果不想查看某个城市的天气信息,则可进入主页点击右上角的编辑图标进行删除相关城市,以停止查看所选城市信息。
(4)查看所选城市当日天气详情, 点击屏幕下方“天气”按钮可查看所选城市的实时温度、风向、湿度及当前日期。
(5) 查看所选城市未来一周天气状况趋势图,点击屏幕下方“趋势”按钮可查看所选城市的未来几天的天气趋势图。
(6)查看所选城市生活指数。
服务器端
负责接收用户请求并对请求作出响应。
内容管理子系统
WEB式的用户和产品信息管理平台。
内容发布子系统
将各种气象资料自动加T并推送到后台服务器
监控子系统
负责收集各种状态信息,并通过消息机制把信息发送给管理员。这种设计有如下优点:①服务器端采用MVC设计模式,采用这种架构的服务器端避免了用户直接访问数据库,提高了安全性。②由于把数据计 算与产品处理任务交给了分布式的内容发布子系统,客户端不需要大量的计算处理与存 储需求。降低了客户端的实现难度和硬件要求。③使用MVC设计模式实现了基于规范标准的开放性,实现了跨平台的数据交换,系统还使用了特定的用户校验方式来保障数据安全。④采用分布式的架构便于功能与处理能力的扩展,业务流程在管理员监控下运行,系统稳定性好。
具备以下功能:
通过对系统概况的描述和分析,已经对气象服务平台开发技术要点,气象预报业务关系分析。本节对平台各个菜单功能模块系统设计,进行详细的展示和描述,是系统的基础。
系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:管理员管理、城市天气信息、用户信息、预警信息、退出等功能。用户进入系统可以进行天气预报等。
系统功能模块框架图
部分效果图
登录注册界面:
管理界面
前端效果
数据库设计
系统中用到了5张表,针对每个表都进行了设计,下面对部分核心表进行汇总罗列展示。
(1)用户信息表
(2)气象信息表
(3)未来天气信息表
部分代码
package cn.weather.config;
import cn.weather.controller.*;
import cn.weather.entity.User;
import cn.weather.entity.Yj;
import cn.weather.entity._MappingKit;
import com.jfinal.config.*;
import com.jfinal.core.JFinal;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.jfinal3.JFinal3BeetlRenderFactory;
import java.util.HashMap;
import java.util.Map;
/**
* api 引导配置
*/
public class DemoConfig extends JFinalConfig {
/**
* 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
* <p>
* 使用本方法启动过第一次以后,会在开发工具的 debug、run config 中自动生成
* 一条启动配置,可对该自动生成的配置再添加额外的配置项,例如 VM argument 可配置为:
* -XX:PermSize=64M -XX:MaxPermSize=256M
*/
public static void main(String[] args) {
/**
* 特别注意:Eclipse 之下建议的启动方式
*/
// JFinal.start("WebRoot", 80, "/", 5);
/**
* 特别注意:IDEA 之下建议的启动方式,仅比 eclipse 之下少了最后一个参数
*/
JFinal.start("src/main/webapp", 8088, "/");
}
/**
* 配置常量
*/
public void configConstant(Constants me) {
// 加载少量必要配置,随后可用PropKit.get(...)获取值
PropKit.use("config.properties");
me.setDevMode(PropKit.getBoolean("devMode", false));
JFinal3BeetlRenderFactory rf = new JFinal3BeetlRenderFactory();
rf.config();
me.setRenderFactory(rf);
GroupTemplate gt = rf.groupTemplate;
Map<String, Object> shard = new HashMap<String, Object>();// 共享变量
shard.put("ctx", JFinal.me().getContextPath());// 添加共享变量上下文路�?
gt.setSharedVars(shard);// 设置共享变量
me.setMaxPostSize(1200000000);
}
/**
* 配置路由
*/
public void configRoute(Routes me) {
// me.add("/", IndexController.class);
me.add("/ww", AddController.class);
me.add("/", IndexController.class);
me.add("/manager", ManagerController.class);
me.add("/addmg", AddManagerController.class);
me.add("/weather", WeatherController.class);
me.add("/yj", YjController.class);
me.add("/user", UserController.class);
}
public void configEngine(Engine me) {
}
public static DruidPlugin createDruidPlugin() {
return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
}
/**
* 配置插件
*/
public void configPlugin(Plugins me) {
// 配置C3p0数据库连接池插件
DruidPlugin druidPlugin = createDruidPlugin();
me.add(druidPlugin);
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
// 所有映射在 MappingKit 中自动化搞定
arp.setShowSql(true);
_MappingKit.mapping(arp);
me.add(arp);
}
/**
* 配置全局拦截器
*/
public void configInterceptor(Interceptors me) {
}
/**
* 配置处理器
*/
public void configHandler(Handlers me) {
}
}
安装部署需求
eclipse、idea运行启动
系统部署
系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在IDEA中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件
本项目用到的技术和框架
1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:jsp+servlet+JDBC
本项目中的关键点
此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。
环境工具
开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、servlet、Android
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;