安卓大作业
1.小组成员:
邢路 163班 1600802098: https://www.cnblogs.com/xinglu1600802098/
覃朗 163班 1600802105:https://www.cnblogs.com/WildFrontier/
唐梵 163班 1600802095:https://www.cnblogs.com/TF2095/
2.APK下载地址:
另附:
2.Android文件夹为本项目的后台部分,是eclipse创建的项目,不能直接部署到tomcat服务器。
3.后台已经部署到腾讯云服务器上,IP为118.24.132.157。后台项目JRE版本为1.8,tomcat版本为8.5。
4.2234Job文件夹为安卓项目,SDK版本为28。
3.项目地址:
安卓项目:https://coding.net/u/XL_1600802098/p/Android/git
Servlet后台:https://git.coding.net/XL_1600802098/Android_Servlet.git
4.1团队项目的总体效果截图:
首页:
登录及注册页面:
发布信息页面:
个人信息页面:
推荐页面:
录屏效果链接:
https://pan.baidu.com/s/17xL6sQp6BuUGfpzGah5VCg
4.2 实现的功能及其效果的描述
项目名称:2234招聘网
简介:一个人才信息招聘app,该项目想法来源于我们本学期的创新创业课程,该项目获得了创新创业课程的优秀项目。因此借此次安卓课程的学习我们将该项目实现。
功能介绍:(1)实现登录、注册的功能。
(2)登录后使用者有两种角色,招聘者和求职者,可以在app中的个人信息页面自由切换。
(3)求职者可以发布求职信息,在推荐一栏中浏览招聘者发布的招聘信息。招聘者可以发布招聘信息,在推荐一栏中浏览求职者发布的求职信息。其中学历、性别和年 龄需求在点击后可以出现相应的选项,便于求职者与招聘者明确信息。
(4)在推荐一栏中同时显示了招聘者与求职者的信息,包括职位、学历、年龄、工作年限、薪水等等。
5.关键代码
链接数据库:
if (userStatus.equals("Applicant")) { Thread t = new Thread() { //运行子线程 @Override public void run() { @SuppressWarnings("deprecation") String path = "http://118.24.132.157:8080/Android/GetApplicantInfo"; try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(2000); conn.setReadTimeout(2000); if (conn.getResponseCode() == 200) { InputStream is = conn.getInputStream(); String text = Util.getTextFromStream(is); Message msg = handler_interviewer.obtainMessage(); msg.obj = text; handler_interviewer.sendMessage(msg); flag = true; destroy(); } } catch (Exception e) { e.printStackTrace(); } } }; t.start(); while(true){ if(flag){ setContentView(R.layout.recommend_get); listView = (ListView) findViewById(R.id.recommend_list); ApplicantAdapter adapter = new ApplicantAdapter(RecommendActivity.this, R.layout.recommend_interviewer, applicantList); listView.setAdapter(adapter); break; } } }
处理json数据
private Handler handler_interviewer = new Handler(){ public void handleMessage(Message msg){ //获得消息中携带的数据 String data = (String) msg.obj; MyJSONObjection myJson = null; try { JSONObject json = new JSONObject(data); int size = json.getInt("size"); for(int i = 1;i<=size;i++){ //每条json数据都转换成实例保存到List中 JSONObject line = json.getJSONObject(Integer.toString(i)); ApplicantInfo info = new ApplicantInfo(); try { myJson = new MyJSONObjection(line.toString()); } catch (Exception e) { e.printStackTrace(); } try { info = (ApplicantInfo) myJson.getBean(ApplicantInfo.class); applicantList.add(info); } catch (Exception e) { e.printStackTrace(); } } } catch (JSONException e) { e.printStackTrace(); } } };
存储用户登录信息:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=utf-8"); Connection conn =null; Statement stmt = null; ResultSet rs = null; try { String url = "jdbc:mysql://localhost:3306/android?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; String dbuser = "root"; String dbpass ="root"; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,dbuser,dbpass); StringBuffer sql = new StringBuffer(200); sql.append("select * from applicant "); stmt = conn.createStatement(); rs = stmt.executeQuery(sql.toString()); //List<ApplicantInfo> applicantList= new ArrayList<ApplicantInfo>(); JSONObject responseJson = new JSONObject(); int i = 1; while(rs.next()) { ApplicantInfo info = new ApplicantInfo(); info.setUsername(rs.getString(1)); info.setWantpositon(rs.getString(2)); info.setWantplace(rs.getString(3)); info.setEdulevel (rs.getString(4)); info.setWantyear(rs.getString(5)); info.setWantjobnature(rs.getString(6)); info.setWantsex(rs.getString(7)); info.setWantage(rs.getString(8)); info.setWantprossional(rs.getString(9)); responseJson.put(i, info); i++; } responseJson.put("size", i); PrintWriter pw = response.getWriter(); pw.write(responseJson.toString()); pw.flush(); pw.close(); return ; }catch (Exception e) { e.printStackTrace(); }finally { try { if (stmt != null) stmt.close(); }catch (Exception e1) { } try { if (conn != null) conn.close(); }catch (Exception e1) {e1.getMessage();}} } }
数据库截图:
6.对其他组APK的评价
1)许宇伟组:小游戏
总结:模式简洁,图标有一定创意。
优点:操作简洁方便。
缺点:玩法过于单一。
我组建议:增加游戏模式与难度选择,改换美工风格。
2)韩璐组:音乐播放器
总结:基础功能较全,美工出众。
优点:美工出众。
缺点:缺少滚动歌词。
我组建议:完善功能。
3)洪居兴组旅游攻略
总结:洪居兴组旅游攻略本实现了旅游攻略的基本功能,登录注册,手机验证,攻略查看等,功能完备。
优点:界面十分美观,能使用手机验证码进行验证。
缺点:虽然十分贴近生活,极有用处,但同类APP已有很多,需要增加一些自己的创新功能,能够吸引用户。
我组建议:增加一些自己的创新功能,用以吸引用户。
4)李凯组:打卡
总结:样式极简,功能全面。
优点:功能全面,添加计划,计算时间与 进度。
缺点:界面单一,只有日夜间模式。
我组建议:增加更多的主题界面,提高用户体验。
5)5.刘宇莹组
描述:功能齐全,用户友好。
优点:功能齐全:登录、注册,浏览物品、管理拍卖物品。
缺点:没有物品的详细信息。
我组建议:加上物品的更详细的信息,让用户可以了解更多的关于物品的信息。
7.
以下问题为团队成员个人认为棘手的问题:
1) 同时在安装apk的时候也出现了一个这个错误。android installation failed with message invalid通过查询网上的建议,找到了解决方案:
1.点击工具栏上的Build中的Clean Project
2.再点击工具栏上的Build中的Rebulid Projec
2)开发的时候突然出现仿真器卡死的情况,反复重启会弹出如下的提示:
Guest isn’t online after 7 seconds, retrying ADB connections
经过检验发现需要手动在Tools-->AVD Manager-->相应虚拟机-->Boot Code Now
3)启动虚拟机后,点击按钮闪退。经过反复校验发现是由于调用函数时参数未初始化导致相应模板无法加载。
4)ScrollView无法显示所有的TextView,原因是底端的LinearLayout覆盖住了最后一个TextView,需要在ScrollView中添加android:layout_above="@+id/(LinearLayout的id)"个才能使LinearLayout不覆盖住ScrollView的内容
5)继承JSONObject写了一个MyJSONObjection类 ,在将json转换成对象的过程中,需要获取对象的属性个数,测试时报错抛出空指针错误,DEBUG发现$change为空,原来fs数组中除了对象的属性还多出两个属性。
解决:由于不知道这两个属性是干嘛用的,这里使用了投机取巧的方法,将for循环的次数减去2,结果成功。
8.团队分工
姓名 | 分工 | 工作比例 | 得分(10) |
邢路 | 后台服务器、数据库。 功能实现:登录、注册、推荐 | 40% | 4 |
覃朗 | 功能实现:主页、发布、我的信息 | 30% | 3 |
唐梵 | UI、前端 | 30% | 3 |
posted on 2019-01-01 11:56 taroumaru 阅读(6688) 评论(10) 编辑 收藏 举报