【作业三】结队任务二-----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图文教程>,整个安装过程还算顺利,唯一遇 ...
随机推荐
- [CocoaPods]故障排除
安装CocoaPods 如果您在macOS 10.9.0-10.9.2上安装,当RubyGems尝试安装jsongem 时可能会遇到问题.要解决此问题,请遵循以下说明 从macOS 10.8升级到10 ...
- ubuntu 16.04下源码安装opencv3.4
源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...
- mysql之数据分区
一:概述 通过把表分成多几区间,每个区间存储符合特定表达式的数据(即在我们创建分区表时指定每个分区存储的条件例如:PARTITION p0 VALUES LESS THAN (100) 即p0区间存 ...
- vue项目中在同一页面多次引入同一个echarts图表的自适应问题
在父组件页面引入两次该图表子组件显示的效果: 由于是百分比宽高,所以在窗口发生变化时,需要让图表也跟着自适应,所以才出现了本次讨论的问题啦. 先看下完整的图表子组件代码(在父组件就是直接引入,不需要传 ...
- Python又把GUI界面攻下了,今天就告诉你怎么玩
0.引言 学Python这么久了,一直想做个界面出来,最近发现Python有个内置库tkinter,利用它可以很轻松做出一些简易的UI界面,首先来看Python官方对Tkinter的说明: The t ...
- [视频]K8飞刀 HackerIE自动检测网站注入教程
[视频]K8飞刀 HackerIE自动检测网站注入教程 https://pan.baidu.com/s/1c08rihi
- Java异常处理设计(三)
接着上一篇讲. 一个异常日志处理的例子: 抛出异常的地方为: try{ ... ...//省略N行 }catch( Exception e){ throw new RuntimeException ( ...
- 【转】php结合redis实现高并发下的抢购、秒杀功能
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...
- 在Windows环境中安装Neo4j
图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边( ...
- Linux_CentOS-服务器搭建 <三> 补充
今天 才发现,服务器上 JDK 都没有好好的安装下.在这里补充说下. 1.看看机子上JDK的安装了多少 $ rpm -qa |grep java 会出现类似: java-1.6.0-openjdk-1 ...