地震科普APP的设计与实现_第1页
地震科普APP的设计与实现_第2页
地震科普APP的设计与实现_第3页
地震科普APP的设计与实现_第4页
地震科普APP的设计与实现_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

地震科普APP的设计与实现摘要:本文通过程序实现者对地震科普APP进行分析,主要是一款对大众介绍地震小知识的软件,以文章、图片、视频的方式向我们介绍地震的危害,从古到今为预防地震做出巨大贡献的研究者以及献出自己生命的可爱的人们。用java语言,css,HTML,sql等技术进行实现。ABSTRACT:Bymeansofprogramimplementers,thispaperanalyzesthepopularscienceAPPofearthquake,mainlyasoftwaretointroducethesmallknowledgeofearthquaketothepublic,intheformofarticles,pictures,intheformofarticles,picturesandvideos,researcherswhohavemadegreatcontributionstoearthquakepreventionfromancienttimestothepresentandlovelypeoplewhohavegiventheirlives.withjavalanguage,css,HTML,sqlandothertechnologiestoachieve.关键词:地震科普;文章;图片;视频;java;css;HTML;sqlKEYWORDS:Earthquakescience;article;picture;video;java;css;HTML;sql目录TOC\o"1-3"\h\u第1章绪论 第1章绪论1.1引言在全球,地震自古到今都在威胁着人类的生命安全,为此千万人的家园被破坏,失去生命,人类遭受巨大的损失。在20世纪,全球共发生3次8.6级以上的地震,其中两次发生在中国,每次的伤亡人数都是几十万人,在世界上都是罕见的。然而人们对地震缺乏认知,没有具体的关于地震的安全知识,只是在地震来临之时通过新闻知道地震的可怕。地震科普APP正是为此设计,普及地震知识。1.2目的和意义本次毕业设计的课题是地震科普APP的设计与实现,该系统是属于便民类的系统。该系统能够为用户提供有关地震充足的信息和快捷的查询手段。在计算机普及的信息时代,用电脑软件来查询信息已经替代了一直以来人们使用传统的方式查询用户信息,用户能够及时查找以往的地震信息以及关于地震的知识。使用电脑软件进行查询,具有很多优点,例如:查询迅速、方便、清晰、信息存储量大等。如果将地震信息查询系统运行在手机上,更有利于人们快速、方便的查找到所需的相关信息。从真正意义上做到了“便民”。人们可以通过APP更加清楚全面的了解地震的危害以及地震来临时应该怎样去做的相关知识。第2章地震概述2.1地震概念地震又称地动、地振动。指地球局部的震动或颤动,伴有造山运动或其他地壳运动。当地球内部在运动中积累到能量对地壳产生的巨大压力超过岩层所能承受的限度时岩层便会突然发生断裂或错位,使累积的能量急剧地释放出来,并以地震波的形式向四面八方传播,就形成了地震。语出《国语·周语上》:“阳伏而不能出,阴迫而不能烝,於是有地震。”2.2世界地震情况全球范围内(中国除外)\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"震级较高,破坏特别严重,以及在人类认识\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"地震规律和抗震问题上有历史性重要意义的地震。喀拉喀托火山地震(印度尼西亚群岛,1833年8月27日)是火山地震中最大的地震。它位于爪哇岛与苏门答腊之间的巽他海峡。火山爆发时喷出大量气体和火山灰,烟柱上升高达27公里。火山灰进入80公里高空的平流层,环绕全球。一年以后仍留在空中,并在欧洲造成"薄暮晚霞"的现象。火山喷发时震动很强烈,它振动海底引起巨大的海啸,在苏门答腊和爪哇造成很大的破坏。地震(海地,2010年1月12日16时53分)震级为7.0级。首都\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"太子港及全国大部分地区受灾情况严重,截至2010年1月26日,\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"海地地震进入第15天,\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"世界卫生组织确认,此次\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"海地地震已造成22.25万人死亡,19.6万人受伤。此次地震中遇难者有\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"联合国驻海地\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"维和部队人员,其中包括8名\t"/item/%E4%B8%96%E7%95%8C%E8%91%97%E5%90%8D%E5%A4%A7%E5%9C%B0%E9%9C%87/_blank"中国维和人员遇难。地震发生后,国际社会纷纷伸出援手,表示将向海地提供人道主义援助。

