【结对编程基于java】中小学数学出题系统——图形化界面
中小学数学出题系统UI
不知道为什么个人项目要选择C++的我有话说
个人项目的时候,兴致勃勃地选择了C++,为什么?熟悉啊!
大一开始学习的语言,经历过ccf考试、数据结构各大考验,C++刻骨铭心啊!你要我说C++哪里好,我说不出来,你问我java哪里不好,我也说不出来,仿佛本能一样选择了C++。
现在我明白了为什么不选java,就是怂,对不熟悉的语言的害怕,不敢入手,是一种畏难心理,也是一种偷懒心理。
可是,越害怕的越要来,两个C++的人遇到一起也改变不了需要用java的结局,为什么?因为不会QT,因为C++没有短信服务,所以,又回到了JAVA。
现在我想说,也没那么难嘛嘿嘿嘿!
查阅该项目个人编程 【基于C++个人编程】中小学数学出题系统
查阅学习队友个人编程代码 【基于C++分析队友代码】中小学数学卷子自动生成程序
一、项目要求
1. 用户
小学、初中和高中学生。
2. 功能
- 所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限);
- 用户注册功能。用户提供手机号码,点击注册将收到一个***,用户可使用该***完成注册;
- 用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;
- 密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;
- 用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,…,直至最后一题;
- 最后一题提交后,界面显示分数,分数根据答对的百分比计算;
- 用户在分数界面可选择退出或继续做题;
- 小初高数学题目要求见个人项目【基于C++个人编程】中小学数学出题系统
二、结对编程思路
因为个人项目我们小组都是C++写的,所以大致上没有基于谁的代码,都是重新开始。
1. 分工思路
首先我们思考了java一切都是类的概念,想到了用户类和出题类两个方向。
在用户类中,实现登录、注册、短信验证、密码重置等有关用户信息的函数。
在出题类中,主要实现个人编程中的内容,在这个基础上,实现计分、得出正确答案的功能。
和队友商量过后,我负责用户类,队友负责出题类。
2. 步骤安排
- 第一天两人碰面讨论过后,我们产生了以上的分工,并计划第一步先完成功能的实现,后面再进行图形化界面交互。
- 两天过后,我们都完成了各自的部分,两个人再完成各自部分的图形化界面,将每个界面都设置为一个类,基本上各自要再写3-4个界面,通过监听将界面和功能合在一起。
- 第四天,我们将各自的代码通过实例化组合在一起,调试功能。
三、编程内容总结
1. user—part
完成用户方面的各项功能的类
设立了以下的函数
在jar包同一路径下的usermessage.txt内存入用户信息,在注册时需要写入信息,在登录时需要匹配信息,在重置密码时需要修改信息。
其他部分比较简单,就是文件输入输出流,密码的格式判断,以及短信验证码的发送匹配。
2. SetQuestion
完成出题方面的各项功能
3. 图形化界面
完成图形化界面时,主要是类继承JFrame,在构造函数中添加各类组件,在监听中实例化user_part,调用user_part中的方法,在事例话近下来的界面类,将当前的界面设为不可见。
4. 结果
四、经验、教训总结
1. 收获
-
文件输入输出
在用户类的几个方法中,最难的可能就是文件的读取和写入,也实实在在的练习到了这类方法。java中有很多输入输出流,其中也有很多继承关系,名字也很详细,想要完完全全理清楚记下来还是有些困难,但是多加练习实践还是很多收获的,至少不会害怕此类问题。 -
图形化界面
在结对编程中,我承接了所有的图形化界面美化的工作,对于图形化界面的设置、基础美化也有了自己的心得,到了后面几个界面,流程都很熟悉,对于字体、背景颜色、各类组件的使用都得心应手了。 -
参数传递
在所有类的衔接过程中,参数传递极为重要,这个时候最需要的就是理清思路、沉下心。
在整个项目完成后,打包成jar包发送给队友测试时,发现登录注册功能都无法使用,原因就是在java程序里有一个调用当前路径的函数,但是打包成jar包后这个函数获取不到jar包的路径,也就无法完成文件的读取和写入。
尝试了很多办法之后发现都不行,最后得出两种办法:要么设立绝对路径,在每个测试电脑的固定位置新建一个txt文档,要么就是让测试者手动注入路径。我选择了第二种方法,因为我自己也很不喜欢电脑不知道的地方多出来一个文档。
选择了这个方法,就以为着要在整个过程中传递路径,对参数传递也有了自己的经验。 -
团队合作
合作确实是1+1>2的一个过程,队友不仅仅是帮你分担一部分工作量,更多的是两个人要互相理解配合,互相理清思路,稳定心绪,大大提高效率! -
个人学习
因为我自己对于java没有那么熟练,所以在这个项目工程中很大的锻炼了自学的能力,又不会的就学,出现问题就改。
实践出真知,我现在觉得这种锻炼方式要比从基础开始慢慢磨要好得多。
2. 心得
上图是我们整个的程序包,一共13个类,加起来应该要上千行代码,我和队友用了差不多4天时间。
整个过程肯定不是一帆风顺的,这四天都是早起、熬夜,整天整天地研究代码,在最后临近ddl的时候还出现了很多bug,但是在邮件顺利发过去的时候,我和队友不约而同的拍了一下掌。
没有一蹴而就的成果。非常感谢队友帮助我理清思路,分工明确。我们的分工可能没有任何科学依据,也不是课本里介绍的什么模型,但是在这个项目中应用地很好,在两种代码对接的时候也没有遇到太多的困难。
最后,完成一个符合自己要求的项目,可能是程序员工作中最快乐的事,那一刻满满的成就感,是比的无法比拟的。
希望世界所有程序员,天天开心。