1. 程式人生 > >初學C#的程式設計小白建立計算器全過程並惡意賣萌(1之製作計算器)

初學C#的程式設計小白建立計算器全過程並惡意賣萌(1之製作計算器)

筆者初學C#第二天,之前接觸過VBA及C,C++,均為很水的水平。感覺學習一門語言還是要在瞭解基本概念以後,直接搭建專案會比較有成就感,也比較有趣。按照前輩們的方法制作了一個計算器,並稍稍加了點女生特有的小心思,現將製作過程詳細給出,希望能幫到和我一樣的初學者。不過因為初學,水平有限(審美水平更有限),所以製作的很粗糙,不當之處請大家指正。

我使用的是VS2010,首先開啟軟體,在如圖所示位置點選“新建專案”

在隨後彈出的介面中,在視窗左側選擇語言為“C#”,中間的介面選擇型別為“Windows窗體應用程式”,如下圖所示


接下來可以看到出現的介面了。其中中間的灰色視窗Form1,就是我們製作計算器的主要戰場啦。此時可以看到在視窗右側有“工具箱”,這是我們進行視窗編輯的工具所在。


如果沒有也不要方,單擊編輯欄中的“檢視”,在下拉選單中就可以找到“工具箱”的字樣,單擊“工具箱”,可以看到視窗右側出現了一個下拉列表,其中的“Button”及“TextBox”就是我們做計算器的外觀所用的主要工具。


首先單擊“Button”,再將滑鼠移到灰色窗體上(以下用Form1)單擊,可以看到窗體上出現了一個按鈕,按鈕就像Word中的圖片一樣可以任意調整尺寸和位置。


我們需要在窗體上新增20個按鈕,注意新增一排以後可以用滑鼠圈選上,用Ctrl+C複製,再用Ctrl+V貼上,也可以圈選上整體調節位置。效果如下


接下來按照上圖所示,點選視窗右邊的TextBox,放置到窗體中一個,用來顯示按鍵值及計算結果。同樣可以調節它的大小及位置。


我們繼續,下面更改按鈕的顯示的數字。首先右鍵單擊左下的那個按鈕,在彈出的下拉選單中選擇“屬性”,可以看到在視窗右側出現了一個名為“屬性”的選單欄。其中的”Text”的值就為按鈕顯示的值。


我們將其改為“0”。可以看到窗體中的按鈕也變為了“0”。


我們再接再厲,將剩下的按鈕都改為相應的數字或計算符號。最後成品如下


怎麼樣,是不是有計算器的樣子了呢?

我們接下來為計算器新增程式碼。需要說明的是在C#中,對每一次操作都命名為“事件”,比如我們點選按鈕等,都叫做“事件”,我們先雙擊“0”按鈕,在彈出的程式碼介面中可以看到,紅框內就是我們在單擊“0”鍵時會發生的事件定義,我們相對於“0”鍵的程式碼也應該填寫在裡面。


接下來我們先為窗體新增需要使用的變數。要知道C#是面向物件的語言,我們的窗體是一個大的操作物件,我們在窗體裡面新增的按鈕等,是大窗體裡面一個個小的操作物件。因此我們在窗體中定義的變數,按鈕等事件也可以引用。紅框中即為窗體的定義。


新增需要使用的變數


接下來我們為“0”按鈕按下的事件新增程式碼,需要注意的是我們需要判定在按下0時,0是不是作為除數,0是不能作為除數的。


接下來為按鈕“1”新增程式碼


請讀者依照“1”的樣式,對剩下的數字按鈕新增程式碼,稍後會給出完整的程式碼

接下來我們對計算符號按鈕進行程式碼新增,首先是“+”


上圖同時給出了“-”的程式碼,請自己嘗試新增“*”,“/”,“log”,“ln”,“開方”(sqrt),“平方”(x2)按鈕的程式碼。

接下來是“C”鍵的程式碼,“C”只是清零。將TextBox的內容清空即可。


然後對“=”進行新增,須知在按下“=”按鈕時,系統才開始進行運算。