第3章项目概述3.1程序语言Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。3.2与WEB编程语言对比主流的动态网页编程语言有ASP,PHP,ASP.NET,JSP等。对于PHP,这种语言当前很流行,但是感觉需要深入比较深入的编程知识,比较难学难用,对于ASP.NET,这可以微软公司的新的编程工具,虽然说有很多优点,但是目前速度比较慢,使用服务器控件编写网站程序效率比较低。对于JSP这就属于JAVA领域了,JAVA这个个人认为速度是比较慢的,是许配置安装很多东西,比较麻烦。但是比较主流。3.3B/S架构与C/S架构的对比(1)以浏览器为基础的应用程序的优缺点①易于安装:可以用于许多桌面型计算机,并且与用户使用的操作系统平台无关,只要其安装浏览器就能运行程序。②易于部署与维护:只需要在服务器端进行部署和维护工作。③必须联网操作:工作效率和网络是否延迟有关。④不能充分利用客户端计算机的资源:只能通过有限的HTML语言来呈现用户界面,没有利用客户端计算机的计算处理能力。只能利用浏览器的打印功能来打印资料,不适用于企业的报表打印。⑤网络传输量大:由于客户端不能保存状态数据,因此必须在客户端和服务器之间传输用户界面内容以及所需的数据。⑥安全性较低。对于服务器来说可以通过防火墙软件来过滤数据,因为所有传输内容都是基于HTTP端口。但很难对数据进行加密和签名以保证在传输过程中的完整性。⑦适合电子商务或不要求严格控制客户端的应用程序。(2)客户端应用程序的优缺点①充分利用客户端计算机的资源:可以为用户提供丰富的界面元素,可以存取本机磁盘与本机应用程序接口,执行速度较快。②网络传输量较小:只需在客户端和服务器之间传输数据。③安全性较高:可以方便的在客户端和服务器执行加密和解密操作。④安装、部署和维护工作较为繁琐:对客户端计算机在操作平台和附加软件上有一定的限制和要求。⑤可以离线工作:前提是本地必须有缓存数据的能力,这涉及到与服务器数据同步的问题。⑥适合企业内部应用程序。开发平台:Windows10专业版操作64位系统环境下,使用eclipse,SqlServer进行开发。4系统分析与系统总体设计4.1设计构思总体设计包括三个方面:前端、后台、数据库,如下图:图4-14.2系统实现4.2.1系统登陆数据库设计图4-2用户实体属性图图4-3test_sql实体属性图图4-4user表图4-5new表登陆实现前台发出参数,username、password链接:http//:.00:8080/test2/servlet/LoginDateServlet后台:定义UserBean的实体类用来储存用户信息,定义BaseBean的实体类用以不同返回值判断登录情况。用LoginDateServlet接受前台数据并调用DBUtils读取数据库用户信息并保存到UserBean里,比对用户信息,不同情况以不同值存到BaseBean中,并转化为json数据传给前台。图4-6部分代码:UserBean.java:publicclassUserBeanimplementsSerializable{ privatestaticfinallongserialVersionUID=1L; privateStringid; privateStringusername; privateStringpassword; publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; }}DBUtils,java:packagedb;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importdomain.UserBean;publicclassDBUtils{ privateConnectionconn; privateStringurl="jdbc:mysql://:3306/test_sql";//指定连接数据库的URL ?serverTimezone=GMT%2B8 privateStringuser="root";//指定连接数据库的用户名 privateStringpassword="root";//指定连接数据库的密码 privateStatementsta; privateResultSetrs;//打开数据库连接 publicvoidopenConnect(){ try{ Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动 conn=DriverManager.getConnection(url,user,password);//创建数据库连接 if(conn!=null){ System.out.println("数据库连接成功");//连接成功的提示信息 } }catch(Exceptione){ System.out.println("ERROR:"+e.getMessage()); } } //获得查询user表后的数据集 publicResultSetgetUser(){ //创建statement对象 try{ sta=conn.createStatement();//执行SQL查询语句 rs=sta.executeQuery("select*fromuser"); }catch(SQLExceptione){ e.printStackTrace(); } returnrs; } publicintgetname(){ intid=1; try{ sta=conn.createStatement();//执行SQL查询语句 rs=sta.executeQuery("select*fromuser");//获得结果集 if(rs!=null){ while(rs.next()){//遍历结果集 id++; } } }catch(SQLExceptione){ e.printStackTrace(); } returnid; } //判断数据库中是否存在某个用户名及其密码,注册和登录的时候判断 publicbooleanisExistInDB(Stringusername,Stringpassword){ booleanisFlag=false;//创建statement对象 try{ System.out.println("判断用户名密码"); sta=conn.createStatement();//执行SQL查询语句 rs=sta.executeQuery("select*fromuser");//获得结果集 if(rs!=null){ while(rs.next()){//遍历结果集 if(rs.getString("id").equals(username)&&rs.getString("密码").equals(password)){ isFlag=true; break; }}} }catch(SQLExceptione){ e.printStackTrace(); isFlag=false; } returnisFlag; } publicList<UserBean>setUser(){ List<UserBean>list=newArrayList<UserBean>(); try{//第一步:加载驱动 Class.forName("com.mysql.jdbc.Driver"); //第二步:创建数据库连接 Stringurl="jdbc:mysql://:3306/test_sql"; Stringuser="root"; Stringpassword="root"; Connectionconn=DriverManager.getConnection(url,user,password); //第三步:执行SQL语句 Statementstat=conn.createStatement(); Stringsql="select*fromuser"; ResultSetre=stat.executeQuery(sql); 4.2.2注册实现(1)图4-7用户注册部分代码publicclasshomepageextendsAppCompatActivity{

