0% found this document useful (0 votes)
10 views20 pages

Code QLMon Hoc

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views20 pages

Code QLMon Hoc

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 20

UC_GiangVien

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace QLMonHocApp
{
public partial class UC_GiangVien : UserControl
{
SqlConnection conn = new SqlConnection("Data Source=localhost;Initial
Catalog=QLMonHoc;Integrated Security=True");
SqlCommand cmd;
SqlDataAdapter adapter;
DataTable dt;

public UC_GiangVien()
{
InitializeComponent();

// Gắn sự kiện
this.Load += UC_GiangVien_Load;
btnThem.Click += btnThem_Click;
btnSua.Click += btnSua_Click;
btnXoa.Click += btnXoa_Click;
btnTimKiem.Click += btnTimKiem_Click;
btnTaiLai.Click += btnTaiLai_Click;
dgvGiangVien.CellClick += dgvGiangVien_CellClick;
}

private void MakeButtonRounded(Button btn, int radius = 20)


{
GraphicsPath path = new GraphicsPath();
path.StartFigure();
path.AddArc(new Rectangle(0, 0, radius, radius), 180, 90);
path.AddArc(new Rectangle(btn.Width - radius, 0, radius, radius), 270, 90);
path.AddArc(new Rectangle(btn.Width - radius, btn.Height - radius, radius, radius), 0,
90);
path.AddArc(new Rectangle(0, btn.Height - radius, radius, radius), 90, 90);
path.CloseFigure();
btn.Region = new Region(path);
}

private void RoundAllButtons(Control parent)


{
foreach (Control ctrl in parent.Controls)
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
btn.FlatStyle = FlatStyle.Flat;
btn.FlatAppearance.BorderSize = 0; // Xóa viền nút
}
else if (ctrl.HasChildren)
{
RoundAllButtons(ctrl); // Gọi đệ quy cho container (Panel,...)
}
}
}

private void UC_GiangVien_Load(object sender, EventArgs e)


{
try
{
LoadGiangVien();
LoadMonHoc();
}
catch (Exception ex)
{
MessageBox.Show("Lỗi load: " + ex.Message);
}
RoundAllButtons(this);
}

private void LoadGiangVien()


{
try
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();

string query = "SELECT * FROM GiangVien";


adapter = new SqlDataAdapter(query, conn);
dt = new DataTable();
adapter.Fill(dt);
dgvGiangVien.DataSource = dt;

conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Lỗi load giảng viên: " + ex.Message);
}
}

private void LoadMonHoc()


{
try
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();

SqlCommand cmd = new SqlCommand("SELECT MaMon FROM MonHoc", conn);


SqlDataReader reader = cmd.ExecuteReader();

comboMaMon.Items.Clear(); // clear tránh bị trùng


while (reader.Read())
{
comboMaMon.Items.Add(reader["MaMon"].ToString());
}

reader.Close();
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Lỗi load môn học: " + ex.Message);
}
}

private void dgvGiangVien_CellClick(object sender, DataGridViewCellEventArgs e)


{
int i = e.RowIndex;
if (i >= 0)
{
txtMaGV.Text = dgvGiangVien.Rows[i].Cells["MaGV"].Value.ToString();
txtHoTen.Text = dgvGiangVien.Rows[i].Cells["HoTen"].Value.ToString();
txtSDT.Text = dgvGiangVien.Rows[i].Cells["SDT"].Value.ToString();
txtEmail.Text = dgvGiangVien.Rows[i].Cells["Email"].Value.ToString();
comboMaMon.Text = dgvGiangVien.Rows[i].Cells["MaMon"].Value.ToString();
}
}

private void btnThem_Click(object sender, EventArgs e)


{
try
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();

string query = "INSERT INTO GiangVien (MaGV, HoTen, SDT, Email, MaMon) VALUES
(@MaGV, @HoTen, @SDT, @Email, @MaMon)";
cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaGV", txtMaGV.Text);
cmd.Parameters.AddWithValue("@HoTen", txtHoTen.Text);
cmd.Parameters.AddWithValue("@SDT", txtSDT.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@MaMon", comboMaMon.Text);

cmd.ExecuteNonQuery();
conn.Close();
LoadGiangVien();
MessageBox.Show("Thêm thành công!");
}
catch (Exception ex)
{
MessageBox.Show("Lỗi thêm: " + ex.Message);
}
}

