结队编程总结分析
结对编程总结分析
一、项目要求
1.在个人项目的基础上,实现带UI的小初高数学学习软件。
二、实现过程
1.和队友花了些时间谈论大体框架(草稿,有点丑)和大概功能。
2.我们封装了一些常用的Swing组件,需要调用时传入参数,调用即可,很方便。
例如按钮类:
3.把界面大概的搭起来,前前后后大概20个界面。
4.内部代码的实现,把一些界面的操作,其中生成问题用的是原个人项目的问题生成。
5.把代码和界面链接起来(其实做好一个内部代码,就搭一个)。
6.测试,我们都测试了好多次,检验无错误后就算结束该项目的编程部分。
三、实现功能
功能,界面太多,就不放图了,小功能,比如密码错误时输入框下方的红色提示功能,输入提示功能,弹出提示对话框等等也不写了。
1.主界面 可以选择登陆错题本还是做题本。
1)选择啥都会进入登陆界面,但是不同的选择,登陆后打开的界面不同,一个打开做题界面,一个打开错题本界面。
2)为了用户体验好,只要登陆了,可以从任一个界面去另一个界面。换句话说两个界面可以打开对方。可以从做题界面到个人信息到错题本,错题本可以直接到做题界面。
2.弹出登录界面,可以选择登陆,注册账号,忘记密码。
1)登陆 输入账号密码,先检查账号是否已注册,如果账号已注册,匹配密码又正确的话就登陆成功。
2)注册 输入手机号,检查格式,正确就发送验证码,然后输入的验证码正确就进入注册界面,默认昵称(不输入)是手机号,输入密码,密码有格式检查,还检查两个一样不,完成后注册成功跳到登录界面。
3)忘记密码 输入手机号,检查格式,检查是否已注册,未注册就不给改密码,注册的发验证码,输入验证码正确就显示密码更改界面,检查密码是否一致,是否格式正确,正确后回到登录界面。
3.做题界面,可以选择做题或者进入个人信息界面或者注销。
1)注销 退出登录,回到主界面。
2)做题 根据喜好(个人信息可以设置,未设置默认空),默认一个等级(可通过下拉菜单改变),然后输入题目数量(10~30道),输入测试时间(1~40分钟),输入均合法后,点击测试,就开始做题,做题时可切换上一题下一题(符合逻辑的,如第一题时上一题按钮不可按),然后通过自己点击交卷或者时间到了自动交卷,然后得到分数。
3)更新最大分 每个用户设置了3个最大分,对应小学,初中,高中。每次得到分数,如果更高就更新。刚注册的用户是全0.0(double);
4)个人界面 5个小功能 分别是①修改昵称(取个个性的,炫酷的名字吧)此界面也可以看到一些基本信息如电话号码,昵称,3个等级最高分;②修改做题偏好;③修改密码(需要先输入密码);④查看错题本(就是这个人的错题本界面);⑤删除账号,这个功能会删除个人的一切信息,从注册表(用户信息)删除,删除个人最大得分记录,删除自己的错题本,删除自己的生成试卷。
5)刷新 这个按钮是用来更新你的操作,如修改昵称(界面是静态的你修改之前打开,此时显示的昵称是之前的,刷新后是修改后的,或者重新打开做题界面也是更新的) 。
4.错题本界面
1)功能就是可以打开当前用户的错题本(分为3个,分别记录小学,初中,高中)(附带答案)。
画了几个 简 易 的 流程图(主要项目太大,一些功能和细节其实已经省略了)。
主界面
做题界面
错题界面
四、遇到的困难
1.格式问题,Java是UTF-8,传输是UTF-8,txt是ANSI(自动生成)。同时为了用户感官好一点,我们坚持使用“²”代替“^2”,有中文字符,然后就会乱码(“²”变成“?”)。解决的方法是把
file.createNewFile()这个不带参数的默认生成函数,换成带参数的流函数。这样在IDEA和eclipse环境都不会乱码,但是为了方便验收,弄了一个jar,这个jar还是会乱码 (所有的“²”变成“?”)。另外,有一个神奇的现象,读取的(前期为了验证功能手敲的txt)txt,总是会把第一行多读一个长度(两个值为负的字节),问题是输入还是一样的,你能想象我String str="张三1";读取的也输入,是user[0]="张三1",然后user[0].equal(str)=false时我一脸懵逼吗,各种调试,输出都没解决,最后一个字符一个字符比较,才发现这个问题,手动输入的第一行会出现多一个长度的问题(可以通过保持第一行是回车,或者每次第一行只取子串来解决),不过最后这个对我们项目没影响,因为 我们不要手动输入txt啊。
2.一开始讨论计算答案方式,说要么用逆波兰(预估80行,O(n))要么用字符串处理直接算(预估100行代码,O(n),但是常系数更大(后面发现不止,哈哈哈哈))。(算法大概是深搜到第一个匹配的左右括号,处理它,然后找下一个匹配括号,相当于我处理的都是没括号的字符串,注意特殊处理sin,根号什么的就行)最后大概和别人讨论了一下,别的人大多 是使用自带函数或者逆波兰,一合计自带函数锻炼效果不好(当时说实在写不出就用,哈哈哈哈),逆波兰大家都在用(主要觉得都一样没亮点),我们就用深搜搜索+字符处理。然后噩梦就开始了,各种想得到的想不到的bug就出来了,从预估的100行(一开始就差不多100行),然后写到了快500行。各种bug就不一一说了,辛酸泪。然后总结了一下这个问题,处理的麻烦是因为我处理的是纯字符串(中间过程的数字也会再次插入字符串来计算),而逆波兰出来的数字就一直是数字,不再插入字符串。虽然大概知道了这个算法相比于逆波兰的缺陷,但苦于一直没找到合适的方法(除了波兰和逆波兰),所以也没什么好的改进办法。
五、总结
先分析,讨论出框架很重要,我们讨论的框架90%以上都实现并使用了的,最后其他加功能补充这个框架就行。还得多沟通,和队友沟通的多,效率高一些。虽然计算的时候出了很多bug让我愁白了头,但改了很多bug,让我真的学到了一些东西。有收获就好。
我现在这么努力奋斗,就是为了以后我爱的能够幸福。