C#簡易電影記錄管理系統:開發三[密碼修改]

來源:互聯網
上載者:User

本期概述

上一期我們實現了對電影記錄的資料操作(增刪改查).這一期,我們一起來實現下針對使用者的密碼修改功能.

 

原理簡介

原理很簡單,系統擷取使用者輸入的使用者名稱,執行select語句從資料庫中擷取該使用者名稱下的密碼,再與使用者輸入的舊密碼進行匹配,若相同則允許輸入新密碼,然後執行Update語句將新密碼儲存到資料庫.

 

由於系統功能逐漸增多,我們需要建立一個主介面表單,來方便使用各個功能. 

建立一個表單 name:FrmMain

 

我們在主表單建立一個ToolStrip工具列,用於後期功能表單的切換.

  

然後,右鍵在ToolStrip上添加 Button 按鈕.

 

將Button按鈕的顯示模式改成Text 文本顯示.

 

設定完管理介面按鈕後,同理設定 密碼修改 返回登陸介面 直接退出 功能按鈕.

ToolStrip按鈕 管理介面name:tsbManager  密碼修改name:tsbPwdChange   重新登入name:tsbLogin  退出系統name:tsbExit

 

主介面FrmMain.cs裡的代碼

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;/*******************************************************  ** 作者: SoFlash - 部落格園  http://www.cnblogs.com/longwu  ** 描述: FrmMain.cs  主表單 用於銜接各項功能表單 ******************************************************/namespace 電影記錄管理系統{    public partial class FrmMain : Form    {        public FrmMain()        {            InitializeComponent();        }        private void tsbManager_Click(object sender, EventArgs e)        {            //new一個Manger表單的對象            FrmManager manager = new FrmManager();            //轉入FrmManager表單            manager.Show();            //隱藏當前表單            this.Hide();        }        private void tsbPwdChange_Click(object sender, EventArgs e)        {            //同理            FrmPwdChange pwdChange = new FrmPwdChange();            pwdChange.Show();            this.Hide();        }        private void tsbLogin_Click(object sender, EventArgs e)        {            //同理            FrmLogin login = new FrmLogin();            login.Show();            this.Hide();        }        private void tsbExit_Click(object sender, EventArgs e)        {            //直接退出應用程式            Application.Exit();        }    }}

同樣,由於登入成功後的跳轉介面換了,所以我們需要修改下登入後跳轉介面的代碼.

在登入表單類FrmLogin.cs中修改(如下)

                            //如果 文字框中輸入的密碼 ==資料庫中的密碼                            if (pwd == txtPwd.Text)                            {                                //擷取登陸成功後的使用者ID                                Uid = txtName.Text;                                //說明在該賬戶下 密碼正確, 系統登入成功                                MessageBox.Show("系統登入成功,正在跳轉首頁面...");                                //FrmManager manager = new FrmManager();                                //manager.Show();                                //this.Hide();                                FrmMain main = new FrmMain();                                main.Show();                                this.Hide();                            }

 

然後,電影記錄管理表單也稍作修改, 添加一個 返回主介面 按鈕.

返回主介面name: btnBack

代碼如下

private void btnBack_Click(object sender, EventArgs e){    //返回主介面    FrmMain main = new FrmMain();    main.Show();    this.Close();}

 

再增加一個直接 退出系統 按鈕,  name:btnExit.

 

代碼如下:

//直接退出系統private void btnExit_Click(object sender, EventArgs e){   //直接退出系統    Application.Exit();}

 

之後 我們開始設計密碼修改表單(如) 

表單name: FrmPwdChange

文字框  使用者名稱name:txtUsername   舊密碼name:txtOldPwd   新密碼name:txtNewPwd   再次輸入新密碼name:txtNewPwdConfirm

按鈕  修改name:btnOK  返回name:btnBack

 

表單建立完成我們運行看下.

 

當使用者成功登入系統的以後,我們需要擷取成功登入後的使用者名稱,並將其傳入到密碼修改介面的使用者名稱文字框中,為此在登入表單類FrmLogin.cs中我們需要做一點修改

1.定義一個全域變數 Uid;  用於擷取登入成功的使用者名稱.

public static string Uid; (添加到如下代碼中)

//首先 設定 串連到設定檔群組建 App.config //當然 這裡的 ConfigurationManager 系統是預設不使用其命名空間的 因此需要解析string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString;//定義一個全域變數 Uid;//用於擷取登入成功後的使用者名稱public static string Uid;

 

2.在判斷登入成功後,擷取當前文字框中輸入的使用者名稱.

Uid = txtName.Text;

                            //如果 文字框中輸入的密碼 ==資料庫中的密碼                            if (pwd == txtPwd.Text)                            {                                //擷取登陸成功後的使用者ID                                Uid = txtName.Text;                                //說明在該賬戶下 密碼正確, 系統登入成功                                MessageBox.Show("系統登入成功,正在跳轉首頁面...");                                //FrmManager manager = new FrmManager();                                //manager.Show();                                //this.Hide();                                FrmMain main = new FrmMain();                                main.Show();                                this.Hide();                            }

 

3.在密碼修改表單FrmPwdChange載入時候,自動擷取登入表單FrmLogin的Uid屬性,並賦給密碼修改表單FrmPwdChange的文字框txtUsername (代碼如下)

//擷取登入表單的使用者名稱private void FrmPwdChange_Load(object sender, EventArgs e){    //擷取登入表單登入成功後的公開變數 Uid    string currentUser = FrmLogin.Uid;    //將擷取的字串 currentUser 賦給txtUsername文字框    txtUsername.Text = currentUser;}

 

這樣,每當我們登入成功後,跳轉到密碼修改表單,使用者名稱文字框就會直接顯示我們當前登入的使用者名稱了.

 

運行看下, 我們使用admin1帳號登入.

 

來到密碼修改表單,此時,使用者名稱admin1 已經自動出現到了使用者名稱所在的文字框中.

 

接下來我們實施下密碼修改表單的完整代碼 

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;using System.Data.SqlClient;using System.Configuration;/*******************************************************  ** 作者: SoFlash - 部落格園  http://www.cnblogs.com/longwu  ** 描述: FrmPwdChange.cs  密碼修改表單 用於管理員和普通使用者修改個人密碼 ******************************************************/namespace 電影記錄管理系統{    public partial class FrmPwdChange : Form    {        public FrmPwdChange()        {            InitializeComponent();        }        //連接字串 擷取設定檔裡的串連路徑        static string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString;        //修改密碼        private void btnOK_Click(object sender, EventArgs e)        {            //使用Sql連線物件擷取連接字串            SqlConnection conn = new SqlConnection(connStr);            //使用sql語句擷取目前使用者名下的密碼            string sql = "select MUserPwd from MovieAccount where MUserName ='" + txtUsername.Text + "'";            //使用SQLcommand指令來裝載SQL連接字串和conn連線物件            SqlCommand cmd = new SqlCommand(sql, conn);            //開啟conn串連            conn.Open();            //使用sql資料讀取器來 擷取cmd指令中的讀到的資料            SqlDataReader sdr = cmd.ExecuteReader();            //如果sql資料讀取器 讀到了資料            if (sdr.Read())            {                //將讀到的使用者名稱下的密碼賦給字串oldPwd                string oldPwd = sdr.GetString(0).Trim();                //如果文字框中輸入的密碼等於從資料庫中讀到的字串oldPwd                if (oldPwd == txtOldPwd.Text)                {                    //如果新密碼為空白                    if (txtNewPwd.Text.Trim()==""||txtNewPwdConfirm.Text.Trim()=="")                    {                        //彈出提示                        MessageBox.Show("新密碼確認不可為空!");                        return;                    }                     //繼續判斷 如果2次新密碼不相同                    else if(txtNewPwd.Text.Trim() != txtNewPwdConfirm.Text.Trim())                    {                        //彈出提示 2次新密碼不相同,請重新輸入                        MessageBox.Show("2次輸入的新密碼不一樣,請重新輸入!");                        //新密碼和再次證明密碼提示框都清空                        txtNewPwd.Text = "";                        txtNewPwdConfirm.Text = "";                        return;                    }                    else                    {                        //如果2次新密碼相同,關閉SqlDataReader串連                        sdr.Close();                        //執行sql語句                        string sqlUpdate = "update MovieAccount set MUserPwd ='" + txtNewPwdConfirm.Text +                         "' where MUserName ='" + txtUsername.Text + "'";                        //new一個資料庫更新指令                        SqlCommand cmdUp = new SqlCommand(sqlUpdate,conn);                        // 如果cmdUp擷取的行數為0 則說明系更新指令出現異常                        if (cmdUp.ExecuteNonQuery() == 0)                        {                            //系統報錯                             MessageBox.Show("未知錯誤!");                            return;                        }                        else                        {                            //否則 更新成功                            MessageBox.Show("恭喜你!密碼修改成功!");                        }                    }                }                else                {                    //彈出提示框 舊密碼不可為空或錯誤                    MessageBox.Show("舊密碼錯誤或者不可為空");                    //舊密碼,新密碼,新密碼驗證 同時清空                    txtOldPwd.Text = "";                    txtNewPwd.Text = "";                    txtNewPwdConfirm.Text = "";                    return;                }            }            else            {                //如果沒讀到使用者名稱,提示使用者名稱不存在!                MessageBox.Show("使用者名稱不存在,請重新輸入!");                //用使用者名稱,舊密碼,新密碼,新密碼驗證 都清空                  txtUsername.Text = "";                txtOldPwd.Text = "";                txtNewPwd.Text = "";                txtNewPwdConfirm.Text = "";                return;                          }            //關閉資料庫連接            conn.Close();        }        //返回主表單        private void btnBack_Click(object sender, EventArgs e)        {            //new 一個主框體的對象            FrmMain main = new FrmMain();            main.Show();            this.Close();        }        //擷取登入表單的使用者名稱        private void FrmPwdChange_Load(object sender, EventArgs e)        {            //擷取登入表單登入成功後的公開變數 Uid            string currentUser = FrmLogin.Uid;            //將擷取的字串 currentUser 賦給txtUsername文字框            txtUsername.Text = currentUser;        }    }}

 

效果測試:

首先使用admin1賬戶來登入系統 密碼為666666

 

當我們輸入錯誤的舊密碼時,系統彈出提示"舊密碼錯誤或者不可為空".

 

輸入正確的密碼,但新密碼和新密碼確認為空白,彈出提示"新密碼不可為空".

只在新密碼框中輸入密碼, 再次輸入新密碼框為空白,同樣彈出"新密碼不可為空".

 

輸入的新密碼和新密碼確認不一樣,彈出提示"2次新密碼不一樣".

 

當新密碼和新密碼確認相同的時候,點修改,彈出提示框"修改成功". 

 

如果需要把密碼輸入框設定為不可見 用*號代替

可以通過 設定文字框的 PasswordChar屬性 在裡面添加*號 就行了

 

效果展示

 

這樣電影記錄管理系統的主介面和密碼修改介面就完成了,下一期我們來一起學習下如何記錄並查看使用者的曆史登入和退出情況(日誌查看).

 

附上原始碼

MovieRecordManagementSystem03.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.