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的更多相关文章

  1. JAVA作业三

    (一)学习总结 1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Gr ...

  2. jQuery 作业三个按钮

    作业三个按钮 <!--声明 文档--> <!DOCTYPE html> <!--定义字符集--> <html lang="zh-CN"&g ...

  3. 作业三:LINUX内核的启动过程

    作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...

  4. 20155303狄惟佳预备作业三Linux学习笔记

    20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...

  5. 20165301 预备作业三:Linux安装及命令入门

    预备作业三:Linux安装及命令入门 VirtualBox虚拟机的安装 在进行安装之前,原本以为有了娄老师的安装教程会是一件很容易的事情.万万没想到,在自己实际动手操作中,还是遇到了许多困难.通过与同 ...

  6. 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答

    今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到非常多困难,当我在网上寻找答案时却找不到,而林 ...

  7. 作业三 ATM

    模拟实现一个ATM+购物商场程序 1.额度15000自定义 商城和银行两个帐户 2.实现购物商城,买东西加入购物车,调用信用卡接口结账 3.可以提现,手续费5%,提现额度不能超过50% 4.每月22日 ...

  8. 福大软工 1816:项目UML设计(团队作业三)

    项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...

  9. 20165332 预备作业三 Linux安装及命令入门

    Linux安装及命令入门 一.安装Linux操作系统 由于做的比较晚,结合大多数同学的经验和娄老师的<基于VirtualBox虚拟机安装Ubuntu图文教程>,整个安装过程还算顺利,唯一遇 ...

随机推荐

  1. 查看服务器tcp连接及服务器并发

    一.查看哪些IP连接本机netstat -an二.查看TCP连接数1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ...

  2. day13_雷神_前端01

    #前端 html 服务器端返回的就是一个字符串,浏览器根据html规则去渲染这个字符串. html 是超文本标记语言,相当于定义统一的一套规则,大家都遵守它,这样就可以让浏览器根据标记语言的规则去解释 ...

  3. 剑指offer编程题Java实现——面试题14调整数组顺序使奇数位于偶数之前

    题目: 输入一个整数数组,实现一个函数来调整该数组中数组的顺序,使得所有的奇数位于数组的前半部分,偶数位于数组的后半部分. 解题思路:数组中维护两个指针,第一个指针初始化时候指向数组头部,第二个指针初 ...

  4. 三种定义bean的方式

    方法一:基于XML的bean定义(需要提供setter方法) 1.首先编写student.java和teacher.java两个类 Student.java: public class Student ...

  5. code2

    #include <unistd.h> #include <sys/syscall.h> #include <linux/kernel.h> #include &l ...

  6. 微信小游戏 three.js jsonloader request:fail invalid url

    微信小游戏中,用 THREE.JSONLoader 直接加载本地的 json 文件,报错.估计是跨域访问的问题 解决:把 json 文件放到服务器上,通过 url 来访问. 临时测试的话,在本地起一个 ...

  7. WebRTC 学习之 Conference 实现混音混屏

    混音 混音的意义就是将多个音频流混成一路音频,在Conference 的实现中有分为终端实现和服务器实现. 1. 终端混音实现: 终端接受到多路(一般是多个用户)的音频流之后,在终端本地将多路音频流混 ...

  8. 标签页(tab)切换的原生js,jquery和bootstrap实现

    概述 这是我在学习课程Tab选项卡切换效果时做的总结和练手. 原课程中只有原生js实现,jquery和bootstrap实现是我自己补上的. 本节内容 标签页(tab)切换的原生js实现 标签页(ta ...

  9. Swift5 语言指南(四) 基础知识

    Swift是iOS,macOS,watchOS和tvOS应用程序开发的新编程语言.尽管如此,Swift的许多部分对您在C和Objective-C中的开发经验都很熟悉. 雨燕提供了自己的所有基本C和Ob ...

  10. LeetCode--No.005 Longest Palindromic Substring

    5. Longest Palindromic Substring Total Accepted: 120226 Total Submissions: 509522 Difficulty: Medium ...