第三次作业——结对编程

031302329 031302320

功能分析:

首先来看这次我们要实现的功能:
将初始的排课excel空表导入系统,再将其展现在你们设计的原型里
简而言之,关键就是要实现将excel的导入导出。那么如何快速便捷的实现这个功能呢?我们一开始想到的便是时下大热的Android APP,便于实时的阅读上传,但是同时问题也暴露出来了,这次的客户要求,是要导入整个excel表格,可以想象这可能是一个很大的表格,不适合在小巧的手机屏幕下浏览,虽然可以将大多数信息隐藏在另一个窗口下,但是这样浏览很不直观,也不利于客户对于各种数据的比较,用户体验并没有想象当中的好。而WEB界面下客户可以直观的看到整张完整的表格,不论是在电脑上(更便于操作与观察,毕竟负责人一般都是在电脑上完成excel上的工作,而不是在手机上,然后可以直接在WEB端上传),还是在手机上(手机上也能打开WEB,可以自由缩放,直观的观察到导出的excel表格)。综上,我们选择了在WEB上进行尝试。

实现思路:

1、使用PowerDesigner 进行数据库设计

数据库设计的考量:

以开课计划书为实体,以年级、专业、专业人数、课程名称、选修专业、学分、学时、实验学时、上机学时、起讫周序、任课教师和备注为属性设计数据库。因为此次作业要求为excel表格导入mysql,以及内容的web显示,所以数据库设计得较为简单,后序步骤中再添加其他实体以及关系。

mysql表设计:

2、功能实现

首先要将excel的数据导入MySQL 数据库。这要怎么做呢?我们2个人想了2个方法。plan a :利用mySql自带的导入功能将excel导入,这个方法不需要编码,可以说很容易做到。但是每次都要填写属性名,可以说是不太方便。所以我们想了一个plan b:利用java程序一键将excel导入mysql数据库。实现方法就是利用poi jar的插件功能,对excel表格按行读入,从上到下,从左到右读入数据 并将每一格的数据存入mysql,这便实现了导入功能。结果展示我们考虑到做android app我们的能力有限,所以选择了Java web实现。通过编写一个jsp页面将mysql中的内容显示在网页中。最终,我们选择了Plan B 实现将excel导入mysql数据库。 Plan B是通过java程序实现的,而数据的显示我们是用java web来实现的。由于时间有限,所以还没有对其进行封装,在之后我们打算利用servlet实现在web上点击“导入”按钮将excel的内容导入mysql。这边的路径是已经定好的,接下来会将其完善成自定义路径。

Plan A(excel手动导入mysql):

这个方法需要手动导入,并不是很方便。

Plan B(利用java程序将excel导入mysql):

(1)将项目导入后,这边我们已经设置好了计算机1.xls的路径

(2)右键项目Run As - Java Application ,单击OK后等待console栏出现finished字样。

(3)使用Navicat for Mysql 打开couse_info表就得到

在web上显示mysql中数据(通过jsp页面)

(1)如图,右键项目

(2)网址输入 http://localhost:8080/CourseManage/ 得到

这样要求的功能就实现了。

附上github commit的记录

我们每人负责一部分代码的完成与修改。因为项目的雏形之前一直没有完成好,所以在github上仓库创建的时间晚了一点。

结对照片:

这是我们在讨论设计数据库的照片。

这是我们在修改bug时的照片。

PSP表格:
========== |PSP|Personal Software Process Stages|Time/h| |---|---|---------| |Planning|计划|| |Estimate|估计这个任务需要多少时间|45| |Development|开发|| |Analysis|需求分析(包括学习新技术)|6| |Design Spec|生成设计文档|5| |Design Review|设计复审|2| |Coding Standard|代码规范|1| |Design|具体设计|16| |Coding|具体编码|8| |Code Review|代码复审|3| |Test|测试(自我测试,修改代码,提交修改)|3| |Reporting|报告|| |Test Report|测试报告|2| |Size Measurement|计算工作量|1| |Postmortem & Process Improvement Plan|事后总结, 并提出过程改进计划|2| ||合计|49|

