个人开发流程——计应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#语言知识的充分运用以及理解,使自己的编程水平得到了一点点的提高。我觉得自己在处理问题方面的能力也提高了,比如在编程中有时会忘记一些小步骤,未给变量赋初值就直接使用,导致程序无法运行。这时我会认真思考问题,调试代码,查找错误,理顺这其中的逻辑关系,然后再对程序进行修改,从而克服困难。

浙公网安备 33010602011771号