【作业三】结队任务二-----CourseManagement
031302517 031302319
ps:共同完成一篇随笔,文章中的第一人称我(517),队友(319)
一、功能分析+实现思路+结队讨论
这里我将功能分析和实现思路还有结对过程中的一些讨论结合在一些来写。因为我等会写的内容可能会在功能分析和实现思路这两者间来回切换,可能会在某一功能的分析之后紧接着实现思路,也可能会写很多的思路,但可能跟功能没什么关系,还有可能写了一堆类似废话的结队讨论。总之我是想起来什么,就赶紧写下来的。讲述上的逻辑可能会有些乱,看看就好,不要计较。最后会给出个小小的总结。好了,下面先来看看这次的功能需求:
将初始的排课excel空表导入系统,再将其展现在你们设计的原型里
仅考虑上述功能的实现,暂不考虑后续细节的可拓展性或全面需求的影响
好了,上述的功能描述已经很详细了,也就是实现两个功能,一是导入excel表格到数据库,二是从数据库中拿数据。那我们在这里需要对这两个功能分析些什么呢?首先,我觉得我们得先定位下自己项目的系统。什么意思,很简单,你的系统要怎么实现,你的数据库放在哪,你要做成有服务器端来提供数据库供你存取数据,还是说利用安卓自带的数据库,以及在程序后台实现导入。
在我看来,这是两种可行的思路。而且我一开始就打算采用第二种,即安卓自带的数据库。然而在跟队友讨论项目时,却出现了矛盾。队友跟我说,老师要我们导入数据库肯定就是要导入服务器端的啊,你导入什么安卓自带的系统,那有什么意义啊?又不能共享,难不成你要做成导入数据库的Excel数据只能你自己使用吗?这样的话,你直接解析完Excel就把数据拿去展示不就行了,还特意存入数据库不是多此一举吗?说得好像很有道理,然而仔细想想,Excel数据有要求一定要共享吗?我们增添类似分析数据或者发送邮件的功能不行吗?最后说服队友是,时间不够用。相对于采用服务器端的数据库,安卓自带的SQLite不管是学还是用都教为简单。
下面先来几张图,不然又是一大堆文件(下图是我们小组在进行界面的改善)
好了,数据库的方式定下来了。接下去也就是要开始分工了。这里插点后话,结队如何共同完成项目,如何分工这在前期一定要讨论清楚。这次结队下来才发现,由于事先没有统一项目的实现细节,导致两人的学习点完全相反,比如关于数据库我学习的是SQLite,然而队友却是学习的Mysql;还有就是没有规定好统一开发环境,导致clone github项目时报错一大堆,程序根本无法跑起来。当然,这也有我把.idea也push到github的原因;最后就是没有统一好编码规范,导致队友在阅读我代码时困难重重,尤其是队友为了能按时完成,居然熬夜到半夜三点多,都是我的错,以后一定好好命名,好好注释,好好规范,好好讨论。还好的是,这些问题在中期都被发现并趁早解决了。当然,这些都是后话了,但还是得写出来警戒下自己。下面就说说我们的分工,我负责的是excel的解析并导入,还有界面的编写。队友负责的是数据的导出并展示。因此,前期代码的编写基本是我负责,后期则交由队友来完成。刚好,我之前稍微接触过其他语言,学安卓速度快点,队友正好可以借前期由我负责的时间来学习相关知识。
写完分工,下面就写写功能的实现思路,首先是我负责的部分:(1)解析Excel(2)导入数据库(3)界面编写。要将Excel导入数据库,首先就要对Excel进行解析,就在大家都疑惑安卓能否打开Excel时,立即就有大神给出了思路:jxl.jar,这是一个第三方的库,支持安卓程序对Excel的基本操作。然而作死的我却选择的Apache POI,想搞点特殊的,装装13。当稍微看了些文档,照例子实践时却发现报了一堆错,解决一个又冒出一个,最终考虑到时间因素,实在无法在这部分继续耗下去,果断重新选择jxl.jar。果然,装13也是要看脸的。jxl.jar提供了一些API,供我们对Excel的打开,读取。解析的功能实现了,接下去就是导入。因为选择的数据库是SQLite,它提供的很多接口,可以实现对数据库的CRUD操作。最后就是界面的编写了,因为我们原型设计里采用了列表以及二级列表的形式,所以安卓可以用ListView和ExpandableListView实现。以上,就是我负责部分的实现思路以及我要学习的知识点了。
下面看看队友负责的部分:(1)导出数据库(2)展示数据。看看队友的思路,下面是他的原话:
导出数据及展示的思想:
1.在Mainactivity.java中将查询数据方法queryDatabase()定义为返回Bundle类对象,修改队友对Excel进行解析的相关代码,记录表格的行、列值。在queryDatabase()中新建一个Bundle类在用来返回以及存储从数据库中获取的数据,最后建立一个intent对象携带数据跳转,把展示方法在FileDetailActivity.java中实现。
2.在FileDetailActivity.java中,通过方法initDatas()展示数据:在子列表(即点击表格文件展开的详细信息列表)中,将得到的数据一一放进相对应的参数中去,例如child1V.setCourseName(bundle.getString(s1+3)); 这样就实现了数据和组件的绑定,表格详细信息就在APP中的展示出来了。
·写了这么多没头没尾的看着又好像废话的想法,下面就来张表总结下:
二、APP界面展示及其他截图
首先是 Excel文件的打开,点击Excel文件,选择我们的APP进行打开,我们组只提供这种方式进行打开,对于那些还实现了文件管理器,文件扫描的大神们,表示向往。下图就是选择我们APP以及用我们APP打开Excel后显示的页面:
点击计算机 1.xls,进入详情页面查看。如下图:
下面是我们小组在结队编程中碰到的问题:
以上图是由于开发环境不同导致的冲突和编码没有事先统一细节出现的冲突
以上图是我们小组的commit记录,前期是我负责,后期则交由队友,最后我再进行整合成最终版。
附上我们的Github项目链接CourseManagement
三、PSP表格以及小结
PSP | Personal Software Process Stages | 花费时间 | 计划时间 |
---|---|---|---|
Planning | 计划 | 7天 | 7天 |
Estimate | 估计这个任务需要多少时间 | 7天(老师给的期限) | 7天 |
Development | 开发 | 7天(天天都在码) | 7天 |
Analysis | 需求分析(包括学习新技术) | 5天(前期基本都在学) | 4天 |
Design Spec | 生成设计文档 | 1小时 | 没预计这个 |
Design Review | 设计复审 | 1小时 | 3小时 |
Coding Standard | 代码规范 | 0.5小时(我知道错了) | 忘记做个了 |
Design | 具体设计 | 1天 | 半天 |
Coding | 具体编码 | 7天(还是天天码) | 6天 |
Code Review | 代码复审 | 2小时 | 8小时 |
Test | 测试(自我测试,修改代码,提交修改) | 0 | 没有做这个 |
Reporting | 报告 | 3小时 | |
Test Report | 测试报告 | 0 | |
Size Measurement | 计算工作量 | 1小时 | |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 2小时 | 1小时 |
最后附上队友对于这次结队的心得和小结:
心得:第一次看到这次作业我是绝望的。。好多都不会,而且面临着很多要调整的。在经过我们的讨论之后决定使用了splite,队友写了前期的界面,但由于开发环境的不同,在myeclipse转化的时候用了好多时间还是没有成功,所以我决定去学android studio。这几天下来看了Sqlite,android studio的熟悉使用就花掉了好多时间,(调整的辛酸史就不多讲了,前面队友也有谈到)。不知不觉没剩几天了,才开始要步入正轨--学会如何将数据在APP导出显示。好在我队友够给力,界面、以及数据的导入数据库和解析都做得很好,代码也好读懂。所以,我开始网上学习如何导出,在走了很多弯路,终于给实现。过程可谓辛酸,不过功夫不负有心人,好在完成了任务,没有坑了队友。
小结:自学的过程是痛苦的,尤其是还有其他学科的时间压榨。面对好多问题以前出现时,需要一步一个脚印,静下心来。尽管现在差不多会使用bundle类和intend类,但也只是略知皮毛,还需要我后面多去学习。不过一个礼拜的时间真心短,熬夜就要好几天了。接下来要在国庆深入去了解安卓的开发,不然假期结束后,只能挤压晚上睡眠时间来学习了,这样简直作死。还有,在写代码的时候要注重代码规范和可读性,这次我队友就做的很不错,及时是我这种菜鸟级的,也差不多都能看懂。
【作业三】结队任务二-----CourseManagement的更多相关文章
- JAVA作业三
(一)学习总结 1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Gr ...
- jQuery 作业三个按钮
作业三个按钮 <!--声明 文档--> <!DOCTYPE html> <!--定义字符集--> <html lang="zh-CN"&g ...
- 作业三:LINUX内核的启动过程
作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...
- 20155303狄惟佳预备作业三Linux学习笔记
20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...
- 20165301 预备作业三:Linux安装及命令入门
预备作业三:Linux安装及命令入门 VirtualBox虚拟机的安装 在进行安装之前,原本以为有了娄老师的安装教程会是一件很容易的事情.万万没想到,在自己实际动手操作中,还是遇到了许多困难.通过与同 ...
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答
今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到非常多困难,当我在网上寻找答案时却找不到,而林 ...
- 作业三 ATM
模拟实现一个ATM+购物商场程序 1.额度15000自定义 商城和银行两个帐户 2.实现购物商城,买东西加入购物车,调用信用卡接口结账 3.可以提现,手续费5%,提现额度不能超过50% 4.每月22日 ...
- 福大软工 1816:项目UML设计(团队作业三)
项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...
- 20165332 预备作业三 Linux安装及命令入门
Linux安装及命令入门 一.安装Linux操作系统 由于做的比较晚,结合大多数同学的经验和娄老师的<基于VirtualBox虚拟机安装Ubuntu图文教程>,整个安装过程还算顺利,唯一遇 ...
随机推荐
- WITH RECOMPILE 和 OPTION(RECOMPILE) 使用上的区别
在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级 ...
- Kaldi单音素模型 训练部分
在Kaldi中,单音素GMM的训练用的是Viterbi training,而不是Baum-Welch training.因此就不是用HMM Baum-Welch那几个公式去更新参数,也就不用计算前向概 ...
- Delphi - 子窗体继承父窗体后如何显示父窗体上的控件
1.创建子窗体Form1 File -> New -> Form,新建一个form,在form的单元文件中修改 2.子窗体中引用父窗体单元 uses TFatherForm 3.将子窗体中 ...
- jdk8新特性(详解)
最近在复习外加看点面试题,jdk8的新特性虽然在项目用用到过一两个,准备系统的了解一下jdk8的常用新特性 一:Lambd表达式 也可称为闭包 引入函数式编程到Java中 为了使现有函 ...
- Android之控件与布局,结构知识点,基础完结
版权声明:未经博主允许不得转载 在Android中我们常常用到很多UI控件,如TextView,EditText,ImageView,Button,ImageButton,ToggleButton,C ...
- HttpClient实现HTTP文件通用下载类
import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import org.apache. ...
- ubuntu 16.04 搭建git小型服务器
最近搭建了一个小型git服务器,由于网上资料鱼龙混杂,让我着实踩了不少地雷.做一个记录,以备不时之需. 一 搞清楚你的需求? 假如你要搭建的服务器只供几十个人使用,并且没有专门的网管服务的话,切记,一 ...
- 卖给高通之后的CSR的现状和未来
转眼之间,CSR已经嫁给高通两年了,养在深宫大院大小妾的CSR,到底过的怎么样呢? 从高通官网上查看的结果显示,CSR产品被分成了三类: A 传统的用在耳机音响的CSR86XX系列,这部分改动不大,就 ...
- OC学习1——基本数据类型
1.OC是在C语言的基础上进行扩展的一种面向对象的编程语言.很多基础知识都和C语言中的非常类似.首先介绍一下OC中的基本数据类型,整体框架如下图: 2.自动数据类型转换顺序:short --> ...
- Ubuntu下安装程序的三种方法(转)
引言 在Ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. 一.apt-get方法 ...