private void btnSua_Click(object sender, EventArgs e)


{
try
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();

string query = "UPDATE GiangVien SET HoTen=@HoTen, SDT=@SDT,


Email=@Email, MaMon=@MaMon WHERE MaGV=@MaGV";
cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaGV", txtMaGV.Text);
cmd.Parameters.AddWithValue("@HoTen", txtHoTen.Text);
cmd.Parameters.AddWithValue("@SDT", txtSDT.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@MaMon", comboMaMon.Text);

cmd.ExecuteNonQuery();
conn.Close();
LoadGiangVien();
MessageBox.Show("Sửa thành công!");
}
catch (Exception ex)
{
MessageBox.Show("Lỗi sửa: " + ex.Message);
}
}

private void btnXoa_Click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn xoá?", "Xác nhận",
MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
try
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();

string query = "DELETE FROM GiangVien WHERE MaGV=@MaGV";


cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaGV", txtMaGV.Text);
cmd.ExecuteNonQuery();

conn.Close();
LoadGiangVien();
MessageBox.Show("Xoá thành công!");
}
catch (Exception ex)
{
MessageBox.Show("Lỗi xoá: " + ex.Message);
}
}
}

private void btnTaiLai_Click(object sender, EventArgs e)


{
LoadGiangVien();
}

private void btnTimKiem_Click(object sender, EventArgs e)


{
try
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();

string keyword = txtTimKiem.Text.Trim();


string query = "SELECT * FROM GiangVien WHERE MaGV LIKE @kw OR HoTen LIKE
@kw";
cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@kw", "%" + keyword + "%");

adapter = new SqlDataAdapter(cmd);


dt = new DataTable();
adapter.Fill(dt);
dgvGiangVien.DataSource = dt;

conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Lỗi tìm kiếm: " + ex.Message);
}
}

private void panel2_Paint(object sender, PaintEventArgs e)


{

private void lblHoTen_Click(object sender, EventArgs e)


{

private void btnTaiLai_Click_1(object sender, EventArgs e)


{
}
}
}

UC_SinhVien
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace QLMonHocApp
{
public partial class UC_SinhVien : UserControl
{
string chuoiKetNoi = "Data Source=.;Initial Catalog=QLMonHoc;Integrated
Security=True";

public UC_SinhVien()
{
InitializeComponent();

// Gắn sự kiện
this.Load += UC_SinhVien_Load;
btnThem.Click += btnThem_Click;
btnSua.Click += btnSua_Click;
btnXoa.Click += btnXoa_Click;
btnTaiLai.Click += btnTaiLai_Click;
btnTimKiemSV.Click += btnTimKiemSV_Click;
dgvSinhVien.CellClick += dgvSinhVien_CellClick;

private void MakeButtonRounded(Button btn, int radius = 20)


{
GraphicsPath path = new GraphicsPath();
path.StartFigure();
path.AddArc(new Rectangle(0, 0, radius, radius), 180, 90);
path.AddArc(new Rectangle(btn.Width - radius, 0, radius, radius), 270, 90);
path.AddArc(new Rectangle(btn.Width - radius, btn.Height - radius, radius, radius), 0,
90);
path.AddArc(new Rectangle(0, btn.Height - radius, radius, radius), 90, 90);
path.CloseFigure();
btn.Region = new Region(path);
}

private void RoundAllButtons(Control parent)


{
foreach (Control ctrl in parent.Controls)
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
btn.FlatStyle = FlatStyle.Flat;
btn.FlatAppearance.BorderSize = 0; // Xóa viền nút
}
else if (ctrl.HasChildren)
{
RoundAllButtons(ctrl); // Gọi đệ quy cho container (Panel,...)
}
}
}

private void UC_SinhVien_Load(object sender, EventArgs e)


{
LoadData();
LoadMaMon(); // GỌI Ở ĐÂY
RoundAllButtons(this);

private void LoadData()


{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
string query = "SELECT * FROM SinhVien";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
DataTable dt = new DataTable();
da.Fill(dt);
dgvSinhVien.DataSource = dt;
}
}

private void btnThem_Click(object sender, EventArgs e)


{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
string query = "INSERT INTO SinhVien (MaSV, HoTen, NgaySinh, SDT, Email, Lop,
MaMon) VALUES (@MaSV, @HoTen, @NgaySinh, @SDT, @Email, @Lop, @MaMon)";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaSV", txtMaSV.Text);
cmd.Parameters.AddWithValue("@HoTen", txtHoTen.Text);
cmd.Parameters.AddWithValue("@NgaySinh", dtpNgaySinh.Value); // dùng
DateTimePicker
cmd.Parameters.AddWithValue("@SDT", txtSDT.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@Lop", txtLop.Text);
cmd.Parameters.AddWithValue("@MaMon", comboMaMon.Text);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

LoadData();
MessageBox.Show("Thêm thành công!");
}
}

