本期概述
上一期,我們做了一個使用者密碼修改的功能. 這一期,我們來實現下日誌查看功能(用於記錄和查看使用者的系統登入和退出曆史).
原理
原理很簡單, 在登入表單FrmLogin.cs定義3個全域變數,用於擷取登入的使用者名稱,登入情況(登入還是退出)以及相應的時間;然後在日誌查看表單調用該全域變數並且通過使用SQ插入語句將其儲存到SQL Server中,然後在訪問日誌查看表單的時候,通過表單自動載入插入資料和查看資料的方法即可.
定義3個全域變數:
- 登入成功和退出的使用者Uid (public static string Uid;) --在第三章密碼修改功能的時候已經定義了
- 登入成功和退出的時間Time (public static DateTime Time;)
- 登入情況Situation-2種包括"登入"和"退出" (public static string Situation;)
代碼如下
//定義一個全域變數 Uid;//用於擷取登入成功後的使用者名稱public static string Uid;//定義一個全域變數 Time//用於擷取登入成功後的使用者的登入時間public static DateTime Time;//定義一個登入全域變數 用來擷取 "登入" 或是"退出"public static string Situation;
定義完擷取登入的全域變數之後,然後我們需要在判斷登入成功後的代碼裡添加一些代碼來擷取使用者的所有登入資訊,並賦給全域變數.
//如果 文字框中輸入的密碼 ==資料庫中的密碼if (pwd == txtPwd.Text){ //擷取登陸成功後的使用者ID Uid = txtName.Text; //擷取當前登入時間 Time = DateTime.Now; //擷取目前使用者登入的情況 Situation = "登入"; //說明在該賬戶下 密碼正確, 系統登入成功 MessageBox.Show("系統登入成功,正在跳轉首頁面..."); FrmMain main = new FrmMain(); main.Show(); this.Hide();}
代碼寫好後,我們來做個小程式測試下,在主介面表單顯示 當前登入的使用者名稱和登入時間.
在主介面表單下方添加一個label框 name:lblCurrentUser.
並在主介面表單類FrmMain.cs 的表單自動載入事件FrmMain_Load中加入如下代碼
//當表單載入的時候 自動運行private void FrmMain_Load(object sender, EventArgs e){ //將當前登入使用者名稱和登入時間賦給label的text屬性 //並在當前主介面表單載入的時候 顯示在label框上 lblCurrentUser.Text = "當前登入使用者為: " + FrmLogin.Uid + " " + "登入時間為:" + FrmLogin.Time;}
這樣當使用者成功登入後, 到主介面表單便可以看到 當前登入使用者的使用者名稱 和其登入時間(如).
使用者admin1登入系統
在主介面表單顯示 目前使用者 和其登入時間.
好了,我們開始設計我們的日誌查看功能.
首先,我們需要一個Log資料表來儲存使用者日誌的資料.
設定欄位屬性如下,Id設定為自動成長.
這樣資料庫就建好了
資料庫名為 Log
然後我們需要建立一個日誌查詢表單.
首先,我們需要在主介面ToolStrip上 添加一個"日誌查詢"按鈕 name:tsbLog
按鈕下的代碼
private void tsbLog_Click(object sender, EventArgs e){ FrmLog log = new FrmLog(); log.Show(); this.Hide();}
然後開始設計日誌查看表單
日誌查看表單 name: FrmLog.cs DataGridView name:dgvLog
返回主介面按鈕 name:btnBack 退出按鈕 name:btnExit
DataGridView 裡的列屬性設定
編號列
name:ID DataPropertyName: Id HeaderText: 編號
使用者列
name: User_Name DataPropertyName:User_Name HeaderText: 使用者
情況列
name: Situation DataPropertyName: Situation HeaderText: 情況
時間列
name: Time DataPropertyName: Time HeaderText: 時間
介面設定好了, 我們來寫 FrmLog表單的代碼.
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.Configuration;using System.Data.SqlClient;/******************************************************* ** 作者: SoFlash - 部落格園 http://www.cnblogs.com/longwu ** 描述: FrmLog.cs 用於 查看用於登入日誌 ******************************************************/namespace 電影記錄管理系統{ public partial class FrmLog : Form { public FrmLog() { InitializeComponent(); } //連接字串 擷取設定檔裡的串連路徑 static string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; //private void FrmLog_Load(object sender, EventArgs e) public void FrmLog_Load(object sender, EventArgs e) { //方法調用 //將目前使用者的登入資訊添加到DataGridView裡面 AddLog(); //將資料顯示到DataGridView上 ShowMsg(); } public void AddLog() { string sql = "insert into Log(User_Name,Situation,Time) values (@User_Name,@Situation,@Time) "; //簡單判斷下 插入的資料是否為空白 如果為空白 則彈出提示 //通常這裡不需要(用於異常提示) if (FrmLogin.Uid == "" || FrmLogin.Situation == "" || FrmLogin.Time.ToString() == "") { MessageBox.Show("資料不可為空!"); return; } //向資料庫裡插入參數 SqlParameter[] param ={ new SqlParameter("@User_Name",FrmLogin.Uid), new SqlParameter("@Situation",FrmLogin.Situation), new SqlParameter("@Time",FrmLogin.Time) }; //使用sql串連指令 擷取connStr的連接字串 SqlConnection conn = new SqlConnection(connStr); //使用cmd指令來裝載 sql查詢語句和conn串連指令 SqlCommand cmd = new SqlCommand(sql, conn); //開啟資料庫 conn.Open(); //向cmd中添加所有參數 cmd.Parameters.AddRange(param); //將cmd的執行查詢獲得的整數值賦給n int n = cmd.ExecuteNonQuery(); //關閉資料庫 conn.Close(); } //寫一個表單載入自動從資料庫擷取資料並顯示在datagridview的方法 public void ShowMsg() { string showSql = "select Id,User_Name,Situation,Time from Log"; // 使用conn串連橋樑來擷取連接字串 SqlConnection conn = new SqlConnection(connStr); //使用cmd指令裝載sql查詢語句和conn資料連線 SqlCommand cmd = new SqlCommand(showSql, conn); //new一個 datatable對象 DataTable dt = new DataTable(); //使用Sql資料配接器來裝載cmd 指令 SqlDataAdapter sda = new SqlDataAdapter(cmd); //將資料配接器擷取的內容放入資料表中 sda.Fill(dt); //將資料表的內容賦給DataGridView控制項 dgvLog.DataSource = dt; } //寫一個擷取當前系統時間的方法 public void GetExitTime() { //擷取當前退出系統的時間 FrmLogin.Time = DateTime.Now; //將當前"退出"字串賦給登入表單的全域變數Situation FrmLogin.Situation = "退出"; } private void btnExit_Click(object sender, EventArgs e) { //調用擷取當前退出時間的方法 GetExitTime(); //將目前使用者的登入資訊添加到DataGridView裡面 AddLog(); //直接退出系統 Application.Exit(); } private void btnBack_Click(object sender, EventArgs e) { FrmMain main = new FrmMain(); main.Show(); this.Close(); } }}
這樣,FrmLog表單就設計好了, 但是系統中有很多地方有 退出功能.
因此,我們需要將日誌表單中擷取 當前退出時間的方法(包含退出的時間的退出情況) 以及 添加當前退出日誌(使用者名稱,情況和時間)的方法 附加到那些 退出功能 按鈕下.
//調用FrmLog表單 擷取目前時間退出的方法 FrmLog log = new FrmLog(); log.GetExitTime(); //方法調用 //將目前使用者的登入資訊添加到DataGridView裡面 log.AddLog();
需要調用方法的 退出功能 按鈕如下
1.主介面的"重新登入"按鈕
2.主介面的"退出系統"按鈕
3.管理介面的"退出系統"按鈕
那麼,讓我們來測試下 系統運行效果.
首先,我們使用賬戶admin1 來登入系統.
來到日誌查看表單,可以看到登入使用者admin1的登入情況.
接著我們回到主介面,使用主介面的"退出系統" 功能按鈕來測試下.
退出系統後,我們再次使用 賬戶admin1登入, 來到日誌查看頁面 獲得的結果如下(新增了退出和重新登入2條記錄).
這樣,我們的日誌查看功能就設計好了!下一期,我們來一起學下該系統的使用者註冊功能.
附上原始碼
MovieRecordManagementSystem04.zip
相關推薦 [點此查看目錄]
- C#簡易電影記錄管理系統:開發一[使用者登入]
- C#簡易電影記錄管理系統:開發二[增刪改查]
- C#簡易電影記錄管理系統:開發三[密碼修改]
- C#簡易電影記錄管理系統:開發五[使用者註冊]
- C#簡易電影記錄管理系統:開發六[資料搜尋]
- C#簡易電影記錄管理系統:開發七[使用者分類]
- C#簡易電影記錄管理系統:開發八[資料備份]
- C#簡易電影記錄管理系統:開發九[資料恢複]
- C#簡易電影記錄管理系統:完結篇[許可權分配]