C#簡易電影記錄管理系統:開發七[使用者分類]

來源:互聯網
上載者:User

本期概述

在絕大部分資料管理系統中,管理員和普通使用者這2類使用者通常是必不可少的,當然還有更細的分類.前幾期,我們用到的系統使用者只有普通使用者一類.那麼在這一期,我們將在系統中設定2類使用者, 管理員Administrator 和普通使用者NormalUser.

我們在這裡分類使用者的目的是為了區分不同使用者的功能許可權,通常管理員擁有所有功能的使用許可權,而普通使用者只能限制性的使用部分功能(比如只能查看資料,而不修改資料). 當然,管理員可以賦予普通使用者更多的功能許可權,這個在後期隨筆裡面會繼續說明.

 

原理

原理很簡單,我在之前的使用者登入介面FrmLogin 裡新增了一個全域變數 UserType 用於擷取當前登入使用者的使用者類型,在判斷登入成功的代碼裡賦給一個登入使用者類型(登入類型來自資料庫裡儲存的使用者類型)-Administrator或者NormalUser,在擷取登入使用者類型後, 我們需要設定普通使用者的功能使用許可權, 在那些需要屏蔽相應功能按鈕的表單裡來擷取全域變數 UserType,然後判斷是否為 NormalUser;如果是,則將相應功能按鈕的 Enabled 屬性設定為 false.

 

首先,我們需要對資料庫做些小的調整,在原先的資料庫表MovieAccount 和Log 裡分別新增一列使用者類型 UserType.

 

 

資料庫修改完了,我們開始寫代碼.

首先,在登入表單類FrmLogin.cs 裡新增一條 全域變數UserType, 用於擷取 當前登入使用者的使用者類型.

//定義一個登入全域變數 用來擷取 "登入" 或是"退出"public static string Situation;//---------------------新增代碼----------------------////定義一個全域變數UserType 用來獲 登入使用者的類型public static string UserType;//---------------------新增代碼----------------------//

 

然後將之前的sql語句稍作修改,增加一個 UserType 欄位.

// 注釋掉之前的select語句 string sql = "select MUserPwd from MovieAccount where MUserName ='" + txtName.Text + "'";//---------------------新增代碼----------------------////這裡新增了 從資料庫裡 擷取UserType 這列的內容  string sql = "select MUserPwd,UserType from MovieAccount where MUserName ='" + txtName.Text + "'";//---------------------新增代碼----------------------//

 

通過SqlDataReader sdr 來從資料庫中讀取該使用者的類型 並傳給字串 uType.

//則將對應該使用者名稱下的 第一個欄位 即使密碼(MUserPwd為select的第一個欄位) 賦給 字串pwd  ,並且依次往後讀取 所有的密碼//Trim()方法為移除字串前後的空白string pwd =sdr.GetString(0).Trim();//---------------------新增代碼-------------------------------////讀取器sdr擷取了2列資料 第1列為密碼 第2列 即索引為1的是使用者類型string uType = sdr.GetString(1);//---------------------新增代碼-------------------------------//

 

在登入成功後,將字串 uType 擷取的登入類型 賦給全域變數 UserType.

//添加擷取當前登入情況的代碼//擷取目前使用者登入的情況Situation = "登入";//---------------------新增代碼-------------------------------////將登入成功的使用者類型 賦給全域變數UserType//用於擷取當前登入 使用者的類型UserType = uType;//---------------------新增代碼-------------------------------//

 

這樣當使用者登入系統後,系統就能獲得 登入系統的使用者類型了; 我們到主表單FrmMain上做個小測試.

我們現在主表單FrmMain介面新增一個label框(name:lblSayHi) 用於獲得登入的使用者類型.

 

然後,在載入表單下添加如下代碼.