private void btnSua_Click(object sender, EventArgs e)


{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
string query = "UPDATE SinhVien SET HoTen=@HoTen, NgaySinh=@NgaySinh,
SDT=@SDT, Email=@Email, Lop=@Lop, MaMon=@MaMon WHERE MaSV=@MaSV";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaSV", txtMaSV.Text);
cmd.Parameters.AddWithValue("@HoTen", txtHoTen.Text);
cmd.Parameters.AddWithValue("@NgaySinh", dtpNgaySinh.Value);
cmd.Parameters.AddWithValue("@SDT", txtSDT.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@Lop", txtLop.Text);
cmd.Parameters.AddWithValue("@MaMon", comboMaMon.Text);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

LoadData();
MessageBox.Show("Sửa thành công!");
}
}

private void btnXoa_Click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Xác nhận xoá sinh viên này?", "Cảnh báo",
MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
string query = "DELETE FROM SinhVien WHERE MaSV=@MaSV";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaSV", txtMaSV.Text);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

LoadData();
MessageBox.Show("Xoá thành công!");
}
}
}

private void btnTaiLai_Click(object sender, EventArgs e)


{
LoadData();
}

private void btnTimKiemSV_Click(object sender, EventArgs e)


{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
btnTimKiemSV.Click += btnTimKiemSV_Click;
string keyword = txtTimKiemSV.Text.Trim();
string query = "SELECT * FROM SinhVien WHERE MaSV LIKE @kw OR HoTen LIKE
@kw";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@kw", "%" + keyword + "%");

SqlDataAdapter da = new SqlDataAdapter(cmd);


DataTable dt = new DataTable();
da.Fill(dt);
dgvSinhVien.DataSource = dt;
}
}

private void dgvSinhVien_CellClick(object sender, DataGridViewCellEventArgs e)


{
if (e.RowIndex >= 0)
{
txtMaSV.Text = dgvSinhVien.Rows[e.RowIndex].Cells["MaSV"].Value.ToString();
txtHoTen.Text = dgvSinhVien.Rows[e.RowIndex].Cells["HoTen"].Value.ToString();
dtpNgaySinh.Value =
Convert.ToDateTime(dgvSinhVien.Rows[e.RowIndex].Cells["NgaySinh"].Value);
txtSDT.Text = dgvSinhVien.Rows[e.RowIndex].Cells["SDT"].Value.ToString();
txtEmail.Text = dgvSinhVien.Rows[e.RowIndex].Cells["Email"].Value.ToString();
txtLop.Text = dgvSinhVien.Rows[e.RowIndex].Cells["Lop"].Value.ToString();
comboMaMon.Text =
dgvSinhVien.Rows[e.RowIndex].Cells["MaMon"].Value.ToString();
}

private void LoadMaMon()


{
comboMaMon.Items.Clear();
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
conn.Open();
string query = "SELECT MaMon FROM MonHoc";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
comboMaMon.Items.Add(reader["MaMon"].ToString());
}
reader.Close();
}

if (comboMaMon.Items.Count > 0)
comboMaMon.SelectedIndex = 0;
}

private void UC_SinhVien_Load_1(object sender, EventArgs e)