StringTAG=zhuce.class.getCanonicalName();

privateListViewmyCityListView;

privateListViewli;

ArrayList<NewBean>newlist=newArrayList<>();

publicbooleanonKeyDown(intkeyCode,KeyEventevent){

if(keyCode==KeyEvent.KEYCODE_BACK){

Intenthome=newIntent(Intent.ACTION_MAIN);

home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

home.addCategory(Intent.CATEGORY_HOME);

startActivity(home);

returntrue;

}returnsuper.onKeyDown(keyCode,event);

}@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

//UsermanageActivity.activityList.add(this);

setContentView(R.layout.homepage);

if(android.os.Build.VERSION.SDK_INT>9){

StrictMode.ThreadPolicypolicy=newStrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);

}

newlist=(ArrayList<NewBean>)requestGet();

ListAdapteradapter=newListAdapter(homepage.this,R.layout.item,newlist);

li=(ListView)findViewById(R.id.listview_1);

li.setAdapter(adapter);

li.setOnItemClickListener(newAdapterView.OnItemClickListener(){

@Override

publicvoidonItemClick(AdapterView<?>adapterView,Viewview,intposition,longid){

NewBeanL=newlist.get(position);

Uriuri=Uri.parse(L.getContent());

Intentintent=newIntent(homepage.this,web_1.class);

intent.putExtra("uri",L.getContent());

startActivity(intent);

}

});

Buttonbtn1=(Button)findViewById(R.id.button_2);

Buttonbtn2=(Button)findViewById(R.id.button_1);

Buttonbtn3=(Button)findViewById(R.id.button_3);

Buttonbtn4=(Button)findViewById(R.id.button_4);

Buttonbtn5=(Button)findViewById(R.id.button_5);

btn1.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview){

Intentinter=newIntent(homepage.this,web_4.class);

}

});

btn2.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview){

Intentinter=newIntent(homepage.this,homepage.class);

}

});

btn3.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview){

Intentintent=newIntent(homepage.this,web_3.class);

startActivity(intent);

}

});

btn4.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewview){

Intentinter=newIntent(homepage.this,web_2.class);

}

});

btn5.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview){

Intentinter=newIntent(homepage.this,UsermanageActivity.class);

startActivity(inter);

}

});}

4.2.3首页实现(1)具体界面 图4-8图4-9视频推荐(2)部分代码packagecom.example.myapp;

importandroid.content.Intent;

import.Uri;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.ListView;

importandroidx.appcompat.app.ActionBar;

importandroidx.appcompat.app.AppCompatActivity;

importcom.google.gson.Gson;

importcom.google.gson.JsonArray;

importcom.google.gson.JsonElement;

importcom.google.gson.JsonParser;

importjava.io.ByteArrayOutputStream;

importjava.io.InputStream;import.HttpURLConnection;

import.URL;

importjava.util.ArrayList;

publicclasssubaoextendsAppCompatActivity{

privateString[]data={"日本地震","美国地震","德国地震","法国地震","阿拉伯地震","汶川地震","上海地震","长宁地震"};

StringTAG=zhuce.class.getCanonicalName();

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.subao);

//UsermanageActivity.activityList.add(this);

ButtonBack_login=(Button)findViewById(R.id.button_back);

Back_login.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview){

finish();

}

});

ActionBaractionBar=getSupportActionBar();

if(actionBar!=null){

actionBar.hide();}

Buttonbtn1=(Button)findViewById(R.id.button9);

btn1.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview1){

Intentintent=newIntent(Intent.ACTION_VIEW);

intent.setData(Uri.parse(""));

startActivity(intent);}});4.2.4具体功能实现讨论区

图4-10文本框溢出盒子talk.html<style>#top{font-size:20px;padding:0%;width:100%;height:5%;position:fixed;top:0;background-color:rgb(196,227,245);color:rgb(0,0,0);text-align:center;margin-bottom:5%;}#fixed{padding:0%;padding-left:20%;font-size:12px;width:100%;height:5%;position:fixed;bottom:0;background-color:rgb(196,227,245);color:rgb(0,0,0);text-align:center;}li{margin-left:6%;margin-right:6%;}#background{width:20%;height:100%;float:left;border:1pxsolidblack;top:0%;}#side{min-height:1000px;width:80%;float:left;border:1pxsolidblack;}#all{width:70%;margin-left:15%;margin-top:8%;border:1pxsolidblack;min-height:1000px;margin-bottom:10%;border:1pxsolidblack;top:0%;}.clear{clear:both}body,ul{margin:0;padding:0;height:100%;}ul{list-style:none;}.wrap{width:600px;height:155px;margin:20pxauto;border-radius:4px;border:1pxsolidrgb(0,0,0);padding:010px;margin-top:10%;}.wrap-head{width:100%;