//當表單載入的時候 自動運行private void FrmMain_Load(object sender, EventArgs e){    //------------------------------新增代碼----------------------------------//    //這裡 新增來一個使用者類型 判斷  FrmLogin.UserType    //將當前登入使用者名稱和登入時間賦給label的text屬性    //並在當前主介面表單載入的時候 顯示在label框上    lblCurrentUser.Text = "當前登入使用者為:" + FrmLogin.Uid + " 使用者類型 " + FrmLogin.UserType + "  登入時間為:" + FrmLogin.Time;    //------------------------------新增代碼----------------------------------//    //------------------------------新增代碼----------------------------------//    //給目前使用者打招呼     //這裡通過擷取目前使用者電腦上的時間 以及判斷登入使用者的類型 來給不同類型的使用者打招呼      // 定義整型變數 intTime 來擷取 使用者電腦上的具體小時數 然後在如下進行判斷    int intTime = FrmLogin.Time.Hour;    //擷取FrmLogin表單的全域變數 UserType 使用者類型, 用於一下給不同類型的使用者打招呼    string uType = FrmLogin.UserType;    //在淩晨0-6點的時候    if (intTime >= 0 && intTime < 6)    {        if (uType == "Administrator")            lblSayHi.Text = "尊敬的  " + FrmLogin.Uid + " 深夜了,該休息了!";        else if (uType == "NormalUser")            lblSayHi.Text = "親愛的  " + FrmLogin.Uid + "淩晨了,要趕緊休息哦!";    }    //早上6點-中午12點的時候    else if (intTime >= 6 && intTime < 12)    {        if (uType == "Administrator")            lblSayHi.Text = "尊敬的  " + FrmLogin.Uid + "  早上好!";        else if (uType == "NormalUser")            lblSayHi.Text = "親愛的  " + FrmLogin.Uid + " 早上好!";    }    //中午12點-下午6點的時候    else if (intTime >= 12 && intTime < 18)    {        if (uType == "Administrator")            lblSayHi.Text = "尊敬的  " + FrmLogin.Uid + " 下午好!";        else if (uType == "NormalUser")            lblSayHi.Text = "親愛的  " + FrmLogin.Uid + " 下午好!";    }    //晚上    else if (intTime >= 18 && intTime < 24)    {        if (uType == "Administrator")            lblSayHi.Text = "尊敬的  " + FrmLogin.Uid + " 晚上好!";        else if (uType == "NormalUser")            lblSayHi.Text = "親愛的  " + FrmLogin.Uid + " 晚上好!";    }    else //否則 預設為         lblSayHi.Text = "歡迎使用 電影記錄管理系統" + FrmLogin.Uid;    //------------------------------新增代碼----------------------------------//    //------------------------------新增代碼----------------------------------//    //判斷使用者類型 並給使用者佈建功能許可權    if (uType == "NormalUser")    {        tsbRegistration.Enabled = false;        tsbLog.Enabled = false;    }    //------------------------------新增代碼----------------------------------//}

 

我們來做個小測試,測試之前,你需要在資料庫 MovieAccount表的 UserType列裏手動插入幾條使用者類型.這裡我得admin1的使用者類型為Administrator.

管理員 admin1 登入

 

 

普通使用者 user1 登入

 

 
在使用者類型擷取成功之後,我們需要給管理員和普通使用者 分配相應的功能許可權 (管理員預設是擁有所有功能的使用許可權,普通使用者有些功能無法使用).

首先,我們在主表單FrmMain上對普通使用者禁用幾個功能按鈕,(將按鈕的Enabled屬性設定為 false). 

這裡禁用了 使用者註冊 和 日誌查看 2個按鈕的功能,(將如下代碼 添加到載入表單下).

//------------------------------新增代碼----------------------------------////判斷使用者類型 並給使用者佈建功能許可權if (uType == "NormalUser"){    tsbRegistration.Enabled = false;    tsbLog.Enabled = false;}//------------------------------新增代碼----------------------------------//

 

我們再來測試下,使用 使用者類型為NormalUser user1登入系統. 

 

user1 登入後,使用者註冊和日誌查詢變為不可用.

 

