Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 20 kết quả

Đề tài: Hướng dẫn tạo Form Đăng Ký và Đăng Nhập - part 1

  1. #1
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Mặc định Hướng dẫn tạo Form Đăng Ký và Đăng Nhập - Complete

    Part 1 chủ yếu trình bày về cách INSERT data vào database và kiểm tra điều kiện để Log In vào 1 Form khác.
    Form Đăng Ký
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		DangKy.jpg
Lần xem:	801
Size:		187.2 KB
ID:		7450
    Form Đăng Nhập
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		DangNhap.jpg
Lần xem:	507
Size:		196.1 KB
ID:		7451
    Form Chính
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		TrangChu.jpg
Lần xem:	453
Size:		203.3 KB
ID:		7452

    Cấu trúc Form:

    + Trang Đăng Nhập: Form1.cs
    + Trang Đăng Ký : DangKy.cs
    + Trang Chính: MainForm.cs


    Các class sử dụng:

    + AccessData.cs
    + KiemTraDangNhap.cs
    + Ngay.cs


    1. Tạo CSDL - Sử dụng MSSQL

    + CSDL tên : DEMO_DANGKY_DANGNHAP
    + Table tên: USER_INFO
    + Các columns: để cho đơn giản. Tôi cho tất cả các thuộc tính đều là kiển NVARCHAR(50)

    - USERNAME (TextBox)
    - PASSWORD (TextBox)
    - CPASSWORD (TextBox)
    - EMAIL (TextBox)
    - ADDRESS (TextBox)
    - GENDER (RadioButton)
    - BIRTHDAY (ComboBox)
    - OCCUPATION (TextBox)


    + Các thuộc tính trên tương ứng với FORM DANGKY. Xem tham khảo ở file đính kèm.

    + Tạo database:
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		csdl.jpg
Lần xem:	606
Size:		92.6 KB
ID:		7454

    + Sau khi tạo CSDL xong. Ta add nó vào Server Explorer:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		serverEx1.jpg
