admin 管理员组文章数量: 887021
2023年12月17日发(作者:mstp配置实例)
[键入公司名称]
实训课程设计
天气预报程序
xx
2011/12/29
1项目任务概述
1.1项目背景
随着3G时代的到来,移动互联网成为Internet下一个热点,android可以很好的使用Internet,获取网站上的数据,android天气预报系统就利用这一方式为用户提供服务。
天气预报的主要功能是为用户提供今日以及未来两天的天气预报。
1.2 项目任务
本项目实现在 Android移动设备天气预报功能,系统根据用户输入的地址,在Internet上请求获得该地址的天气情况,并发回数据,在系统调用该数据后,将天气实况显示给用户。
2需求分析
用户可以使用该系统实现日记的编写,修改和删除,日记内容阅读以及以文本文档形式将日记导入SDcard中。
2.1总体用例图
1 / 31
查看当日天气预报
查看未来两天天气预报
查看地理信息
图1
2.2 天气预报用例图
2.3天气预报业务流程
输入地址
查看当日天气预报
选择列表item
进入系统
进入今日预报页面
退出系统
图2
用户通过点击桌面图标,进入系统。再通过在文本框中输入的地址,来进入当天天气预报界面。再点击箭头按钮,页面跳转到未来两天天气预报的界面。
2.4 查看未来两天天气预报用例图
2 / 31
查看未来两天
天气预报
2.5 查看未来两天天气预报流程图
输入地址
选择列表item
进入系统
进入今日预报页面
点击按钮
进入明日预报界面
退出系统
图2
2.6 查看地理信息用例图
3 / 31
查看地理信息
2.7查看地理信息流程图
点击MENU
选择MENU
查看地理信息
回到系统
图3
3 系统设计
3.1 天气预报系统UI——登录界面
4 / 31
图4
3.2天气预报UI——登录界面说明
在此界面中,正如大家所见。含有两个TextView组件,一个ImageView组件,一个AutoCompleteTextView,其字符大小分别是默认的大小。其中AutoCompleteTextView能够给用户提供选项列表,用户只要单击列表中的一项,此页面就回自动跳转到下一页面。
5 / 31
3.3 天气预报UI——今日天气预报界面
图5 图6
3.4天气预报UI——今日天气预报界面说明
此界面中分别含有六个TextView组件,五个ImageView组件,一个ImageButton组件,一个Menu,在此布局文件中有五个相对布局。其中的天气图片,文字信息全部来源于/。利用Menu,用户可以查看正在搜寻的地址的地理信息。此外,该Activity加入了一个ScollView,使用户更方便地查看天气情况。同时,此页面加入了得ImageButton可以查看未来两日的天气情况。
6 / 31
3.5 天气预报UI——未来两天天气预报界面
图7
3.6 天气预报UI——未来两天天气预报界面说明
正如大家直观所见,此界面由九个TextView组件和六个ImageView组件组成。
7 / 31
3.7 天气预报UI——地理信息界面
图8 图9
3.8 天气预报UI——地理信息界面说明
如图8,图9所示,该功能用到了一个menu和一个Dialog组件。单击menu按钮,出现“地理信息”菜单,单击菜单,显示对话框。
4系统实现代码解析
4.1系统配置文件——
是系统中的配置文件,我们需要将系统中用到的Android组件全都在这个文件中注册,其中ActivityTest是启动屏幕显示的Activtiy。
代码清单1
8 / 31 package="d" android:versionCode="1" android:versionName="1.0"> android:name="ET"> android:label="@string/app_name"> android:label="@string/app_name"> android:name="ER" /> android:label="@string/app_name"> android:label="@string/app_name">
4.2 src代码解析
4.2.1首先,我们将要介绍的是系统的启动界面,亦即登录界面的代码。
代码清单2
package d;
import p;
import ty;
import ;
import ces;
import ;
import ;
import ;
import ;
import kListener;
import rView;
9 / 31
import ClickListener;
import SelectedListener;
import dapter;
import mpleteTextView;
import ;
import iew;
import ew;
public class ActivityTest extends Activity {
private AutoCompleteTextView m_AutoCompleteTextView;
private Button button;
private String str;
private Resources res;
private String[] autoString;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
res = getResources();
autoString = new String[] { ing(g),
ing(ai),
ing(n),
ing(ing),
ing(n),
ing(hun),
ing(ng),
ing(ote),
ing(zhuang),
ing(qi),
ing(),
ing(an),
ing(hou),
ing(),
ing(),
ing(g),
ing(u),
10 / 31
te(savedInstanceState);
setContentView();
ing(),
ing(n),
ing(),
view,
ing(g),
ing(g),
ing(g),
ing(ou),
ing(ng),
ing(hou),
ing(),
ing(),
ing(ang),
ing(),
ing(ng),
ing(),
ing(),
ing(),
ing(), };
m_AutoCompleteTextView = (AutoCompleteTextView)
findViewById(mpletetextview);
ArrayAdapter
, autoString);
m_pter(adapter);
m_AutoCompleteTextView
.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View
}
int position, long id) {
=
// TODO Auto-generated method stub
str
Intent intent = new Intent(,
);
mAtPosition(position).toString();
Bundle bundle = new Bundle();
ing("key", str);
ras(bundle);
startActivity(intent);
});
11 / 31
}
}
此类用于创建系统的登录界面。把数据放在数组中,存储在了ArrayAdapter中,AutoCompleteTextView调用了ArrayAdapter。同时,单击列表选项时,利用intent向另一个Activity传递了参数。
4.2.2现在,让我们跟随用户操作来了解下一个段代码,即当日天气预报代码。
代码清单3
package d;
import velope;
import ject;
import rializationEnvelope;
import ansportSE;
import ty;
import ialog;
import r;
import ;
import ;
import ;
import Inflater;
import ;
import flater;
import em;
import ;
import kListener;
import utton;
import iew;
import ew;
public class ActivityTest1 extends Activity {
private static final String NAMESPACE = "/";
private static final String METHOD_NAME = "getWeatherbyCityName";
private
private
static
static
String
String
URL
SOAP_ACTION
=
=
"/webservices/";
"/getWeatherbyCityName";
private static final int menu1 = 0;
12 / 31
private SoapObject detail;
TextView textview1;
TextView textview2;
TextView textview3;
TextView textview4;
TextView tv1;
TextView tv2;
ImageView image1;
ImageView image2;
String place;
ImageButton imagebutton;
Menu menu;
Dialog dialog;
String dili;
public void onCreate(Bundle savedInstanceState) {
int icon1 = parseIcon(perty(9).toString());
int icon2 = parseIcon(perty(8).toString());
13 / 31
te(savedInstanceState);
Intent intent = getIntent();
Bundle bundle = ras();
place = ing("key");
setContentView(1);
showWeather(place);
textview1 = (TextView) findViewById(ew1);
textview2 = (TextView) findViewById(ew2);
textview3 = (TextView) findViewById(ew3);
textview4 = (TextView) findViewById(ew4);
tv1 = (TextView) findViewById(1);
tv2 = (TextView) findViewById(2);
image1 = (ImageView) findViewById(1);
image2 = (ImageView) findViewById(2);
imagebutton = (ImageButton) findViewById(utton);
t(perty(5).toString());
t(perty(7).toString());
t(perty(10).toString());
t(perty(11).toString());
t(perty(1).toString());
t(perty(4).toString());
geResource(icon1);
geResource(icon2);
lickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(,
);
Bundle bundle = new Bundle();
ing("key", place);
ras(bundle);
startActivity(intent);
}
});
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
e(, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
int item_id = mId();
switch (item_id) {
case :
new r(this)
.setTitle("介绍")
.setView(
().inflate(
, null))
.setMessage(perty(22).toString()).create()
.show();
break;
14 / 31
}
return true;
}
private int parseIcon(String strIcon) {
// TODO Auto-generated method stub
if (strIcon == null)
return -1;
if ("".equals(strIcon))
return le.b_0;
if ("".equals(strIcon))
return le.b_1;
if ("".equals(strIcon))
return le.b_2;
if ("".equals(strIcon))
return le.b_3;
if ("".equals(strIcon))
return le.b_4;
if ("".equals(strIcon))
return le.b_5;
if ("".equals(strIcon))
return le.b_6;
if ("".equals(strIcon))
return le.b_7;
if ("".equals(strIcon))
return le.b_8;
if ("".equals(strIcon))
return le.b_9;
if ("".equals(strIcon))
return le.b_10;
if ("".equals(strIcon))
return le.b_11;
if ("".equals(strIcon))
return le.b_12;
if ("".equals(strIcon))
return le.b_13;
if ("".equals(strIcon))
return le.b_14;
if ("".equals(strIcon))
return le.b_15;
if ("".equals(strIcon))
return le.b_16;
15 / 31
}
if ("".equals(strIcon))
return le.b_17;
return le.b_18;
return le.b_19;
return le.b_20;
return le.b_21;
return le.b_22;
return le.b_23;
return le.b_24;
return le.b_25;
return le.b_26;
return le.b_27;
return le.b_28;
return le.b_29;
return le.b_30;
return le.b_31;
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
return 0;
private void showWeather(String place) {
}
private void getWeather(String place) {
16 / 31
// TODO Auto-generated method stub
getWeather(place);
// TODO Auto-generated method stub
try {
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
perty("theCityName", place);
}
}
HttpTransportSE ht = new HttpTransportSE(URL);
= true;
SoapSerializationEnvelope
11);
envelope = new
SoapSerializationEnvelope(
t = rpc;
= true;
putSoapObject(rpc);
(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) ;
detail = (SoapObject) result
.getProperty("getWeatherbyCityNameResult");
} catch (Exception e) {
}
tackTrace();
在该段代码中,getIntent()接到了来自上一个Activity的参数。parseIcon(String strIcon)方法转换了来自网络的图片名称。GetWeather(String place)从网络上获取了该地区的天气信息。同时,
OnCreateOptionMenu(Menu menu)创建了菜单,onOptionItemSelected(MenuItem item)产生了单击菜单的事件。
4.2.3现在,让我们跟随用户操作来了解下一个段代码,即未来两日天气预报代码。
代码清单4
package d;
import velope;
import ject;
import rializationEnvelope;
import ansportSE;
import ty;
import ;
import ;
import ;
17 / 31
import kListener;
import utton;
import iew;
import ew;
public class ActivityTest2 extends Activity {
private static final String NAMESPACE = "/";
private static final String METHOD_NAME = "getWeatherbyCityName";
private static String URL
"/webservices/";
private static String SOAP_ACTION
"/getWeatherbyCityName";
private SoapObject detail;
String place;
TextView textview1;
TextView textview3;
TextView textview4;
TextView textview5;
TextView textview31;
TextView textview41;
TextView textview51;
ImageView imageview1;
ImageView imageview2;
ImageView imageview11;
ImageView imageview21;
ImageView imageview3;
ImageView imageview4;
public void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
Intent intent = getIntent();
Bundle bundle = ras();
place = ing("key");
setContentView(2);
showWeather(place);
textview1 = (TextView) findViewById(ew1);
textview3 = (TextView) findViewById(ew3);
textview4 = (TextView) findViewById(ew4);
textview5 = (TextView) findViewById(ew5);
=
=
18 / 31
textview31 = (TextView) findViewById(ew31);
textview41 = (TextView) findViewById(ew41);
textview51 = (TextView) findViewById(ew51);
t(place);
t(perty(13).toString());
t(perty(14).toString());
t(perty(12).toString());
t(perty(18).toString());
t(perty(19).toString());
t(perty(17).toString());
imageview1 = (ImageView) findViewById(iew1);
imageview2 = (ImageView) findViewById(iew2);
imageview11 = (ImageView) findViewById(iew11);
imageview21 = (ImageView) findViewById(iew21);
imageview1
imageview2
.setImageResource(parseIcon(perty(15).toString()));
.setImageResource(parseIcon(perty(16).toString()));
}
private int parseIcon(String strIcon) {
// TODO Auto-generated method stub
if (strIcon == null)
return -1;
return le.b_0;
return le.b_1;
return le.b_2;
return le.b_3;
19 / 31
geResource(parseIcon(perty(20)
.toString()));
.toString()));
geResource(parseIcon(perty(21)
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
return le.b_4;
if ("".equals(strIcon))
return le.b_5;
if ("".equals(strIcon))
return le.b_6;
if ("".equals(strIcon))
return le.b_7;
if ("".equals(strIcon))
return le.b_8;
if ("".equals(strIcon))
return le.b_9;
if ("".equals(strIcon))
return le.b_10;
if ("".equals(strIcon))
return le.b_11;
if ("".equals(strIcon))
return le.b_12;
if ("".equals(strIcon))
return le.b_13;
if ("".equals(strIcon))
return le.b_14;
if ("".equals(strIcon))
return le.b_15;
if ("".equals(strIcon))
return le.b_16;
if ("".equals(strIcon))
return le.b_17;
if ("".equals(strIcon))
return le.b_18;
if ("".equals(strIcon))
return le.b_19;
if ("".equals(strIcon))
return le.b_20;
if ("".equals(strIcon))
return le.b_21;
if ("".equals(strIcon))
return le.b_22;
if ("".equals(strIcon))
return le.b_23;
if ("".equals(strIcon))
return le.b_24;
if ("".equals(strIcon))
return le.b_25;
20 / 31
}
if ("".equals(strIcon))
return le.b_26;
return le.b_27;
return le.b_28;
return le.b_29;
return le.b_30;
return le.b_31;
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
if ("".equals(strIcon))
return 0;
private void showWeather(String place) {
}
private void getWeather(String place) {
// TODO Auto-generated method stub
try {
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
perty("theCityName", place);
HttpTransportSE ht = new HttpTransportSE(URL);
= true;
SoapSerializationEnvelope
11);
envelope = new
// TODO Auto-generated method stub
getWeather(place);
SoapSerializationEnvelope(
t = rpc;
= true;
putSoapObject(rpc);
(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) ;
detail = (SoapObject) result
.getProperty("getWeatherbyCityNameResult");
} catch (Exception e) {
tackTrace();
21 / 31
}
}
}
用showWeather()来显示从网站获得的天气信息。
4.3 layout代码解析:
:
登陆界面布局文件
xmlns:android="/apk/res/android" 22 / 31 android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_height="200dip"> android:layout_width="wrap_content" android:background="@drawable/welcome4" android:layout_alignParentLeft="true" /> android:background="@drawable/whitebackground"> xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="60dip" android:layout_height="wrap_content" android:text="Tianer说~~天气" android:textSize="25dip" android:layout_toRightOf="@id/imageview1" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" /> android:layout_width="wrap_content" android:textColor="#808080ff" android:orientation="vertical" android:layout_height="wrap_content"> xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_width="100dip" android:text="@string/hello" android:textSize="15dip" /> android:layout_width="200dip" android:layout_toRightOf="@id/textview2" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_height="wrap_content" android:completionThreshold="1" android:layout_centerHorizontal="true">
:
当日天气预报界面布局文件
xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_height="wrap_content"> 23 / 31 android:id="@+id/scrollview" android:layout_width="fill_parent" android:layout_height="wrap_content"> android:orientation="vertical" android:layout_height="match_parent" android:id="@+id/main1" android:background="@drawable/white"> xmlns:android="/apk/res/android" android:layout_width="match_parent" xmlns:android="/apk/res/android" android:layout_width="wrap_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textSize="50dip" /> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="60dip" android:layout_alignParentRight="true" android:layout_toRightOf="@id/tv1" android:textSize="15dip" /> xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerHorizontal="true" /> android:id="@+id/image2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image1" android:layout_alignParentRight="true" /> xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="50dip" android:layout_marginTop="20dip"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/tem11" android:layout_alignParentLeft="true" /> android:layout_width="wrap_content" android:layout_height="wrap_content" 24 / 31 android:layout_toRightOf="@id/imageview1" android:layout_alignParentRight="true" android:layout_marginLeft="10dip" android:textColor="#808080ff" /> xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="50dip"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/tem22" android:layout_alignParentLeft="true" /> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginLeft="10dip" android:layout_toRightOf="@id/imageview2" android:textColor="#808080ff" /> xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/maike1" android:layout_alignParentTop="true" /> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:layout_below="@id/imageview3" android:textColor="#808080ff" /> 25 / 31 android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:textColor="#808080ff" /> android:layout_width="wrap_content" android:layout_below="@id/textview3" android:layout_width="wrap_content" android:layout_alignParentLeft="true" android:text="未来两日android:id="@+id/textviewdi" android:layout_height="wrap_content" 天气,请点击------"> android:layout_width="wrap_content" android:id="@+id/imagebutton" android:layout_alignParentRight="true" android:clickable="true"> android:layout_height="wrap_content" android:background="@drawable/jiantou" android:layout_toRightOf="@id/textviewdi"
:
未来两日天气预报布局文件
xmlns:android="/apk/res/android" android:id="@+id/scrollview" android:layout_width="fill_parent" android:layout_height="wrap_content"> android:orientation="vertical" xmlns:android="/apk/res/android" android:layout_width="match_parent" 26 / 31 android:layout_height="match_parent" android:id="@+id/main1" android:background="@drawable/white"> android:layout_height="wrap_content" android:layout_width="wrap_content" android:textSize="50dip"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:textSize="20dip"> xmlns:android="/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/relativelayout"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dip" android:layout_alignParentLeft="true"> android:layout_toRightOf="@id/imageview1" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dip" android:layout_marginLeft="102dip"> android:layout_height="wrap_content" android:layout_marginTop="10dip"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:background="@drawable/tem22"> android:layout_width="wrap_content" android:layout_height="wrap_content" 27 / 31 android:textSize="15dip" android:layout_width="wrap_content" android:layout_marginTop="20dip" android:layout_width="wrap_content" android:layout_alignParentLeft="true" android:layout_height="wrap_content" android:layout_toRightOf="@id/imageview3" android:layout_alignParentRight="true" android:layout_marginLeft="20dip"> android:layout_marginTop="10dip"> android:layout_height="wrap_content" android:background="@drawable/tem11"> android:layout_height="wrap_content" android:layout_toRightOf="@id/imageview4" android:layout_width="wrap_content" android:textSize="15dip" android:layout_marginLeft="20dip"> android:layout_height="wrap_content" android:textSize="20dip"> android:layout_width="wrap_content" android:orientation="vertical"> android:layout_width="wrap_content" android:layout_marginLeft="50dip" xmlns:android="/apk/res/android" android:layout_height="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true"> android:layout_toRightOf="@id/imageview11" android:layout_alignParentRight="true" android:layout_height="wrap_content"> 28 / 31 android:layout_width="wrap_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dip" android:layout_marginLeft="102dip"> android:layout_height="wrap_content" android:layout_marginTop="10dip"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:background="@drawable/tem22"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dip" android:layout_toRightOf="@id/imageview31" android:layout_alignParentRight="true" android:layout_marginLeft="20dip"> android:layout_height="wrap_content" android:layout_marginTop="10dip"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:background="@drawable/tem11"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dip" android:layout_toRightOf="@id/imageview41" android:layout_marginLeft="20dip">
:
地理信息对话框布局文件
29 / 31
xmlns:android="/apk/res/android" android:layout_width="match_parent" android:orientation="vertical"> android:layout_height="wrap_content"> android:layout_height="match_parent"
:
xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" android:textColor="#000">
4.4 menu代码解析:
:
地理信息菜单布局文件
5 总结
在本系统中主要涉及到的技术有:
5.1 Activity和Activity之间的跳转,并且需要传递数值
5.2 TextView组件的使用.
5.3对话框,复杂的布局的对话框,页面的布局来源于一个布局XML文件,当然也可以在Activity中采用硬编码的方式实现。XML文件描述的布局直观而简洁。但当对话框中的布局不是太过复杂的时候为了节省空间及时间,将采用硬编码方式编写。
6.4菜单的编写,菜单可以提供功能选择的效果,同时节省本就不富裕的界面空间。
30 / 31
版权声明:本文标题:Android天气预报系统文档 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1702806713h431622.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论