一、项目简介

功能描述:实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。

 

个人负责任务: 实现界面设计以及算法处理逻辑设计

 

个人博客链接

 

二、功能架构图

java识别计算题_java

 


 

 

三、个人任务简述

描述自己负责的模块、功能、完成了什么任务。

1. 完成的任务与功能

简单描述将自己完成的有特色的地方、重难点地方。

序号

完成功能与任务

描述

1

随机生成算式

使用java的Arraylist随机生成string算式返回。

2

算式计算

对string算式格式化判断,分离数字和符号,返回运算结果。

3

文件读写和保存

读入成绩文件到arraylist容器中,将每次的测试结果写入到文件中。

4

界面设计

采用java的swing组件进行开发,包括

 

 

2. Git提交记录截图:

本人在项目中的提交提截图。最多1页。

 

四、本人负责功能详解

1. *随机生成算式功能:

调用java的math中的random随机生成1-100之间的两个整数,然后随机生成一个符号进行组合生成字符串,存入到arraylist容器中,最后返回。

关键代码截图

 

java识别计算题_java_02

3. *算式计算部分

分离string字符串对应的两个整数和一个符号,进行运算返回结果。难点就是java的类型转换方法。

关键代码截图

java识别计算题_界面设计_03

 


 

 

 

 

 

3.文件的读写和保存

Grade.txt文件保存每次得分的情况数据

 

文件读写通过格式化读写到Arraylist容器然后进行使用,读入完成进行数据排序,使用collections中的sort函数。

 

java识别计算题_java识别计算题_04

 

 



java识别计算题_文件读写_05

 

 

java识别计算题_界面设计_06

 

 


4. 界面设计

采用java的swing组件进行开发,使用jlabel数组10个生成算式,以及10个jtextfield输入运算答案,在提交和清空按钮上设置了监听器,分别将结果显示和文件保存到grade.txt以及清空输入框内容。

排行榜模块使用html语言嵌入jlabel中,实现格式化输出。

 

java识别计算题_界面设计_07

 

 

五、课程设计感想

本次课程设计我采用了javaGUI和文件保存的方式,实现了一款算术运算测试的java小demo,在实现的过程中,我采用类似于mvc的编程原理和思想,数据处理和操作以及图形界面相分离的方法,在数据处理的类中,通过文件读写以及随机算式生成和算式计算实现,在界面设计上,采取了控件数组的方式,简化了代码,减少了代码的长度,采用流式布局管理器以及JTabbledPane组件实现了分别显示运算测试界面和排行榜界面。实验开发中,刚开始对于布局管理不是很熟悉,因此对于界面布局调整调试了一些时间,同时在设置jlabel标签的时候出现了一些问题,最后通过设置类似于 problems[i].setPreferredSize(new Dimension(100,30));来解决setsize不能设置size的问题。在数据显示的部分也是一个难点,排行榜的形式,我采用的是一个jlabel嵌入到jpanel中显示,但是结果发现不能显示正常,后来摸索了空格嵌入到了html标签的方法来实现正常的显示,同时采用了pre的标签使得前置空格可以正常打印。

本次课程设计,在复习了原来java语言和gui以及文件io的相关知识的基础上,也培养了我独立思考的能力,以及独立解决问题的能力。

 

六、展望

不足之处:

界面的可读性还需要增强,同时可以增加用户登录的方法,记录不同用户的不同得分,以及排行榜的显示,同时,可以添加算术测试的时间限制,对于时间上加以评分。

课设后需要进一步学习数据库保存的方式,去修改原来的文件保存的方式,同时,学习junit单元测试,对开发的demo进行一些函数和功能的测试,保证边界条件设置合理,程序的鲁棒性较好。