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类,但也只是略知皮毛,还需要我后面多去学习。不过一个礼拜的时间真心短,熬夜就要好几天了。接下来要在国庆深入去了解安卓的开发,不然假期结束后,只能挤压晚上睡眠时间来学习了,这样简直作死。还有,在写代码的时候要注重代码规范和可读性,这次我队友就做的很不错,及时是我这种菜鸟级的,也差不多都能看懂。

第三次作业:结对编程--实现表格在APP的导入和显示的更多相关文章

  1. 第三次作业-结对编程(wordcount)

    GIT地址 https://github.com/gentlemanzq/WordCount.git GIT用户名  gentlemanzq 结对伙伴博客地址 https://home.cnblogs ...

  2. 个人第三次作业——结对编程 (姜玖林&于丁)

    博客要求 Github项目地址:https://github.com/zhibihuayue/PairProgramming 作业地址 : https://www.cnblogs.com/cheris ...

  3. [BUAA软工]第二次博客作业---结对编程

    [BUAA软工]结对作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 2019年软件工程基础-结对项目作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能 ...

  4. 软件工程第三次作业-结对作业NO.1

    第一次结对作业 结对人员: 潘伟靖 170320077 张 松 170320079 方案分析 我们对所供的资料进行分析,如下: 从提供的资料可以看出,需要解决的问题以及满足的需求主要有两类目标用户,各 ...

  5. 第四周作业&&结对编程

    1. 结对编程. 本周开始,和我结对编程的小伙伴是齐嘉亮(博客:http://www.cnblogs.com/zhengrui0452/). 因为这周需要发布四人团队项目的alpha版本,刚好我和亮哥 ...

  6. 软工第三次作业 -- 结对之AutoCS1.0

    031302331 031302223 一.将初始排课表导入系统数据库 法1:通过jxl解析excel,把数据插入数据库.较简单,预计用时60分钟 我们采取的是 法2(预计用时30分钟):我们使用的是 ...

  7. 软件工程实践2019第五次作业——结对编程的编程实现 version1.1

    1.链接 我的博客链接https://github.com/S031402112 结对同学的博客https://www.cnblogs.com/jiabingge/ 我们队创建的仓库的Github项目 ...

  8. 软工2017第四周作业结对编程——个人psp

    29.22 --9.26本周例行报告 1.PSP(personal software process )个人软件过程. 类型 任务 预计时间 开始时间                结束时间 中断时间 ...

  9. 福大软工1816 · 第三次作业 - 结对项目Salty Fish原型图

    SALTY FISH原型图 LINKS IMPORT to LIST FOCUS TRENDS ANALYSE NIGHT

随机推荐

  1. CCNA学习笔记(1) IOS操作系统 路由器 交换机 启动 自检 以及部分命令

    注意:以下内容是以思科为学习环境 IOS操作系统启动: 路由和交换机和个人电脑启动没有区别,都会发送新号表示启动状态,也会进入系统自检.只得注意的是:1.一长两短的响声是显卡报警. 2.一声长鸣是内存 ...

  2. OSGI企业应用开发(三)Eclipse中搭建Equinox运行环境

    上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架 ...

  3. SAP Overview

    SAP的全称:       Anwendungen Produkte in der Datenverarbeitung (德文,这是原西德产品),翻译成英文就是:System,Applications ...

  4. jQuery星级评论表单美化代码

    最近正在做php第二阶段的项目,由于我们小组做的是游戏评论网站,所以需要用到评分评论的页面,这里我做了个星级评论表单 1.首先,我们需要引入一个jQuery文件,代码如下: /*! * jQuery ...

  5. maven一模块字段调用另一个模块数据生成下拉框

    店铺运营数据录入表实现的下拉框实现 从片区管理中提取分区数据,在招商管理(MIS)模块中获取并以下拉框的形式展现 ctrl类: 1.首先在ctrl类注入需提取另一模块字段的serviceclient接 ...

  6. android中checkbox自定义样式

    1.首先res/drawable中定义checkbox_style.xml样式: <?xml version="1.0" encoding="utf-8" ...

  7. [Objective-C] id类型和instancetype类型

    前些时间在源码里看到instancetype返回类型,一脸惊异,表示接触iOS不久没见过这东西,但发现跟id功能差不多.故查了一些资料,了解了两者之间的区别,故将资料简单翻译整理了一下,为博客充一个数 ...

  8. Django 处理modelform错误信息

    cp:https://blog.csdn.net/qq_34964399/article/details/79781071

  9. HDFS hflush hsync和close的区别

    HDFS的hflush,hsync和close有啥区别,分别做了什么 hflush: 语义是保证flush的数据被新的reader读到,但是不保证数据被datanode持久化. hsync: 与hfl ...

  10. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...