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

26 篇文章 0 订阅
23 篇文章 0 订阅

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

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

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

简版接口:

namespace MyCacl
{
    public interface ICacl
    {
        /// <summary>
        /// 计算结果。
        /// </summary>
        string Result { get; }
        /// <summary>
        /// 算式。
        /// </summary>
        string CaclString { get; set; }
        /// <summary>
        /// 用户是否设置了记忆。
        /// </summary>
        bool HaveMemory { get; }
        /// <summary>
        /// 程序输入。
        /// </summary>
        /// <param name="输入的按钮Text值"></param>
        void EnterString(string str);
    }
}
完整 接口:

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

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

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

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

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

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落单枫叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值