版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、移动互联网开发课程设计报告学生姓名: 万 思 学 号: k 专 业: 计算机科学与技术 班 级: k 设计题目: 口袋微博 学年学期: 2014 年 秋 季学期 指导教师: 张华 目 录 (示例)一、设计题目1二、设计目的1三、设计原理及方案11使用的软件工具和环境12需求分析与概要设计13数据库设计(若有)14详细设计和关键问题1四、实现效果1五、设计体会1参 考 文 献3 一、 设计题目Android社交分享平台口袋微博 设计目的二、 设计原理及方案首先要实现以下这些功能:Android端登录和注册模块的实现 Android端个人中心模块的实现 Android端快速发布模块的实现 Andr
2、oid端查看联系人模块的实现 Android端管理日志模块的实现 Android端管理相册模块的实现 1 使用的软件工具和环境1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 2 需求分析与概要设计(详细描述系统的功能需求)Android端登录和注册模块的实现 Android端个人中心模块的实现 Android端快速发布模块的实现 Android端查看联系人模块的实现 Android端管理日志模块的实现 Android端管理相册模块的实现 (详细描述系统结构;例如总体架构设计、流程图、用例图等,并分别描述)说明:这里的用例图和类图的对
3、应关系可以在下面的E-R图上找到,这里我就略了一下。Android端总体架Android端登录 注册 退出管理个人快速发布查看联系查看联系搜索用户博友主页拍照上传发布日志更新心情Web端的原理示意图uploadimage.jspfileuploadServlet.jspregister.jsppersonnalinfo.jspdiary.jsplogin.jspMyServletalbum.jsp数据库数据源DBUtil数据库设计(若有的必须给出,没有的给出其他重要设计过程)(给出ER关系图及数据库表)用powerdesigner设计对应关系,并生成表,E-R图3 详细设计和关键问题(分功能模
4、块描述设计细节,例如详细功能图、类图和关键流程图等。遇到的关键Android问题是如何解决的)相册列表:功能图查看 修改权限二、快速发布: 三、 实现效果(包括系统描述和程序运行界面的截图)1.口袋微博用户登录界面2.口袋微博个人中心快速发布功能界面3.口袋微博个人中心我的好友功能界面4.口袋微博个人中心最近访客功能界面5.口袋微博个人中心日志列表功能界面6.口袋微博个人中心相册列表功能界面7.口袋微博搜索好友界面以下是部分重要代码由于代码太多无法容纳(1)LoginActivity.java登录界面package wyf.wpf;import static wyf.wpf.ConstantU
5、til.SERVER_ADDRESS;import static wyf.wpf.ConstantUtil.SERVER_PORT;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.os.Looper;import android.view.View;import android.widget.Butt
6、on;import android.widget.CheckBox;import android.widget.EditText;import android.widget.ImageButton;import android.widget.Toast;public class LoginActivity extends Activity MyConnector mc = null;ProgressDialog pd; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceSta
7、te); setContentView(R.layout.login); checkIfRemember(); Button btnLogin = (Button)findViewById(R.id.btnLogin); btnLogin.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) pd = ProgressDialog.show(LoginActivity.this, 请稍候, 正在连接服务器., true, true);login();); Button btnReg =
8、 (Button)findViewById(R.id.btnReg); btnReg.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) Intent intent = new Intent(LoginActivity.this, wyf.wpf.RegActivity.class);startActivity(intent);finish();); ImageButton ibExit = (ImageButton)findViewById(R.id.ibExit); ibExit
9、.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) android.os.Process.killProcess(android.os.Process.myPid();/结束进程,退出程序); /方法:连接服务器进行登录 public void login() new Thread() public void run() Looper.prepare();tryif(mc = null)mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT
10、);EditText etUid = (EditText)findViewById(R.id.etUid);/获得帐号EditTextEditText etPwd = (EditText)findViewById(R.id.etPwd);/获得密码EditTextString uid = etUid.getEditableText().toString().trim();/获得输入的帐号String pwd = etPwd.getEditableText().toString().trim();/获得输入的密码if(uid.equals() | pwd.equals()/判断输入是否为空Toa
11、st.makeText(LoginActivity.this, 请输入帐号或密码!, Toast.LENGTH_SHORT).show();/输出提示消息return;String msg = +uid+|+pwd;/组织要返回的字符串mc.dout.writeUTF(msg);/发出消息String receivedMsg = mc.din.readUTF();/读取服务器发来的消息pd.dismiss();if(receivedMsg.startsWith()/收到的消息为登录成功消息receivedMsg = receivedMsg.substring(17);String sa = r
12、eceivedMsg.split(|);CheckBox cb = (CheckBox)findViewById(R.id.cbRemember);/获得CheckBox对象if(cb.isChecked()rememberMe(uid,pwd);/转到功能面板Intent intent = new Intent(LoginActivity.this,FunctionTabActivity.class);intent.putExtra(uno, sa0);startActivity(intent);/启动功能Activityfinish();else if(msg.startsWith()/收
13、到的消息为登录失败Toast.makeText(LoginActivity.this, msg.substring(14), Toast.LENGTH_LONG).show();Looper.loop();Looper.myLooper().quit();catch(Exception e)e.printStackTrace(); .start(); /方法:将用户的id和密码存入Preferences public void rememberMe(String uid,String pwd) SharedPreferences sp = getPreferences(MODE_PRIVATE
14、);/获得Preferences SharedPreferences.Editor editor = sp.edit();/获得Editor editor.putString(uid, uid);/将用户名存入Preferences editor.putString(pwd, pwd);/将密码存入Preferences mit(); /方法:从Preferences中读取用户名和密码 public void checkIfRemember() SharedPreferences sp = getPreferences(MODE_PRIVATE);/获得Preferences String u
15、id = sp.getString(uid, null); String pwd = sp.getString(pwd, null); if(uid != null & pwd!= null) EditText etUid = (EditText)findViewById(R.id.etUid); EditText etPwd = (EditText)findViewById(R.id.etPwd); CheckBox cbRemember = (CheckBox)findViewById(R.id.cbRemember); etUid.setText(uid); etPwd.setText(
16、pwd); cbRemember.setChecked(true); Overrideprotected void onDestroy() if(mc != null)mc.sayBye();super.onDestroy();(2)DirayActivity.javapackage wyf.wpf;import static wyf.wpf.ConstantUtil.SERVER_ADDRESS;import static wyf.wpf.ConstantUtil.SERVER_PORT;import java.util.ArrayList;import android.app.Activi
17、ty;import android.content.Intent;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.Tex
18、tView;import android.widget.AdapterView.OnItemClickListener;public class DiaryActivity extends ActivityArrayList diaryList = new ArrayList();MyConnector mc = null;String uno = null;String visitor = null;BaseAdapter ba = new BaseAdapter() Overridepublic View getView(int position, View convertView, Vi
19、ewGroup parent) LinearLayout ll = new LinearLayout(DiaryActivity.this);TextView tvTitle = new TextView(DiaryActivity.this);ll.setOrientation(LinearLayout.VERTICAL);tvTitle.setTextAppearance(DiaryActivity.this, R.style.title);tvTitle.setGravity(Gravity.LEFT);/设置TextView的对齐方式tvTitle.setText(diaryList.
20、get(position)1);TextView tvContent = new TextView(DiaryActivity.this);tvContent.setTextAppearance(DiaryActivity.this, R.style.content);/设置字体大小tvContent.setGravity(Gravity.LEFT);/设置TextView的对齐方式tvContent.setText(diaryList.get(position)2);/设置显示的内容ll.addView(tvTitle);ll.addView(tvContent);return ll;Ove
21、rridepublic long getItemId(int position) return 0;Overridepublic Object getItem(int arg0) return null;Overridepublic int getCount() return diaryList.size();Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);Intent intent = getIntent();uno = intent.getString
22、Extra(uno);/获得主人IDvisitor = intent.getStringExtra(visitor);/获得访客IDgetDiaryList();setContentView(R.layout.diary);ListView lvDiary = (ListView)findViewById(R.id.lvDiary);/获得ListView对象lvDiary.setAdapter(ba);lvDiary.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(Adapter
23、View parent, View v, int position,long id) Intent intent = new Intent(DiaryActivity.this,CommentActivity.class);intent.putExtra(rid, diaryList.get(position)0);intent.putExtra(uno, uno);intent.putExtra(visitor, visitor);startActivity(intent););/方法:获取日志列表public void getDiaryList()new Thread()public vo
24、id run()trymc = new MyConnector(SERVER_ADDRESS, SERVER_PORT);mc.dout.writeUTF(+uno+|+1);int size = mc.din.readInt();/读取日志的长度for(int i=0;isize;i+)/循环接受日志信息String diaryInfo = mc.din.readUTF();/读取日志信息String sa = diaryInfo.split(|);diaryList.add(sa);/将日志信息添加到列表中catch(Exception e)e.printStackTrace();.sta
25、rt();Overrideprotected void onDestroy() if(mc != null)mc.sayBye();mc = null;super.onDestroy();(3)口袋微博_个人中心PublishActivity.javapackage wyf.wpf;import static wyf.wpf.ConstantUtil.*;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Dialo
26、gInterface;import android.content.Intent;import android.os.Bundle;import android.os.Looper;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.AdapterView;import android
27、.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class PublishActivity extends A
28、ctivityString items = /存放ListView中的选项内容更新心情,发布日志,拍照上传;int imgIds = R.drawable.p_status,R.drawable.p_diary,R.drawable.p_shoot;String uno = null;/存放MyConnector mc = null;/MyConnector对象引用ProgressDialog pd = null;/ProgressDialog对象引用View dialog_view = null;/心情BaseAdapter ba = new BaseAdapter() Overridepu
29、blic View getView(int position, View convertView, ViewGroup parent) LinearLayout ll = new LinearLayout(PublishActivity.this);ll.setOrientation(LinearLayout.HORIZONTAL);ll.setGravity(Gravity.CENTER);ImageView iv = new ImageView(PublishActivity.this);/创建ImageView对象iv.setAdjustViewBounds(true);iv.setIm
30、ageResource(imgIdsposition);/设置ImageView的ll.addView(iv);/将ImageView添加到线性布局中TextView tv = new TextView(PublishActivity.this);tv.setPadding(10, 0, 0, 0);tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);tv.setTextAppearance(PublishActivity.this, R.s
31、tyle.title);tv.setText(itemsposition);/设置TextView显示的内容ll.addView(tv);return ll;Overridepublic long getItemId(int position) return 0;Overridepublic Object getItem(int position) return null;Overridepublic int getCount() return items.length;Overrideprotected void onCreate(Bundle savedInstanceState) sup
32、er.onCreate(savedInstanceState);Intent intent = getIntent();/获得启动该Activity的Intentuno = intent.getStringExtra(uno);setContentView(R.layout.publish);/设置当前屏幕ListView lvPublish = (ListView)findViewById(R.id.lvPublish);/获得ListView对象引用lvPublish.setAdapter(ba);lvPublish.setOnItemClickListener(new OnItemCli
33、ckListener() Overridepublic void onItemClick(AdapterView parent, View v, int position,long id) switch(position)/判断点击的是哪一个选项case 0:/更新心情LayoutInflater li = LayoutInflater.from(PublishActivity.this);dialog_view = li.inflate(R.layout.publish_status, null);new AlertDialog.Builder(PublishActivity.this).s
34、etTitle(更新心情).setIcon(R.drawable.p_status).setView(dialog_view).setPositiveButton(发表,new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) pd = ProgressDialog.show(PublishActivity.this, 请稍候, 正在更新心情.,true,true);updateStatus();).setNegativeButton(取消,new D
35、ialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) ).show();break;case 1:/发表日志Intent intent1 = new Intent(PublishActivity.this,PublishDiaryActivity.class);/创建Intentintent1.putExtra(uno, uno);/设置Intent的Extra字段startActivity(intent1);break;case 2:/拍照上传Intent
36、 intent2 = new Intent(PublishActivity.this,ShootActivity.class);/创建Intentintent2.putExtra(uno, uno);/设置Intent的Extra字段startActivity(intent2);break;);/方法:连接服务器,更新心情public void updateStatus()new Thread()public void run()Looper.prepare();EditText etStatus = (EditText)dialog_view.findViewById(R.id.etInpu
37、tStatus);String status = etStatus.getEditableText().toString().trim();/获得心情内容if(status.equals()/如果输入的心情为空pd.dismiss();Toast.makeText(PublishActivity.this, 请输入更新的心情, Toast.LENGTH_LONG).show();/输出提示Looper.loop();return;String message = +status+|+uno;if(mc = null)mc = new MyConnector(SERVER_ADDRESS, SE
38、RVER_PORT);trymc.dout.writeUTF(message);/向服务器发送更新的心情pd = ProgressDialog.show(PublishActivity.this, 正在连接网络, 请稍候,true);String reply = mc.din.readUTF();/从服务器返回的回复pd.dismiss();if(reply.equals()/心情更新成功Toast.makeText(PublishActivity.this, 心情更新成功!, Toast.LENGTH_LONG).show();Looper.loop();else /心情更新失败Toast.
39、makeText(PublishActivity.this, 心情更新失败!, Toast.LENGTH_LONG).show();Looper.loop();catch(Exception e)e.printStackTrace();Looper.myLooper().quit();.start();Overrideprotected void onDestroy() if(mc != null)mc.sayBye();super.onDestroy();(4)注册处理_RegActivity.javapackage wyf.wpf;import static wyf.wpf.Constan
40、tUtil.SERVER_ADDRESS;import static wyf.wpf.ConstantUtil.SERVER_PORT;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.view.View;import androi
41、d.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.Toast;public class RegActivity extends ActivityMyConnector mc = null;/声明MyConnector对象String uno = ;/记录用户的IDProgressDialog pd= null;/声明进度对话框Handler myHandler = new Handler()Overridepublic void hand
42、leMessage(Message msg) switch(msg.what)case 0:View linearLayout = (LinearLayout)findViewById(R.id.regResult);/获得线性布局linearLayout.setVisibility(View.VISIBLE);/设置可见性EditText etUno = (EditText)findViewById(R.id.etUno);etUno.setText(uno);break;super.handleMessage(msg);Overrideprotected void onCreate(Bun
43、dle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.reg);/设置当前屏幕Button btnReg = (Button)findViewById(R.id.btnReg);/获得注册Button按钮对象btnReg.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) pd = ProgressDialog.show(RegActivity.this, 请稍候., 正在
44、连接服务器., false);register(););Button btnBack = (Button)findViewById(R.id.btnBack);/获得返回按钮对象btnBack.setOnClickListener(new View.OnClickListener() /为返回按钮添加监听器Overridepublic void onClick(View v) Intent intent = new Intent(RegActivity.this,LoginActivity.class);/创建Intent对象startActivity(intent);/启动Activityf
45、inish(););Button btnEnter = (Button)findViewById(R.id.btnEnter);/获得进入功能面板按钮对象btnEnter.setOnClickListener(new View.OnClickListener() /为进入功能面板的按钮添加监听器Overridepublic void onClick(View v) Intent intent = new Intent(RegActivity.this,FunctionTabActivity.class);/创建Intentintent.putExtra(uno, uno);/设置Extra字段
46、startActivity(intent);/启动FunctionTabfinish();/关闭该Activity);/方法:连接服务器,进行注册public void register()new Thread()public void run()Looper.prepare();/获得用户输入的数据并进行验证EditText etName = (EditText)findViewById(R.id.etName);/获得昵称EditText对象EditText etPwd1 = (EditText)findViewById(R.id.etPwd1);/获得密码EditText对象EditText etPwd2 = (EditText)findViewById(R.id.etPwd2);/获得确认密码EditText对象EditText etEmail = (EditText)findViewById(R.id.etEmail);/获得邮箱EditText对象EditText etStatus = (EditText)findViewById(R.id.etStatus);/获得心情EditText
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于云计算的医疗影像三维重建服务
- 旅游景区管理人员的招聘面试全解析
- 理赔专员工作成长与规划课程计划
- 呼吸系统疾病患者的呼吸肌锻炼指导
- 护理带教工作流程
- 员工离职职业规划建议
- 旅游服务职业规划模板
- 护理学生竞赛赛前准备
- 青年主题教育宣传文案-1
- 物联网2026年开发合同
- 美睫合同协议书
- 师德师风专题党课
- 不锈钢基础知识
- 敲门礼仪培训课件
- 2026年内蒙古呼和浩特市单招职业倾向性测试题库必考题
- 急性溶血性贫血患者输血指南
- 2026年单招往年考试真题及答案
- 2025年常州机电职业技术学院单招职业技能测试题库含答案详解a卷
- 2025年内河码头行业分析报告及未来发展趋势预测
- 街头搏击活动方案
- 联通公司进社区活动方案
评论
0/150
提交评论