第一课程序框架的构建——C#计算器编程教学
来源:互联网 发布:淘宝网沙发布料 编辑:程序博客网 时间:2024/05/22 08:02
程序再小,它也要运行的相关功能要求,或者还有扩展需求。比如,算式中有括号怎么办?你们不要被图片中的括号诱导,其实我没实现算式中有括号的功能,那只是取反。
选择了项目,当然第一步是确定功能需求。本计算器是模仿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
0 0
- 第一课程序框架的构建——C#计算器编程教学
- 第十六课程序的测试和修改——C#计算器编程教学
- 第十八课程序容错能力——C#计算器编程教学
- C#计算器编程教学课程前言
- 第十一课私有变量——C#计算器编程教学
- 第四课输入时的细节处理——C#计算器编程教学
- 第八课等于之集合对象的操作——C#计算器编程教学
- 第二课用循环简化编程——C#计算器编程教学
- 第三课输入和显示——C#计算器编程教学
- 第五课等于之解决思路——C#计算器编程教学
- 第六课等于之对象相加——C#计算器编程教学
- 第七课等于之算式还原——C#计算器编程教学
- 第九课等于之关键调用——C#计算器编程教学
- 第十课等于之调用关键调用——C#计算器编程教学
- 第十二课通知界面变更接口——C#计算器编程教学
- 第十三课功能键之开根号——C#计算器编程教学
- 第十四课功能键之取反——C#计算器编程教学
- 第十五课代码复用——C#计算器编程教学
- 《java入门第一季》之面向对象面试题(形式参数的问题)
- Web系统大规模并发——电商秒杀与抢购
- 线程面试题TOP50
- Web前端学习笔记:Bootstrap框架 - 夏天的森林 - 博客园
- Android系统目录结构
- 第一课程序框架的构建——C#计算器编程教学
- 让UILabel的文字顶部对齐
- Qt使用中的小问题
- #pragma used
- Struts2<s:iterator value="" var="lst">中var的使用和一些标签的使用体会
- 【UNET自学日志】Part18 修复一些错误
- poj1129Channel Allocation 乱做,dfs或+四色定理
- Android_Proguard代码混淆器
- 2016你必须知道的IT圈十二大科技常用语