个人开发流程——计应191西第七小组王子嫣
需求分析:
设计一个简单的四则运算
程序:
1 public class Calculator 2 { 3 public Calculator() 4 { 5 _OptStack = new Stack<char>(); 6 _SuffixStack = new Stack<float>(); 7 } 8 9 private Stack<char> _OptStack; 10 private Stack<float> _SuffixStack; 11 12 public float Calculate(string expression) 13 { 14 string lastNum = string.Empty; 15 for (int i = 0; i < expression.Length; i++) 16 { 17 if (char.IsNumber(expression[i]) || expression[i].Equals('.')) 18 { 19 lastNum += expression[i]; 20 } 21 else 22 { 23 if (lastNum != string.Empty) 24 { 25 Merger(float.Parse(lastNum)); 26 lastNum = string.Empty; 27 } 28 AddOpt(expression[i]); 29 } 30 } 31 if (lastNum != string.Empty) 32 { 33 Merger(float.Parse(lastNum)); 34 } 35 while (_OptStack.Count > 0) 36 { 37 Merger(_OptStack.Pop()); 38 } 39 40 return _SuffixStack.Pop(); 41 } 42 43 private void AddOpt(char opt) 44 { 45 if (_OptStack.Count == 0) 46 { 47 _OptStack.Push(opt); 48 return; 49 } 50 if (opt.Equals(')')) 51 { 52 while (!_OptStack.Peek().Equals('(')) 53 { 54 Merger(_OptStack.Pop()); 55 } 56 _OptStack.Pop(); 57 return; 58 } 59 char tempOpt = _OptStack.Peek(); 60 if ((opt.Equals('-') || opt.Equals('+')) && 61 (tempOpt.Equals('*') || tempOpt.Equals('/'))) 62 { 63 while (_OptStack.Count > 0) 64 { 65 Merger(_OptStack.Pop()); 66 } 67 } 68 69 _OptStack.Push(opt); 70 } 71 72 private void Merger(float exp) 73 { 74 _SuffixStack.Push(exp); 75 } 76 77 private void Merger(char exp) 78 { 79 float num1 = _SuffixStack.Pop(); 80 float num2 = _SuffixStack.Pop(); 81 float result = 0; 82 switch (exp) 83 { 84 case '+': 85 result = num2 + num1; 86 break; 87 case '-': 88 result = num2 - num1; 89 break; 90 case '*': 91 result = num2 * num1; 92 break; 93 case '/': 94 result = num2 / num1; 95 break; 96 } 97 _SuffixStack.Push(result); 98 } 99 }
任务内容 | 计划共完成需要的时间(h) | 实际完成需要的时间(h) |
---|---|---|
计划 | 10 | 14 |
开发 | 8 | 10 |
需求分析 (包括学习新技术) | 0.5 | 0.5 |
· 生成设计文档 | 1 | 1 |
· 设计复审 (和同事审核设计文档) | 1 | 1 |
代码规范 (为目前的开发制定合适的规范) | 1 | 1 |
具体设计 | 1 | 1.5 |
具体编码 | 2 | 3 |
· 代码复审 | 0.5 | 0.5 |
· 测试(自我测试,修改代码,提交修改) | 1 | 1.5 |
报告 | 1.5 | 3.5 |
· 测试报告 | 1 | 2 |
计算工作量 | 0.5 | 0.5 |
· 事后总结 ,并提出过程改进计划 | 1 | 1 |
总结:
在完成这个项目的过程中,加深了我对C#语言知识的充分运用以及理解,使自己的编程水平得到了一点点的提高。我觉得自己在处理问题方面的能力也提高了,比如在编程中有时会忘记一些小步骤,未给变量赋初值就直接使用,导致程序无法运行。这时我会认真思考问题,调试代码,查找错误,理顺这其中的逻辑关系,然后再对程序进行修改,从而克服困难。