{

private void lblNgaySinhSV_Click(object sender, EventArgs e)


{

private void txtTimKiemSV_TextChanged(object sender, EventArgs e)


{

private void btnXoa_Click_1(object sender, EventArgs e)


{

private void btnTaiLai_Click_1(object sender, EventArgs e)


{

}
}
}

UC_XemDiem
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace QLMonHocApp
{
public partial class UC_XemDiem : UserControl
{
private string chuoiKetNoi = "Data Source=.;Initial Catalog=QLMonHoc;Integrated
Security=True";

public UC_XemDiem()
{
InitializeComponent();
this.Load += UC_XemDiem_Load;
btnXem.Click += btnXem_Click;
}

private void UC_XemDiem_Load(object sender, EventArgs e)


{
LoadComboBoxMaSV();
LoadComboBoxMonHoc();
RoundAllButtons(this);
}

private void MakeButtonRounded(Button btn, int radius = 20)


{
GraphicsPath path = new GraphicsPath();
path.StartFigure();
path.AddArc(new Rectangle(0, 0, radius, radius), 180, 90);
path.AddArc(new Rectangle(btn.Width - radius, 0, radius, radius), 270, 90);
path.AddArc(new Rectangle(btn.Width - radius, btn.Height - radius, radius, radius), 0,
90);
path.AddArc(new Rectangle(0, btn.Height - radius, radius, radius), 90, 90);
path.CloseFigure();
btn.Region = new Region(path);
}

private void RoundAllButtons(Control parent)


{
foreach (Control ctrl in parent.Controls)
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
btn.FlatStyle = FlatStyle.Flat;
btn.FlatAppearance.BorderSize = 0; // Xóa viền nút
}
else if (ctrl.HasChildren)
{
RoundAllButtons(ctrl); // Gọi đệ quy cho container (Panel,...)
}
}
}

private void LoadComboBoxMaSV()


{
cboSinhVien.Items.Clear();
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
conn.Open();
string query = "SELECT MaSV FROM SinhVien";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
cboSinhVien.Items.Add(reader["MaSV"].ToString());
}
reader.Close();
}

if (cboSinhVien.Items.Count > 0)
cboSinhVien.SelectedIndex = 0;
}

private void LoadComboBoxMonHoc()


{
cboMonHoc.Items.Clear();
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
conn.Open();
string query = "SELECT MaMon FROM MonHoc";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
cboMonHoc.Items.Add(reader["MaMon"].ToString());
}
reader.Close();
}

if (cboMonHoc.Items.Count > 0)
cboMonHoc.SelectedIndex = 0;
}

private void btnXem_Click(object sender, EventArgs e)


{
if (cboSinhVien.SelectedItem == null || cboMonHoc.SelectedItem == null)
{
MessageBox.Show("Vui lòng chọn sinh viên và môn học.");
return;
}

string maSV = cboSinhVien.SelectedItem.ToString();


string maMon = cboMonHoc.SelectedItem.ToString();

try
{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
conn.Open();

string query = @"


SELECT
MaSV AS [Mã SV],
MaMon AS [Mã môn],
TenMon AS [Tên môn],
DiemCC AS [Chuyên cần],
DiemGK AS [Giữa kỳ],
DiemCK AS [Cuối kỳ],
DiemTK AS [Tổng kết]
FROM Diem
WHERE MaSV = @MaSV AND MaMon = @MaMon";

SqlCommand cmd = new SqlCommand(query, conn);


cmd.Parameters.AddWithValue("@MaSV", maSV);
cmd.Parameters.AddWithValue("@MaMon", maMon);

SqlDataAdapter da = new SqlDataAdapter(cmd);


DataTable dt = new DataTable();
da.Fill(dt);
dgvDiem.DataSource = dt;

if (dt.Rows.Count > 0)
{
double diemTK = Convert.ToDouble(dt.Rows[0]["Tổng kết"]);
lblTongKet.Text = $"Điểm tổng kết: {diemTK:0.00}";
}
else
{
lblTongKet.Text = "Không có điểm cho SV và môn học này.";
}
}
}
catch (Exception ex)
{
MessageBox.Show("Lỗi khi xem điểm:\n" + ex.Message);
}
}

private void btnXemDanhSach_Click(object sender, EventArgs e)


{
string connectionString = "Data Source=.;Initial Catalog=QLMonHoc;Integrated
Security=True";
string query = "SELECT MaMon, MaSV, TenMon, DiemCC, DiemGK, DiemCK, DiemTK
FROM Diem";

using (SqlConnection conn = new SqlConnection(connectionString))


{
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(query, conn);
DataTable dt = new DataTable();
da.Fill(dt);
dgvDiem.DataSource = dt; // gán dữ liệu cho bảng bên dưới
}
}

private void btnInDanhSach_Click(object sender, EventArgs e)


