• 松耦合实现方案


    本次程序实现了一个小学生算术题出题系统。主要实现了以下三个功能:

    出题、判断答案对错、计算。

    出题阶段,用户可以指定出题的要求,如运算中是否出现负数、括号、乘除等。

    本程序由Core、UI、Console三部分组成。Core承担了核心功能,即接收用户输入,返回用户期望的结果;UI提供了一个简单的图形界面交互;Console部分实现了命令行方式的调用。

    Core部分对外提供两组API:

    1.统一的一个接口

      public string Process(string[] args)。直接将用户参数传入到命令行,调用Process方法即可执行。返回值全部为string类型,如果是需要返回值的功能(如判断对错),则正常情况下返回结果,错误返回特定标识符标记失败;对于无需返回结果的功能(如生成),则返回成功或失败标记。特别的,对于失败情况,会抛出经过封装的相应异常,上层可以根据异常信息判断错误,并反馈给用户。

    2.划分功能的多个接口

      public void Generate(int cnt, int maxvalue, int maxsize, bool fraction, bool muldiv, bool bracket, bool positive)

      public string Check(string pathQ, string pathA)

      public string Calc(string str, int precision)

      使用这三个接口,上层调用者传入合适的参数,即可执行。三个函数根据需要有或无返回值,遇到异常情况均会抛出相应的异常供调用者分析。

    对于异常:

      程序中自定义了

      public class FormulaNotLegalException : Exception

      public class ParameterErrorException : Exception

    两个异常,使用了运行时的堆栈异常和除零异常,实现了所有情况的异常处理。前端只需要判断异常类型,即可知道用户是否输入合法或程序是否正确执行。

    实现中特别注意的地方:由于对于算式输入的定义不同,有些算式存在空格,有些不存在空格。本程序在实现时做成两种情况都可以处理。算法上,程序实际处理的是不包含空格的情况,对于含有空格的,全部替换成空串后进行处理。

    容易出现的问题:

      虽然接口的定义可以处理大多数情况的出现,但是还是存在一些问题。

      本程序计算模块对于输入算式的要求中有:所有负数必须用小括号括起来,但是衔接的用户界面并没有对这个要求作出检查,导致本应合法的算式被判定成非法。

      改进方法:使用中间层,如果用户输入不满足核心模块要求,根据实际情况给前端反馈错误或处理成可以满足要求的输入格式。

  • 相关阅读:
    模块cv2的用法
    调整弹出对话框在ASP.NET应用程序的大小
    xaf 自定义登陆页
    xaf 修改主页logo
    显示一个列表视图图表
    双击直接编辑状态
    xaf 富文本框添加方法
    用户 'NT AUTHORITYIUSR' 登录失败
    C# 中的INotifyPropertyChanged
    线程间操作无效: 从不是创建控件“txtreceive”的线程访问它。
  • 原文地址:https://www.cnblogs.com/-OwO-/p/4857666.html
Copyright © 2020-2023  润新知