结队编程总结分析

结对编程总结分析

一、项目要求

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,让我真的学到了一些东西。有收获就好。

我现在这么努力奋斗,就是为了以后我爱的能够幸福。

原文地址:https://www.cnblogs.com/HnuLyx/p/11605267.html

时间: 2024-08-30 12:35:03

结队编程总结分析的相关文章

j结队编程代码分析

首先看运行结果: 优点: (1) 思路清晰,在代码里用到了很多的函数,这些函数能够使人比较绒内衣清楚他的思路. (2) 代码简洁,没有过多的重复的代码片段,这也是使用多个函数的原因. (3) 程序实现了大部分题目要求. 缺点; (1) 在程序刚运行时如果给出提示输入用户名和密码会更好. (2) 在一些变量的定义中,如果能在后面注释是什么意思,干什么用的会让人更容易看懂代码. (3) 在输出题目时没有在行首输出题目的序号. 收获: 在以审查的目光去看别人的程序代码时,会有着很不同的感觉.会拿着别人

结队编程第三次作业

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Simple_arithmetic //简易四则运算{ class Program { public static void Ni() { Console.WriteLine("请输入您想做的运算: "); Console.WriteLine("输入 [+] 表示加法"); C

结队编程1-四则运算(107、120)

[码市链接]https://git.coding.net/Luojiening/Teamwork1.git a.需求分析 将这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序. 1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算: 2.有计时功能,能显示用户开始答题后的消耗时间: 3.界面支持中文简体/中文繁体/英语,用户可以选择一种. b.功能设计 1.生成自定义数目算术

【UNIX网络编程(四)】TCP套接字编程详细分析

引言: 套接字编程其实跟进程间通信有一定的相似性,可能也正因为此,stevens这位大神才会将套接字编程与进程间的通信都归为"网络编程",并分别写成了两本书<UNP1><UNP2>.TCP套接字编程是套接字编程中非常重要的一种,仔细分析,其实它的原理并不复杂.现在就以一个例子来详细分析TCP套接字编程. 一.示例要求: 本节中试着编写一个完成的TCP客户/服务器程序示例,并对它进行深入的探讨.该示例会用到绝大多数的基本函数,未用到但比较重要的函数会在后面的补充上

结队编程之总结篇

结对编程之总结及体会 短暂而又漫长的俩周时间,我和我的队友黄冠译将结队编程的作业刚刚做好.先介绍一下我的队友黄冠译,大学三年的同学,对他挺熟悉,知道他编程特别厉害,喜欢专研.这次老师给我们这样好的机会,让我们交流,共同完成一个小的项目.我觉得我的队友特别聪明,特别有思想,最开始我没有想到会用C语言写界面,我学的C语言只不过是出现一个小黑框而已,再无深入,我队友提出用C语言的图形库来写界面,我在那时候只有震惊.可能是学的知识有限,只知道C语言就是用来写个小黑框的还能干什么.当我的队友把这次结队编程

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

结队编程——电梯调度

这次老师布置的作业是:结队编程完成电梯的调度. 1.与我结队编程的队员是张舒瑞:http://www.cnblogs.com/bjzsr/ 附上我们一起讨论编程问题时的照片: 2.让我来介绍一下我的队员张舒瑞:他是一个很外向的人,性格很活泼,也很聪明.我们从大一到现在一直都挺熟的,所以在讨论过程中不存在什么交流障碍. 3.在这次结队编程中,他负责写的是查找电梯函数的部分,我负责的是接人函数的部分.他编的代码很精简,而我总觉得我写的代码很繁琐,所以他比较注重算法效率,而我是特别注重界面美观的那一个

日程管理系统代码维护第二弹(结队编程)

结队编程的好处: 第一:培养新人,促进沟通,提升团队整体能力. 第二:更好的知识共享和信息交流,促进团队协作. 第三:促进团队成员的沟通,提升团队凝聚力. 但由于我们一开始的工作模式都是个人的,现在开始了这个结队编程少许有些不适应.因为要开始慢慢习惯队友的工作方式,习惯她的思考方式.一开始策划时意见总会不统一,在两个人慢慢磨合的情况下,开始了正式的工作. 首先我们两个人通读了这个日程管理系统,找出其中的BUG并且改正,在改完BUG后,开始改进和美化.它的程序里个人中心的界面是空白的,我们先画好界

20165214 结队编程项目-四则运算(第二周)

20165214 第一次结队编程项目--四则运算第二周 需求分析 本周的结队编程想要实现一个四则运算系统,它可以自动生成n个计算题(本周不包括分数),其中n由我们输入.每输出一道题目,运行程序的人需要输入相应的答案,直到最后一道题做完.最后,统计正确率.然后,在这个基础上可以进行相应的功能扩展,比如语言支. 设计思路 我需要在上周的基础上对程序进行补充.在题目的生成上,应该再加上括号.÷./ 本周达成: ①能够随机生成n道题目,n由我们输入,最大长度可直接在程序里面修改: ②支持真分数运算: ③