Home [C# 筆記] 用戶管理(重構)
Post
Cancel

[C# 筆記] 用戶管理(重構)

用戶登入過程

重構用戶登入:

  • 用戶系統-用戶登入 User
  • 菜單系統-顯示菜單 Menu
  • 控制系統-流程控制 CMSController

用戶系統-用戶登入 User

  • 新增一個User class,把登入的部分放到 User class
  • 還需要一個 isUserLogin變量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class User
{
    public bool isUserLogin = false;
    public void Login()
    {
        string username;
        string password;

        //檢查帳號
        username = CmdReader("請輸入帳號");
        if (username != "riva")
        {
            Console.WriteLine("查無此人");
            return;
        }

        //檢查密碼
        password = CmdReader("請輸入密碼");
        if (password != "1234")
        {
            Console.WriteLine("密碼錯誤");
            return;
        }
        isUserLogin = true;
    }
}

菜單系統-顯示菜單 Menu

新增一個Menu class,把顯示菜單的部分放到 Menu class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Menu
{
    public void ShowMenu()
    {
        bool isExit = false;
        //選擇主表單
        while (!isExit)
        {
            string selection = CmdReader("主表單:1.客戶管理 2.預約管理 3.系統管理 4.退出/n請選擇:");
            switch (selection)
            {
                case "1":
                    Console.WriteLine("客戶管理");
                    break;
                case "2":
                    Console.WriteLine("預約管理");
                    break;
                case "3":
                    Console.WriteLine("系統管理");
                    break;
                case "4":
                default:
                    Console.WriteLine("退出");
                    isExit = true;
                    break;
            }
        }
    }
}

控制系統-流程控制 CMSController

  • 新增一個CMSController class,用來控制整個流程
  • 新增Start方法,可以傳入 User, Menu
  • 裡面的程式碼就是:登入和顯示菜單
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CMSController
{
    public void Start(User user, Menu menu)
    {
        //login
        do
        {
            user.Login();
        } while (!user.isUserLogin);

        //顯示菜單
        menu.ShowMenu();
    }
}

整合套用

  • 回到Main方法,初始化這三大系統:用戶系統User、菜單系統Menu、流程系統CMSController
  • 調用流程系統的 Start 方法,並傳入UserMenu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
static void Main(string[] args)
{
    //初始化用戶系統
    User user = new User();
    //初始化菜單系統
    Menu menu = new Menu();
    //初始化cmscontroller
    CMSController cms = new CMSController();

    Console.WriteLine("======客戶管理系統======");
    Console.WriteLine("請登入");

    //啟動cms
    cms.Start(user, menu);

    Console.Read();
}

static string CmdReader(string msg)
{
    Console.WriteLine(msg);
    return Console.ReadLine();
}

public class User
{
    public bool isUserLogin = false;
    public void Login()
    {
        string username;
        string password;

        //檢查帳號
        username = CmdReader("請輸入帳號");
        if (username != "riva")
        {
            Console.WriteLine("查無此人");
            return;
        }

        //檢查密碼
        password = CmdReader("請輸入密碼");
        if (password != "1234")
        {
            Console.WriteLine("密碼錯誤");
            return;
        }
        isUserLogin = true;
    }
}

public class Menu
{
    public void ShowMenu()
    {
        bool isExit = false;
        //選擇主表單
        while (!isExit)
        {
            string selection = CmdReader("主表單:1.客戶管理 2.預約管理 3.系統管理 4.退出/n請選擇:");
            switch (selection)
            {
                case "1":
                    Console.WriteLine("客戶管理");
                    break;
                case "2":
                    Console.WriteLine("預約管理");
                    break;
                case "3":
                    Console.WriteLine("系統管理");
                    break;
                case "4":
                default:
                    Console.WriteLine("退出");
                    isExit = true;
                    break;
            }
        }
    }
}

public class CMSController
{
    public void Start(User user, Menu menu)
    {
        //login
        do
        {
            user.Login();
        } while (!user.isUserLogin);

        //顯示菜單
        menu.ShowMenu();
    }
}

https://www.bilibili.com/video/BV1Ss4y1B7zE?p=26

This post is licensed under CC BY 4.0 by the author.