LOSER
本文档为 农产品基础数据库系统项目管理系统详细设计,本文档用于描述 农产品基础数据库系统各部分的细节实现,为编码提供参考依据。本文档的读者范围为:系统设计人员农产品基础数据库系统,模块设计人员,编码人员,测试人员。
本文档作为双方就建立 农产品基础数据库系统需求理解达成一致共识的基础文件,作为双方界定项目范围、签订合同的主要基础,也作为本项目验收的主要依据。本项目为软件开发,不包含不部署硬件。
随着农村经济的发展,建立农产品基础数据库,对农产品的价格进行监控,分析和决策,对于增加农民收入,抵御价格风险,指导播种面积,具有重要的意思。
本项目由项目领导小组负责监督执行,任务完成后,本系统将运行在微软的.net平台上。
Microsoft .NET Framework:Microsoft .NET Framework是用于的新编程模型。它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。
中间件:中间件是一种独立的软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或环境。
类(Classes):类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。例:class User
接口(Interfaces):大小写规则与类名相同。并且以大写i为开头。例:Interfaces IUserService
方法(Methods):方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写,例:runFast();
变量(Variables):采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头 ,例:User user
常量(Constants):类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开,例:static final int MAX_WIDTH = 100
在对包、类、接口、方法、变量、常量命名时一定要名称反映意图的原则,避免使用非常用缩写
代码规范:有些不易理解的变量或函数应作注释,难懂的代码要有注释,在文件的开始处有该文件的用途描述。一定要保持注释的一致性
代码组织要清晰,{,},(,),if,else,do,while,for,case等要对应整齐,缩进全部用Tab键。变量的定义要集中,行数间要有空行分开,一个程序中的空行数目最好占8%-16%。多态函数和功能相近的函数集中在一起
代码应该简洁、清楚并讲述了所发生的一切,我们的目标应该是写出最清晰的代码,而不是最巧妙的代码
代码的重用要仔细,要讲相关的代码也拷贝过来,注意那段代码也许不适合你的应用场景
删掉从来没有用过的函数或变量,大篇幅注释掉的代码也应该删除,以免使程序混乱难度
工程文件组织规范:一个工程往往包含很多文件,向工程中加入文件或删除工程中的文件要慎重,避免把工程损坏。工程中不起作用的文件或类应删除,工程目录下的非工程文件也应该移走,保持工程的清洁,避免混淆难以管理
一个比较大的工程应留有一定的消息接口或插件接口
工程的版本控制要严格,版本格式为xx.xx.xx,必要时使用Build次数或日期。高版本尽量兼容低版本的用法、数据或协议
工程的编译宏定义和工程参数设置应正确,每作一个新工程时应检查工程参数是否正确
工程文件应经常备份,备份时注明备份日期和主要增加的功能
类组织规范:类力求封装好,严格区分public,private,protect等作用域,如果一个函数与本类有莫大的关系,可以作为该类的静态成员函数,不用或少用友元函数破坏类封装性的方法和技巧
类的成员变量在构造函数或初始化函数中应赋初值。指针在构造函数中赋NULL,析构时DEL_EMPTY它,以免内存泄露
用户界面规范:风格统一,按照对方要求修改,下面效果图仅参考
有四大类型的用户界面:对话框、单文档界面、其他界面
对话框要易用且简洁,字体和控件的组织搭配要得体,能简单不复杂,各控件的焦点、Tab顺序等要研究。在简洁易用的前提下,力求个性化,设计得更友好。程序各对话框的分割要保持一致
单文档和多文档界面的程序功能可以做得很好,也便于扩充和管理。其中菜单、工具栏、状态栏等设计要有特色。菜单按一定的分类弹出,必要时设计成多套菜单,在重要的窗口或区域应能弹出右键,实现常用操作。工具栏上放最常用的操作按钮,必要时动态更换按钮。状态栏显示足够多的消息
项目的架构设计遵循平台化、组件化的设计思想,采用统一的数据交换、统一的接口标准、统一的安全保障。
项目的架构设计遵循平台化、组件化的设计思想,采用统一的数据交换、统一的接口标准、统一的安全保障。系统由下到上分为三层主框架:数据采集层、存储分析层、应用逻辑层,总体建设框架如下图所示。
农业基本信息、分类信息数据库:主要包括各种农业产品分类数据库、产品描述数据库信息管理、维护,基础字典管理、单位管理等。
网络爬虫:负责从各大农业信息网站爬取农业产品、价格数据
格式检查、清洗、转换:负责把从各网站的数据,对齐,处理、分析存入到大数据库中。
存储分析:利用Spark完成分析查询,mongodb完成存储等
安全体系:包括权限管理,安全管理、数据备份等
标准体系:农产品基本信息描述等各种标准管理
应用逻辑:数据可视化,领导驾驶舱,大数据展示,数据查询,指标趋势分析、决策应用等
我们可以将这些项目工作的参与者分为四级:从软件角度考虑依次抽象为:
系统管理员:负责系统基础数据的配置、管理,农产品分类数据的管理,农产品基本信息的管理
工作人员:农产品信息查询,统计分析,数据导出,采集数据的管理等
领导:指标分析结果查看,统计数据分析等
用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间的层次结构关系。
从本章开始,逐个地给出各个层次中的每个程序的设计考虑。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。
信息门户(Portal)位于地勘项目管理系统体系结构中的最上层,实现各应用与用户的交互服务过程,是地勘项目管理系统的信息集中展示的窗口,为各类用户提供一个统一的信息服务入口。同时,信息门户根据用户身份提供满足其需求的特定信息和应用系统,为用户提供个性化的服务。
用户登录
所有用户均通过信息门户登录地勘项目管理系统,通过统一身份认证、基于身份/角色的权限分配策略实现单点登录。
输入 | 处理 | 输出 |
---|---|---|
页面加载 | 调用用户的个人信息及能操作的模块信息 | 显示其有权操作的功能模块及个人信息 |
输入用户名、密码、验证码 | 控制器提交到认证中心进行认证 | 认证通过返回信息门户view;不通过,返回登陆view及错误信息。 |
信息门户主页面
输入 | 处理 | 输出 |
---|---|---|
目录树中所选的单位节点 | 调用manager.findDw取得下级单位列表 | 在显示单位信息表显示下级单位列表 |
在菜单功能列表中点击某功能 | 客户端执行主功能区新增tab的命令 | 在功能区新增一tab加载相应的功能模块 |
点注销按钮 | 清除其登陆信息 | 重定向到登陆页面 |
点修改密码按钮 | 客户端执行打开window的命令 | 显示用户修改密码的窗口,并提供保存、取消按钮 |
登陆页面
信息门户主页面
部门管理是对下属单位的部门信息进行维护,即添加,修改,删除。
输入 | 处理 | 输出 |
---|---|---|
页面加载 | 按单位级别返回部门数据 | 显示部门目录树 |
目录树列表中点击某部门信息 | 客户端从服务器端获取部门相关信息加载到编辑信息窗口 | 显示部门代码、上级部门代码、部门名称和描述等信息 |
角色管理是独立用户管理中的另一种角度,在系统维护的权限赋予上,可直接通过角色进行权限的转移。另外一种角色的使用是可归之于在使用上的赋权或称授权。
输入 | 处理 | 输出 |
---|---|---|
页面加载 | 返回已定义角色数据 | 显示角色列表 |
列表中选择某角色信息 | 客户端从服务器端获取角色相关信息 | 显示角色英文名,中文名及备注等信息 |
分配角色模块权限 | 给选择的权限添加系统模块并授权 | 角色具有相应的操作权限 |
用户及权限管理是地勘系统使用的基础,包括对用户信息的添加、修改、删除、查询,以及给用户配置角色。
输入 | 处理 | 输出 |
---|---|---|
页面加载 | 返回已定义角色数据 | 显示角色列表 |
输入用户名、角色类型 | 客户端进行查询,从服务器端获取相关信息 | 显示用户编号、用户名、联系方式、电子邮件、是否管理员及备注等信息 |
单击新增、编辑、删除和角色授权按钮 | 在编辑界面中对用户数据进行操作,授予用户角色权限 | 新增用户,对用户信息进行变更 |
用户及权限管理页面设计
对系统中的常用代码进行维护,农产品基础信息描述谷物类,其他参考相应国家标准。
序号 | 名称 |
---|---|
1 | 名称 |
2 | 净含量 |
3 | 规格 |
4 | 生产者名称 |
5 | 生产者地址 |
6 | 生产者联系方式 |
7 | 代理商名称 |
8 | 代理商地址 |
9 | 代理商联系方式 |
10 | 进口商名称 |
11 | 进口商地址 |
12 | 进口商联系方式 |
13 | 经销者名称 |
14 | 经销者地址 |
15 | 经销者联系方式 |
16 | 委托单位名称 |
17 | 委托单位地址 |
18 | 受委托单位名称 |
19 | 受委托单位地址 |
20 | 统一社会信用号 |
21 | 产地 |
22 | 原产国 |
23 | 地区 |
24 | 生产日期 |
25 | 保质期 |
26 | 存储条件 |
27 | 运输条件 |
28 | 食品生产许可证编号 |
29 | 产品标准代码 |
30 | 图片 |
31 | 商标 |
32 | 品牌 |
33 | 单价 |
34 | 包装 |
35 | 检验报告 |
36 | 认证证书 |
37 | 辐照食品 |
38 | 转基因食品 |
39 | 营养成分 |
40 | 质量等级 |
41 | 批号 |
42 | 食用方法 |
43 | 适宜人群 |
44 | 致敏物质 |
45 | 感官标志 |
46 | 理化指标 |
47 | 食品安全指标 |
48 | 色泽 |
49 | 气味 |
50 | 水分 |
农业部农产品标准分类-2010
包括添加、修改、删除、导入、导出,包括:农产品生产企业/农村合作社、生产面积、品种、产量、上市时间、质量和技术水平、加工企业、贮存条件、保质期、售价、传统销售渠道及比例、自主品牌拥有情况、农产品电商企业等,不固定信息及信息类型、不限制信息数量
使用爬虫技术,自动在互联网抓取农产品信息,并保存在系统中。
对农产品信息进行统计分析
对农产品各项指标进行趋势分析及预测
根据条件查询农产品信息,并导出
提供领导驾驶舱页面,展示包括各项指标、分布、趋势、决策分析等,能够适配2×2个55寸大屏(分辨率:1920×1080)展示
数据库备份与还原功能
系统日志包括登陆日志和操作日志,主要是记录用户登陆详细信息和日常使用操作信息。包括日志的查询与删除功能。
输入 | 处理 | 输出 |
---|---|---|
页面加载 | 按日期或类型返回数据 | 显示日志列表信息 |
列表中选择查询日期或类型信息 | 客户端从服务器端获取相关信息,对其进行相应的操作(查看详细、删除) | 显示登陆日志和操作日志信息 |
系统日志管理页面设计
改个人信息
修改登录密码