当前位置:文档之家› 触游毕设

触游毕设

天津农学院

毕业论文

中文题目:安卓应用开发-触游天津之农家休闲

英文题目:Touch tour farmyard

学生姓名徐生福

系别计算机科学与信息工程系

专业班级 12 级计算机科学与技术专业升本班

指导教师马国强

成绩评定

2014 年 6 月

1绪论 (1)

1.1开发背景 (1)

1.2开发目的 (1)

1.3开发环境 (2)

1.3.1 使用环境 (2)

2 系统总体设计 (2)

2.1基本设计描述 (2)

2.2系统功能模块列表 (3)

3数据库设计 (4)

3.1客户端数据库 (4)

3.2服务器数据库 (5)

4系统详细设计 (6)

4.1登录界面设计 (6)

4.1.1登录界面 (6)

4.1.2注册界面 (10)

4.1.3找回密码界面 (13)

4.2主界面设计 (15)

4.2.1精彩推荐界面 (15)

4.2.2景点分类界面 (15)

4.2.3全部农家院界面 (18)

4.2.4我的计划界面 (20)

4.2.5天气状况界面 (20)

4.2.6设置界面 (22)

4.3详细农家院设计 (28)

4.3.1基本信息介绍界面 (28)

4.3.2农家院瀑布流界面 (30)

4.3.3简介介绍界面 (34)

4.3.4分享界面 (36)

4.3.5详细信息界面(餐饮、住宿、娱乐) (38)

4.3.6周边农家院界面 (43)

4.3.7地图路线规划和导航界面 (44)

参考文献 (49)

致谢 (51)

附录 1 相关英文文献 (52)

附录 2 英文文献中文译文 (54)

目前旅游APP应用已经很多,但是关于农家休闲的还是很少,对于在大城市泡吧、卡拉OK是城市生活的潮流表现,然而,人的肌体如庄稼,也分春生、夏长、秋收、冬藏。冬藏指的就是人要养精蓄锐,晚上10时之后正是人的血气相对衰竭,应该休息的时候。酒吧和卡拉OK厅里污浊的空气和噪音并不是养精蓄锐的好地方。所以选择农家休闲是一种趋势。

关键字:农家院

ABSTRACT

At present, tourism APP application has many, but about the farmer leisure or rarely, in large city bars, Cara OK is the trend of city life, however, the human body such as crops, also in spring, summer, autumn, winter long. Winter refers to recuperate and build up energy, after 10 PM is man's blood relative failure, you should rest. The bar and Cara OK hall dirty air and noise are not good places to recuperate and build up energy. So the choice of leisure farm is a trend.

Key words: farmyard

安卓应用开发-触游天津之农家休闲

徐生福

(天津农学院计算机科学与信息工程系)

1绪论

1.1 开发背景

目前旅游APP应用已经很多,但是关于农家休闲的还是很少,对于在大城市泡吧、卡拉OK是城市生活的潮流表现,然而,人的肌体如庄稼,也分春生、夏长、秋收、冬藏。冬藏指的就是人要养精蓄锐,晚上10时之后正是人的血气相对衰竭,应该休息的时候。酒吧和卡拉OK厅里污浊的空气和噪音并不是养精蓄锐的好地方。所以选择农家休闲是一种趋势。

农家休闲设计成古朴的农家大院,房前屋后绿油油的菜园子,鸡、鸭、鹅等等家禽圈活灵活现,再栽上几棵梨树、苹果树、桔子树;古色古香的农庄餐饮部透着乡土气息。在这里,客人不仅可以吃到正宗的农家菜,还可以品尝到没有用激素饲料喂养的土鸡、土鸭,以及适合不同口味的南北大菜。更有趣的是可以亲自采摘、亲手下灶,体会干农活的乐趣。看着农庄内的大伙们忙碌的身影,听着人们欣喜采摘的欢笑声,身被绿色簇拥,心被浓浓乡情所感。所以在结合现在计算机技术,加之推广,是必然趋势,因此农家休闲APP是必不可少的。

1.2 开发目的

本次设计主要是为了经济实惠的旅游,去体验农家的生活和乐趣,为顾客提供一个集住宿、自助快餐、休闲娱乐的消费平台,为享受原汁原味的“绿色田园农家生活”,“回归自然,心情放松”。以适应城市都市人群,注重农家风味,自助快餐、方便快捷、经济实惠为基本设计理念。使人们更方便的去选择自己喜欢去的农家院。

1.3开发环境

1.3.1 使用环境

开发时需要的软件:

数据库:mysql

开发软件:myeclipse,eclipse,Android SDK

服务器:windows

2 系统总体设计

2.1基本设计描述

(1)用户登录身份验证模块:用户登录验证模块主要实现用户登录及身份验证等功能。包括用户登录、身份验证、用户注销。

(2)主要模块:主要实现农家休闲院的介绍,以及详情显示,联系方式,路线方案。