工具:MySQL,myeclipse

两次结对小结:
张佳俊031302329 1.可能是初次接触如此高强度的实践作业,一开始的时候还并不是很适应,有一种赶鸭子上架的感觉,匆匆忙忙的去学习markdown的编排,学习Axure RP的排版……结果可想而知,匆忙诞生的产物总是不尽如人意,只有有了适当的技术基础,以及充裕的时间,才能把自己内心真正想实现的IDEA用代码来充分诠释。 2.第一次的合作作业中,印象最深的是助教点评的“手机界面比较小,编辑的部分是否再讨论下”,我们然后去观摩了别的组的同学的作业,发现他们特地把界面全部嵌在一个手机界面下, 这样就能更贴近现实的观察到做的APP是否尺寸合适,是否便于观察,这个办法真的不错,赞一个。这两次的作业,让我们充分的认识到,好的想法,程序实现是一个项目的灵魂,但同时,一份好的文档更能让项目升华,毕竟客户首先接触的是项目的策划报告,文字能否抓住客户的需求,能否有让客户迫不及待看完的欲望,这都关乎着整个项目是否能够继续,是否能够被客户采纳。所以,今后的实践中,学好文章的布局跟编排,以及适当的用markdown为文章增色,都是我们要努力学习的重点。 3.最初的想法总是美好的,在放弃APP开发的初始,我们预期做出一个WEB,界面上可以有两个选项,一个是excel导入,一个是excel的导出,可以实现excel一键导入导出。于是我们一开始尝试将表格手动导入MySQL,很容易就能实现,但是后续的实现一键式自动导入却始终没有头绪,网上查找了很久也没找到相关的代码,自己也一时写不出相关的代码实现封装,项目一时陷入了停滞状态,但是在不断的尝试和改进中,我们终于实现了在myeclipse上一键导入的功能,虽然并没有实现封装,WEB的布局也还没开始,但我们的付出,也算是有了满意的回报。

王旭銮031302320
1.说实话真的非常地累,因为本身没有Android的基础,而在上次的原型设计中我们选择了Android APP的方式实现,所以我一开始就硬着头皮去试着做一个将mysql数据库的内容显示在手机上的APP。我参考了许多网上别人的代码,可是没有安卓基础的我连基本的修改代码都做不到,熬夜熬到2,3点,还是毫无头绪,基本的报错都不知道怎么去应对。这样大概浪费了1天左右的时间,我实在没有办法,和队友讨论了一下,他也觉得我们的安卓基础不行,很久都可能做不出来,所以我们开始将方向往java web项目转。因为我们暑假都有一起留校学习,有一点java web 项目的基础,所以做起来不会那么陌生了。这个项目真的很磨练人,程序员应该是见过最多次“凌晨四点的夜晚”的人了。为了实现这次作业的功能,我们查阅了许多资料,参考了许多代码。有时修改错误或者修改功能修改到很晚,不是因为不想睡,而是想尽快把脑子中的想法实现起来,害怕睡醒就忘记了。当然,程序的成功运行也是让人喜悦的。Coding的过程可能比较枯燥,但是在这个过程中,我和小伙伴一起探讨,一起学习,这个过程是十分开心的。
2.这两次的结对作业真的让我学到了很多,上一次作业做得不太理想,我一直在找自己做得不好的地方,努力改正自己的不足。团队合作让我知道了1+1是可以大于2的,有些事情我可能做不好,这时候就需要队友来弥补自己的短处。从上一次作业我懂得了,一份优秀的文档是十分重要的,也是一个“敲门砖”,程序实现是之后的事,首先在想法上需要让客户满意。今后的学习之路上,要想成为一名优秀的、合格的程序员,有着很强的编码能力是远远不够的。现代的程序员还需要掌握写文档的能力,才能为自己的项目增色不少。这次作业让我知道了我还需要学习很多,对于陌生的事物也要勇于地尝试,尝试就是宝贵的学习经验。

最后附上代码库链接:
代码库链接

posted on 2015-09-30 13:31  JudgeGin  阅读(298)  评论(2编辑  收藏  举报