摘要:本文介绍基于上一次作业的软件设计,实现并测试魔幻宝贝成长这款App。代码仓库:https://coding.net/u/sijixiaqiudong/p/Mohuan/git
第一部分:简易快速使用指南
1、在使用前先进行注册登入。
2、进入主界面,刚开始宠物为一颗蛋。然后你可以开始跑步来增加你的步数用来在商城购买商品提高宠物的成长值。当成长值足够等级就会提升,宠物就会进化。
3、在我的里面可以查看详细的个人信息和宠物信息。
第二部分:代码实现(采用http数据传输)
1、myeclipse部分
在myeclipse里我们使用MVC这种结构方式,前端传值,servlet接受后调用control,control调用data,data返回值给control,control返回值给servlet,servlet返回值给前端。
servlet下的代码
if(operate.equals("selectPetInfo")) //通过parser解封获取前端的操作,查看宠物信息
{ String user_id=parser.getFirst(information);//通过parser解封获取前端传来的第一个值 selectPetInfo ob=new selectPetInfo(); String ss=ob.selectPetInfo(user_id);//selectPetInfo处理在里面调用data返回的数据 System.out.println(ss);/软件测试 out.println(ss);//返回给前端 }
control下的代码
public String selectPetInfo(String user_id)
{ dbPetInfo db=new dbPetInfo(); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); list=db.selectPetInfo(user_id); String ss=JsonTools.createJsonString("address", list); return ss; }
data下的代码
public List<Map<String, Object>> selectPetInfo(String user_id) { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); try { String sql = "select pet_name,pet_lev,pet_grow from pet_info where user_id=?"; //因为这里我们这里每个人只有一个宠物,所以简易使用user_id作为主键
PreparedStatement pst=conn.prepareStatement(sql);
pst.setString(1, user_id); ResultSet rs = pst.executeQuery();
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
String pet_name = rs.getString("pet_name");
String pet_lev = rs.getString("pet_lev");
String pet_grow = rs.getString("pet_grow"); map.put("pet_name", pet_name);
map.put("pet_lev", pet_lev);
map.put("pet_grow", pet_grow);
list.add(map); }
rs.close();
pst.close(); }
catch (SQLException e) {
e.printStackTrace();
}
return list; }
2、eclipse部分
我们使用eclipse创建安卓项目
查看个人信息实现发送数据和接收数据的代码
public void run(){ String Web_result=""; String url = IP.URL; List<Para> list = new ArrayList<Para>(); list.add(new Para("information", information)); Web_result= HttpTools.postVisitWeb(url, list); Message msg=new Message(); msg.obj=Web_result; handler.sendMessage(msg); } }.start(); } }
Handler handler=new Handler(){ @Override public void handleMessage(Message msg){ if(msg.obj==null){ Toast.makeText(getApplicationContext(), "网络连接异常", Toast.LENGTH_SHORT).show(); return; } List<Map<String, Object>> petInfo= new ArrayList<Map<String, Object>>(); String ss=msg.obj.toString(); petInfo = JsonUtils.listKeyMaps("address",ss); for(int i=0;i<petInfo.size();i++){ Map<String, Object> cw=new HashMap<String, Object>(); cw=petInfo.get(i); pet_name=or.get("pet_name").toString(); pet_lev=or.get("pet_lev").toString(); pet_grow=or.get("pet_grow").toString(); } initpetInfo(); } };
布局的代码
<RelativeLayout android:id="@+id/cwinfor" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/btn_list_item_bg" android:clickable="true" android:paddingLeft="12dp" > <ImageView android:layout_width="24dp" android:layout_height="24dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="12dp" android:src="@drawable/cw" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="20dp" android:layout_toRightOf="@id/iv_xiangce" android:text="宠物信息" android:textColor="#353535" android:textSize="16sp" /> </RelativeLayout>
3、mysql部分
-- ---------------------------- -- Table structure for pet_info -- ---------------------------- DROP TABLE IF EXISTS `pet_info`; CREATE TABLE `pet_info` ( `pet_id` varchar(5) NOT NULL COMMENT '宠物编号', `pet_name` varchar(10) NOT NULL COMMENT '宠物名称', `pet_code` char(1) NOT NULL COMMENT 'sex', `pet_lev` int(11) NOT NULL COMMENT '宠物等级', `pet_grow` int(11) NOT NULL COMMENT '成长值', `user_id` varchar(11) DEFAULT NULL COMMENT '用户编号', PRIMARY KEY (`Pet_id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
第三部分:软件测试
1、在这个方面由于目前整个项目还没有完全写好,只完成了注册登录,界面设计部分和基本数据传输功能。只给出了部分的框架。
2、基于现阶段的测试,可以成功的注册以及登录,以及查看个人信息和宠物信息。
3、在以后的完善过程中,需要测试的主要几点有:计步功能的实现(允许有误差);宠物由静态改为动态。