然後,在管理介面裡 普通使用者佈建許可權為 可以查看資料 但不能增刪改.

//當系統載入的時候自動顯示DataGridView的資料private void FrmManager_Load(object sender, EventArgs e){    //調用重新整理資料的方法    Refresh();    cmbforTypeSelecting.Text = "全域搜尋";    cmbforTypeSelecting.Items.Add("全域搜尋");    cmbforTypeSelecting.Items.Add("編號");    cmbforTypeSelecting.Items.Add("電影名稱");    cmbforTypeSelecting.Items.Add("導演");    cmbforTypeSelecting.Items.Add("發行時間");    //----------------------新增代碼-------------------//    //添加對使用者 類型的判斷 用來設定功能按鈕的使用許可權    if (FrmLogin.UserType == "NormalUser")    {        btnDelete.Enabled = false;        btnAdd.Enabled = false;        btnSave.Enabled = false;    }    //----------------------新增代碼-------------------//}

 

我們再來測試下,用的還是 普通使用者 user1.但 添加 刪除 和 儲存記錄 3個按鈕 變得置灰(不可用)了.

 

當然,由於新增了一列UserType,之前的使用者註冊功能(沒有分類使用者) 所以我們得稍作修改.

我們在 使用者註冊表單FrmRegistration上增加2個radiobutton,用於註冊的時候進行使用者分類註冊. 

一個是管理員name:rdoAdministrator  一個是普通使用者name: rdoNormalUser  

 

然後,修改之前的使用者註冊代碼.很簡單,主要是在radiobutton的CheckedChanged事件下 增加了 一個uType 類型 用於擷取當前的使用者類型.

然後在之前的Sql插入語句裡 新增了一列 UserType.

//----------------------新增代碼-------------------------////new一個 uType 來擷取 radiobutton 點擊事件下 觸發的使用者類型賦值string uType = "";if (rdoAdministrator.Checked)  //當管理員的radiobutton被點擊後    uType = "Administrator";   //傳給 uType 一個管理員else if (rdoNormalUser.Checked)  //同理    uType = "NormalUser";else                             //若不點擊 則預設為普通使用者註冊     uType = "NormalUser";//sql 插入語句  我們新增了 一列 UserTypestring sqlInsert = "insert into MovieAccount(MUserName,MUserPwd,UserType) values(@MUserName,@MUserPwd,@UserType) ";//使用1個SQL參數數組 來裝載 需要插入的資料SqlParameter[] param = {                        new SqlParameter("@MUserName",txtUid.Text),                        new SqlParameter("@MUserPwd",txtPwd.Text),                          new SqlParameter("@UserType",uType)   //新增了1個sql參數 uType                    };//----------------------新增代碼-------------------------//

 

好了,我們來簡單測試下 新做好的使用者分類註冊.

先註冊個管理使用者 admin03

然後,資料庫裡多了一行資料 admin03, 使用者類型是 Administrator.

 

我們再註冊一個 普通使用者 user03.

 

資料庫裡多了 一條user03  使用者類型為 NormalUser

 

這樣,我們的使用者分類和簡單的功能使用權限設定就完成.感興趣的朋友可以自己動手在日誌查詢那裡新增一列-使用者類型,這裡就不講了.

 

附上原始碼

MovieRecordManagementSystem07.zip

相關推薦 [點此查看目錄]
  • C#簡易電影記錄管理系統:開發一[使用者登入]
  • C#簡易電影記錄管理系統:開發二[增刪改查]
  • C#簡易電影記錄管理系統:開發三[密碼修改]
  • C#簡易電影記錄管理系統:開發四[日誌查看]
  • C#簡易電影記錄管理系統:開發五[使用者註冊]
  • C#簡易電影記錄管理系統:開發六[資料搜尋]
  • C#簡易電影記錄管理系統:開發八[資料備份]
  • C#簡易電影記錄管理系統:開發九[資料恢複]
  • C#簡易電影記錄管理系統:完結篇[許可權分配]
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.