前置说明
- This is a big assignment for NJUPT algorithm and data structure programming week.
- The address of “Result.txt” file has been changed to Disk D.
- This program is based on QC 4.11.0 and QT 5.14.
Github链接
功能介绍
(1)UI模块
UI模块采用基于C++的QT软件进行设计,实现开始、答题和结束三大界面。其中答题界面使用QWidget模块进行页面切换,一个页面代表一种题型,对各题型中的每道题则对文本框的内容进行切换显示。
利用QT信号与槽的功能,实现几个按钮的功能如下:
void on_Start_clicked();//开始按钮,负责用户提交题目生成请求和提交答案请求
void on_Next_clicked();//下一题按钮,负责用户切题
void on_Previous_clicked();//上一题按钮,负责用户切题
void on_Return_clicked();//返回按钮,负责结束后用户查看结果
UI美化:针对QSlider进行样式美化,对整体背景使用纯白渐变效果,对开始按钮使用加红渐变美化,对切题按钮使用渐变、停留变色美化,整体观感更加和谐美观。
(2)随机表达式生成模块
针对整体框架,设计五大Generate函数和numcreate、numcreate2两大随机数生成函数,各函数解释如下:
float numcreate();//利用C++11 random_device标准库生成超大真随机数
void numcreate2();//将超大随机数根据nummax控制大小,根据shuliang选择产生的运算数并将对应好大小的随机数存入float数组以待使用
std::string Generate1();//小数(可选)
std::string Generate2();//小数(可选)+负数
std::string Generate3();//小数(可选)+括号
std::string Generate4();//小数(可选)+负数+括号
std::string Generate5(std::string str);//去掉字符串里的小数
(3)存储答案模块
各存储功能介绍如下:
float num[1000];//存储随机给出的运算数(若为非小数则表示为.000000在Generate5函数中会进行去0处理)
int shuliang;//运算数
int nummax;//10\100\1000以内的运算
int choose_decimal;//是否选择小数
int judge_negative;//是否选择负数
int judge_brackets;//是否选择括号
std::string Caculate_str;//存储最终需要计算的字符串表达式
int choose_number;//选择题数量
int judge_number;//判断题数量
int fill_number;//填空题数量
double result_num;//计算结果
int Over;//判结束状态,一旦结束将会在前面给出正确答案
std::vector<std::string>All_calculation;//存放所有表达式
std::vector<double>All_right_ans;//所有正确答案
std::vector<double>All_user_ans;//所有用户答案
std::vector<int>All_choose_ans;//所有选择的位置,用于随机生成ABC答案
std::vector<int>All_judge_ans;//所有判断的位置(12),用于随机生成对错答案
int current_position;//设置为当前题目所在位置,这个参数可以控制QWidget计算界面里三种题型的切换
std::vector<int>state;//设置作答状态(01),用于判断是否要将已答过的题再次显示给用户看
在最后计算得分时,直接看所有用户答案和所有正确答案的匹配情况。
(4)字符串表达式计算模块
利用堆栈的思想,将中缀表达式转成后缀表达式,核心代码如下:
double Cal_result(string str)
{
format(str);
string temp;
convert(str, temp);//求后缀表达式
return calculate(temp);
}
四大模块协同工作。
QT缩放方法
右键我的电脑-属性–高级系统设置–环境变量–(用户变量)新建
变量名:QT_SCALE_FACTOR
变量值:1 或 1.25 或 1.5(对应界面放大程度,可以都试试)
设置后一路点确定,出来。
重新打开Qt Creator,看看哪种界面大小是你想要的