{
if (dgvDiem.Rows.Count == 0)
{
MessageBox.Show("Không có dữ liệu để in.");
return;
}

SaveFileDialog sfd = new SaveFileDialog


{
Filter = "CSV file (*.csv)|*.csv",
FileName = "DanhSachDiem.csv"
};

if (sfd.ShowDialog() == DialogResult.OK)
{
try
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName,
false, System.Text.Encoding.UTF8))
{
// Ghi tiêu đề cột
for (int i = 0; i < dgvDiem.Columns.Count; i++)
{
sw.Write(dgvDiem.Columns[i].HeaderText);
if (i < dgvDiem.Columns.Count - 1) sw.Write(",");
}
sw.WriteLine();
// Ghi từng dòng dữ liệu
foreach (DataGridViewRow row in dgvDiem.Rows)
{
for (int i = 0; i < dgvDiem.Columns.Count; i++)
{
sw.Write(row.Cells[i].Value?.ToString());
if (i < dgvDiem.Columns.Count - 1) sw.Write(",");
}
sw.WriteLine();
}
}
MessageBox.Show("Xuất danh sách thành công!");
}
catch (Exception ex)
{
MessageBox.Show("Lỗi khi xuất danh sách:\n" + ex.Message);
}
}
}

private void lblTongKet_Click(object sender, EventArgs e)


{

}
}
}

UC_Monhoc
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace QLMonHocApp
{
public partial class UC_MonHoc : UserControl
{
string connectionString = "Data Source=localhost;Initial Catalog=QLMonHoc;Integrated
Security=True";

public UC_MonHoc()
{
InitializeComponent();

// Gán sự kiện thủ công


btnThem.Click += btnThem_Click;
btnSua.Click += btnSua_Click;
btnXoa.Click += btnXoa_Click;
btnTim.Click += btnTim_Click;
btnTaiLai.Click += btnTaiLai_Click;
dgvMonHoc.CellClick += dgvMonHoc_CellClick;
LoadData();
}
private void MakeButtonRounded(Button btn, int radius = 20)
{
GraphicsPath path = new GraphicsPath();
path.StartFigure();
path.AddArc(new Rectangle(0, 0, radius, radius), 180, 90);
path.AddArc(new Rectangle(btn.Width - radius, 0, radius, radius), 270, 90);
path.AddArc(new Rectangle(btn.Width - radius, btn.Height - radius, radius, radius), 0,
90);
path.AddArc(new Rectangle(0, btn.Height - radius, radius, radius), 90, 90);
path.CloseFigure();
btn.Region = new Region(path);
}

private void RoundAllButtons(Control parent)


{
foreach (Control ctrl in parent.Controls)
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
btn.FlatStyle = FlatStyle.Flat;
btn.FlatAppearance.BorderSize = 0; // Xóa viền nút
}
else if (ctrl.HasChildren)
{
RoundAllButtons(ctrl); // Gọi đệ quy cho container (Panel,...)
}
}
}

private void LoadData()


{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "SELECT * FROM MonHoc";
SqlDataAdapter adapter = new SqlDataAdapter(query, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);

dgvMonHoc.AutoGenerateColumns = true;
dgvMonHoc.DataSource = dt;
}

dgvMonHoc.ReadOnly = true;
dgvMonHoc.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgvMonHoc.AllowUserToAddRows = false;
dgvMonHoc.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
RoundAllButtons(this);
}

private void btnThem_Click(object sender, EventArgs e)


{
if (!ValidateInput()) return;

using (SqlConnection conn = new SqlConnection(connectionString))


{
string query = "INSERT INTO MonHoc (MaMon, TenMon, SoTinChi, TenGV) VALUES
(@MaMon, @TenMon, @SoTinChi, @TenGV)";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaMon", txtMaMon.Text);
cmd.Parameters.AddWithValue("@TenMon", txtTenMon.Text);
cmd.Parameters.AddWithValue("@SoTinChi", int.Parse(txtSoTinChi.Text));
cmd.Parameters.AddWithValue("@TenGV", txtTenGV.Text);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
LoadData();
ClearText();
}
private void btnXoa_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txtMaMon.Text))
{
MessageBox.Show("Vui lòng chọn môn học để xoá.", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

DialogResult result = MessageBox.Show(


"Bạn có chắc muốn xoá môn học này không?",
"Xác nhận xoá",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question
);

if (result == DialogResult.Yes)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "DELETE FROM MonHoc WHERE MaMon = @MaMon";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaMon", txtMaMon.Text);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
LoadData();
ClearText();
}
}

