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

 

posted @ 2021-04-11 17:34  计应191西七组  阅读(58)  评论(1编辑  收藏  举报