1.在我的项目的基础上,实现带UI的小初高数学学习软件。算法
1.和队友花了些时间谈论大致框架(草稿,有点丑)和大概功能。编程
2.咱们封装了一些经常使用的Swing组件,须要调用时传入参数,调用便可,很方便。框架
例如按钮类:eclipse
3.把界面大概的搭起来,前先后后大概20个界面。函数
4.内部代码的实现,把一些界面的操做,其中生成问题用的是原我的项目的问题生成。学习
5.把代码和界面连接起来(其实作好一个内部代码,就搭一个)。测试
6.测试,咱们都测试了好屡次,检验无错误后就算结束该项目的编程部分。 spa
功能,界面太多,就不放图了,小功能,好比密码错误时输入框下方的红色提示功能,输入提示功能,弹出提示对话框等等也不写了。3d
1)选择啥都会进入登录界面,可是不一样的选择,登录后打开的界面不一样,一个打开作题界面,一个打开错题本界面。调试
2)为了用户体验好,只要登录了,能够从任一个界面去另外一个界面。换句话说两个界面能够打开对方。能够从作题界面到我的信息到错题本,错题本能够直接到作题界面。
1)登录 输入帐号密码,先检查帐号是否已注册,若是帐号已注册,匹配密码又正确的话就登录成功。
2)注册 输入手机号,检查格式,正确就发送验证码,而后输入的验证码正确就进入注册界面,默认昵称(不输入)是手机号,输入密码,密码有格式检查,还检查两个同样不,完成后注册成功跳到登陆界面。
3)忘记密码 输入手机号,检查格式,检查是否已注册,未注册就不给改密码,注册的发验证码,输入验证码正确就显示密码更改界面,检查密码是否一致,是否格式正确,正确后回到登陆界面。
1)注销 退出登陆,回到主界面。
2)作题 根据喜爱(我的信息能够设置,未设置默认空),默认一个等级(可经过下拉菜单改变),而后输入题目数量(10~30道),输入测试时间(1~40分钟),输入均合法后,点击测试,就开始作题,作题时可切换上一题下一题(符合逻辑的,如第一题时上一题按钮不可按),而后经过本身点击交卷或者时间到了自动交卷,而后获得分数。
3)更新最大分 每一个用户设置了3个最大分,对应小学,初中,高中。每次获得分数,若是更高就更新。刚注册的用户是全0.0(double);
4)我的界面 5个小功能 分别是①修改昵称(取个个性的,炫酷的名字吧)此界面也能够看到一些基本信息如电话号码,昵称,3个等级最高分;②修改作题偏好;③修改密码(须要先输入密码);④查看错题本(就是这我的的错题本界面);⑤删除帐号,这个功能会删除我的的一切信息,从注册表(用户信息)删除,删除我的最大得分记录,删除本身的错题本,删除本身的生成试卷。
5)刷新 这个按钮是用来更新你的操做,如修改昵称(界面是静态的你修改以前打开,此时显示的昵称是以前的,刷新后是修改后的,或者从新打开作题界面也是更新的) 。
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,让我真的学到了一些东西。有收获就好。
我如今这么努力奋斗,就是为了之后我爱的可以幸福。