private void btnSua_Click(object sender, EventArgs e)


{
if (!ValidateInput()) return;

using (SqlConnection conn = new SqlConnection(connectionString))


{
string query = "UPDATE MonHoc SET TenMon = @TenMon, SoTinChi = @SoTinChi,
TenGV = @TenGV WHERE MaMon = @MaMon";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@MaMon", txtMaMon.Text);
cmd.Parameters.AddWithValue("@TenMon", txtTenMon.Text);
cmd.Parameters.AddWithValue("@SoTinChi", int.Parse(txtSoTinChi.Text));
cmd.Parameters.AddWithValue("@TenGV", txtTenGV.Text);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
LoadData();
ClearText();
}

private void dgvMonHoc_CellClick(object sender, DataGridViewCellEventArgs e)


{
if (e.RowIndex >= 0)
{
DataGridViewRow row = dgvMonHoc.Rows[e.RowIndex];

txtMaMon.Text = row.Cells["MaMon"].Value?.ToString() ?? "";


txtTenMon.Text = row.Cells["TenMon"].Value?.ToString() ?? "";
txtSoTinChi.Text = row.Cells["SoTinChi"].Value?.ToString() ?? "";
txtTenGV.Text = row.Cells["TenGV"].Value?.ToString() ?? "";

// Debug thử xem TenGV có lấy được không


if (string.IsNullOrEmpty(txtTenGV.Text))
{
MessageBox.Show("Không lấy được TenGV. Tên cột có thể không khớp!");
}
}
}

private void btnTim_Click(object sender, EventArgs e)


{
string keyword = txtTimKiem.Text.Trim();

using (SqlConnection conn = new SqlConnection(connectionString))


{
string query = "SELECT * FROM MonHoc WHERE MaMon LIKE '%' + @keyword + '%'
OR TenMon LIKE '%' + @keyword + '%' OR TenGV LIKE '%' + @keyword + '%'";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@keyword", keyword);

SqlDataAdapter adapter = new SqlDataAdapter(cmd);


DataTable dt = new DataTable();
adapter.Fill(dt);
dgvMonHoc.DataSource = dt;
}
}

private void btnTaiLai_Click(object sender, EventArgs e)


{
LoadData();
}

private void ClearText()


{
txtMaMon.Clear();
txtTenMon.Clear();
txtSoTinChi.Clear();
txtTenGV.Clear();
txtMaMon.Focus();
}

private bool ValidateInput()