height:24px;

padding-top:4px;

overflow:hidden;}.head-logo{

width:40%;float:left;}.head-logoimg{

width:30px;

height:30px;}.head-txt{

padding:4px0;

width:60%;float:right;}.head-txta{font-size:12px;

color:rgb(196,227,245);

text-decoration:none;}.title-txt.title{

text-align:right;

color:black;display:block;

width:100%;}.main-txt{

border:1pxsolidrgb(0,0,0);

width:98%;

height:68px;margin:4px00;

padding:5px;

box-shadow:0px0px3px0pxrgba(0,0,0,0.15)inset;}.main-txttextarea{border:none;

width:100%;height:66px;

outline:none;resize:none;color:#333;}.main-txt.outline{outline:2pxrgb(196,227,245);}.warp-footer{width:100%;height:40px;margin:6px0;overflow:hidden;}.warp-footer-btns{

width:35%;

float:right;

overflow:hidden;

margin-top:3px;}.release-btn{

width:80px;

height:28px;float:right;background-color:rgb(196,227,245);border:4pxsolidrgb(196,227,245);cursor:pointer;border-radius:2px;}.release-btna{

display:block;color:#fff;

width:80px;height:28px;

line-height:28px;

text-align:center;

text-decoration:none;font-size:15px;}.show{

width:600px;

margin:20pxauto;}(2)文章阅读图4-11文章阅读模块article.html<!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scale=1">

<title>文章</title><linkrel="stylesheet"href="/twitter-bootstrap/3.3.7/css/bootstrap.min.css">

<scriptsrc="/jquery/2.1.1/jquery.min.js"></script><scriptsrc="/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script><style>#top{font-size:20px;padding:0%;width:100%;height:5%;position:fixed;top:0;background-color:rgb(196,227,245);color:rgb(0,0,0);text-align:center;margin-bottom:5%;}#fixed{padding:0%;padding-left:20%;font-size:12px;width:100%;height:5%;position:fixed;bottom:0;background-color:rgb(196,227,245);color:rgb(0,0,0);text-align:center;}li{margin-left:6%;margin-right:6%;}#link{margin-top:10%;}#background{width:20%;min-height:1000px;float:left;border:1pxsolidblack;}#side{min-height:1000px;width:80%;float:left;border:1pxsolidblack;background-color:rgb(196,227,245);}#all{width:70%;margin-left:15%;margin-top:8%;border:1pxsolidblack;min-height:1000px;top:0%;}.article{width:100%;height:100%;background-color:rgb(196,227,245);}.article{width:90%;height:100px;margin-left:5%;border:1pxsolidrgb(36,50,71);margin-top:10px;margin-bottom:40px;box-shadow:10px10px5px#888888;}.word{width:80%;height:100%;float:left;}.img{width:20%;height:100%;float:left;}.clear{clear:both}</style></head><body><divid="top"><p>最新地震消息</p></div><divid="all"><divid="background"><ahref="#"class="list-group-itemactive">最新地震消息</a><ahref="interiorly.html"class="list-group-item">国内地震</a><ahref="outwards.html"class="list-group-item">国外地震</a><ahref="specialist.html"class="list-group-item">专家解说</a><ahref="spread.html"class="list-group-item">科普小知识</a><ahref="talk.html"class="list-group-item">讨论区</a></div><divid="side"><divclass="articles"><divclass="article"><divclass="word"><ahref="#"><pstyle="margin-top:45px;text-align:center">点击这里阅读文章,查看最新地震消息</p></a></div><divclass="img"><imgsrc="app-photo/logo.jpg"style="width:100%;height:98px"></div></div><divclass="article"><divclass="word"><ahref="#"><pstyle="margin-top:45px;text-align:center">点击这里阅读文章,查看最新地震消息</p></a></div>5系统的测试达到的效果与验证5.1软件测试概述软件测试依据测试任务要求的类型可分为有效性测试和验证测试两种类型。有效性测试和验证测试。有效性测试以实现用户需求为根本点,确认软件的功能、性能和其他特性是否与用户的要求一致,内容包括:需求规格说明、用户文档、程序文档等的有效性确认。验证测试是检验软件开发个阶段,以阶段间的逻辑协调性、完备性和正确性。例如:需求分析是概要设计的依据,概要设计必须以满足需求为出发点和充分体现需求,使得阶段产品内容保持逻辑上的一致性和协

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论