1、 目 录1引言11.1概况11.2研究意义11.3现状分析21.4方法与技术概述21.5研究内容22国内外研究综述32.1国内气象资料用户管理的发展32.2国外气象资料用户管理的发展33系统分析43.1需求分析43.2可行性分析43.2.1管理可行性分析43.2.2经济可行性分析43.2.3技术可行性分析53.3功能结构分析53.4数据流程分析64系统运行环境设计94.1硬件环境设计94.2软件环境设计95数据库设计105.1概念结构设计105.2逻辑结构设计125.3数据库连接实现136系统设计146.1系统主页设计146.2用户模块设计156.2.1用户信息管理设计156.2.1.1用户登
2、录156.2.1.2用户注册176.2.1.3用户密码修改186.2.1.4用户信息修改196.2.2用户成果管理设计206.2.2.1用户成果提交206.2.2.2用户成果浏览226.3管理员模块设计236.3.1信息查询设计236.3.1.1用户查询236.3.1.2成果查询266.3.1.3资料查询276.3.2用户管理设计296.3.2.1用户信息浏览296.3.2.2用户添加306.3.2.3用户权限审核326.3.2.4用户信息统计336.3.3管理员管理设计356.3.3.1管理员登录356.3.3.2管理员密码修改366.3.3.3管理员添加376.3.3.4管理员浏览387系
3、统安全性设计397.1登录验证397.2验证码的使用397.3管理员和用户权限分配407.4防止直接输入地址访问408系统关键技术设计408.1Ajax的使用408.2Session的使用418.3级联菜单428.4批量删除448.5文件的上传和下载468.6统计直方图的实现479系统实施5010结论50参考文献50致谢52ABSTRACT53附录5498气象资料用户管理系统设计与实现宋帅金南京信息工程大学经济管理学院,南京 210044摘要: 本文综述了基于Web的气象资料用户管理系统的总体设计和技术实现。此系统根据气象资料用户管理工作的需要,完成了系统的逻辑结构设计和物理结构设计,运用PH
4、P(Personal Home Page)、JavaScript、Html、Ajax等技术开发,实现了气象资料用户和管理员信息的统一集中的规范化管理,包含前台用户管理模块和后台管理员管理模块,具有用户注册、用户登录、用户信息修改、用户成果添加、管理员登录、用户查询、成果查询、资料查询、用户资料管理、用户信息统计、管理员密码修改、管理员添加、管理员权限修改等功能。该系统不仅在系统内部实现了用户和管理员信息的规范化和网络化管理,而且通过Web实现与用户的信息交换,为用户提供了全面准确的信息服务,为管理员提供了管理用户信息和反馈用户使用效果的平台。关键词:气象资料;气象服务平台;气象资料网站;气象资
5、料用户管理1 引言 1.1 概况气象与社会各个领域和各个行业都密切相关,它被定义为社会性和基础型公益事业。随着知识经济和信息化时代的到来,气象服务对国家安全、国民经济、社会发展和人民生活的影响也越来越大1。北京奥运会期间的气象服务受到了全国人民的关注,同时也起到了很好的效果。气象服务为人们的日常生活起到了良好的预报效果。同时气象服务为一些从事气象事业的人员提供了资源共享的平台。我国已经建成中国气象科学数据共享服务网,方便用户更好的共享和使用气象资料,基于Web的气象资料共享平台将会应用的越来越广泛。随着使用气象资料共享平台用户的增多,对用户的管理工作变得更加重要,因此,气象资料用户管理系统是气
6、象资料共享平台的重要组成部分。1.2 研究意义气象服务是当前社会发展的需要,是当前气象事业发展的需要。中国气象事业发展战略研究总体目标中明确提出:建成具有世界先进水平的气象信息管理体系,构建气象信息共享平台,使之成为气候系统信息中心2。气象信息共享平台作为气象事业发展的“四大战略平台”之一,是气象信息资源整合、规范管理和高效利用的核心业务系统,同时也是国家重要的信息基础设施3。气象服务的一项重要服务就是提供气象科学数据共享平台。气象科学数据不仅是气候系统相关学科的研究基础,也是国家经济建设、社会发展、国防建设、环境保护、生态建设和人民生活不可或缺的重要信息。科学数据共享的总体技术框架主要由三大
7、部分构成:科学数据共享标准化体系,科学数据中心和科学数据共享服务网4。气象科学数据对于从事气象类的人员来说是非常重要的,气象人员需要对它们进行研究、分析、统计和计算等,以便更好地服务大众和推动气象事业的发展。这些气象资料基于Internet,用网站作为共享平台,方便用户浏览气象相关信息以及气象资料的下载。随着用户的增多,对用户的管理工作变得更加重要。气象资料用户管理系统,不仅为用户提供了全面准确的信息服务,而且为管理员提供了管理用户信息和反馈用户使用效果的平台,以便管理员根据用户信息和气象资料使用情况作出决策,更好地提高气象服务的质量。1.3 现状分析为了解决制约气象科学数据共享的关键技术问题
8、,提高气象科学数据共享服务的能力,2001年,国家科技部批复了基础性的工作专项资金项目“气象资料共享系统建设”。随着科技条件平台工作的整体推进,2004年,项目名称改为“气象科学数据共享试点建设”。该项目以气象数据整合和共享服务为中心,重点围绕数据标准规范建设、数据共享、策略研究、数据集的研制和共享平台开发等方面开展工作5。到2010年,我国将建立起完善的、与气候系统综合观测体系相适应的共享平台。建成后,从2600多个国家级气象台站、30000个区域中小尺度气象站、用于天基观测的多个气象卫星以及“夸父空间天气观测计划”的空间天气探测卫星上获得的海量科学数据都可以通过“气象科学数据共享服务网”得
9、到共享服务。这是“气象科学数据共享中心”项目设定的目标。目前我国虽然已经建成了一些气象资料共享平台,但对用户的管理还不够到位,气象资料用户管理系统还处在发展的初级阶段。以南京气象资料中心为例,气象资料用户管理系统还处在理论的阶段,缺少具体的系统实施。1.4 方法与技术概述目前国内基于Web的气象资料共享平台使用PHP、Asp、Java等技术开发。本系统将采用结构化的分析方法,使用PHP语言和MySQL数据库开发。PHP是Hypertext Preprocessor(超文本预处理器)的缩写,是一种广泛使用的服务器端编程语言,用于开发动态网页。它是一种开源的、跨平台的、独立于架构的、解释的、面向对
10、象的、快速的、简单易学的、健壮的、安全的、性能优越的Web服务器端动态网页开发语言。MySQL 作为PHP的最佳搭档,是广受欢迎的SQL数据库管理系统。它免费、快速,并可跨平台运行,支持多线程、多用户、重负载的性能要求,是Web应用系统理想的选择。1.5 研究内容本文主要研究基于Web的气象资料用户管理系统的总体设计和技术实现,在前台实现用户的注册、登录、信息修改、密码修改、成果的展示、成果的添加删除修改等功能,在后台实现管理员对注册用户的查询、添加、删除、修改、统计和分析以及管理员信息修改等功能。该系统为用户提供了全面准确的信息服务,为管理员提供了管理用户信息和反馈用户使用效果的平台。2 国
11、内外研究综述2.1 国内气象资料用户管理的发展我国政府正在大力推动信息化进程,其中在电子政务领域重点是构建采用数据目录交换技术的跨部门、跨领域的信息交换与共享平台6。在科研领域,科技部正在大力推进国家科学数据共享工程7,中国科学院的科学数据库系统也在管理分散异构数据方面取得了一些成果8。我国气象部门早在20世纪80年代初开始转变为应用计算机来存储和处理各类气象信息,气象信息管理系统从单机文件系统、局域网络数据库系统逐步发展到了大规模分布式数据库系统阶段9。在项目“气象资料共享系统建设”中,项目组参照了WMO的核心元数据标准10和国际标准化组织推荐的元数据信息格式制定原则11,采用统一的元数据标
12、准、统一的用户分级管理策略12和统一的认证方式13进行设计。在该项目中,用户被分为四个级别,分别是普通用户、会员用户、核心用户和特别用户12。普通用户可以在气象资料共享网上无偿下载、浏览、查询网上发布的气象资料共享零级数据以及国内外数据资源动态,数据集产品介绍等相关信息。会员用户可以在气象资料共享网站下载、浏览和查询气象资料共享零级、一级数据。核心用户可以在气象资料共享网站下载、浏览和查询气象资料共享零级、一级、二级数据。特别用户可以按指定的方式在线或离线获得气象资料各级数据。用户按照各自不同的权限获得相应的服务,管理员按照用户的级别,实现统一的用户分级管理。2.2 国外气象资料用户管理的发展
13、国外气象服务、气象资料下载平台建设日新月异。美国国家大气与海洋局(NOAA)也于2000年开始建设国家虚拟数据中心(NNDC),采用分布式数据库技术,以统一的界面和订单为用户提供气候、海洋、地球物理信息资源的共享服务14。世界气象组织(WMO)在2003年提出了要构建新一代信息系统(WIS),该系统主要以元数据技术来整合各类气象信息,构建一个分层次的世界范围的气象信息共享系统,以支持从世界天气计划(WWW)到WMO各个项目和计划对气象信息的快速获取与便捷应用15。在用户管理方面,美国国家标准与技术研究所在2001年公布了RBAC16(Role Based Access Conrtol)的建议标
14、准,以推进RBAC进一步的应用。RBAC的基本思想是:用户被赋予角色,而权限是被赋予给角色,用户通过担任某些角色而获得权限。角色就是一个或一组用户在组织内可执行的操作的集合。传统的访问控制策略如DAC、MAC都是由主体和客体直接发生关系,而RBAC引入了角色这个中介,通过角色来沟通主体和客体17。RBAC的基本思想如下图所示:图2-1 RBAC基本思想3 系统分析系统分析(system analysis)也称之为逻辑设计(logical design),是指运用一定的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,并产生一个符合用户需求,并能够直接反映问题域
15、和系统责任的模型及其详细说明18。3.1 需求分析随着互联网的发展,人们对于气象服务的需求越来越多,这促进了气象资料共享平台的发展。基于Web的气象资料共享平台服务于各类人员,提供资料的查询以及下载。本文就是用PHP做气象资料共享平台里的一个用户管理模块小型的气象资料用户管理网站。该网站可以方便管理员进行管理,在前台实现用户的注册、登录、信息修改、密码修改、成果的展示、成果的添加删除修改等功能,在后台实现管理员对注册用户的查询、添加、删除、修改、统计和分析以及管理员信息修改等功能,以便更好地服务用户,提高网站服务质量。3.2 可行性分析可行性分析的任务是明确开发应用项目的必要性和可行性。必要性
16、来自开发任务的迫切性,而可行性则取决于实现应用系统的资源和条件19。下面从三个方面来分析该系统的可行性。3.2.1 管理可行性分析以前的气象资料服务,大多是人工传阅的,传阅工作复杂,时间长,覆盖的人员范围小,有时甚至由于地域的限制无法共享这些气象资料,对于管理这些资料的人员来说更为繁琐,因为他们要对这些气象资料进行存放,并当有用户需要是管理人员还得找到并借给他们使用,并对使用这些资料的人进行记录,管理起来比较复杂。后来出现了局域网的气象服务,方便了使用该局域网的用户下载和使用这些资源,但其他的人员仍无法方便快捷的使用这些资源,管理人员的工作比之前轻松了不少,但仍需要靠手工的查询存储资料,没有彻
17、底解决问题。现在的气象资料服务网站都是基于Web的,速度快,工作流程简单,几乎所有能上Internet的人都能使用这些气象资源,只要用户填写一些基本的信息即可,管理这些资料的人也很方便,只要刚开始对这些资料进行录入,以后的工作就只是很轻松的管理网站中的用户和资料,不必像以前一样手工查询和存储资料了。所以基于Web的气象资料用户管理系统,能从根本上解决管理资料的繁琐程序,能让需要这些资料的人员轻松的获得想要的气象资料,而且管理起来更方便。因此在管理上,该系统是可行的。3.2.2 经济可行性分析以前的气象资料服务需要大量的人工,大部分费用都付给了管理人员。而建一个网站的费用不多,只要平时有少量的管
18、理人员进行管理就行了,而建网站所需的软硬件,价格也不贵,跟以前的相比,从长远看投入的只会少,不会多。而且气象资料网络中心已有足够的硬件设备,可以维持系统的正常运行。因此在经济上,该系统是可行的。3.2.3 技术可行性分析本系统将采用结构化的分析方法,使用PHP语言和MySQL数据库开发。PHP+MySQL网络程序的运行原理如图3-1所示,PHP程序的一个完整运行周期大致包含以下6个步骤:(1)用户通过浏览器(称为用户代理)向Web服务器发起一个PHP文件请求;(2)Web服务器接受到请求后读取所请求的文件,如果扩展名为.php则向PHP模块要求处理其中的PHP脚本;(3)如脚本中有数据库操作语
19、句,PHP模块建立起与MySQL的数据库连接,将SQL命令发送到MySQL;(4)MySQL进行数据库处理操作,并将操作结果返回给PHP模块;(5)PHP模块处理完PHP脚本,将结果返回给Web服务器;(6)Web服务器最终将纯Html数据发回客户端的浏览器,浏览器显示Html页面。图3-1 PHP原理图PHP简单好学而且开发人员已掌握Html、JavaScript、MySQL的部分知识,有了一定的编程基础,同时通过对PHP的学习,已经掌握了部分PHP编程技术。因此技术可行性也是可行的,用PHP语言、MySQL数据库、APACHE服务器,构建整个网站。3.3 功能结构分析经过分析可以把本系统分
20、为用户管理和管理员管理这两大功能模块:用户管理功能模块:在这个功能模块中,用户可以注册,然后登录,登录后可以修改个人信息和密码以及对用户成果的添加删除修改等功能。管理员管理功能模块:在这个功能模块中,管理员可以按不同的方式对已注册的用户、成果、资料进行查询,管理员可以浏览用户信息并可以对用户进行一系列的操作,如信息修改、权限修改、用户删除、用户成果信息修改、用户成果删除、用户成果添加等,管理员也可以添加用户,管理员可以按不同方式对已注册的用户进行统计,如按职业统计、按地域统计、按资料统计、按用户成果统计等,管理员也可以修改自己的密码,超级管理员可以对普通管理员进行操作,如管理员的添加、管理员的
21、删除、管理员的权限修改等。图3-2系统的功能结构图3.4 数据流程分析数据流程分析主要完成系统的数据流程图。数据流程图是一种能全面的描述信息系统逻辑模型的主要工具,它用少数几种特定的符号综合地反映出信息在系统中的流动、处理和存储情况。通过对气象资料用户管理系统的数据操作流程分析,可以分别画出前台数据流程图和后台数据流程图,如图3-3和图3-4所示:图3-3前台数据流程图图3-4后台数据流程图4 系统运行环境设计4.1 硬件环境设计本系统实施所需要的一台奔腾4以上的Web服务器和一台SUNV880(Ultra SPARCIII)的数据库服务器。用户或管理员可以通过现有的PC机远程登陆服务器进行访
22、问或管理。此外还需要TP-LINK 100M16口集线器两台,接入网络。系统网络拓扑结构如下图所示:图4-1 系统网络拓扑图4.2 软件环境设计本系统基于Web,服务器端采用Windows XP操作系统,MySql5.0做为数据库管理系统,Web服务器采用Apache2.2,开发语言为PHP5.0,编写代码工具是Adobe Dreamweaver CS4。该系统构架采用BS(BrowserServer)结构即浏览器和服务器结构这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现。系统运行原理图如下图所示:
23、MySQL数据库WEB服务器客户端1客户端2客户端n请求响应图4-2系统运行原理5 数据库设计5.1 概念结构设计E-R图也即实体-联系图(Entity Relationship Diagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。通过分析,系统中的实体有用户实体、成果实体、资料实体和管理员实体,实体间的关系如下图所示:图5-1系统的E-R图各实体属性如下图所示:图5-2用户实体属性图图5-3成果实体属性图图5-4资料实体属性图 图5-5管理员实体属性图图5-6 省份实体属性图图5-7城市实体属性图5.2 逻辑结构设计在MySQL数据库中建用户表、管理员表、资料表
24、、用户资料表、成果表,外加中国省份表和城市表,详细资料如下(主键已用下划线标出):users(user_id,user_pass,user_name,user_sex,user_job,user_company,user_province,user_city,user_address,user_zip,user_phone,user_mail,user_uses,user_permissions,user_lastlogintime,user_logintimes,user_regtime)admins(admin_id,admin_pass,admin_permissions)data(da
25、ta_id,data_name,data_kind,data_content)user_data(user_id,data_id)result(result_id,fund_number,fund_name,result_kind,paper_name,paper_time,paper_download,user_id)province(province_id,province_name)city(city_id,city_name,pro_id)图5-8用户表图5-9管理员表图5-10资料表图5-11用户资料表图5-12成果表图5-13省份表图5-14城市表5.3 数据库连接实现本系统使用的
26、是MySQL数据库和PHP语言20,使用phpmyadmin来创建和管理数据库。在安装MySQL数据库时设置密码,本系统的密码是123456。在MySQL数据库中创建users_management数据库时,要设置编码方式为gb2312,该编码方式支持简体中文,并和网页的编码方式一致,从而不会产生乱码。数据库连接代码如下:6 系统设计系统设计阶段的任务是赋予系统分析阶段所确定的系统功能一种具体的实现方法和技术。因此,系统设计的主要任务是依据系统分析报告,全面地确定系统应具有的功能和性能要求21。本系统根据系统分析,主要有前台用户管理和后台管理员管理这两大模块,用户管理分为用户信息管理和用户成果
27、管理这两个子模块,管理员管理分为信息查询、用户管理和管理员管理这三个子模块。6.1 系统主页设计(1)系统主界面图6-1系统主界面(2)功能简介系统主界面功能比较简单,主要是让用户或管理员进入各自的登录页面。(3)关键代码6.2 用户模块设计6.2.1 用户信息管理设计6.2.1.1 用户登录(1)用户登录界面图6-2用户登录界面(2)功能简介用户通过系统主界面进入用户登录页面。如果用户还没有注册,可以点击注册进入注册页面。如果用户有账号和密码,可以直接登录。如果是刚刚注册的用户,要通过管理员的审核才能进入。如果用户的账号被管理员禁用,该账号不能登录。(3)关键代码$Rand=trim($_P
28、OSTRand);$Randcheck=$_SESSIONVCODE;$UserId=trim($_POSTuserid);$UserPassword=trim($_POSTuserpassword);if($Randcheck!=null &($Randcheck=$Rand)$strSql=select * from users where user_id like $UserId and user_pass like $UserPassword;include(conn.php);$result=mysql_query($strSql,$con);if($row=mysql_fetch_
29、array($result) if($rowuser_permissions=审核) echo 你的浏览器不支持框架 ;$Sql=update users set user_lastlogintime=now(),user_logintimes=user_logintimes+1 where user_id=.$rowuser_id.;mysql_query($Sql,$con);$_SESSIONuser=$rowuser_id;if($rowuser_permissions=禁用) echo(您的账号已被管理员禁用!);echo();6.2.1.2 用户注册(1)用户注册界面图6-3用户注
30、册界面(2)功能简介用户进入登录页面后点击注册,同意条款后进入注册页面。在注册页面填写注册用户的信息,填写的信息会即时受到检验,如果填写的信息全部符合规范,点击提交就注册成功。 (3)关键代码$Rand=trim($_POSTRand);$Randcheck=$_SESSIONVCODE;$UserId=trim($_POSTUserId);$UserPassword=trim($_POSTUserPassword);$UserName=trim($_POSTUserName);$Sex=$_POSTsex;$UserJob=$_POSTUserJob;$UserCompany=trim($_
31、POSTUserCompany);$UserProvince=$_POSTUserProvince;$UserCity=$_POSTUserCity;$UserAddress=trim($_POSTUserAddress);$UserZip=trim($_POSTUserZip);$UserPhone=trim($_POSTUserPhone);$UserMail=trim($_POSTUserMail);$UserUses=$_POSTUserUses;$UserPermissions=待审核;if($Randcheck!=null &($Randcheck=$Rand)$strSql=in
32、sert into users values(.$UserId.,.$UserPassword.,.$UserName.,.$Sex.,.$UserJob.,.$UserCompany.,.$UserProvince.,.$UserCity.,.$UserAddress.,.$UserZip.,.$UserPhone.,.$UserMail.,.$UserUses.,.$UserPermissions.,now(),0,now();include(conn.php);mysql_query($strSql,$con) ;6.2.1.3 用户密码修改(1)用户密码修改界面图6-4用户密码修改界面
33、(2)功能简介用户在操作页面中点击密码修改进入密码修改页面。用户在密码修改页面可以修改自己的密码,输入原密码和新密码点击修改,如果原密码正确,密码修改成功。 (3)关键代码$userid=$_SESSIONuser;$OldPassword=trim($_POSTOldPassword);$NewPassword=trim($_POSTNewPassword);$strSql=select * from users where user_id like $userid;include(conn.php);$result=mysql_query($strSql,$con);if($row=mys
34、ql_fetch_array($result) $pass=$rowuser_pass;if($OldPassword=$pass)$sql=update users set user_pass=.$NewPassword.where user_id=.$userid.;if(mysql_query($sql)echo 密码修改成功;6.2.1.4 用户信息修改(1)用户信息修改界面图6-5用户信息修改界面(2)功能简介用户在操作页面中点击信息修改进入信息修改页面。用户在信息修改页面可以修改自己的个人信息,如果填写的信息都符合规范,点击修改就成功了。(3)关键代码$userid=$_SESSI
35、ONuser;$UserName=trim($_POSTUserName);$UserSex=$_POSTsex;$UserJob=$_POSTUserJob;$UserCompany=trim($_POSTUserCompany);$UserProvince=$_POSTUserProvince;$UserCity=$_POSTUserCity;$UserAddress=trim($_POSTUserAddress);$UserZip=trim($_POSTUserZip);$UserPhone=trim($_POSTUserPhone);$UserMail=trim($_POSTUserM
36、ail);$UserUses=$_POSTUserUses;$strSql=update users set user_name=$UserName,user_sex=$UserSex,user_job=$UserJob,user_company=$UserCompany,user_province=$UserProvince,user_city=$UserCity,user_address=$UserAddress,user_zip=$UserZip,user_phone=$UserPhone,user_mail=$UserMail,user_uses=$UserUses,user_perm
37、issions=$UserPermission where user_id like $userid;include(conn.php);if(mysql_query($strSql,$con) echo 信息修改成功;6.2.2 用户成果管理设计6.2.2.1 用户成果提交(1)用户成果提交界面图6-6用户成果提交界面(2)功能简介用户在操作页面中点击成果提交进入成果提交页面。用户在成果提交页面可以提交新的成果信息以及上传成果,如果填写的信息都符合规范,点击提交就成功了。(3)关键代码$Sql=select * from result;include(conn.php);$re=mysql_
38、query($Sql,$con);$num=mysql_num_rows($re);$ResultId=1001+$num;$userid=$_SESSIONuser;$FundNumber=trim($_POSTFundNumber);$FundName=$_POSTFundName;$ResultKind=$_POSTResultKind;$PaperName=$_POSTPaperName;$PaperTime=trim($_POSTPaperTime);$filesize=$_FILESfileuploadsize;$filename=$_FILESfileuploadname;$ty
39、pe=strstr($filename,.);$path=./file/.date(ymd)._.$filename;if(move_uploaded_file($_FILESfileuploadtmp_name,$path)$strSql=insert into result values(.$ResultId.,.$FundNumber.,.$FundName.,.$ResultKind.,.$PaperName.,.$PaperTime.,.$path.,.$userid.);if(mysql_query($strSql,$con) echo 提交成功;6.2.2.2 用户成果浏览(1)
40、用户成果浏览界面图6-7用户成果浏览界面(2)功能简介用户在操作页面中点击成果浏览进入成果浏览页面。用户在成果浏览页面可以查看到自己的成果信息,还可以下载成果,修改成果信息以及删除成果。(3)关键代码$ResultId=trim($_POSTResultId);$FundNumber=trim($_POSTFundNumber);$ResultKind=$_POSTResultKind;$FundName=$_POSTFundName;$PaperName=$_POSTPaperName;$PaperTime=trim($_POSTPaperTime);$PaperDownload=$_POSTPaperDownload;include(conn.php);if($_FILESfileuploadname=) $strSql=update result set fund_number=$FundNumber,fund_name=$FundName,result_kind=$ResultKind,paper_name=$PaperName,paper_time=$PaperTime where resul