毕 业 设 计 开 题 报 告
题 目 基于Android平台的同学录设计与开发
学生姓名 学号
所在院(系) 数学与计算机科学学院
专业班级
指导教师
2015 年 3 月 18 日
《爱吃小白屋》手机App设计(论文)
毕业设计(论文)
年级专业
学生姓名
指导教师
专业负责人
答辩日期
《爱吃小白屋》手机App设计(论文)
毕业设计开题报告
(输入章及标题)
III
《爱吃小白屋》手机App设计(论文)
摘 要
2008 年Google 推出了一款名为Android 的开源智能手机操作系统,它采用Linux 内核,开放手机联盟(OHA)成员可以任意使用和修改SDK 包,系统的开源性使其具有良好的拓展性。正是这款操作系统和苹果的IOS系统一起将用户带入了移动互联的美妙世界。
Android 的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。Android使用java开发,采用开源架构,给软件开发人员提供了很大的便利,因此,对于软件开发人员来说,Android 平台具有无限的吸引力。
本文就在分析讨论Android 手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android 平台的订餐软件。
关键词 Android;软件开发;订餐
i
《爱吃小白屋》手机App设计(论文)
第1章 开发环境及相关技术
1.1 Android开发环境介绍
Android 的上层应用程序是用Java 语言开发,同时还需要基于Dalvik 虚拟机,所以,我们使用主流的Java 集成开发环境Eclipse。当然,由于是使用Java语言进行开发,还应该有由SUN 公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android 的应用程序开发和Java 开发有较大区别的,所以还需要有Google 提供的Android SDK。同时,还需要在Eclipse 安装ADT(Android Development Tools)。
简言之,需要以下软件,才能搭建Android 开发环境,从而进行Android 应用程序的开发。
(1) Java SDK
(2) Eclipse
(3) Android SDK
(4) ADT
然而即使是这样,我们还是感觉配置起来有些麻烦,这一切Google官方已经为我们想到了,我们使用ADT-Bundle for Windows集成式IDE,这其中已经包含了Eclipse和ADT插件,其中也集成了AndroidSDK和其他一些相关的AVD和Debug环境。我们只需再手动安装JDK即可。使用集成IDE之后我们只需要配置以下环境即可:
Java SDK
ADT bundle for windows
1
《爱吃小白屋》手机App设计(论文)
1.2 Android开发环境搭建
首先到 下载java SDK,然后安装并在计算机高级系统设置里配置JAVA_HOME, Path, CLASSPATH。JAVA_HOME设置为java SDK的部署路径,PATH属性已经存在,可以直接编辑追加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 。CLASSPATH 为Java解释器搜寻的路径,在这里,我们需要把这个路径设置为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。这样,便把java SDK配置好了。
下面便是获得ADT bundle for windows集成IDE开发包,我们登录安卓开发者一站式下载网站盘,会发现里面已经集成了Eclipse和Android SDK。我们这次选用的Android SDK版本是Andoroid4.4.2。
进入到ADT bundle解压包的eclipse目录下,双击eclipse.exe图标启动eclipse,设置好workspace,然后,就让我们开始Android App的开发之旅吧。
第2章 订餐App需求分析
2.1 品牌
2.1.1 私人定制的App
目前市场上已有的订餐App往往是集众多餐饮商家于一起,集中式推广营销,这种订餐App也在很多程度上推动了餐饮业向着移动互联时代的迈进,虽然它是集群式服务,用户所能获得的菜品的选择非常多,但它却
2
《爱吃小白屋》手机App设计(论文)
不能兼顾每个餐厅的特色,不能照顾到每个餐厅的不同定位和针对的受众。是的,我们将要设计的这款App是不一样的,因为我们是私人定制,它是以某一个餐厅为设计的原型,绝对地私人定制,高规格设计,高水平运作,在更便捷服务的同时,也能同时极大地提升餐厅形象。
2.1.2 品牌和扩张
小白屋是一家餐厅的名字,主营菜系是上海本帮菜和淮扬菜。经营模式为实体店和电话外送。受地域和营销模式的限制,一直不能很好地扩大市场,如果能通过定制App来让更多的受众了解到小白屋,提高便捷服务地同时,让企业利润大幅增加,后期,再通过加盟连锁店的方式进行快速扩张。今后消费者不论在任何地方,只要打开小白屋订餐App都能搜索到最近的一家店面。
2.2 展示
2.2.1餐厅展示
餐厅展示包括餐厅位置展示、餐厅环境展示、餐厅卫生状况展示、餐厅企业理念、餐厅员工素质展示、餐厅营业资质展示。
2.2.2 菜品展示
菜品展示应该包括特色菜、推荐菜、套餐搭配、新菜展示、优惠促销系列等。应该有菜品列表,从菜品列表选中某一项之后能进入菜品详情页面,菜品详情页面要配以菜品的精美图片和菜品的特色介绍和菜品的价格等等一些详细信息。
3
《爱吃小白屋》手机App设计(论文)
2.3 服务
2.3.1 注册登录
既然是要订餐肯定是要确定订餐者身份,因此注册登录是必不可少的。 同时注册登录对于企业搜集消费者订餐习惯,更好地改善服务有很大帮助。登录后对于消费者保存订餐记录,完善个人信息也是有帮助的。
2.3.2 购物车和提交订餐
消费者可以在菜品展示页面选中菜品的数量后加入购物车,最终选好所有的菜品后,选好送餐时间和送餐地点(不选地点默认此账号最近一次的送餐地点)就可以提交订单给餐厅。系统同时生成一个订单编号给消费者,后台开始审核订单的可行性。
2.3.3 流程跟踪
在餐厅接到消费者的订餐后,要进行审核(后台),审核订单没有问题后,根据消费者的送餐时间确定开始制作的时间,制作好之后要分配外送员送餐给消费者。这一整个过程对于消费者来说应该是可跟踪的,让消费者知道自己的订单是一直都在流程线上走着的,自己叫的外卖是没问题的,是可预期的。因此,应该有流程跟踪的功能,最好的情况是同时能有订单地图路线跟踪。
2.3.4 确认收单和评价打分
消费者收到外卖后,消费者应该有渠道去反馈本次服务的满意程度。 因此应该有确认收单和评价的功能。评价应该包括菜品评价,菜品评分,外送员服务评价。根据多道菜品的情况应该能分菜品进行独立评价。
4
《爱吃小白屋》手机App设计(论文)
2.3.5 电话叫餐
除了新的软件叫餐流程外,我们的App内部也应该考虑传统消费者使用电话叫餐的习惯,因此应该有电话叫餐这个功能直接拨打餐厅的叫餐电话。
2.4 推广
2.4.1 餐厅推广和菜品推广
目前以微信、QQ空间等社交新媒体正打破着人们的交际的时间和地域的限制,微营销也越来越被商家重视,比如微营销的成功案例,20xx年3月26日,小米公司借助QQ空间的红米首发页面实现了超过1500万用户签到预约,最终使得产品大卖。
好的东西我们就要拿过来,因此订餐App应该有分享餐厅或者菜品或者餐厅活动到微信、QQ空间、新浪微博等主流媒体的功能。让更多的新媒体受众了解到我们的品牌和我们的产品。
同时对于菜品上新,活动举也要能够推送消息到手机终端的消息中心。 5
《爱吃小白屋》手机App设计(论文)
2.4.2 App推广方式
对餐厅品牌的推广很重要,但最终产生价值还是要依靠App本身,因此对App本身的推广的也尤为重要。我们可以采取网址链接,二维码的方式来推广App的下载链接,当然同时也可以将这些信息分享到新媒体,或者发送给好友。对于二维码的店内推广的话,推广的方式就更灵活来,可以印刷在餐厅的宣传页或者餐具等各种消者能接触到的地方。
2.5 沟通和维护
2.5.1 投诉和建议
消费者对餐厅的服务不满意的地方或者建议都应该可以进行投诉,这也是对消费者的尊重和我们售后的范畴。所以应该有一个投诉提交和反馈的信息页面。
2.5.2 App更新
随着App的运营,肯定会有一些不断改进的地方,这就需要我们能推送软件更新到终端。
6
《爱吃小白屋》手机App设计(论文)
第3章 功能界面设计
3.1 App图标设计
App图标是顾客对餐厅的第一印象,好的icon图标能让我们的App脱颖而出。
3.2 展示设计
3.2.1 开始界面
开始界面进行餐厅展示画面的轮播。
3.2.2 菜单列表界面
菜单列表列出来所有的可选菜品。
3.2.3 菜品详情界面
菜单列表列出来某道菜的详情。
3.3 服务设计
3.3.1 注册登录界面
让用户可以进行登录注册。
3.3.2 购物车界面
让用户可以进行购物车所购物品的查看和提交订单。
3.3.3 订单轨迹界面
让用户可以查看订单当前状态和历史状态的界面。
3.3.4 订单评价界面
让用户收到外卖后可以进行本次服务的评价。
7
3.3.5 电话叫餐界面
直接呼出系统拨号界面。
3.4 推广设计
3.4.1 菜品分享
分享菜品到主流微信等社交圈的功能。
3.4.2 App分享
分享我们的App下载链接到主流微信等社交圈的功能。
3.5 沟通和维护设计
3.5.1 建议界面
让用户提交对餐厅的建议和意见。
3.5.2 App更新界面
向远程服务器检查更新我们的App。
第4章 Android App开发
4.1 新建工程,设置图标
在eclipse new一个Android Application工程文件,在创建的引导页面设置App icon图标。如图:
《爱吃小白屋》手机App设计(论文)
以上便是我们新创建的工程目录。Android 的资源文件保存在/res 的子目录中。其中、/res 目录中保存的是产生动画效果的XML 文件,图像文件,字符串和颜色值以及xml格式的数据文件,画面文件。src/目录下是java源代码文件。AndroidManifest是Android工程的资源清单文件。运行AVD后,我们右键工程文件,选择run的话,将会看到如下我们的爱吃小白屋App图标运行在AVD里:
9
4.2 开始界面
在我们的工程文件中的activity包中新建welcomeActivity的java画面文件,在layout目录下新建对应的xml画面文件,同时如果要设置WelcomeActivity的activity为启动画面,需要配置AndroidManifest资源清单文件。在<application…>标签下的关键代码如下:
<activity
android:name="com.example.lovewhitehouse.activity.WelcomeActivity" android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
《爱吃小白屋》手机App设计(论文)
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
其中action中配置为android.name=”android.intent.action.MAIN”的activity为系统默认启动的activity首画面。
对于开始画面本身的代码,采用ImageView用来填充餐厅的品牌形象,TextView用来显示一个”开始订餐”的文本。用户点击后迁移到菜单列表画面。关键代码如下,startActivity是Activity间进行迁移的指令:
// the TextView touchArea for user to click
start.setOnClickListener(new OnClickListener() { }); @Override public void onClick(View v) { } Intent intent = new Intent startActivity(intent); finish(); (WelcomeActivity.this,HomePageActivity.class);
4.3 菜单列表界面
我们的菜单列表采用ListView加BaseAdapter的方式进行设计。ListItem的显示的AdapterView通过继承BaseAdapter来实现每个Item的显示和Item上进行的数量加减操作。关键代码如下:
@Override
11
public View getView(final int position, View convertView, ViewGroup final ViewHolder holder; if (convertView == null) { parent) {
} holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.food_list_item, false); .findViewById(R.id.food_list_item_name); .findViewById(R.id.food_list_item_price_text_view); .findViewById(R.id.food_list_item_size); .findViewById(R.id.food_list_item_minus); parent, holder.name = (TextView) convertView holder.add = (TextView) convertView holder.size = (TextView) convertView holder.minus = (FrameLayout) convertView convertView.setTag(holder); holder = (ViewHolder) convertView.getTag(); } else { holder.add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } int num = ++CLICK_NUM; holder.size.setText(++mFoodsNum[position] + ""); if (num > 0) { } int[] start_location = new int[2]; v.getLocationInWindow(start_location); holder.minus.setVisibility(View.VISIBLE); shopCart.setText(num + "份¥" + num * 7 + ""); buyImg = new ImageView(mActivity); buyImg.setImageBitmap(getAddDrawBitMap(position));// setAnim(buyImg, start_location);// animation start Log.i("asdasdsa", num + ""); set view buyImg }); holder.minus.setOnClickListener(new View.OnClickListener() { @Override
《爱吃小白屋》手机App设计(论文)
} public void onClick(View arg0) { } int num = --CLICK_NUM; Log.i("asdasdsa", num + ""); if (num > 0) { } holder.size.setText(--mFoodsNum[position] + ""); shopCart.setText(num + "份¥" + num * 7 + ""); holder.minus.setVisibility(View.GONE); } else { }); holder.add.setText("¥"+position); holder.name.setText(mFoods[position].split("-")[1]); return convertView;
4.3 菜品详情界面
菜品详情界面和之前的菜单列表比较相似,同样有加减按钮,只不过菜品只有一道。采用普通的ImageView和TextView组合即可完成,此处不再赘述。
4.4 注册登录界面
注册登录界面采用OptionsMenu来控制切换注册界面和登录界面,采用FragmentManager的replace方法来切换当前注册登录Activity显示的是注册的FramLayout还是登录的FrameLayout。关键代码如下: @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
13
myLoginFragment = new LoginFragment();
myRegistFragment = new RegistFragment();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, myLoginFragment)
.commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_login) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, MainActivity.this.myLoginFragment) .commit();
return true;
}
else if (id == R.id.action_regist) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container,
MainActivity.this.myRegistFragment)
.commit();
return true;
}
《爱吃小白屋》手机App设计(论文)
其中Menu资源布局如下:
<menu xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
tools:context="com.example.lovewhitehouse.MainActivity" >
<item
android:id="@+id/action_login"
android:orderInCategory="100"
android:title="@string/submenu_login"
app:showAsAction="never"/>
<item
android:id="@+id/action_regist"
android:orderInCategory="100"
android:title="@string/submenu_regist"
app:showAsAction="never"/>
</menu>
用户的注册登录数据记录在SQLite数据库内,以供随时进行查询。
15
4.4 购物车界面
用户的购物数据通过SharedPreferences以key-value的形式进行保存,只有提交订单之后才会将数据推送到SQLite,而由购物数据生成的购物车界面和之前的菜单列表画面很类似,只是不能进行加加减减的操作,另外再增加一个提交订单的按钮,进行订单的提交。而这里涉及到Java网络编程的知识,本论文只讨论客户端App的设计,远程服务器配置和部署不在讨论范畴。
《爱吃小白屋》手机App设计(论文)
4.5订单轨迹界面
订单轨迹界面需要借助百度地图Android SDK来完成。通过百度地图的API来进行定位和描画,通过我们的订单真实状态数据来获得point列表,关键描画代码如下:
public void draw(Canvas arg0, MapView arg1, boolean arg2) {
// TODO Auto-generated method stub
super.draw(arg0, arg1, arg2);
Projection projection = arg1.getProjection();
Paint paint=new Paint();
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5.0f);
Point p1=projection.toPixels(mList.get(0), null);
Point p2=projection.toPixels(mList.get(0), null);
for (GeoPoint item : mList) {
p1.x=p2.x;
p1.y=p2.y;
p2=projection.toPixels(item, null);
arg0.drawLine(p1.x, p1.y, p2.x, p2.y, paint);
}
}
4.6订单评价界面
订单评价界面使用EditText来采集用户评价信息,借助专门负责通信的新线程采用socket方式和远程服务器进行交互。这里需要注意的是我们需要在AndroidManifest.xml文件中配置网络访问的权限,客户端关键代码如下:
String message = "I Love White House.";
Socket socket = new Socket("127.0.0.1", 30000);
17
OutputStream ops=socket.getOutputStream();
DataOutputStream dos=new DataOutputStream(ops);
dos.write(message.getBytes());
dos.close();
4.7电话叫餐界面
和订单评价类似,电话叫餐需要在AndroidManifest文件配置相应的拨打电话的权限(<uses-permission android:name="android.permission.CALL_PHONE" />)。我们只需要呼出系统默认的拨号界面即可。核心代码如下:
// get phoneNumber
String phoneNumber = mobileText.getText().toString();
// intent to point out about action
Intent intent = new
Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phoneNumber));
// start CALL activity
PhoneActivity.this.startActivity(intent);
4.7 菜品分享和App分享界面
我们这里只介绍微信分享功能,实现微信分享功能之前需要做一下三件事情: 1 微信开放平台注册。2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册。 关键代码如下:
findViewById(R.id.shareToWeiXin).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
sendReq();
}
});
findViewById(R.id.openWeiXin).setOnClickListener(new OnClickListener() {
@Override
《爱吃小白屋》手机App设计(论文)
public void onClick(View v) {
api.openWXApp();
}
});
}
// 1 regist
private static final String appId = "wx24884b89ffe90bd6"; // appId from Official website
private IWXAPI api;// openapi between third part app and weixin private void regToWx() {
api.registerApp(appId);
}
// 2 send request
private void sendReq() {
// initialize WXTextObject
WXTextObject textObject = new WXTextObject();
textObject.text = "TestLoveWhiteHouse";
// initialize WXMediaMessage
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObject;
msg.description = textObject.text;
// construct a Request and send
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.message = msg;
req.transaction = String.valueOf(System.currentTimeMillis());// the id about request
api.sendReq(req);
}
}
19
4.8 建议和App更新界面
建议反馈界面和之前的菜品评价界面类似,App更新界面用到的
socket和serverSocket通信知识在之前也有涉及,不再赘述。
第5章 参考文献
[1] 《疯狂Android讲义第二版》.电子工业出版社,2013(03).
[2] 《疯狂Java讲义第二版》.电子工业出版社,2012(01).
[3] 《轻量级JavaEE企业应用实战》.电子工业出版社,2007(04).
第6章 致谢
本论文最终能顺利完成,首先应感谢我的导师自始至终给予的关心和指导。导师严谨的治学作风和求实的工作态度都深深地影响着我。
本论文的写作参考、引用了很多书籍及文献,在此向这些文章的作者表示深深的谢意。
感谢我的亲人,正是有了他们的关心和支持,我的学业才得以顺利完成。
最后,再次感谢所有关心和爱护过我的老师、亲人、同学和朋友!
山东大学威海毕业论文设计开题报告基于socket通信的Android社论文题目交应用的开发姓名学号专业电子信息科学与技术指导教师梁…
CHANGCHUNINSTITUTEOFTECHNOLOGY开题报告设计题目基于iOS系统的休闲娱乐移动应用的设计与实现学生姓名学…
毕业设计开题报告题目基于Android平台的同学录设计与开发学生姓名王强学号1118014143所在院系数学与计算机科学学院专业班…
北方工业大学本科毕业设计论文开题报告书题目家庭音频信号采集与分析程序设计指导教师宋浩专业班级自112学号11101010219姓名…
华北电力大学毕业论文设计开题报告基于Android的手机课程表开论文题目发姓名阿力普江吾吉麦麦提学号1111250201专业软件工…
本科生毕业设计论文开题报告论文题目基于android的在线音乐播放器的设计与实现学院软件学院专业学生姓名学生班级学生学号指导教师基…
毕业设计开题报告题目基于Android平台的同学录设计与开发学生姓名王强学号1118014143所在院系数学与计算机科学学院专业班…
毕业设计论文开题报告题目名称基于Android文件管理器的设计与实现学院专业年级学生姓名班级学号指导教师二一一年十二月六日大学学院…
毕业设计论文开题报告题目基于android平台的新闻阅读器开发专业名称计算机科学与技术班级学号08061323学生姓名张海飞指导教…
科学技术学院毕业设计论文开题报告题目浅析江西省智慧旅游发展现状及前景学科部财经学科部专业旅游管理班级121班学号70418120x…