服务外包技术路线及实现方案.docx
- 文档编号:15725911
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:18
- 大小:154.42KB
服务外包技术路线及实现方案.docx
《服务外包技术路线及实现方案.docx》由会员分享,可在线阅读,更多相关《服务外包技术路线及实现方案.docx(18页珍藏版)》请在冰点文库上搜索。
服务外包技术路线及实现方案
移动外勤系统Mobile-Manager
项目解决方案
--------S2C技术路线及实现方案
移动外勤系统Mobile-Manager
1.技术路线
1.1系统流程图
根据Android公众具体的功能实现过程画出了系统流程图,可以清晰明了地展示整个系统接收消息、处理消息和发送消息的操作流程。
系统流程图(图1.2)主要介绍整个系统工作的过程,从用户发送消息,到最后用户接收到返回的消息,这个过程通过流程图来描绘,清晰明了。
整个系统的实现充分体现出的用户交互友好性。
将消息发送到服务器端,服务器端通过数据传输将消息发送回我们的手机上,然后手机对详细进行处理,返回消息到手机平台再到用户手里的过程。
1.1.1平台系统流程图
图1.1整体系统流程图
1.2Android手机功能菜单和Android手机功能关键词列表
Android手机菜单包含了12项功能,功能具体如表1.1
主菜单
子菜单
功能
客户
客户拜访
前往拜访客户,与客户交谈商议签的预约
客户评价
在拜访客户后,由客户评价工作人员
客户管理
不同的客户进行分类管理
任务
任务发送
在任务无法完成情况将任务挂在服务器上,交由其他工作人员帮助完成
任务接收
接收挂在服务器上的任务,帮助他人完成任务
任务查看
查看已经挂在网上的任务
个人管理
个人中心
登陆后查看自己信息
公司公告
从服务器端获取公司内部公告消息
企业通讯录
独立出来的可添加删除的通讯录
GPS定位
用于定位员工位置与行程
个人签到
在GPS定位开启下使用,帮助公司更好管理员工上班行程
出差登记
用于申请出差,简洁方便
表1.1系统功能表
1.3Web浏览器功能菜单和Web浏览器功能关键词列表
Web浏览器菜单包含了12项功能,功能具体如表1.1
主菜单
子菜单
功能
管理员
管理员登陆
与数据库连接进行登陆
管理用户
对工作人员进行信息管理
添加用户
对新进的员工进行信息添加
查询用户
查询某一用户
表1.2Web管理员功能表
图1.2web端后台管理
主菜单
子菜单
功能
用户
用户登陆
在管理员限制下与数据库连接登陆
任务
任务发布接收
Android手机上传的任务进行管理
公告
公司公告
发布公司公告
出差登记
出差
获取员工发送的出差申请,选择同意与否
表1.3Web用户功能表
2.实现方案
2.1Android手机主界面功能实现
2.1.1主界面菜单功能的实现
要设置Android手机的菜单,在手机内部进行页面切换,用Tab分页,然后通过listview和list.add添加跳转功能进入功能实现页面。
功能代码如下:
publicclassMainextendsTabActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.denglu);
TabHosttabHost=getTabHost();
TabSpectabSpec1=tabHost.newTabSpec("tab1");
tabSpec1.setIndicator("客户");
Intentintent1=newIntent(this,One.class);
tabSpec1.setContent(intent1);
tabHost.addTab(tabSpec1);
TabSpectabSpec2=tabHost.newTabSpec("tab2");
tabSpec2.setIndicator("任务");
Intentintent2=newIntent(this,Two.class);
tabSpec2.setContent(intent2);
tabHost.addTab(tabSpec2);
TabSpectabSpec3=tabHost.newTabSpec("tab3");
tabSpec3.setIndicator("个人");
Intentintent3=newIntent(this,Three.class);
tabSpec3.setContent(intent3);
tabHost.addTab(tabSpec3);
}
}
publicclassThreeextendsActivity{
privateListViewmylistview;
privateArrayList
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.tab03);
mylistview=(ListView)findViewById(R.id.listview);
list.add("个人中心");
list.add("公司公告");
list.add("企业通讯录");
list.add("GPS定位");
list.add("个人签到");
list.add("出差登记");
ArrayAdapter
(this,android.R.layout.simple_list_item_1,list);
mylistview.setAdapter(myArrayAdapter);
mylistview.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView
>arg0,Viewarg1,intarg2,
longarg3){
//TODOAuto-generatedmethodstub
if(list.get(arg2).equals("个人中心"))
{
Intentintent=newIntent();
intent.setClass(Three.this,ContactsManager.class);
startActivity(intent);}
if(list.get(arg2).equals("公司公告")){
Intentintent=newIntent();
intent.setClass(Three.this,ContactsManager.class);
startActivity(intent);
}
if(list.get(arg2).equals("企业通讯录"))
{
Intentintent=newIntent();
intent.setClass(Three.this,ContactsManager.class);
startActivity(intent);
}
if(list.get(arg2).equals("GPS定位"))
{
Intentintent=newIntent();
intent.setClass(Three.this,ContactsManager.class);
startActivity(intent);
}
if(list.get(arg2).equals("个人签到"))
{
Intentintent=newIntent();
intent.setClass(Three.this,GPS.class);
startActivity(intent);
}
if(list.get(arg2).equals("出差登记"))
{
Intentintent=newIntent();
intent.setClass(Three.this,ContactsManager.class);
startActivity(intent);
}
}
});
}
}
图2.1公众号主界面
2.1.2获取企业通讯录功能的实现
企业通讯录就是手机内部储存数据库,手工录入电话号码等信息
功能代码函数:
publicclassContactsManagerextendsExpandableListActivity{
publicstaticfinalStringTAG="ContactsManager";
privateContactsManagerDBAdaptercontactsManagerDbAdapter;
intgroupNameIndex;
privateMyCursrTreeAdaptermyCursorTreeAdapter;
Viewview;
PopupWindowpop;
Buttonsms;
ButtonbtnCall;
//缓存除了所选联系人所在组的所有组,用在移动联系人上
Stringgroups[];
//缓存用户所在的组,用在移动联系人上
StringmygroupName;
//长按分组上的菜单
publicstaticfinalintMENU_GROUP_ADD=Menu.FIRST;
publicstaticfinalintMENU_GROUP_DELETE=Menu.FIRST+1;
publicstaticfinalintMENU_GROUP_MODIFY=Menu.FIRST+2;
publicstaticfinalintMENU_GROUP_ADDCONTACT=Menu.FIRST+3;
//长按联系人菜单
publicstaticfinalintMENU_CONTACTS_DELETE=Menu.FIRST;
publicstaticfinalintMENU_CONTACTS_MODIFY=Menu.FIRST+1;
publicstaticfinalintMENU_CONTACTS_MOVE=Menu.FIRST+2;
//联系人各个字段索引
privatestaticfinalinticon_index=1;
privatestaticfinalintname_index=2;
privatestaticfinalintdescription_index=3;
privatestaticfinalinttelPhone_index=4;
privatestaticfinalintemail_index=5;
//组上groupName字段索引
privatestaticfinalintgroupName_index=1;
CursorgroupCursor;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.contactsmanager);
getExpandableListView().setBackgroundResource(R.drawable.default_bg);
registerForContextMenu(getExpandableListView());
contactsManagerDbAdapter=newContactsManagerDBAdapter(this);
contactsManagerDbAdapter.open();
initMyAdapter();
initPopupWindow();
getExpandableListView().setCacheColorHint(0);//拖动时避免出现黑色
getExpandableListView().setDivider(null);//去掉每项下面的黑线(分割线)
//自定义下拉图标
getExpandableListView().setGroupIndicator(getResources().getDrawable(R.anim.expander_ic_folder));
}
privatevoidinitPopupWindow()
{
view=this.getLayoutInflater().inflate(R.layout.popup_window,null);
pop=newPopupWindow(view,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
pop.setOutsideTouchable(true);
sms=(Button)view.findViewById(R.id.btnsms);
btnCall=(Button)view.findViewById(R.id.btnCall);
}
//给适配器赋值,刷新界面的时候也会用到
publicvoidinitMyAdapter(){
groupCursor=contactsManagerDbAdapter.getAllGroups();
startManagingCursor(groupCursor);
//getthegroupNamecolumnindex
groupNameIndex=groupCursor.getColumnIndexOrThrow("groupName");
//setmyadapter
myCursorTreeAdapter=newMyCursrTreeAdapter(
groupCursor,
this,
true
);
setListAdapter(myCursorTreeAdapter);
}
publicclassMyCursrTreeAdapterextendsCursorTreeAdapter{
publicMyCursrTreeAdapter(Cursorcursor,Contextcontext,
booleanautoRequery){
super(cursor,context,autoRequery);
}
@Override
protectedvoidbindGroupView(Viewview,Contextcontext,Cursorcursor,
booleanisExpanded){
//TODOAuto-generatedmethodstub
Log.v(TAG,"bindGroupView");
TextViewgroupName=(TextView)view.findViewById(R.id.groupName);
Stringgroup=cursor.getString(groupName_index);
groupName.setText(group);
TextViewgroupCount=(TextView)view.findViewById(R.id.groupCount);
intcount=contactsManagerDbAdapter.getCountContactByGroupName(group);
groupCount.setText("["+count+"]");
}
图2.1企业通讯录
2.1.3GPS定位的实现
GPS定位是通过XX地图实现,可以实时显示外勤人员的地址,经纬度以及高度,实时数据传输。
功能代码函数:
publicclassGPSextendsMapActivity{
//添加XX地图的相关控件
privateMapViewmapView;
privateBMapManagerbMapManager;//加载地图的引擎
//XX地图的key
privateStringkeyString="A270F85CD72A01E8519A9677A75FB4016ED9A5A3";
//在XX地图上添加一些控件,比如是放大缩小的控件
privateMapControllermapController;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.gps);
mapView=(MapView)this.findViewById(R.id.bmapView);
bMapManager=newBMapManager(GPS.this);
//必须加载key
bMapManager.init(keyString,newMKGeneralListener(){
@Override
publicvoidonGetPermissionState(intarg0){
//TODOAuto-generatedmethodstub
if(arg0==300){
Toast.makeText(GPS.this,"输入的key有错!
请核实!
",1).show();
}
}
@Override
publicvoidonGetNetworkState(intarg0){
//TODOAuto-generatedmethodstub
}
});
this.initMapActivity(bMapManager);
mapView.setBuiltInZoomControls(true);//可以设置缩放功能
mapController=mapView.getController();
mapController.setZoom(12);
//需要定义一个经纬度
mapView.getOverlays().add(newMyOverLay());
}
publicclassMyOverLayextendsOverlay{
//构建在地图上的一个点
privatePaintpaint=newPaint();
@Override
publicvoiddraw(Canvasarg0,MapViewarg1,booleanarg2){
super.draw(arg0,arg1,arg2);
Pointpoint=mapView.getProjection().toPixels(geoPoint,null);
arg0.drawText("*所在地",point.x,point.y,paint);
}
}
@Override
protectedvoidonDestroy(){
super.onDestroy();
if(bMapManager!
=null){
bMapManager.destroy();
bMapManager=null;
}
}
@Override
protectedvoidonResume(){
super.onResume();
if(bMapManager!
=null){
bMapManager.start();
}
}
@Override
protectedvoidonPause(){
super.onPause();
if(bMapManager!
=null){
bMapManager.stop();
}
}
@Override
protectedbooleanisRouteDisplayed(){
//TODOAuto-generatedmethodstub
returnfalse;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 服务 外包 技术 路线 实现 方案