{
if (string.IsNullOrWhiteSpace(txtMaMon.Text) ||
string.IsNullOrWhiteSpace(txtTenMon.Text) ||
string.IsNullOrWhiteSpace(txtSoTinChi.Text) ||
string.IsNullOrWhiteSpace(txtTenGV.Text))
{
MessageBox.Show("Vui lòng nhập đầy đủ thông tin môn học và giảng viên.", "Thiếu
dữ liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}

if (!int.TryParse(txtSoTinChi.Text, out int soTinChi) || soTinChi < 0)


{
MessageBox.Show("Số tín chỉ phải là một số nguyên không âm.", "Sai định dạng",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}

return true;
}
private void panel2_Paint(object sender, PaintEventArgs e)
{

private void txtTenMon_TextChanged(object sender, EventArgs e)


{

private void txtTenGV_TextChanged(object sender, EventArgs e)


{

private void btnTaiLai_Click_1(object sender, EventArgs e)


{

private void txtSoTinChi_TextChanged(object sender, EventArgs e)


{

private void UC_MonHoc_Load(object sender, EventArgs e)


{

}
}
}

MainForm

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Windows.Forms;

namespace QLMonHocApp
{
public partial class MainForm : Form
{
private int fadeStep = 0;

// Slideshow
private List<Image> slideImages = new List<Image>();
private int currentImageIndex = 0;
private Control[] trangChuControls;

public MainForm()
{
InitializeComponent();

// Load UserControl vào panelContent


private void LoadControl(UserControl control)
{
panelContent.Controls.Clear();
control.Dock = DockStyle.Fill;
panelContent.Controls.Add(control);
}

// Menu
private void btnMonHoc_Click(object sender, EventArgs e) => LoadControl(new
UC_MonHoc());
private void btnGiangVien_Click(object sender, EventArgs e) => LoadControl(new
UC_GiangVien());
private void btnSinhVien_Click(object sender, EventArgs e) => LoadControl(new
UC_SinhVien());
private void btnDiem_Click(object sender, EventArgs e) => LoadControl(new
UC_XemDiem());

// Load form
private void MainForm_Load(object sender, EventArgs e)
{
slideImages = new List<Image>
{
Properties.Resources.img1,
Properties.Resources.img2,
Properties.Resources.img3
};

// Gán ảnh đầu tiên ngay lập tức


currentImageIndex = 0;
pictureBoxSlide.Image = slideImages[currentImageIndex];
pictureBoxSlide.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxFade.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxFade.Visible = false; // Ẩn fade lúc đầu

// Timer Slide
timerSlide.Tick += TimerSlide_Tick;
timerSlide.Interval = 3000;
timerSlide.Start();

trangChuControls = panelContent.Controls.Cast<Control>().ToArray();
pictureBoxSlide.Invalidate();
}

// Auto chuyển ảnh


private void TimerSlide_Tick(object sender, EventArgs e)
{
if (slideImages.Count == 0) return;
currentImageIndex = (currentImageIndex + 1) % slideImages.Count;
StartFadeToImage(slideImages[currentImageIndex]);
}

private void btnTrangchu_Click(object sender, EventArgs e)


{
panelContent.Controls.Clear();
panelContent.Controls.AddRange(trangChuControls);
}

// Fade
private void StartFadeToImage(Image nextImage)
{
pictureBoxFade.Image = nextImage;
pictureBoxFade.Visible = true;
fadeStep = 0;
timerFade.Start();
}

private void timerFade_Tick(object sender, EventArgs e)


{
fadeStep += 10;
if (fadeStep >= 100)
{
timerFade.Stop();
pictureBoxSlide.Image = pictureBoxFade.Image;
pictureBoxFade.Visible = false;
return;
}
pictureBoxSlide.Image = BlendImages(pictureBoxSlide.Image, pictureBoxFade.Image,
fadeStep / 100f);
}

private Image BlendImages(Image img1, Image img2, float alpha)


{
Bitmap bmp = new Bitmap(img1.Width, img1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(img1, new Rectangle(0, 0, bmp.Width, bmp.Height));
ColorMatrix cm = new ColorMatrix { Matrix33 = alpha };
ImageAttributes ia = new ImageAttributes();
ia.SetColorMatrix(cm, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
g.DrawImage(img2, new Rectangle(0, 0, bmp.Width, bmp.Height),
0, 0, img2.Width, img2.Height, GraphicsUnit.Pixel, ia);
}
return bmp;
}

private void pictureBoxFade_Click(object sender, EventArgs e) { }

}
}

Program
using System;
using System.Windows.Forms;

namespace QLMonHocApp
{
internal static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

FormLogin loginForm = new FormLogin();


if (loginForm.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("Đăng nhập thành công!", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information);
Application.Run(new MainForm());
}
else
{
// Nếu muốn thoát hẳn khi login fail
Application.Exit();
}
}
}
}

Login
using System;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace QLMonHocApp
{
public partial class FormLogin : Form
{
public FormLogin()
{
InitializeComponent();
}

private void FormLogin_Load(object sender, EventArgs e)


{
lblError.Visible = false;
this.AcceptButton = btnLogin; // Nhấn Enter là bấm Login
}

private void btnLogin_Click(object sender, EventArgs e)


{
string user = txtUser.Text.Trim();
string pass = txtPass.Text.Trim();

string connStr = "Data Source=.;Initial Catalog=QLMonHoc;Integrated Security=True";

try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();

string query = "SELECT COUNT(*) FROM TaiKhoan WHERE Username = @user


AND Password = @pass";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@user", user);
cmd.Parameters.AddWithValue("@pass", pass);

int count = (int)cmd.ExecuteScalar();

if (count > 0)
{
// ✅ Đúng tài khoản => cho FormLogin đóng lại với kết quả OK
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
// ❌ Sai tài khoản
lblError.Text = "Sai tài khoản hoặc mật khẩu!";
lblError.Visible = true;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Lỗi kết nối: " + ex.Message, "Lỗi", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

You might also like