(3)导航功能:实现地图导航到农家院。

2.2系统功能模块列表

图 1 结构图

图2 登录注册界面

天气状况

界面

图3 主界面

图 4 具体农家院

登录注册界面

◆登录界面

◆注册界面

◆找回密码界面

主界面

◆精彩推荐界面

◆景点分类界面

◆全部农家院界面

◆我的计划界面

◆天气状况界面

◆设置界面

具体农家院界面

◆基本信息介绍界面

◆农家院瀑布流图片界面

◆简介介绍界面

◆分享界面

◆详细信息界面(餐饮、住宿、娱乐)

◆周边农家院界面

◆地图路线规划和导航界面

3数据库设计

3.1客户端数据库

客户端数据库采用Android 内嵌数据库SQLite3 设计

图5 农家院数据库

名称数据类型简述

_id int 农家院主键

name varchar(20) 农家院名称

content varchar(50) 农家院简介

bitmap varchar(50) 农家院图片

addressnet varchar(20) 农家院网站

landline varchar(60) 农家院固定电话

phone varchar(50) 农家院手机号码

address varchar(30) 农家院地址

people varchar(50)) 农家院联系人

hotel varchar(50) 农家院住宿

hotelbitmap varchar(50) 住宿图片

eat varchar(50) 农家院餐饮

eatbitmap varchar(50) 餐饮图片

play varchar(50) 农家院娱乐

playbitmap varchar(50) 娱乐图片

roundsence varchar(50) 周边农家院

likeme varchar(10) 添加喜欢

表1农家院数据库

3.2服务器数据库

服务器数据库采用MySql设计

图 6 用户数据库

图7 农家院评论数据库

名称数据类型简述

用户名

Username varchar(20

)

密码

userpwd varchar(10

)

邮箱

email varchar(50

)

表 2 用户表

名称数据类型简述

username varchar(20

用户名

)

农家院名称

senceid varchar(10

)

comment varchar(5) 评论

去过标记

gone varchar(50

0)

表 3 评论表

4系统详细设计

4.1登录界面设计

4.1.1登录界面

主要实现的是进入软件的首界面使用户选择,如果登录了就可以评论和标

记,如果跳过就不能评论和添加喜欢。只能浏览农家院基本信息。

图8 首界面

图9 登录界面

代码:

public class MainActivity extends Activity {

private Display display;

private Button btn_logo_enter,btn_logo_register;

private LinearLayout linear;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(https://www.doczj.com/doc/7213915090.html,youtParams.FLAG_FULLSCREEN, https://www.doczj.com/doc/7213915090.html,youtParams.FLAG_FULLSCREEN);

View

view=LayoutInflater.from(getApplicationContext()).inflate(https://www.doczj.com/doc/7213915090.html,yout.activity_main, null);

setContentView(view);

SharedPreferences shpr1 =

getSharedPreferences("Login" ,MODE_PRIVATE );

String str=shpr1.getString("username", "");

if(str.equals("")||null==str){

}else{

System.out.println(str);

startActivity(new Intent(MainActivity.this,FullActivity.class));

finish();

}

btn_logo_enter=(Button) findViewById(R.id.logo_btn_enter);

btn_logo_register=(Button) findViewById(R.id.logo_btn_login);

linear=(LinearLayout) findViewById(R.id.logo_linear);

linear.setVisibility(View.GONE);

display= this.getWindowManager().getDefaultDisplay();

//渐变展示启动屏

AlphaAnimation aa = new AlphaAnimation(0.3f,1.0f);

aa.setDuration(3000);

view.startAnimation(aa);

aa.setAnimationListener(new AnimationListener()

{

@Override

public void onAnimationEnd(Animation arg0) {

linear.setVisibility(View.VISIBLE);

}

@Override

public void onAnimationRepeat(Animation animation) {}

@Override

public void onAnimationStart(Animation animation) {}

});

SharedPreferences shpr =

getSharedPreferences("width_xu" ,MODE_PRIVATE );

SharedPreferences.Editor edit=shpr.edit();

edit.putInt("width",display.getWidth());

edit.putInt("height",display.getHeight()/3);

https://www.doczj.com/doc/7213915090.html,mit();

btn_logo_enter.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

startActivity(new Intent(MainActivity.this,FullActivity.class));

finish();

}

});

btn_logo_register.setOnClickListener(new OnClickListener() { @Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent it=new Intent(MainActivity.this,RegisterActivity.class);

it.putExtra("boolean", false);

startActivity(it);

finish();

}

});

}

4.1.2注册界面

图10 注册界面

代码:

