一、项目简介
功能描述:实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。
个人负责任务: 实现界面设计以及算法处理逻辑设计
个人博客链接:
二、功能架构图
三、个人任务简述
描述自己负责的模块、功能、完成了什么任务。
1. 完成的任务与功能:
简单描述将自己完成的有特色的地方、重难点地方。
序号 | 完成功能与任务 | 描述 |
1 | 随机生成算式 | 使用java的Arraylist随机生成string算式返回。 |
2 | 算式计算 | 对string算式格式化判断,分离数字和符号,返回运算结果。 |
3 | 文件读写和保存 | 读入成绩文件到arraylist容器中,将每次的测试结果写入到文件中。 |
4 | 界面设计 | 采用java的swing组件进行开发,包括 |
2. Git提交记录截图:
本人在项目中的提交提截图。最多1页。
四、本人负责功能详解
1. *随机生成算式功能:
调用java的math中的random随机生成1-100之间的两个整数,然后随机生成一个符号进行组合生成字符串,存入到arraylist容器中,最后返回。
关键代码截图
3. *算式计算部分
分离string字符串对应的两个整数和一个符号,进行运算返回结果。难点就是java的类型转换方法。
关键代码截图
3.文件的读写和保存
Grade.txt文件保存每次得分的情况数据
文件读写通过格式化读写到Arraylist容器然后进行使用,读入完成进行数据排序,使用collections中的sort函数。
4. 界面设计
采用java的swing组件进行开发,使用jlabel数组10个生成算式,以及10个jtextfield输入运算答案,在提交和清空按钮上设置了监听器,分别将结果显示和文件保存到grade.txt以及清空输入框内容。
排行榜模块使用html语言嵌入jlabel中,实现格式化输出。
五、课程设计感想
本次课程设计我采用了javaGUI和文件保存的方式,实现了一款算术运算测试的java小demo,在实现的过程中,我采用类似于mvc的编程原理和思想,数据处理和操作以及图形界面相分离的方法,在数据处理的类中,通过文件读写以及随机算式生成和算式计算实现,在界面设计上,采取了控件数组的方式,简化了代码,减少了代码的长度,采用流式布局管理器以及JTabbledPane组件实现了分别显示运算测试界面和排行榜界面。实验开发中,刚开始对于布局管理不是很熟悉,因此对于界面布局调整调试了一些时间,同时在设置jlabel标签的时候出现了一些问题,最后通过设置类似于 problems[i].setPreferredSize(new Dimension(100,30));来解决setsize不能设置size的问题。在数据显示的部分也是一个难点,排行榜的形式,我采用的是一个jlabel嵌入到jpanel中显示,但是结果发现不能显示正常,后来摸索了空格嵌入到了html标签的方法来实现正常的显示,同时采用了pre的标签使得前置空格可以正常打印。
本次课程设计,在复习了原来java语言和gui以及文件io的相关知识的基础上,也培养了我独立思考的能力,以及独立解决问题的能力。
六、展望
不足之处:
界面的可读性还需要增强,同时可以增加用户登录的方法,记录不同用户的不同得分,以及排行榜的显示,同时,可以添加算术测试的时间限制,对于时间上加以评分。
课设后需要进一步学习数据库保存的方式,去修改原来的文件保存的方式,同时,学习junit单元测试,对开发的demo进行一些函数和功能的测试,保证边界条件设置合理,程序的鲁棒性较好。