至此,我們的計算器部分就完成啦~下面是詳細程式碼。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace thecaculator
{
    public partial class Form1 : Form
    {
        double a = 0;   //記錄計算結果
        double b = 0;   //記錄第一個運算元
        bool c = false;  //當按下"+","-","*","/"等計算符號時將C置為true,
                          //因為按下計算符號後,再按數字時,應當將原有數字清零。

        string d; //記錄計算符號         
        public Form1()
        {
            InitializeComponent();
        }

        private void button20_Click(object sender, EventArgs e)
        {

             if(c==true )              
       {               
           textBox1.Text="";     
            c=false ;
             }         
        textBox1.Text += "0";
            if (d == "/")   //之前按下/號
        {           
                textBox1.Clear();    //清空文字框 
                     //下面彈出警告,請自己嘗試下
            MessageBox.Show("除數不能為零", "錯誤提示", MessageBoxButtons.OK,   MessageBoxIcon.Warning);                               
               }          
        }

        private void button15_Click(object sender, EventArgs e)
        {
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "1";
        }

        private void button14_Click(object sender, EventArgs e)
        {
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "2";
        
        }

        private void button13_Click(object sender, EventArgs e)
        {
        
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "3";
        }

        private void button10_Click(object sender, EventArgs e)
        {
        
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "4";
        }

        private void button9_Click(object sender, EventArgs e)
        {
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "5";
        

        }

        private void button8_Click(object sender, EventArgs e)
        {
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "6";
        }

        private void button1_Click(object sender, EventArgs e)
        {
        
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "7";
        }

        private void button2_Click(object sender, EventArgs e)
        {
        
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "8";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (c == true)
            {
                textBox1.Text = "";
                c = false;
            }
            textBox1.Text += "9";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            c = true;         
       b = double.Parse(textBox1.Text);       
       d = "+";       
        }

        private void button7_Click(object sender, EventArgs e)
        {
         
            c = true;       
       b = double.Parse(textBox1.Text);    
       d = "-"; 
        }

        private void button12_Click(object sender, EventArgs e)
        {
        
            
            c = true;       
       b = double.Parse(textBox1.Text);  
       d = "*";  
        }

        private void button17_Click(object sender, EventArgs e)
        {
            c = true;
            b = double.Parse(textBox1.Text);
            d = "/";       
        }

        private void button5_Click(object sender, EventArgs e)
        {
            c = true;
            b = double.Parse(textBox1.Text);
            d = "x2";       
        }

        private void button6_Click(object sender, EventArgs e)
        {
            c = true;
            b = double.Parse(textBox1.Text);
            d = "sqrt";       
        }

        private void button11_Click(object sender, EventArgs e)
        {
            c = true;
            b = double.Parse(textBox1.Text);
            d = "log";       
        }

        private void button16_Click(object sender, EventArgs e)
        {
            c = true;
            b = double.Parse(textBox1.Text);
            d = "ln";       
        }

        private void button18_Click(object sender, EventArgs e)
        {
                  
       switch (d)         
       {                
                 case "+": a = b + double.Parse(textBox1.Text); break;     
          case "-": a = b - double.Parse(textBox1.Text); break;    
          case "*": a = b * double.Parse(textBox1.Text); break;                           
          case "/": a = b / double.Parse(textBox1.Text); break;           
          case "x2": a = b * double.Parse(textBox1.Text); break;                           
          case "sqrt": a = Math.Sqrt(b ); break;               
          case "log": a = Math.Log(double.Parse(textBox1.Text),b ); break;      
          case "ln": a = Math.Log(b, Math.E); break;
               }                                                 
        textBox1.Text = a + "";               
        c = true;                         

        }

        private void button19_Click(object sender, EventArgs e)
        {
            textBox1.Text ="";

        }


    }
}

計算器部分基本上全部借鑑於一個前輩的經驗分享,以下為原文章連結,如有侵權,請聯絡我刪除

http://www.th7.cn/Program/net/201311/158591.shtml

接下來要在計算器上做一點小手腳啦,也是惡意賣萌的部分,這部分會在接下來(2)部分給出。