第一课程序框架的构建——C#计算器编程教学

         程序再小,它也要运行的相关功能要求,或者还有扩展需求。比如,算式中有括号怎么办?你们不要被图片中的括号诱导,其实我没实现算式中有括号的功能,那只是取反。

       选择了项目,当然第一步是确定功能需求。本计算器是模仿Win7的基本型,这上面的每一个按钮基本可代表一个功能,分析也简单,英语单词不会查百度。主要功能其实是三个,输入、输出和记忆,也可以考虑可扩展等因素,编写完整实现功能暴露。

       第二步,根据功能需求构建接口。编程的第一个代码应该是接口文件,因为接口定义功能。一个人的项目可以选择简版接口,团队项目选择完整版接口。

简版接口:

namespace MyCacl
{
    public interface ICacl
    {
        /// 
        /// 计算结果。
        /// 
        string Result { get; }
        /// 
        /// 算式。
        /// 
        string CaclString { get; set; }
        /// 
        /// 用户是否设置了记忆。
        /// 
        bool HaveMemory { get; }
        /// 
        /// 程序输入。
        /// 
        /// 
        void EnterString(string str);
    }
}
完整 接口:

namespace MyCacl
{
public interface ICacl
{
/// 
/// 计算的结果显示。
/// 
string Result
{
get;
set;
}
/// 
/// 显示和设置算式。
/// 
string CaclString
{
get;
set;
}
/// 
/// 是否保存结果。
/// 
bool HaveMemory
{
get;
}
/// 
/// 运行计算,显示结果。
/// 
void RunCaclEqual();
/// 
/// 开根号运算。 
/// 
void Square();
/// 
/// 倒数运算
/// 
void Reciproc();
/// 
/// 清除算式和结果。
/// 
void ClearAll();
/// 
/// 清除一个算式。
/// 
void ClearEnter();
/// 
/// 显示保存的结果
/// 
void MemoryRecall();
/// 
/// 清除保存的内容
/// 
void MemoryClear();
/// 
/// 保存算式
/// 
void MemorySave();
/// 
/// 算式结果加保存
/// 
void MemoryAdd();
/// 
/// 算式结果减保存
/// 
void MemorySubtract();
/// 
/// 取反
/// 
void Contrary();
/// 
/// 回删一个字符
/// 
void Backspace();
/// 
/// 输入数字
/// 
/// 
void EnterDigit(string str);
}
}
      第三步,细节分析。有模仿那就直接操作它,看有什么情况需注意和实现的。这个程序其实细节繁多,没有仔细分析程序就出错。

      细节之一,每个按钮随时可点击。不要小看它,这需要随时判断在任何情况下点击应作如何反应。

      细节之二,算式开头不能是操作符,0后面不能是其他数字,只能是点,点小数点后再点小数点怎么办?点了操作符再点操作符怎么办?

      细节之三,不是每个算式都能算出结果,或者算式错了,或者计算过程中超出了C#数据类型的取值范围,需要try catch模块。

      由于要支持键盘录入,可能的细节那可能还有。

      第一课结语。先说构架。界面Ul是winform,然后绑定操作类,操作类实现通知界面变更接口,再加上实现计算的辅助类,和功能接口。

      程序分享,欢迎测试找渣。http://yun.baidu.com/share/link?shareid=1042838818&uk=2751882860



你可能感兴趣的:(C#,教程,编程教学,WinForm)