public class LoginActivity extends Activity {

private TextView servicetext;

private EditText email,username,userpwd,userpwd_ensure;

private CheckBox cb;

private Button btn;

private HttpUtil httpUtil;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(https://www.doczj.com/doc/7213915090.html,yout.activity_login);

FindView();

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if(verifyDataInput()!=0){

new Thread(new Runnable() {

public void run() {

Looper.prepare();

if(httpUtil.Register(username.getText().toString().trim(),

userpwd.getText().toString().trim(), email.getText().toString().trim())){

finish();

}

Looper.loop();

}

}).start();

}

}

});

servicetext.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

startActivity(new Intent(LoginActivity.this,ServiceActivity.class));

}

});

}

private void FindView() {

// TODO Auto-generated method stub

servicetext=(TextView) findViewById(R.id.servicetext);

email=(EditText) findViewById(R.id.login_user_email);

username=(EditText) findViewById(R.id.login_user_name);

userpwd=(EditText) findViewById(R.id.login_user_pwd);

userpwd_ensure=(EditText) findViewById(R.id.login_ensure_pwd);

cb=(CheckBox) findViewById(R.id.cbo_article);

btn=(Button) findViewById(R.id.login_btn_register_now);

httpUtil=new HttpUtil(LoginActivity.this);

}

//数据有效性检测函数

protected int verifyDataInput() {

if (email.getText().toString().trim().equals("") ||

email.getText().toString().trim() == null) {

showToast("邮箱不能为空");

return 0;

}

if (username.getText().toString().trim().equals("") ||

username.getText().toString().trim() == null) {

showToast("用户名不能为空");

return 0;

}

if (userpwd.getText().toString().trim().equals("") ||

userpwd.getText().toString().trim() == null) {

showToast("密码不能为空");

return 0;

}

if (userpwd_ensure.getText().toString().trim().equals("") ||

userpwd_ensure.getText().toString().trim() == null) {

showToast("确认密码不能为空");

return 0;

}

if (userpwd.getText().toString().trim().length() > 6) {

showToast("请输入1-6位密码");

return 0;

}

if

(userpwd.getText().toString().trim().equals(userpwd_ensure.getText().toString().trim( )) == false) {

showToast("两次输入的密码不一致,请重新确认输入");

return 0;

}

if (cb.isChecked() == false) {

showToast("请仔细阅读条款并确认同意");

return 0;

}

if(!isEmail(email.getText().toString().trim())){

showToast("邮箱格式不正确");

return 0;

}

return 1;

}

public Boolean isEmail(String str){

String

regex="[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-Z0-9]-*){1,}\\.){1,3}[a-zA-Z\\-]{1,}";

return match(regex, str);

}

public Boolean match(String regex,String str){

Pattern pattern=https://www.doczj.com/doc/7213915090.html,pile(regex);

Matcher matcher=pattern.matcher(str);

return matcher.matches();

}

4.1.3找回密码界面

找回密码,主要是方便用户长时间不用忘记密码,设置的一种找回密码的方式。

图11 找回密码界面

代码:

public class FindPwdActivity extends Activity {

private EditText et;

private Button btn;

private TextView tv;

private ImageView iv_back;

String name;

private HttpUtil httputil;

private Handler handler;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(https://www.doczj.com/doc/7213915090.html,yout.activity_find_pwd);

et=(EditText) findViewById(R.id.find_et);

btn=(Button) findViewById(R.id.find_btn_sure);

tv=(TextView) findViewById(R.id.find_tv_result);

iv_back=(ImageView) findViewById(R.id.Findpass_iv_back);

httputil=new HttpUtil(this);

//tv.setVisibility(View.INVISIBLE);

handler=new Handler(new Handler.Callback() {

@Override

public boolean handleMessage(Message msg) {

// TODO Auto-generated method stub

if(msg.what==0){

tv.setText("你的密码是:\n\n\n"+name);

}

return false;

}

});

iv_back.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

finish();

}

});

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

new Thread(new Runnable() {

public void run() {

Looper.prepare();

if((name=httputil.FindPwd(et.getText().toString().trim())).equals("")){

}else{

handler.sendEmptyMessage(0);

}

Looper.loop();

}

}).start();

}

});

4.2主界面设计

4.2.1精彩推荐界面

主界面用了ViewPager来搭建框架,可以左右滑动,更方便用户浏览。

图 12 精彩主界面

4.2.2景点分类界面

根据景点的不用,对景点所在地的农家院进行了分类。

图13 景点分类农家院界面

代码:

public class SecondActivity extends Activity {

private TextView tv_name,tv_number,tv_content;

private ImageView iv_back,iv_pic;

private ListView lst;

private int id=0;

private myTool mytool;

private ArrayList list;

public static ArrayList listModel;

private ArrayList list1;

private MyUseDB myusedb;

private BaseAdapter secondaAdapter;

private View foot;

private boolean flag=true;

private View header;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(https://www.doczj.com/doc/7213915090.html,yout.activity_second);

id=getIntent().getIntExtra("_id", 0)-1;

相关主题
文本预览
相关文档 最新文档