欢迎来到天天文库
浏览记录
ID:8455641
大小:578.00 KB
页数:13页
时间:2018-03-28
《calculator设计文档》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一、整体设计【View层】:负责接收用户输入、将用户的输入序列传给controller层,然后等待controller返回要回显的东西(可以是正在输入的一串数字,也可以是中间结果)。【Controller层】:负责接收view传来的输入(字符序列),并根据序列特征进行解析(是否根据优先级计算某部分中间结果,是否是异常的不该回显的符号等),如果要计算中间结果就交给module层计算并等待其返回,最后将要回显的字符序列回传给view。【Module层】:负责接收来自controller的计算任务,进行各种一次运算
2、(加、减、乘、除、单目运算等),将计算结果迅速返回给controller(如果是不可能的计算任务,比如div0,得返回特定的错误符号)。用户输入Module(专职计算)Controller(解析序列)View接收输入的单个符号回传需要显示的东西接收计算任务回传计算结果(必要时是错误符号)二、接口设计1、ControllerclassCalculatorControl{public:CalculatorControl(ICalculatorModel*pCalculatorModel);~CalculatorC
3、ontrol(void);//接收用户指令stringReceiveCommand(COMMANDstCommand);//设置计算器的模式voidSetCalculatorForm(CALCULATOR_FORMemStatus);//获取计算器的模式CALCULATOR_FORMGetCalculatorForm(void);//获取用于View显示的数据stringGetStringToDisplay(void);protected://初始化voidInitControl();//获取数字按键对应的s
4、tringstringGetOperatorNumber(OPERATOR_SETemOperator);//获取操作符的优先级intGetOperatorPriority(OPERATOR_SETemOperator);//处理不同的指令voidDisposeCommand(COMMANDstCommand);//检测操作符栈中是否存在指定符号boolCheckOperatorInStack(OPERATOR_SETemOperator);CALC_RESULT_STATUSDoBinOperate(str
5、ing&strErrMsg);CALC_RESULT_STATUSDoUnaryOperate(string&strErrMsg);voidPushToOperatorStack(OPERATOR_SETemOperator);voidPushToOperandStack(stringstrOperand);CALC_RESULT_STATUSProcBinOperator(OPERATOR_SETemBinOp);CALC_RESULT_STATUSProcUnrayOperator(OPERATOR_SE
6、TemUnrayOp);voidProcLeftBracket(void);CALC_RESULT_STATUSProcRightBracket(void);private://操作数栈vectorm_vectorOperandStack;//操作符栈vectorm_vectorOperatorStack;//记录上次操作:,操作数栈;,操作符栈;,尚未入栈的操作数CONTROL_STATUSm_emControlStatus;//记录最后一次运算的右操作数stri
7、ngm_strLastRightOperand;//记录最后一次运算的操作符OPERATOR_SETm_emLastOperator;//尚未入栈的操作数stringm_strInputOperand;//尚未入栈操作数的状态INPUT_STATUSm_emInputStatus;//计算器的模式:,标准模式;,科学模式CALCULATOR_FORMm_emCalculatorStatus;//数字按键与string对照表OperatorNumberMapm_mapOperatorNumberMap;//用于
8、View显示的数据stringStringToDisplay;//底层运算接口ICalculatorModel*m_pCalculatorModel;};2、Model接收计算任务并回传计算结果enumCALC_RESULT_STATUS{CALC_RESULT_NORMAL=0,CALC_RESULT_ERROR,CALC_RESULT_UNUSUAL};classICalculatorModel
此文档下载收益归作者所有