Lần xem:	369
Size:		56.1 KB
ID:		7455

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		serverEx2.jpg
Lần xem:	383
Size:		144.5 KB
ID:		7456


    2. Các class

    + AccessData.cs :
    Visual C# Code:
    1. using System.Data;
    2. using System.Data.SqlClient;
    3.  
    4. class AccessData
    5.     {
    6.         public SqlConnection GetConnection()
    7.         {
    8.             return new SqlConnection("Data Source=DUNG-PC;Initial Catalog=DEMO_DANGKY_DANGNHAP;Integrated Security=True");
    9.         }
    10.         public void ExcuteNonQuery(string sql)
    11.         {
    12.             SqlConnection conn = GetConnection();
    13.             SqlCommand cmd = new SqlCommand(sql, conn);
    14.             conn.Open();
    15.             cmd.ExecuteNonQuery();
    16.             conn.Close();
    17.             cmd.Dispose();
    18.         }
    19.         public SqlDataReader ExecuteReader(string sql)
    20.         {
    21.             SqlConnection conn = GetConnection();
    22.             conn.Open();
    23.             SqlCommand cmd = new SqlCommand(sql, conn);
    24.             SqlDataReader reader = cmd.ExecuteReader();
    25.             return reader;
    26.         }
    27.     }

    + KiemTraDangNhap.cs : Kiểm tra xem username và password có hợp lệ hay ko.

    Visual C# Code:
    1. using System.Data;
    2. using System.Data.SqlClient;
    3.  
    4. class KiemTraDangNhap
    5.     {
    6.         public int CheckLogin(string username, string password)
    7.         {
    8.             AccessData acc = new AccessData();
    9.             SqlDataReader reader = acc.ExecuteReader("SELECT USERNAME, PASSWORD FROM USER_INFO");
    10.             while(reader.Read())
    11.             {
    12.                 if (reader[0].ToString() == username && reader[1].ToString() == password)
    13.                 {
    14.                     // reader[0] tương ứng cho textbox Username
    15.                     // reader[1] tương ứng cho textbox Password
    16.                     return 1;
    17.                 }
    18.             }
    19.             return 0;
    20.         }
    21.     }

    + Ngay.cs : Cái này dùng để kiểm tra tính hợp lệ của ngày tháng năm

    Visual C# Code:
    1. using System.Windows.Forms;
    2.  
    3. class Ngay
    4.     {
    5.         public int KiemTraNhuan(ComboBox cbYear)
    6.         {
    7.             int year = Convert.ToInt32(cbYear.SelectedItem);
    8.             if (year % 4 == 0 && year % 100 != 0)
    9.                 return 1;
    10.             if (year % 400 == 0)
    11.                 return 1;
    12.             return 0;
    13.         }
    14.         public int NgayMax(ComboBox cbDate, ComboBox cbMonth, ComboBox cbYear)
    15.         {
    16.             int day = Convert.ToInt32(cbDate.SelectedItem);
    17.             int month = Convert.ToInt32(cbMonth.SelectedItem);
    18.  
    19.             switch (month)
    20.             {
    21.                 case 1:
    22.                 case 3:
    23.                 case 5:
    24.                 case 7:
    25.                 case 8:
    26.                 case 10:
    27.                 case 12:
    28.                     return 31; // Các tháng có 31 ngày
    29.                     break;
    30.                 case 4:
    31.                 case 6:
    32.                 case 9:
    33.                 case 11:
    34.                     return 30; // Các tháng có 30 ngày
    35.                     break;
    36.                 case 2:
    37.                     {
    38.                         if (KiemTraNhuan(cbYear) == 1)
    39.                             return 29; // Nếu là năm Nhuận => Tháng 2 : 29 ngày
    40.                         return 28; // Ngược lại => Tháng 2: 28 ngày
    41.                     }
    42.                 default:
    43.                     return 0;
    44.             }
    45.         }
    46.         public int KiemTraHopLe(ComboBox cbDate, ComboBox cbMonth, ComboBox cbYear)
    47.         {
    48.             int month = Convert.ToInt32(cbMonth.SelectedItem);
    49.             int day = Convert.ToInt32(cbDate.SelectedItem);
    50.             if (month >= 1 && month <= 12)
    51.             {
    52.                 if (day >= 1 && day <= NgayMax(cbDate, cbMonth, cbYear)) // Nếu ngày từ 1 đến cái ngày lớn nhất trong tháng đó
    53.  
    54.                     return 1;
    55.                 return 0;
    56.             }
    57.             return 0;
    58.         }
    59.     }



    3. Các Form

    + DangKy.cs

    - Thứ 1 : Ta sẽ đặt giá trị cho cái ComboBox Ngày Tháng Năm

    - Thứ 2 : Bắt sự kiện cho cái nút SignUp => INSERT data vào database


    Visual C# Code:
    1. public partial class DangKy : Form
    2.     {
    3.         AccessData acc;
    4.         public DangKy()
    5.         {
    6.             InitializeComponent();
    7.             for (int i = 1; i <= 31; i++)
    8.             {
    9.                 this.cbDate.Items.Add(i.ToString()); // Lấy giá trị cho ComboBox Ngày : 1 - 31 ngày
    10.             }
    11.  
    12.             for (int i = 0; i <= 12; i++)
    13.             {
    14.                 this.cbMonth.Items.Add(i.ToString()); // Lấy giá trị cho ComboBox Tháng : 1 - 12 tháng
    15.             }
    16.  
    17.             int curYear = DateTime.Now.Year; // Lấy ra năm hiện tại
    18.             for (int i = curYear; i >= 1900; i--)
    19.             {
    20.                 this.cbYear.Items.Add(i.ToString()); // Lấy giá trị cho ComboBox Năm: 1900 - Năm hiên tại
    21.             }
    22.         }
    23.        
    24.        // Bắt sự kiện cho button SignUp => Insert data vào database
    25.         private void btnSignUp_Click(object sender, EventArgs e)
    26.         {
    27.            
    28.                 Ngay n = new Ngay(); // Tạo đối tượng Ngày => Kiểm tra tính hợp lệ của ngày
    29.                 if (n.KiemTraHopLe(cbDate, cbMonth, cbYear) == 1)
    30.                 {
    31.                     acc = new AccessData();
    32.                     string gender = ""; // Tạo biến gender => Để chứa giá trị Male hoặc Female
    33.                     string birth = ""; // Tạo biến birth => Để chứa ngày tháng năm sinh (12/12/1900)
    34.                     if (this.rdMale.Checked == true)
    35.                     {
    36.                         gender = "Male"; // Nếu RadioButton Male được check => Lưu Male vào gender
    37.                     }
    38.                     else
    39.                     {
    40.                         if (this.rdFemale.Checked == true)
    41.                         {
    42.                             gender = "Female"; // Nếu RadioButton Female được check => Lưu Female vào gender
    43.                         }
    44.                     }
    45.                     // Lấy ngày tháng năm từ ComboBox và lưu vào cho biến birth
    46.                     birth = cbDate.SelectedItem.ToString() + "/" + cbMonth.SelectedItem.ToString() + "/" + cbYear.SelectedItem.ToString();
    47.                     //
    48.                     string sql = "INSERT INTO USER_INFO VALUES('" + txtUsername.Text + "', '" + txtPassword.Text + "', '" + txtCPassword.Text + "', '" + txtEmail.Text + "', '" + txtAddress.Text + "', '" + gender + "', '" + birth + "','" + txtOccupation.Text + "')"; // Query Insert data
    49.                     acc.ExcuteNonQuery(sql); // Thực thi Query
    50.                     MessageBox.Show("Đăng Ký Thành Công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information); // Nếu đang ký thành công => Sẽ có thông báo Thành Công và đồng thời các TextBox sẽ mất giá trị do [B]ClearTextBox()[/B].
    51.                     ClearTextBox();
    52.                 }
    53.                 else
    54.                 {
    55.                     // Nếu ngày tháng ko hợp lê thì nó sẽ hiển thị lại bằng các tên bên dưới.
    56.                     cbDate.Text = "Date:";
    57.                     cbMonth.Text = "Month:";
    58.                     cbYear.Text = "Year:";
    59.                 }
    60.          
    61.         }
    62.  
    63.         private void ClearTextBox()
    64.         {
    65.             txtUsername.Clear();
    66.             txtPassword.Clear();
    67.             txtCPassword.Clear();
    68.             txtAddress.Clear();
    69.             txtEmail.Clear();
    70.             cbDate.Text = "Day:";
    71.             cbMonth.Text = "Month:";
    72.             cbYear.Text = "Year:";
    73.             txtOccupation.Clear();
    74.         }
    75.  
    76.        
    77.     }

    + Form1.cs : Form Đăng Nhập
    - Thứ 1: Bắt sự kiện button SignIn : Kiểm tra data nhập từ 2 TextBox (Username , Password) với data trong database. Nếu trùng thì load qua MainForm.cs. Ko trùng thì hiện THÔNG BÁO

    - Thứ 2: Bắt sự kiện button SignUp : Load Form DangKy.cs

    Visual C# Code:
    1. public partial class Form1 : Form
    2.     {
    3.         public Form1()
    4.         {
    5.             InitializeComponent();
    6.         }
    7.  
    8.         private void btnSignUp_Click(object sender, EventArgs e)
    9.         {
    10.             DangKy dk = new DangKy();
    11.             dk.ShowDialog();
    12.         }
    13.  
    14.         private void btnSignIn_Click(object sender, EventArgs e)
    15.         {
    16.             KiemTraDangNhap dn = new KiemTraDangNhap();
    17.             MainForm frm = new MainForm();
    18.             if (dn.CheckLogin(txtUsername.Text, txtPassword.Text) == 1) // Kiểm tra data từ TextBox và data trong database
    19.             {
    20.                 this.Hide(); // Form Đăng Nhập sẽ ẩn đi => MainForm sẽ load lên
    21.                 frm.ShowDialog();
    22.             }
    23.             else
    24.             {
    25.                 lblThongBao.Text = "Sai Password hoac Username. Check lai lan nua !!!";
    26.                 txtUsername.Clear();
    27.                 txtPassword.Clear();
    28.             }
    29.         }
    30.     }

    Chúc thành công !!!

    FILE DEMO: File demo + File back up database(.bak)
    NOTE:
    Muốn sử dụng được cái file Demo. Mấy bro nhớ vào MSSQL Restore cái file DEMO_DANGKY_DANGNHAP.bak (file CSDL của mình).
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi nndung179 : 26-08-2011 lúc 08:09 PM.

  2. #2
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Mặc định Hướng dẫn tạo Form - Part 2

    Part 2: Update data.

    Form Update data giống với Form DangKy. Chỉ khác button.

    Đầu tiên muốn xem thông tin của profile thì ta phải có data. Làm cách nào để lấy cho chính xác. Ta phải truyền data từ các Form với nhau.

    Ví dụ: Tôi muốn lấy ra 1 profile của 1 thành viên nào đó, thì tôi sử dụng query Select

    Select * From USER_INFO Where USERNAME = 'USERNAME TỪ FORM DANG NHAP' (Điều kiện lấy data từ database)

    Vậy ta sẽ tiến hành truyền data từ Form DangNhap sang các Form.

    Form Profile

    Visual C# Code:
    1.     public partial class Profile : Form
    2.     {
    3.         Form1 frm1 = null;
    4.  
    5.         public Profile(Form1 f) // Truyền data từ Form DangNhap sang Form Profile
    6.         {
    7.             this.frm1 = f;
    8.             InitializeComponent();
    9.             for (int i = 1; i <= 31; i++)
    10.             {
    11.                 this.cbDate.Items.Add(i.ToString());
    12.             }
    13.  
    14.             for (int i = 0; i <= 12; i++)
    15.             {
    16.                 this.cbMonth.Items.Add(i.ToString());
    17.             }
    18.  
    19.             int curYear = DateTime.Now.Year;
    20.             for (int i = curYear; i >= 1900; i--)
    21.             {
    22.                 this.cbYear.Items.Add(i.ToString());
    23.             }
    24.         }
    25.  
    26.         private void Profile_Load(object sender, EventArgs e)
    27.         {
    28.             AccessData acc = new AccessData();
    29.  
    30.             string frmUsername = frm1.TxtUsername.Text;
    31.            
    32.             // Lấy data từ database ra để hiển thị trên từng TextBox của FOrm Profile
    33.             SqlDataReader reader = acc.ExecuteReader("SELECT * FROM USER_INFO WHERE USERNAME = '" + frmUsername + "'");
    34.  
    35.             while (reader.Read())
    36.             {
    37.                 txtUsername.Text = reader[0].ToString();
    38.                 txtPassword.Text = reader[1].ToString();
    39.                 txtCPassword.Text = reader[2].ToString();
    40.                 txtEmail.Text = reader[3].ToString();
    41.                 txtAddress.Text = reader[4].ToString();
    42.                 txtOccupation.Text = reader[7].ToString();
    43.                 //
    44.                 if (reader[5].ToString() == "Male")
    45.                 {
    46.                     rdMale.Checked = true;
    47.                 }
    48.                 else
    49.                 {
    50.                     if (reader[5].ToString() == "Female")
    51.                     {
    52.                         rdFemale.Checked = true;
    53.                     }
    54.                 }
    55.                 //
    56.                 string birth = reader[6].ToString(); // Lấy ra ngày/tháng/năm
    57.                 string[] arrBirth = birth.Split('/'); // Lấy từ phần tử ra.
    58.                 cbDate.Text = arrBirth[0];
    59.                 cbMonth.Text = arrBirth[1];
    60.                 cbYear.Text = arrBirth[2];
    61.  
    62.             }
    63.             reader.Close();
    64.         }
    65.  
    66.         private void btnUpdate_Click(object sender, EventArgs e)
    67.         {
    68.             try
    69.             {
    70.                 Ngay n = new Ngay();
    71.                 if (n.KiemTraHopLe(cbDate, cbMonth, cbYear) == 1)
    72.                 {
    73.                     AccessData acc = new AccessData();
    74.  
    75.                     string username = frm1.TxtUsername.Text;
    76.                     string gender = "";
    77.  
    78.                     if (this.rdMale.Checked == true)
    79.                     {
    80.                         gender = "Male";
    81.                     }
    82.                     else
    83.                     {
    84.                         if (this.rdFemale.Checked == true)
    85.                         {
    86.                             gender = "Female";
    87.                         }
    88.                     }
    89.                     string birth = "";
    90.                     birth = cbDate.SelectedItem.ToString() + "/" + cbMonth.SelectedItem.ToString() + "/" + cbYear.SelectedItem.ToString();
    91.                    
    92.                     // Câu truy vấn Update data xuống database
    93.                     string sql = "UPDATE USER_INFO SET PASSWORD = '" + txtPassword.Text + "', CPASSWORD = '" + txtCPassword.Text + "', EMAIL = '" + txtEmail.Text + "', ADDRESS = '" + txtAddress.Text + "', GENDER = '" + gender + "', BIRTHDAY = '" + birth + "', OCCUPATION = '" + txtOccupation.Text + "' WHERE USERNAME = '" + username + "'";
    94.                     acc.ExcuteNonQuery(sql);
    95.                     MessageBox.Show("Update Successfully !!!");
    96.                     this.Refresh();
    97.                 }
    98.                 else
    99.                 {
    100.                     cbDate.Text = "Date:";
    101.                     cbMonth.Text = "Month:";
    102.                     cbYear.Text = "Year:";
    103.                 }
    104.             }
    105.             catch (Exception)
    106.             {
    107.                 MessageBox.Show("Error !!!");
    108.             }
    109.         }
    110.     }

    Chỉnh sửa lại của 2 Form Form1.cs và MainForm.cs

    Form1.cs
    Visual C# Code:
    1.         private void btnSignIn_Click(object sender, EventArgs e)
    2.         {
    3.             KiemTraDangNhap dn = new KiemTraDangNhap();
    4.  
    5.             MainForm frm = new MainForm(this); [B][COLOR="Red"]//Chỉnh sửa ở tham số đầu vào[/COLOR][/B]
    6.  
    7.             if (dn.CheckLogin(txtUsername.Text, txtPassword.Text) == 1)
    8.             {
    9.                 this.Hide();
    10.                 frm.ShowDialog();
    11.             }
    12.             else
    13.             {
    14.                 lblThongBao.Text = "Sai Password hoac Username. Check lai lan nua !!!";
    15.                 txtUsername.Clear();
    16.                 txtPassword.Clear();
    17.             }
    18.         }

    MainForm.cs
    Thêm button ViewProfile

    Visual C# Code:
    1.     public partial class MainForm : Form
    2.     {
    3.         Form1 f;
    4.         public MainForm(Form1 f) // Truyền data từ Form DangNhap(Form1.cs) sang MainForm
    5.         {
    6.             //f = new Form1();  
    7.             this.f = f;
    8.             InitializeComponent();
    9.         }
    10.  
    11.         private void btnView_Click(object sender, EventArgs e) // Bắt sự kiện Button ViewProfile
    12.         {
    13.             Profile pf = new Profile(this.f);
    14.             pf.Show();
    15.         }
    16.  
    17.         private void MainForm_Load(object sender, EventArgs e)
    18.         {
    19.             string p1 = f.TxtUsername.Text;
    20.             lblThongBao.Text = p1 + " Dang nhap thanh cong";
    21.         }
    22.     }

    Chúc thành công !!!
    Attached Files Attached Files

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Còn về phần kiểm tra điều kiện của các TextBox sao cho hợp lệ(Password phải có mấy kí tự, email phải là dạng chuẩn vd: example@something.com, Confirm Pass phải giống Password).


    Mấy bro tự tìm hiểu nhá. Good Luck !!!

  4. #4
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Đăng nhập và đăng ký mình không nghỉ nó quá dài đến vậy!!!

    Chúc các bạn thành công!

  5. #5
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Kiến thức mình còn hạn chế. Nên cách làm của mình có lẽ dài dòng.

    Mong mấy bác cùng đóng góp thêm cho tut này. Để mọi người cùng học hỏi. Thanks

  6. #6
    Ngày gia nhập
    09 2010
    Nơi ở
    Đến từ Đồng Nai. Hiện đang Mỹ phước 3, Bến Cát, Bình Dương.
    Bài viết
    4

    Mặc định Hướng dẫn tạo Form Đăng Ký và Đăng Nhập - part 1

    Trích dẫn Nguyên bản được gửi bởi nndung179 Xem bài viết
    Kiến thức mình còn hạn chế. Nên cách làm của mình có lẽ dài dòng.

    Mong mấy bác cùng đóng góp thêm cho tut này. Để mọi người cùng học hỏi. Thanks


    Bạn ơi mình muốn hiện đúng tên người khi đăng nhập thì làm sao ạ... sao mình đăng nhập mà nó cứ lấy tên đầu tiên để hiện ra code mình đây : rs.Source = "SELECT DISTINCT * FROM dbo.dangky ORDER BY TenDangNhap ASC"; có phải do dòng này ko bạn... làm bằng Javascript

  7. #7
    Ngày gia nhập
    08 2010
    Bài viết
    125

    bạn ơi giờ ko cần kiểm tra ngày tháng năm như vậy đâu, mình thì dùng như thế này. nếu muốn người ta nhập theo định dạng gì thì viết 1 string chứa biểu thức Reg cho nó. rồi dùng Regex.IsMatch(reg,input) là xong
    rồi else
    try{ DateTime dt=Convert.ToDateTime(input);}catch{}
    là ok mà
    Cách này mình mất khoảng 6 dòng

  8. #8
    Ngày gia nhập
    01 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi nndung179 Xem bài viết
    Part 1 chủ yếu trình bày về cách INSERT data vào database và kiểm tra điều kiện để Log In vào 1 Form khác.
    Form Đăng Ký
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		DangKy.jpg
Lần xem:	801
Size:		187.2 KB
ID:		7450
    Form Đăng Nhập
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		DangNhap.jpg
Lần xem:	507
Size:		196.1 KB
ID:		7451
    Form Chính
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		TrangChu.jpg
Lần xem:	453
Size:		203.3 KB
ID:		7452

    Cấu trúc Form:

    + Trang Đăng Nhập: Form1.cs
    + Trang Đăng Ký : DangKy.cs
    + Trang Chính: MainForm.cs


    Các class sử dụng:

    + AccessData.cs
    + KiemTraDangNhap.cs
    + Ngay.cs


    1. Tạo CSDL - Sử dụng MSSQL

    + CSDL tên : DEMO_DANGKY_DANGNHAP
    + Table tên: USER_INFO
    + Các columns: để cho đơn giản. Tôi cho tất cả các thuộc tính đều là kiển NVARCHAR(50)

    - USERNAME (TextBox)
    - PASSWORD (TextBox)
    - CPASSWORD (TextBox)
    - EMAIL (TextBox)
    - ADDRESS (TextBox)
    - GENDER (RadioButton)
    - BIRTHDAY (ComboBox)
    - OCCUPATION (TextBox)


    + Các thuộc tính trên tương ứng với FORM DANGKY. Xem tham khảo ở file đính kèm.

    + Tạo database:
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		csdl.jpg
Lần xem:	606
Size:		92.6 KB
ID:		7454

    + Sau khi tạo CSDL xong. Ta add nó vào Server Explorer:

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		serverEx1.jpg
Lần xem:	369
Size:		56.1 KB
ID:		7455

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		serverEx2.jpg
Lần xem:	383
Size:		144.5 KB
ID:		7456


    2. Các class

    + AccessData.cs :
    Visual C# Code:
    1. using System.Data;
    2. using System.Data.SqlClient;
    3.  
    4. class AccessData
    5.     {
    6.         public SqlConnection GetConnection()
    7.         {
    8.             return new SqlConnection("Data Source=DUNG-PC;Initial Catalog=DEMO_DANGKY_DANGNHAP;Integrated Security=True");
    9.         }
    10.         public void ExcuteNonQuery(string sql)
    11.         {
    12.             SqlConnection conn = GetConnection();
    13.             SqlCommand cmd = new SqlCommand(sql, conn);
    14.             conn.Open();
    15.             cmd.ExecuteNonQuery();
    16.             conn.Close();
    17.             cmd.Dispose();
    18.         }
    19.         public SqlDataReader ExecuteReader(string sql)
    20.         {
    21.             SqlConnection conn = GetConnection();
    22.             conn.Open();
    23.             SqlCommand cmd = new SqlCommand(sql, conn);
    24.             SqlDataReader reader = cmd.ExecuteReader();
    25.             return reader;
    26.         }
    27.     }

    + KiemTraDangNhap.cs : Kiểm tra xem username và password có hợp lệ hay ko.

    Visual C# Code:
    1. using System.Data;
    2. using System.Data.SqlClient;
    3.  
    4. class KiemTraDangNhap
    5.     {
    6.         public int CheckLogin(string username, string password)
    7.         {
    8.             AccessData acc = new AccessData();
    9.             SqlDataReader reader = acc.ExecuteReader("SELECT USERNAME, PASSWORD FROM USER_INFO");
    10.             while(reader.Read())
    11.             {
    12.                 if (reader[0].ToString() == username && reader[1].ToString() == password)
    13.                 {
    14.                     // reader[0] tương ứng cho textbox Username
    15.                     // reader[1] tương ứng cho textbox Password
    16.                     return 1;
    17.                 }
    18.             }
    19.             return 0;
    20.         }
    21.     }

    + Ngay.cs : Cái này dùng để kiểm tra tính hợp lệ của ngày tháng năm

    Visual C# Code:
    1. using System.Windows.Forms;
    2.  
    3. class Ngay
    4.     {
    5.         public int KiemTraNhuan(ComboBox cbYear)
    6.         {
    7.             int year = Convert.ToInt32(cbYear.SelectedItem);
    8.             if (year % 4 == 0 && year % 100 != 0)
    9.                 return 1;
    10.             if (year % 400 == 0)
    11.                 return 1;
    12.             return 0;
    13.         }
    14.         public int NgayMax(ComboBox cbDate, ComboBox cbMonth, ComboBox cbYear)
    15.         {
    16.             int day = Convert.ToInt32(cbDate.SelectedItem);
    17.             int month = Convert.ToInt32(cbMonth.SelectedItem);
    18.  
    19.             switch (month)
    20.             {
    21.                 case 1:
    22.                 case 3:
    23.                 case 5:
    24.                 case 7:
    25.                 case 8:
    26.                 case 10:
    27.                 case 12:
    28.                     return 31; // Các tháng có 31 ngày
    29.                     break;
    30.                 case 4:
    31.                 case 6:
    32.                 case 9:
    33.                 case 11:
    34.                     return 30; // Các tháng có 30 ngày
    35.                     break;
    36.                 case 2:
    37.                     {
    38.                         if (KiemTraNhuan(cbYear) == 1)
    39.                             return 29; // Nếu là năm Nhuận => Tháng 2 : 29 ngày
    40.                         return 28; // Ngược lại => Tháng 2: 28 ngày
    41.                     }
    42.                 default:
    43.                     return 0;
    44.             }
    45.         }
    46.         public int KiemTraHopLe(ComboBox cbDate, ComboBox cbMonth, ComboBox cbYear)
    47.         {
    48.             int month = Convert.ToInt32(cbMonth.SelectedItem);
    49.             int day = Convert.ToInt32(cbDate.SelectedItem);
    50.             if (month >= 1 && month <= 12)
    51.             {
    52.                 if (day >= 1 && day <= NgayMax(cbDate, cbMonth, cbYear)) // Nếu ngày từ 1 đến cái ngày lớn nhất trong tháng đó
    53.  
    54.                     return 1;
    55.                 return 0;
    56.             }
    57.             return 0;
    58.         }
    59.     }



    3. Các Form

    + DangKy.cs

    - Thứ 1 : Ta sẽ đặt giá trị cho cái ComboBox Ngày Tháng Năm

    - Thứ 2 : Bắt sự kiện cho cái nút SignUp => INSERT data vào database


    Visual C# Code:
    1. public partial class DangKy : Form
    2.     {
    3.         AccessData acc;
    4.         public DangKy()
    5.         {
    6.             InitializeComponent();
    7.             for (int i = 1; i <= 31; i++)
    8.             {
    9.                 this.cbDate.Items.Add(i.ToString()); // Lấy giá trị cho ComboBox Ngày : 1 - 31 ngày
    10.             }
    11.  
    12.             for (int i = 0; i <= 12; i++)
    13.             {
    14.                 this.cbMonth.Items.Add(i.ToString()); // Lấy giá trị cho ComboBox Tháng : 1 - 12 tháng
    15.             }
    16.  
    17.             int curYear = DateTime.Now.Year; // Lấy ra năm hiện tại
    18.             for (int i = curYear; i >= 1900; i--)
    19.             {
    20.                 this.cbYear.Items.Add(i.ToString()); // Lấy giá trị cho ComboBox Năm: 1900 - Năm hiên tại
    21.             }
    22.         }
    23.        
    24.        // Bắt sự kiện cho button SignUp => Insert data vào database
    25.         private void btnSignUp_Click(object sender, EventArgs e)
    26.         {
    27.            
    28.                 Ngay n = new Ngay(); // Tạo đối tượng Ngày => Kiểm tra tính hợp lệ của ngày
    29.                 if (n.KiemTraHopLe(cbDate, cbMonth, cbYear) == 1)
    30.                 {
    31.                     acc = new AccessData();
    32.                     string gender = ""; // Tạo biến gender => Để chứa giá trị Male hoặc Female
    33.                     string birth = ""; // Tạo biến birth => Để chứa ngày tháng năm sinh (12/12/1900)
    34.                     if (this.rdMale.Checked == true)
    35.                     {
    36.                         gender = "Male"; // Nếu RadioButton Male được check => Lưu Male vào gender
    37.                     }
    38.                     else
    39.                     {
    40.                         if (this.rdFemale.Checked == true)
    41.                         {
    42.                             gender = "Female"; // Nếu RadioButton Female được check => Lưu Female vào gender
    43.                         }
    44.                     }
    45.                     // Lấy ngày tháng năm từ ComboBox và lưu vào cho biến birth
    46.                     birth = cbDate.SelectedItem.ToString() + "/" + cbMonth.SelectedItem.ToString() + "/" + cbYear.SelectedItem.ToString();
    47.                     //
    48.                     string sql = "INSERT INTO USER_INFO VALUES('" + txtUsername.Text + "', '" + txtPassword.Text + "', '" + txtCPassword.Text + "', '" + txtEmail.Text + "', '" + txtAddress.Text + "', '" + gender + "', '" + birth + "','" + txtOccupation.Text + "')"; // Query Insert data
    49.                     acc.ExcuteNonQuery(sql); // Thực thi Query
    50.                     MessageBox.Show("Đăng Ký Thành Công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information); // Nếu đang ký thành công => Sẽ có thông báo Thành Công và đồng thời các TextBox sẽ mất giá trị do [B]ClearTextBox()[/B].
    51.                     ClearTextBox();
    52.                 }
    53.                 else
    54.                 {
    55.                     // Nếu ngày tháng ko hợp lê thì nó sẽ hiển thị lại bằng các tên bên dưới.
    56.                     cbDate.Text = "Date:";
    57.                     cbMonth.Text = "Month:";
    58.                     cbYear.Text = "Year:";
    59.                 }
    60.          
    61.         }
    62.  
    63.         private void ClearTextBox()
    64.         {
    65.             txtUsername.Clear();
    66.             txtPassword.Clear();
    67.             txtCPassword.Clear();
    68.             txtAddress.Clear();
    69.             txtEmail.Clear();
    70.             cbDate.Text = "Day:";
    71.             cbMonth.Text = "Month:";
    72.             cbYear.Text = "Year:";
    73.             txtOccupation.Clear();
    74.         }
    75.  
    76.        
    77.     }

    + Form1.cs : Form Đăng Nhập
    - Thứ 1: Bắt sự kiện button SignIn : Kiểm tra data nhập từ 2 TextBox (Username , Password) với data trong database. Nếu trùng thì load qua MainForm.cs. Ko trùng thì hiện THÔNG BÁO

    - Thứ 2: Bắt sự kiện button SignUp : Load Form DangKy.cs

    Visual C# Code:
    1. public partial class Form1 : Form
    2.     {
    3.         public Form1()
    4.         {
    5.             InitializeComponent();
    6.         }
    7.  
    8.         private void btnSignUp_Click(object sender, EventArgs e)
    9.         {
    10.             DangKy dk = new DangKy();
    11.             dk.ShowDialog();
    12.         }
    13.  
    14.         private void btnSignIn_Click(object sender, EventArgs e)
    15.         {
    16.             KiemTraDangNhap dn = new KiemTraDangNhap();
    17.             MainForm frm = new MainForm();
    18.             if (dn.CheckLogin(txtUsername.Text, txtPassword.Text) == 1) // Kiểm tra data từ TextBox và data trong database
    19.             {
    20.                 this.Hide(); // Form Đăng Nhập sẽ ẩn đi => MainForm sẽ load lên
    21.                 frm.ShowDialog();
    22.             }
    23.             else
    24.             {
    25.                 lblThongBao.Text = "Sai Password hoac Username. Check lai lan nua !!!";
    26.                 txtUsername.Clear();
    27.                 txtPassword.Clear();
    28.             }
    29.         }
    30.     }

    Chúc thành công !!!

    FILE DEMO: File demo + File back up database(.bak)
    NOTE:
    Muốn sử dụng được cái file Demo. Mấy bro nhớ vào MSSQL Restore cái file DEMO_DANGKY_DANGNHAP.bak (file CSDL của mình).
    Phần đăng nhập này chưa có phần quyền.Bạn có thể chỉ giúp mình làm đăng nhập có phân quyền với được không?
    Mình có bảng NHANVIEN(TenDN,matkhau,quyen)

  9. #9
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Cách đơn giản nhất là như thế này.

    VD:

    CSDL NhanVien(manv(int), hoten(nvarchar), tinhtrang(int), capdo(int))

    capdo: Có 2 thuộc tính
    1: Quản lý
    2: Nhân viên

    Trong chương trình sẽ có 1 form chức năng của QuanLy và NhanVien.
    1. NhanVien ko dc quyen sử dụng chức năng của QuanLy
    2. QuanLy thì được xài hết chức năng NhanVien + QuanLy

    => Mỗi lần đăng nhập. Form sẽ gửi Username xuống database kiểm tra xem username có cấp độ nào.

    + Nếu là 1: Hiện toàn bộ Control trên Form
    + Nếu là 2: Visible = false cho các control ko phải của NhanVien

  10. #10
    Ngày gia nhập
    01 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi nndung179 Xem bài viết
    Cách đơn giản nhất là như thế này.

    VD:

    CSDL NhanVien(manv(int), hoten(nvarchar), tinhtrang(int), capdo(int))

    capdo: Có 2 thuộc tính
    1: Quản lý
    2: Nhân viên

    Trong chương trình sẽ có 1 form chức năng của QuanLy và NhanVien.
    1. NhanVien ko dc quyen sử dụng chức năng của QuanLy
    2. QuanLy thì được xài hết chức năng NhanVien + QuanLy

    => Mỗi lần đăng nhập. Form sẽ gửi Username xuống database kiểm tra xem username có cấp độ nào.





    + Nếu là 1: Hiện toàn bộ Control trên Form
    + Nếu là 2: Visible = false cho các control ko phải của NhanVien
    bạn có thể demo giúp mình với csdl NhanVien(tenDN,matkhau,quyen) được không?

Các đề tài tương tự

  1. ADO.NET Lỗi Incorrect syntax near 'Form' trong form đăng nhập C#
    Gửi bởi vodoi_93 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 08-12-2013, 04:48 PM
  2. Truyền dữ liệu đăng nhập từ form con sang form cha
    Gửi bởi hvmmpro trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 05-12-2012, 07:04 PM
  3. Nên ẩn hay đóng form đăng nhập sau khi đăng nhập xong?
    Gửi bởi billsang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-11-2011, 09:53 PM
  4. Làm sao để hiện Form con sau khi đăng nhập
    Gửi bởi 0nly trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 20-03-2011, 10:41 AM
  5. Hướng dẫn chương trình đăng nhập đăng xuất trên Winform. Ai giúp mình?
    Gửi bởi son0nline trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 02-08-2010, 12:02 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn