首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 計算機程式開發實戰:設計思路與核心狀態機(一)

     編輯:關於C語言

專案定位

基礎 Windows Forms 程式,實作標準四則運算(加減乘除),針對 VS.NET 開發環境與 WinForms 程式模型初學者。

介面設計:控件清單

類型NameText說明
FormCalcForm計算機主視窗
Buttonbtn0~btn90~9數字鍵
ButtonbtnDot.小數點
ButtonbtnPlus+加法
ButtonbtnSub-減法
ButtonbtnMul*乘法
ButtonbtnDiv/除法
ButtonbtnEqu=等號
ButtonbtnClrAC清除
TextBoxtxtCalc(空)輸入/結果顯示,ReadOnly、RightToLeft

程式結構:核心狀態變數


double acc;      // 運算元 A(累積結果)
double sec;      // 運算元 B(當前輸入)
bool clear;      // 下一數字鍵是否清空顯示
bool first;      // 是否為第一個運算子
string oper;     // 待執行運算子:+ - * / =

事件綁定模式


btnDot.Click += new EventHandler(btn_clk);  // 數字鍵/小數點共用
btnPlus.Click += new EventHandler(btn_Oper); // 運算子共用
btnEqu.Click += new EventHandler(btn_Equ);
btnClr.Click += new EventHandler(btn_Clr);

EventHandler 委派封裝處理函式,sender 參數識別觸發來源按鈕。

運算判斷與核心計算邏輯


void Calc() {
  switch (oper) {
    case "+": acc += sec; break;
    case "-": acc -= sec; break;
    case "*": acc *= sec; break;
    case "/": acc /= sec; break;
  }
  oper = "="; first = true;
  txtCalc.Text = acc.ToString();
  sec = acc; // 支援連續運算:1+2+3=
}
  • first=true 時,首個運算子直接將 sec 指派給 acc(不執行運算)。
  • 後續運算子觸發 Calc() 執行上一個運算,再記錄新運算子。
  • sec = acc 使結果成為下一輪運算的左運算元,實現鏈式計算。

此狀態機設計清晰分離「輸入數值」與「執行運算」兩個階段,是計算機邏輯的經典實作模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved