C#002

                                                                                         實訓第二天
************************************************************************************************************************

        今天是實訓的第二天,中午在教室小憩一會兒,醒來頭很疼(還想再睡)感覺到累了。
講的內容較昨天多,最讓人頭疼的是代碼部分的練習,繞來繞去思維有點亂了 思維亂了心情糟了,再循環下去就有可能導致個人“死機”(崩潰),所以要break下!
   自己也明白知識是一點一點積累的 思路在亂的時候需要整理,可是在真正面對時我會真正靜下來嗎?這個也是一個考驗,來吧,我全都接受,我可以搞定的!相信自己!

控制檯成員這部分學到很多方法,
例如:
Console.Beep(1000, 200);//播放聲音通過控制檯揚聲器播放提示音,兩個參數(頻率,時間)更多的會在後面代碼中出現

練習
  彈鋼琴小程序:
while (true)//完成無限的輸入按鍵
            {
                ConsoleKeyInfo cki = Console.ReadKey(true);//讀取按鍵
                int mark;
                if (int.TryParse(cki.KeyChar.ToString(), out mark))//判斷按鍵是否爲數字
                {
                    if (mark > 0 && mark < 8)//判斷按鍵是否在1-7
                    {
                        Console.BackgroundColor = (ConsoleColor)mark;//設置色彩
                        for (int i = 1; i < mark; i++)   //添加背景空格,達到1-7不同長度
                        {
                            Console.Write("   ");
                        }
                        Console.Beep(mark * 1000, 200);//播放聲音
                       
                        Console.WriteLine(cki.KeyChar);//打印數字
                    }
                }
             }
C# 是強類型語言;因此每個變量和對象都必須具有聲明類型
字面量:在數值不能準確表達出數據類型時使用字面量
變量表示數值或字符串值或類的對象
變量是字段的一種類型。常數是另一種類型的字段,賦值後在任何情況下都不會發生更改。

四種命名法:
1匈牙利命名法TempBoolMark:Temp(屬性)+Bool(類型)+Mark(對象描述):
2駝峯命名法:printEmployeePaychecks();
3下劃線法命名:print_employee_paychecks();
4帕斯卡命名法是在命名的時候將首字母大寫string UserName;
在C#中,以帕斯卡命名法和駝峯命名法居多

數據類型
值類型(struct)本質是結構體,表示實際數據 將值存放在內存中 存儲在線程堆棧中

引用類型(class)本質是類,表示指向數據的引用 包含內存堆中對象的地址 存儲在託管堆中
 
中存放方法,而對象執行方法。 函數返回值是什麼類型 用什麼類型變量接收 consonleinfo ck = consonle.readkey();
 console.wline(ck.key/keychar/Modifiers);
(aA/AA/讀鍵值shift)
readerkey(true/flase);/(1/11)

匿名類型與var:
var
在方法範圍中聲明的變量可以具有隱式類型 var。
隱式類型的本地變量是強類型變量(就好像您已經聲明該類型一樣),但由編譯器確定類型。
var i = 10;
int i = 10;
匿名類型
匿名類型提供了一種方便的方法,可用來將一組只讀屬性封裝到單個對象中,而無需首先顯式定義一個類型。類型名由編譯器生成,並且不能在源代碼級使用。這些屬性的類型由編譯器推斷。
var v = new { Amount = 108, Message = "Hello" };
在將匿名類型分配給變量時,必須使用 var 構造初始化該變量。這是因爲只有編譯器能夠訪問匿名類型的基礎名稱。


裝箱是值類型到 object 類型或到此值類型所實現的任何接口類型的隱式轉換。對值類型裝箱會在堆中分配一個對象實例,並將該值複製到新的對象中。拆箱反之;裝箱3步拆兩步 裝箱很耗資源儘量避免
類型轉換:
Parse
類型.Parse(string)
int  i=int.Parse(“123”);

Convert.To類型
強類型轉換
int i=Convert.ToInt32(“123”);

Dynamic類型:
Visual C# 2010 引入了一個新類型 dynamic。 該類型是一種靜態類型,但類型爲 dynamic 的對象會跳過靜態類型檢查。 大多數情況下,該對象就像具有類型 object 一樣。 在編譯時,將假定類型化爲 dynamic 的元素支持任何操作。 因此,您不必考慮對象是從 COM API、從動態語言(例如 IronPython)、從 HTML 文檔對象模型 (DOM)、從反射還是從程序中的其他位置獲取自己的值。 但是,如果代碼無效,則在運行時會捕獲到錯誤。
 
練習
 
   銀行系統,完成查詢餘額,轉帳,存款,取款:
using System.IO;
    class Program
    {
        static void WriteLog(string content)//寫入日誌
        {
File.AppendAllText(@"d:/log.txt",DateTime.Now.ToString("yyyy年MM月dd日 hh時mm分ss秒")+" "+content + "\r\n");
        //寫入文件函數及獲取當前時間(格式)"\r\n"換行
        }
        static string Account = "1234";//賬號
        static string Password = "111111";//密碼
        static float SumMoney = 10000f;//總金額
        static void Main()
        {
            while (true)
            {
                Console.Clear();//清屏
                Console.ForegroundColor = ConsoleColor.Blue;//設置控制檯前臺顏色
                Console.WriteLine("******歡迎使用銀行系統********");
                Console.ResetColor();//控制檯恢復默認顏色

                Console.WriteLine();
                Console.WriteLine("請輸入帳號:");
                string account = Console.ReadLine();//string類型

                Console.WriteLine("請輸入密碼:");//掩碼處理
                string password = "";
                for (int i = 0; i < 6; i++)
                {
                    ConsoleKeyInfo cki = Console.ReadKey(true);
                         //參數爲true只打印不多,如輸入1出現1 若flase則11
                    Console.Write("*");             //用*覆蓋密碼值
                    password += cki.KeyChar.ToString();
                }
                Console.WriteLine();
                if (account == Account && password == Password)
                {
                    WriteLog(account + "登錄成功!");
                    string readstr = "";
                    do
                    {
                        Console.Clear();//清屏
                        Console.WriteLine("1、取款    2、查詢餘額   3、存款    4、轉帳   5、退出");
                        readstr = Console.ReadLine();
                        switch (readstr)
                        {
                            case "1":
                                if (GetMoney())
                                {
                                    WriteLog("取款成功!");
                                }
                                else
                                {
                                    WriteLog("取款失敗!");
                                }
                                break;
                            case "2":
                                Console.WriteLine("餘額爲:{0}", SumMoney);
                                WriteLog("查詢餘額!");
                                break;
                            case "3":
                                if (SetMoney())
                                {
                                    WriteLog("存款成功!");
                                }
                                else
                                {
                                    WriteLog("存款失敗!");
                                }
                                break;
                            case "4":
                                break;
                            default:
                                break;
                        }
                        System.Threading.Thread.Sleep(3000);
                    } while (readstr != "5");//(5、退出),不在循環內
                }
                else
                {
                    WriteLog(account + "登錄失敗!");
                    Console.WriteLine("帳號或者密碼錯誤!");
                }
            }
        }
        static bool GetMoney()
        {
            Console.WriteLine("請輸入取款金額:");
            float money;
            if (float.TryParse(Console.ReadLine(), out money))
            {//將數字的字符串轉爲等效單精度浮點數字
                if (money > SumMoney)
                {
                    Console.WriteLine("你現在餘額爲:{0},已不足", SumMoney);
                    return false;//函數是bool類型
                }
                else
                {
                    SumMoney = SumMoney - money;
                    Console.WriteLine("取款成功!");
                    return true;
                }
            }
            else
            {
                Console.WriteLine("你的輸入有誤!");
                return false;
            }
        }
        static bool SetMoney()
        {
            Console.WriteLine("請輸入存款金額:");
            float money;
            if (float.TryParse(Console.ReadLine(), out money))
            {
                SumMoney = SumMoney + money;
                Console.WriteLine("存款成功!你的餘額爲:{0}", SumMoney);
                return true;
            }
            else
            {
                Console.WriteLine("你的輸入有誤!");
                return false;
            }
        }
}
***************************************************************************
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章