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

Giảng Viên Management System Code

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)
3 views20 pages

Giảng Viên Management System Code

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

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 (![Link]([Link], out int soTinChi) || 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]);
}
}

Common questions

Powered by AI

The UC_MonHoc control uses try-catch blocks to handle exceptions during database operations, displaying error messages to the user. However, improvements could include logging errors to a file or monitoring system for later analysis, and providing user-friendly messages that maintain application context, potentially reducing confusion .

UC_XemDiem ensures combo boxes are correctly populated by connecting to the database using SqlConnection, executing a query to fetch necessary columns (e.g., MaSV from SinhVien), and then populating combo boxes with the results. It clears the items before adding new entries, ensuring no duplicate or stale data is presented .

In UC_SinhVien, data addition is achieved by using parameterized SQL INSERT commands, which help prevent SQL injection. The use of direct SQL queries without input validation may still expose the system to potential risks. Ensuring all input is validated would further enhance data integrity .

The UC_GiangVien user control manages SQL connection integrity by checking the connection state before opening or closing it, ensuring that it is not left open unnecessarily. It uses try-catch blocks to handle exceptions, which helps in managing errors and prevents application crashes during the loading of data from the database .

The UC_SinhVien user control employs a method called MakeButtonRounded to enhance button appearance. It uses a GraphicsPath to create a rounded rectangle outline for each button, modifies the button's Region to this path, and removes the button's border. By doing so, it gives buttons a visually appealing rounded look .

Parameterized queries in UC_GiangVien prevent SQL injection by separating SQL commands from data inputs, ensuring that user inputs are treated as data rather than executable code. This enhances security by providing a clear boundary between code and data .

User authentication is handled using SQL queries to check username and password against the database in FormLogin. This method can be improved by using hashed passwords and stored procedures to protect against SQL injection and reduce security risks associated with plaintext password checks .

Using LoadControl to clear and add UserControl elements ensures the application dynamically loads only necessary components, leading to better performance by reducing memory usage. It also adheres to modular design principles, promoting ease of maintenance and scalability .

UC_MonHoc ensures safe updates and deletions by using parameterized SQL statements and user confirmations. Before deleting records, it prompts the user with a confirmation dialog, reducing the likelihood of accidental data loss. These practices secure the operations against SQL injection attacks .

Error messages in UC_GiangVien are managed using MessageBox to display the exception details. To improve the user experience, a more user-friendly approach could involve displaying simple, understandable error prompts while logging detailed technical information for developer analysis. Implementing a logging mechanism could facilitate this .

You might also like