UC_GiangVien
using System;
using [Link];
using [Link];
using [Link];
using [Link].Drawing2D;
using [Link];
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
[Link] += UC_GiangVien_Load;
[Link] += btnThem_Click;
[Link] += btnSua_Click;
[Link] += btnXoa_Click;
[Link] += btnTimKiem_Click;
[Link] += btnTaiLai_Click;
[Link] += dgvGiangVien_CellClick;
}
private void MakeButtonRounded(Button btn, int radius = 20)
{
GraphicsPath path = new GraphicsPath();
[Link]();
[Link](new Rectangle(0, 0, radius, radius), 180, 90);
[Link](new Rectangle([Link] - radius, 0, radius, radius), 270, 90);
[Link](new Rectangle([Link] - radius, [Link] - radius, radius, radius), 0,
90);
[Link](new Rectangle(0, [Link] - radius, radius, radius), 90, 90);
[Link]();
[Link] = new Region(path);
}
private void RoundAllButtons(Control parent)
{
foreach (Control ctrl in [Link])
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
[Link] = [Link];
[Link] = 0; // Xóa viền nút
}
else if ([Link])
{
RoundAllButtons(ctrl); // Gọi đệ quy cho container (Panel,...)
}
}
}
private void UC_GiangVien_Load(object sender, EventArgs e)
{
try
{
LoadGiangVien();
LoadMonHoc();
}
catch (Exception ex)
{
[Link]("Lỗi load: " + [Link]);
}
RoundAllButtons(this);
}
private void LoadGiangVien()
{
try
{
if ([Link] == [Link]) [Link]();
[Link]();
string query = "SELECT * FROM GiangVien";
adapter = new SqlDataAdapter(query, conn);
dt = new DataTable();
[Link](dt);
[Link] = dt;
[Link]();
}
catch (Exception ex)
{
[Link]("Lỗi load giảng viên: " + [Link]);
}
}
private void LoadMonHoc()
{
try
{
if ([Link] == [Link]) [Link]();
[Link]();
SqlCommand cmd = new SqlCommand("SELECT MaMon FROM MonHoc", conn);
SqlDataReader reader = [Link]();
[Link](); // clear tránh bị trùng
while ([Link]())
{
[Link](reader["MaMon"].ToString());
}
[Link]();
[Link]();
}
catch (Exception ex)
{
[Link]("Lỗi load môn học: " + [Link]);
}
}
private void dgvGiangVien_CellClick(object sender, DataGridViewCellEventArgs e)
{
int i = [Link];
if (i >= 0)
{
[Link] = [Link][i].Cells["MaGV"].[Link]();
[Link] = [Link][i].Cells["HoTen"].[Link]();
[Link] = [Link][i].Cells["SDT"].[Link]();
[Link] = [Link][i].Cells["Email"].[Link]();
[Link] = [Link][i].Cells["MaMon"].[Link]();
}
}
private void btnThem_Click(object sender, EventArgs e)
{
try
{
if ([Link] == [Link]) [Link]();
[Link]();
string query = "INSERT INTO GiangVien (MaGV, HoTen, SDT, Email, MaMon) VALUES
(@MaGV, @HoTen, @SDT, @Email, @MaMon)";
cmd = new SqlCommand(query, conn);
[Link]("@MaGV", [Link]);
[Link]("@HoTen", [Link]);
[Link]("@SDT", [Link]);
[Link]("@Email", [Link]);
[Link]("@MaMon", [Link]);
[Link]();
[Link]();
LoadGiangVien();
[Link]("Thêm thành công!");
}
catch (Exception ex)
{
[Link]("Lỗi thêm: " + [Link]);
}
}
private void btnSua_Click(object sender, EventArgs e)
{
try
{
if ([Link] == [Link]) [Link]();
[Link]();
string query = "UPDATE GiangVien SET HoTen=@HoTen, SDT=@SDT,
Email=@Email, MaMon=@MaMon WHERE MaGV=@MaGV";
cmd = new SqlCommand(query, conn);
[Link]("@MaGV", [Link]);
[Link]("@HoTen", [Link]);
[Link]("@SDT", [Link]);
[Link]("@Email", [Link]);
[Link]("@MaMon", [Link]);
[Link]();
[Link]();
LoadGiangVien();
[Link]("Sửa thành công!");
}
catch (Exception ex)
{
[Link]("Lỗi sửa: " + [Link]);
}
}
private void btnXoa_Click(object sender, EventArgs e)
{
DialogResult result = [Link]("Bạn có chắc chắn muốn xoá?", "Xác nhận",
[Link]);
if (result == [Link])
{
try
{
if ([Link] == [Link]) [Link]();
[Link]();
string query = "DELETE FROM GiangVien WHERE MaGV=@MaGV";
cmd = new SqlCommand(query, conn);
[Link]("@MaGV", [Link]);
[Link]();
[Link]();
LoadGiangVien();
[Link]("Xoá thành công!");
}
catch (Exception ex)
{
[Link]("Lỗi xoá: " + [Link]);
}
}
}
private void btnTaiLai_Click(object sender, EventArgs e)
{
LoadGiangVien();
}
private void btnTimKiem_Click(object sender, EventArgs e)
{
try
{
if ([Link] == [Link]) [Link]();
[Link]();
string keyword = [Link]();
string query = "SELECT * FROM GiangVien WHERE MaGV LIKE @kw OR HoTen LIKE
@kw";
cmd = new SqlCommand(query, conn);
[Link]("@kw", "%" + keyword + "%");
adapter = new SqlDataAdapter(cmd);
dt = new DataTable();
[Link](dt);
[Link] = dt;
[Link]();
}
catch (Exception ex)
{
[Link]("Lỗi tìm kiếm: " + [Link]);
}
}
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 [Link];
using [Link];
using [Link];
using [Link];
using [Link].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
[Link] += UC_SinhVien_Load;
[Link] += btnThem_Click;
[Link] += btnSua_Click;
[Link] += btnXoa_Click;
[Link] += btnTaiLai_Click;
[Link] += btnTimKiemSV_Click;
[Link] += dgvSinhVien_CellClick;
private void MakeButtonRounded(Button btn, int radius = 20)
{
GraphicsPath path = new GraphicsPath();
[Link]();
[Link](new Rectangle(0, 0, radius, radius), 180, 90);
[Link](new Rectangle([Link] - radius, 0, radius, radius), 270, 90);
[Link](new Rectangle([Link] - radius, [Link] - radius, radius, radius), 0,
90);
[Link](new Rectangle(0, [Link] - radius, radius, radius), 90, 90);
[Link]();
[Link] = new Region(path);
}
private void RoundAllButtons(Control parent)
{
foreach (Control ctrl in [Link])
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
[Link] = [Link];
[Link] = 0; // Xóa viền nút
}
else if ([Link])
{
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();
[Link](dt);
[Link] = 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);
[Link]("@MaSV", [Link]);
[Link]("@HoTen", [Link]);
[Link]("@NgaySinh", [Link]); // dùng
DateTimePicker
[Link]("@SDT", [Link]);
[Link]("@Email", [Link]);
[Link]("@Lop", [Link]);
[Link]("@MaMon", [Link]);
[Link]();
[Link]();
[Link]();
LoadData();
[Link]("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);
[Link]("@MaSV", [Link]);
[Link]("@HoTen", [Link]);
[Link]("@NgaySinh", [Link]);
[Link]("@SDT", [Link]);
[Link]("@Email", [Link]);
[Link]("@Lop", [Link]);
[Link]("@MaMon", [Link]);
[Link]();
[Link]();
[Link]();
LoadData();
[Link]("Sửa thành công!");
}
}
private void btnXoa_Click(object sender, EventArgs e)
{
DialogResult result = [Link]("Xác nhận xoá sinh viên này?", "Cảnh báo",
[Link]);
if (result == [Link])
{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
string query = "DELETE FROM SinhVien WHERE MaSV=@MaSV";
SqlCommand cmd = new SqlCommand(query, conn);
[Link]("@MaSV", [Link]);
[Link]();
[Link]();
[Link]();
LoadData();
[Link]("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))
{
[Link] += btnTimKiemSV_Click;
string keyword = [Link]();
string query = "SELECT * FROM SinhVien WHERE MaSV LIKE @kw OR HoTen LIKE
@kw";
SqlCommand cmd = new SqlCommand(query, conn);
[Link]("@kw", "%" + keyword + "%");
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
[Link](dt);
[Link] = dt;
}
}
private void dgvSinhVien_CellClick(object sender, DataGridViewCellEventArgs e)
{
if ([Link] >= 0)
{
[Link] = [Link][[Link]].Cells["MaSV"].[Link]();
[Link] = [Link][[Link]].Cells["HoTen"].[Link]();
[Link] =
[Link]([Link][[Link]].Cells["NgaySinh"].Value);
[Link] = [Link][[Link]].Cells["SDT"].[Link]();
[Link] = [Link][[Link]].Cells["Email"].[Link]();
[Link] = [Link][[Link]].Cells["Lop"].[Link]();
[Link] =
[Link][[Link]].Cells["MaMon"].[Link]();
}
private void LoadMaMon()
{
[Link]();
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
[Link]();
string query = "SELECT MaMon FROM MonHoc";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader reader = [Link]();
while ([Link]())
{
[Link](reader["MaMon"].ToString());
}
[Link]();
}
if ([Link] > 0)
[Link] = 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 [Link];
using [Link];
using [Link];
using [Link].Drawing2D;
using [Link];
namespace QLMonHocApp
{
public partial class UC_XemDiem : UserControl
{
private string chuoiKetNoi = "Data Source=.;Initial Catalog=QLMonHoc;Integrated
Security=True";
public UC_XemDiem()
{
InitializeComponent();
[Link] += UC_XemDiem_Load;
[Link] += 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();
[Link]();
[Link](new Rectangle(0, 0, radius, radius), 180, 90);
[Link](new Rectangle([Link] - radius, 0, radius, radius), 270, 90);
[Link](new Rectangle([Link] - radius, [Link] - radius, radius, radius), 0,
90);
[Link](new Rectangle(0, [Link] - radius, radius, radius), 90, 90);
[Link]();
[Link] = new Region(path);
}
private void RoundAllButtons(Control parent)
{
foreach (Control ctrl in [Link])
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
[Link] = [Link];
[Link] = 0; // Xóa viền nút
}
else if ([Link])
{
RoundAllButtons(ctrl); // Gọi đệ quy cho container (Panel,...)
}
}
}
private void LoadComboBoxMaSV()
{
[Link]();
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
[Link]();
string query = "SELECT MaSV FROM SinhVien";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader reader = [Link]();
while ([Link]())
{
[Link](reader["MaSV"].ToString());
}
[Link]();
}
if ([Link] > 0)
[Link] = 0;
}
private void LoadComboBoxMonHoc()
{
[Link]();
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
[Link]();
string query = "SELECT MaMon FROM MonHoc";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader reader = [Link]();
while ([Link]())
{
[Link](reader["MaMon"].ToString());
}
[Link]();
}
if ([Link] > 0)
[Link] = 0;
}
private void btnXem_Click(object sender, EventArgs e)
{
if ([Link] == null || [Link] == null)
{
[Link]("Vui lòng chọn sinh viên và môn học.");
return;
}
string maSV = [Link]();
string maMon = [Link]();
try
{
using (SqlConnection conn = new SqlConnection(chuoiKetNoi))
{
[Link]();
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);
[Link]("@MaSV", maSV);
[Link]("@MaMon", maMon);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
[Link](dt);
[Link] = dt;
if ([Link] > 0)
{
double diemTK = [Link]([Link][0]["Tổng kết"]);
[Link] = $"Điểm tổng kết: {diemTK:0.00}";
}
else
{
[Link] = "Không có điểm cho SV và môn học này.";
}
}
}
catch (Exception ex)
{
[Link]("Lỗi khi xem điểm:\n" + [Link]);
}
}
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))
{
[Link]();
SqlDataAdapter da = new SqlDataAdapter(query, conn);
DataTable dt = new DataTable();
[Link](dt);
[Link] = dt; // gán dữ liệu cho bảng bên dưới
}
}
private void btnInDanhSach_Click(object sender, EventArgs e)
{
if ([Link] == 0)
{
[Link]("Không có dữ liệu để in.");
return;
}
SaveFileDialog sfd = new SaveFileDialog
{
Filter = "CSV file (*.csv)|*.csv",
FileName = "[Link]"
};
if ([Link]() == [Link])
{
try
{
using ([Link] sw = new [Link]([Link],
false, [Link].UTF8))
{
// Ghi tiêu đề cột
for (int i = 0; i < [Link]; i++)
{
[Link]([Link][i].HeaderText);
if (i < [Link] - 1) [Link](",");
}
[Link]();
// Ghi từng dòng dữ liệu
foreach (DataGridViewRow row in [Link])
{
for (int i = 0; i < [Link]; i++)
{
[Link]([Link][i].Value?.ToString());
if (i < [Link] - 1) [Link](",");
}
[Link]();
}
}
[Link]("Xuất danh sách thành công!");
}
catch (Exception ex)
{
[Link]("Lỗi khi xuất danh sách:\n" + [Link]);
}
}
}
private void lblTongKet_Click(object sender, EventArgs e)
{
}
}
}
UC_Monhoc
using System;
using [Link];
using [Link];
using [Link];
using [Link].Drawing2D;
using [Link];
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
[Link] += btnThem_Click;
[Link] += btnSua_Click;
[Link] += btnXoa_Click;
[Link] += btnTim_Click;
[Link] += btnTaiLai_Click;
[Link] += dgvMonHoc_CellClick;
LoadData();
}
private void MakeButtonRounded(Button btn, int radius = 20)
{
GraphicsPath path = new GraphicsPath();
[Link]();
[Link](new Rectangle(0, 0, radius, radius), 180, 90);
[Link](new Rectangle([Link] - radius, 0, radius, radius), 270, 90);
[Link](new Rectangle([Link] - radius, [Link] - radius, radius, radius), 0,
90);
[Link](new Rectangle(0, [Link] - radius, radius, radius), 90, 90);
[Link]();
[Link] = new Region(path);
}
private void RoundAllButtons(Control parent)
{
foreach (Control ctrl in [Link])
{
if (ctrl is Button btn)
{
MakeButtonRounded(btn, 20); // Bo tròn nút
[Link] = [Link];
[Link] = 0; // Xóa viền nút
}
else if ([Link])
{
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();
[Link](dt);
[Link] = true;
[Link] = dt;
}
[Link] = true;
[Link] = [Link];
[Link] = false;
[Link] = [Link];
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);
[Link]("@MaMon", [Link]);
[Link]("@TenMon", [Link]);
[Link]("@SoTinChi", [Link]([Link]));
[Link]("@TenGV", [Link]);
[Link]();
[Link]();
[Link]();
}
LoadData();
ClearText();
}
private void btnXoa_Click(object sender, EventArgs e)
{
if ([Link]([Link]))
{
[Link]("Vui lòng chọn môn học để xoá.", "Thông báo",
[Link], [Link]);
return;
}
DialogResult result = [Link](
"Bạn có chắc muốn xoá môn học này không?",
"Xác nhận xoá",
[Link],
[Link]
);
if (result == [Link])
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "DELETE FROM MonHoc WHERE MaMon = @MaMon";
SqlCommand cmd = new SqlCommand(query, conn);
[Link]("@MaMon", [Link]);
[Link]();
[Link]();
[Link]();
}
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);
[Link]("@MaMon", [Link]);
[Link]("@TenMon", [Link]);
[Link]("@SoTinChi", [Link]([Link]));
[Link]("@TenGV", [Link]);
[Link]();
[Link]();
[Link]();
}
LoadData();
ClearText();
}
private void dgvMonHoc_CellClick(object sender, DataGridViewCellEventArgs e)
{
if ([Link] >= 0)
{
DataGridViewRow row = [Link][[Link]];
[Link] = [Link]["MaMon"].Value?.ToString() ?? "";
[Link] = [Link]["TenMon"].Value?.ToString() ?? "";
[Link] = [Link]["SoTinChi"].Value?.ToString() ?? "";
[Link] = [Link]["TenGV"].Value?.ToString() ?? "";
// Debug thử xem TenGV có lấy được không
if ([Link]([Link]))
{
[Link]("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 = [Link]();
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);
[Link]("@keyword", keyword);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
[Link](dt);
[Link] = dt;
}
}
private void btnTaiLai_Click(object sender, EventArgs e)
{
LoadData();
}
private void ClearText()
{
[Link]();
[Link]();
[Link]();
[Link]();
[Link]();
}
private bool ValidateInput()
{
if ([Link]([Link]) ||
[Link]([Link]) ||
[Link]([Link]) ||
[Link]([Link]))
{
[Link]("Vui lòng nhập đầy đủ thông tin môn học và giảng viên.", "Thiếu
dữ liệu", [Link], [Link]);
return false;
}
if ( || soTinChi < 0)
{
[Link]("Số tín chỉ phải là một số nguyên không âm.", "Sai định dạng",
[Link], [Link]);
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 [Link];
using [Link];
using [Link];
using [Link];
using [Link];
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)
{
[Link]();
[Link] = [Link];
[Link](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>
{
[Link].img1,
[Link].img2,
[Link].img3
};
// Gán ảnh đầu tiên ngay lập tức
currentImageIndex = 0;
[Link] = slideImages[currentImageIndex];
[Link] = [Link];
[Link] = [Link];
[Link] = false; // Ẩn fade lúc đầu
// Timer Slide
[Link] += TimerSlide_Tick;
[Link] = 3000;
[Link]();
trangChuControls = [Link]<Control>().ToArray();
[Link]();
}
// Auto chuyển ảnh
private void TimerSlide_Tick(object sender, EventArgs e)
{
if ([Link] == 0) return;
currentImageIndex = (currentImageIndex + 1) % [Link];
StartFadeToImage(slideImages[currentImageIndex]);
}
private void btnTrangchu_Click(object sender, EventArgs e)
{
[Link]();
[Link](trangChuControls);
}
// Fade
private void StartFadeToImage(Image nextImage)
{
[Link] = nextImage;
[Link] = true;
fadeStep = 0;
[Link]();
}
private void timerFade_Tick(object sender, EventArgs e)
{
fadeStep += 10;
if (fadeStep >= 100)
{
[Link]();
[Link] = [Link];
[Link] = false;
return;
}
[Link] = BlendImages([Link], [Link],
fadeStep / 100f);
}
private Image BlendImages(Image img1, Image img2, float alpha)
{
Bitmap bmp = new Bitmap([Link], [Link]);
using (Graphics g = [Link](bmp))
{
[Link](img1, new Rectangle(0, 0, [Link], [Link]));
ColorMatrix cm = new ColorMatrix { Matrix33 = alpha };
ImageAttributes ia = new ImageAttributes();
[Link](cm, [Link], [Link]);
[Link](img2, new Rectangle(0, 0, [Link], [Link]),
0, 0, [Link], [Link], [Link], ia);
}
return bmp;
}
private void pictureBoxFade_Click(object sender, EventArgs e) { }
}
}
Program
using System;
using [Link];
namespace QLMonHocApp
{
internal static class Program
{
[STAThread]
static void Main()
{
[Link]();
[Link](false);
FormLogin loginForm = new FormLogin();
if ([Link]() == [Link])
{
[Link]("Đăng nhập thành công!", "Thông báo", [Link],
[Link]);
[Link](new MainForm());
}
else
{
// Nếu muốn thoát hẳn khi login fail
[Link]();
}
}
}
}
Login
using System;
using [Link];
using [Link];
namespace QLMonHocApp
{
public partial class FormLogin : Form
{
public FormLogin()
{
InitializeComponent();
}
private void FormLogin_Load(object sender, EventArgs e)
{
[Link] = false;
[Link] = btnLogin; // Nhấn Enter là bấm Login
}
private void btnLogin_Click(object sender, EventArgs e)
{
string user = [Link]();
string pass = [Link]();
string connStr = "Data Source=.;Initial Catalog=QLMonHoc;Integrated Security=True";
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
[Link]();
string query = "SELECT COUNT(*) FROM TaiKhoan WHERE Username = @user
AND Password = @pass";
SqlCommand cmd = new SqlCommand(query, conn);
[Link]("@user", user);
[Link]("@pass", pass);
int count = (int)[Link]();
if (count > 0)
{
// ✅ Đúng tài khoản => cho FormLogin đóng lại với kết quả OK
[Link] = [Link];
[Link]();
}
else
{
// ❌ Sai tài khoản
[Link] = "Sai tài khoản hoặc mật khẩu!";
[Link] = true;
}
}
}
catch (Exception ex)
{
[Link]("Lỗi kết nối: " + [Link], "Lỗi", [Link],
[Link]);
}
}