- ADO.NET cũng bao gồm các tính năng như quản lý giao dịch, ràng buộc dữ liệu và bộ nhớ cache dữ liệu, tạo nên một công nghệ truy cập dữ liệu mạnh mẽ và linh hoạt để xây dựng các ứng dụ
TỔNG QUAN
Ngôn ngữ C#
- C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000, trong đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth.
- C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
- C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm Executable Code và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high-level đa dạng trên các nền tảng và cấu trúc máy tính khác nhau.
- C# với sự hỗ trợ mạnh mẽ của NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF (Windows Presentation Foundation) trở nên rất dễ dàng.
- C# được mô tả là ngôn ngữ sử dụng giới hạn những từ khóa (gồm khoảng
80 từ khóa và mười mấy kiểu dữ liệu xây dựng sẵn) Nếu bạn nghĩ rằng ngôn ngữ có càng nhiều từ khóa thì sẽ càng mạnh mẽ hơn Điều này không phải sự thật, lấy ví dụ ngôn ngữ C# làm điển hình nhé Nếu bạn học sâu về C# bạn sẽ thấy rằng ngôn ngữ này có thể được sử dụng để làm bất cứ nhiệm vụ nào.
- Ngoài những đặc điểm trên thì còn một số ưu điểm nổi bật của C#:
C# là một phần của NET Framework nên được sự chống lưng khá lớn đến từ bộ phận này.
ADO.Net
- ADO.NET là một công nghệ truy cập dữ liệu trong framework NET, cung cấp một tập hợp các thư viện cho việc truy cập và thao tác dữ liệu từ các nguồn dữ liệu khác nhau như cơ sở dữ liệu, tệp XML và dịch vụ web.
- ADO.NET cho phép nhà phát triển kết nối đến cơ sở dữ liệu, thực thi các truy vấn và truy xuất, thao tác dữ liệu theo một cách không kết nối Nó cung cấp các lớp như Connection, Command, DataReader và DataAdapter để tương tác với dữ liệu
- Với ADO.NET, nhà phát triển có thể sử dụng các nhà cung cấp dữ liệu khác nhau như SQL Server, Oracle, MySQL và OLE DB để kết nối đến các cơ sở dữ liệu khác nhau Nó hỗ trợ cả mô hình truy cập dữ liệu kết nối và không kết nối, cho phép truy xuất và thao tác dữ liệu một cách hiệu quả
- ADO.NET cũng bao gồm các tính năng như quản lý giao dịch, ràng buộc dữ liệu và bộ nhớ cache dữ liệu, tạo nên một công nghệ truy cập dữ liệu mạnh mẽ và linh hoạt để xây dựng các ứng dụng dựa trên cơ sở dữ liệu trong framework NET.
2.2 Các thành phần cúa ADO.Net
- Các Compnents của ADO.NET được thiết kế để thao tác dữ liệu và truy cập nhanh vào dữ liệu Connecton, Command, DataReader, DataAdapter, DataSet và DataView là các Components của ADO.NET được sử dụng để thực hiện các hoạt động cơ sở dữ liệu ADO.NET có hai thành phần chính được sử dụng để truy cập và thao tác dữ liệu như sau:
1.1 NET Data Providers là gì?
Cơ sở dữ liệu không thể thực thi trực tiếp code C# của chúng ta, nó chỉ hiểu SQL Vì vậy, nếu ứng dụng NET muốn truy xuất dữ liệu hoặc thực hiện một số thao tác chèn, cập nhật, xóa từ ứng ứng vào CSDL thì cần:
Chuẩn bị câu lệnh SQL.
Lấy kết quả và hiển thị chúng trong ứng dụng.
Hình 1.1: mô tả kiến trúc ADO.NET
Visual Studio
Windows API, Windows Forms, Windows Presentation Foundation,
Windows Store và Microsoft Silverlight Nó có thể sản xuất cả hai ngôn ngữ máy và mã số quản lý.
- Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình Các ngôn ngữ tích hợp gồm có C, C++ và C++/CLI (thông qua Visual C++), VB.NET (thông qua Visual Basic.NET), C# (thông qua Visual C#) và F# Hỗ trợ cho các ngôn ngữ khác như J++/J#, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ Nó cũng hỗ trợ XML/XSLT,
HTML/XHTML, JavaScript và CSS
Visual Studio có một số tính năng rất độc đáo như:
- Hỗ trợ nhiều ngôn ngữ lập trình: Tính năng này giúp phát hiện bất kỳ lỗi hoặc tham chiếu ngôn ngữ chéo (cross-language reference) nào một cách dễ dàng.
- Intelli-Sense: Là một tính năng giúp phát hiện có bất kỳ đoạn code nào bị bỏ sót hay không, tự động thực thi cú pháp biến (variable syntaxes) và khai báo biến (variable declarations) Ví dụ: Nếu một biến nào đó đang được sử dụng trong chương trình và người dùng quên khai báo, intellisense sẽ khai báo biến đó cho người dùng.
- Hỗ trợ đa nền tảng: Visual Studio hoạt động trên cả 3 nền tảng Windows,
- Tiện ích mở rộng và Hỗ trợ: Các extension hay tiện ích mở rộng của
Visual Studio giúp tăng tốc quá trình phát triển ứng dụng mà không ảnh hưởng đến hiệu suất của editor.
- Repository: Visual Studio được kết nối với Git hoặc có thể được kết nối với bất kỳ Repository nào khác.
Visual Studio cũng có chức năng Incremental Search, Regex Search, Multi- item Clipboard và Task-list.
- Web-Support: Các ứng dụng web có thể được xây dựng và hỗ trợ trong
- Hỗ trợ Terminal: Visual Studio hỗ trợ Terminal hoặc Console tích hợp giúp người dùng không cần chuyển đổi giữa hai màn hình.
- Hỗ trợ Git: Tài nguyên có thể được lấy từ Github Repo trực tuyến và ngược lại giúp tiết kiệm thời gian và công sức.
- Debugger: Đây là một tính năng hữu ích cho phép nhà phát triển kiểm tra trạng thái của chương trình và phát hiện bug ở đâu Bạn cũng có thể xem source code chương trình của mình bằng cách sử dụng các công cụ gỡ lỗi của debugger.
- Thiết kế đa dạng: Visual Studio cung cấp một số visual designer để trợ giúp trong việc phát triển các ứng dụng:
- WPF Designer: tạo giao diện người dùng cho Windows Presentation
- Windows Forms Designer: tạo các ứng dụng GUI bằng Windows Forms.
- Class designer: Class designer cho phép chỉnh sửa các class bao gồm các thành viên và quyền truy cập của chúng bằng cách sử dụng mô hình UML.
- Web designer: Visual Studio cũng hỗ trợ một trình soạn thảo và thiết kế trang web, cho phép tạo các trang web bằng cách kéo và thả các widget.
- Mapping Designer: Mapping Designer được LINQ to SQL sử dụng để thiết kế mapping giữa các lược đồ thông tin và từ đó các class sẽ đóng gói dữ liệu.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Các chức năng của website
Mục tiêu của đề tài dựa trên những kiến thức đã học như C#, ADO.NET,… và phương pháp thiết kế giao diện để hỗ trợ cho việc thiết kế website Quản lý SinhViên, các đối tượng được hỗ trợ trong website như: Sinh viên, giảng viên, nhà trường.
- Cho phép sinh viên có thể tìm kiếm thông tin cá nhân của mình một cách nhanh chóng, hiệu quả về những tiêu chí khác nhau như: điểm số , có môn học đã đăng ký, mã học phần ,…
- Sinh viên có thể thực hiện một số chức năng của hệ thống website như: đăng ký thành viên, tìm kiếm thông tin cá nhân, xem danh mục học phần
- Quản lý tài khoản cá nhân như: đổi thông tin cá nhân, đổi mật khẩu, đổi chuyên nghành…
- Quản lý khoa của mình: thêm tên môn trong khoa , thêm sửa xoá tên sinh viên của lớp trong khoá, quản lý điểm của các sinh viên,…
- Quản lý tài khoản cá nhân của sinh viên: tài khoản cá nhân bao gồm quản lý tên, điểm số ,mã sinh viên, của sinh viên.
- Một số chức năng khác như: thêm bớt sinh viên khỏi danh sách của lớp
- Quản lý tài khoản cá nhân của sinh viên: tài khoản cá nhân bao gồm mật khẩu và tên đăng ký, quản lý tên, điểm số ,quê quán, của sinh viên.
- Quản lý tài khoản của giáo viên như: tên giáo viên, lớp dạy, chuyên ngành,tài khoảng đăng nhập,…
- Một số chức năng khác như: thêm bớt sinh viên vào giáo viên khỏi danh sách của khoa.
- Thống kê được số lượng sinh viên cũng như giáo viên của từng ngành
1.2 Phân tích yêu cầu của website
Việc xây dựng website phải đảm bảo được các yêu cầu cơ bản sau:
- Giao diện thân thiện, phù hợp với việctìm kiếm thông tin.
- Quản lý lưu trữ tốt thông tin dữ liệu.
- Cung cấp thông tin chi tiết cho sinh viên như :Điểm số, lớp học, giáo viên,khoa,
- Sinh viên có thể tìm kiếm thông tin phù hợp với nhu cầu của mình một cách nhanh chóng, hiệu quả và chính xác.
- Sinh viên dễ dàng tạo một tài khoản cho riêng mình để hưởng quyền lợi của một sinh viên trong hệ thống.
- Trang web phải đáp ứng những yêu cầu mang tính thẩm mỹ như: bố cục phải rõ ràng, dễ nhìn, màu sắc đơn giản phù hợp với mọi lứa tuổi, phải có tính tương tác cao.
- Có chế độ bảo mật thông tin tốt.
Các tác nhân tham gia bao gồm: Sinh viên, giảng viên, nhà trường.
- Chức năng tra cưu điểm.
- Xem danh mục học phần.
- Xem chi tiết thông tin học.
- Quản lý giảng viên : thêm, xóa, sửa các giảng viên.
- Quản lý lớp : thêm, xóa , sửa thông tin lớp.
- Quản lý khoa : thêm, xóa , sửa thông tin khoa.
- Quản lý điểm : thêm, xóa , sửa diểm thi của sinh viên qua mỗi kỳ thi.
- Quản lý môn học : thêm, xóa , sửa thông tin các môn học.
2.1 Biểu đồ use case tổng quan use case
Hình 2.1a: Biểu đồ use case tổng quan sinh viên
Hình 2.1b: Biểu đồ use case tổng quan giảng viên
2.2 Biểu đồ use case phân rã
Chức năng Tìm kiếm khoa
Hình 2.2: Biểu đồ phân rã chúc năng tìm kiếm khoa
Chức năng Tìm kiếm lớp
Hình 2.3: Biểu đồ phân rã chúc năng tìm kiếm lớp
Chức năng đăng ký lớp
Hình 2.4: Biểu đồ phân rã chúc năng đăng ký lớp
Chức năng quản lý thông tin các nhân
Hình 2.5: Biểu đồ phân rã chúc năng quản lý thông tin cá nhân
Chức năng quản lý sinh viên
Hình 2.6: Biểu đồ phân rã chúc năng quản lý sinh viên
Chức năng quản lý điểm
Hình 2.7: Biểu đồ phân rã chúc năng quản lý điểm
Chức năng quản lý môn học
Hình 2.8: Biểu đồ phân rã chúc năng quản lý môn học
Chức năng quản lý chuyên nghành
Hình 2.9: Biểu đồ phân rã chúc năng quản lý chuyên ngành
Chức năng quản lý lớp
Hình 2.10: Biểu đồ phân rã chức năng quản lý lớp
Biểu đồ lớp chức năng Quản lý điểm
Biểu đồ lớp chức năng Quản lý giảng viên
Hình 2.12: Biểu đồ lớp chức năng Quản lý giảng viên
Biểu đồ lớp chức năng Quản lý khoa
Biểu đồ lớp chức năng Quản lý lớp
Hình 2.14: Biểu đồ lớp chức năng Quản lý khoa
Biểu đồ lớp chức năng Quản lý sinh viên
Hình 2.15: Biểu đồ lớp chức năng Quản lý sinh viên
Hình 2.16: Biểu đồ lớp chức năng Quản lý môn học
Biểu đồ lớp chức năng Thống kê
XÂY DỰNG GIAO DIỆN CHƯƠNG TRÌNH
Giao diện trang chủ
- Trang chủ cung cấp thông tin tổng quan về trang web và môt tả các chức năng Giúp người dùng hiểu được mục đích và phạm vi của trang web.
- Mục Đăng nhập/Đăng ký ở trang chủ chứa cho phép người dùng đăng nhập vào hệ thống sử dụng tài khoản đã đăng ký hoặc đăng ký tài khoản mới.
- Trang chủ cung cấp các liên kết nhanh đến các trang con quan trọng khác trong hệ thống quản lý sinh viên Giúp người dùng dễ dàng truy cập và điều hướng đến các chức năng cụ thể như: quản lý sinh viên, quản lý lớp học,…
Giao diện đăng nhập
- Giúp người dùng đăng nhập vào tài khoản cá nhân
Hình 3.2:Giao diện đăng nhập
Code chính của giao diện public partial class DangNhap : Form
BLL_DangNhap bllDangNhap = new BLL_DangNhap(); public DangNhap()
{ txtTDN.Clear(); txtMK.Clear(); txtTDN.Focus();
} private void btnHuy_Click(object sender, EventArgs e)
{ if (MessageBox.Show("Bạn có muốn thoát khỏi chương trình", "Thông báo",
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) {
} private void btnDangNhap_Click(object sender, EventArgs e)
DataTable dtDN = bllDangNhap.getData($"SELECT tenDangNhap, matKhau, hoTen FROM TaiKhoan WHERE tenDangNhap = '{txtTDN.Text.Trim()}' AND matKhau '{txtMK.Text.Trim()}'"); if (dtDN.Rows.Count > 0)
MessageBox.Show("Đăng nhập thành công"); dem = 0; string tenDN = dtDN.Rows[0][0].ToString().Trim(); string matKhau = dtDN.Rows[0][1].ToString().Trim(); string hoTen = dtDN.Rows[0][2].ToString().Trim();
TrangChu trangChu = new TrangChu(this, tenDN, matKhau, hoTen); trangChu.Show(); this.Hide();
MessageBox.Show("Sai tên đăng nhập hoặc mật khẩu"); newDangNhap(); dem++;
MessageBox.Show("Bạn đã nhập sai 3 lần liên tiếp, đóng ứng dụng");
Giao diện quản lý sinh viên
- Giúp người dùng thêm được thông tin sinh viên như: mã sinh viên, tên sinh viên, quê quán ,…
Hình 3.3a:Giao diện quản lý sinh viên
Code chính của giao diện
Code liên kết sang bên ThemSuaSinhVien private void bthThem_Click(object sender, EventArgs e)
ThemSuaSinhVien themSV = new ThemSuaSinhVien(this, "Thêm sinh viên", true); themSV.Show(); this.Hide();
Code thêm public ThemSuaSinhVien(SinhVien sv, string formName, bool themSua, string maSV, string tenSV, string gioiTinh, string ngaySinh, string noiSinh, string maLop, string maKhoa)
Text = formName; this.themSua = themSua; txtMaSV.Text = maSV; txtTenSV.Text = tenSV; if (gioiTinh.Trim() == "Nam") rbNam.Checked = true; else rbNu.Checked = true; dtpNgaySinh.Value = Convert.ToDateTime(ngaySinh); txtNoiSinh.Text = noiSinh; loadKhoa(); cbKhoa.SelectedValue = maKhoa.Trim(); loadLop(maKhoa.Trim()); cbLop.SelectedValue = maLop.Trim(); dtoSV = new DTO_SinhVien(maSV, tenSV, gioiTinh, ngaySinh, noiSinh, maLop);
Code sửa private void btnSua_Click(object sender, EventArgs e)
{ maKhoa = dtKhoa.Rows[0][0].ToString().Trim();
DataTable dtLop = bllSV.getData($"SELECT maLop FROM Lop WHERE tenLop N'{txtLop.Text.Trim()}'"); string maLop = ""; if (dtLop.Rows.Count > 0)
{ maLop = dtLop.Rows[0][0].ToString().Trim();
ThemSuaSinhVien suaSV = new ThemSuaSinhVien(this, "Sửa sinh viên", false, txtMaSV.Text.Trim(), txtTenSV.Text.Trim(), gioiTinh, dtpNgaySinh.Value.ToString(), txtNoiSinh.Text.Trim(), maLop, maKhoa); suaSV.Show(); this.Hide();
MessageBox.Show("Hãy chọn sinh viên muốn sửa");
Code xoá private void btnXoa_Click(object sender, EventArgs e)
{ if (dgv_SV.SelectedRows.Count > 0)
{ if (MessageBox.Show("Bạn có muốn xoá không?", "Thông báo",
{ if (bllSV.xoaSV(txtMaSV.Text.Trim()))
MessageBox.Show("Xoá thành công"); loadSV();
MessageBox.Show("Xoá không thành công");
MessageBox.Show("Hãy chọn sinh viên muốn xoá");
Giao diện quản lý giảng viên
- Giúp người dùng xem và sửa thông tin giảng viên như: mã giảng viên, tên giảng viên, chuyên ngành ,…
Hình 3.4a:Giao diện quản lý giảng viên
Code chính của giao diện
Code liên kết sang bên ThemSuaSinhVien private void btnThem_Click(object sender, EventArgs e)
ThemSuaGiangVien themGV = new ThemSuaGiangVien(this, "Thêm giảng viên", true, "",
Code thêm public ThemSuaGiangVien(GiangVien gv, string formName, bool themSua, string maGV, string tenGV, string chuyenNganh, string maKhoa)
InitializeComponent(); dtoGV = new DTO_GiangVien(maGV, tenGV, chuyenNganh, maKhoa); this.gv = gv;
Text = formName; this.themSua = themSua; loadKhoa(); if (!themSua)
{ txtMaGV.Enabled = false; txtMaGV.BackColor = Color.White; txtMaGV.Text = maGV; txtTenGV.Text = tenGV; txtChuyenNganh.Text = chuyenNganh; cbKhoa.SelectedValue = maKhoa;
Code sửa private void btnSua_Click(object sender, EventArgs e)
DataTable dtKhoa = bllGV.getData($"SELECT maKhoa FROM Khoa WHERE tenKhoa N'{txtKhoa.Text.Trim()}'"); string maKhoa = ""; if (dtKhoa.Rows.Count > 0)
ThemSuaGiangVien suaGV = new ThemSuaGiangVien(this, "Sửa giảng viên", false, txtMaGV.Text.Trim(), txtTenGV.Text.Trim(), txtChuyenNganh.Text.Trim(), maKhoa); suaGV.Show(); this.Hide();
MessageBox.Show("Hãy chọn giảng viên muốn sửa");
Code xoá private void btnXoa_Click(object sender, EventArgs e)
{ if (MessageBox.Show("Bạn có muốn xoá không?", "Thông báo",
{ if (bllGV.xoaGV(txtMaGV.Text.Trim()))
MessageBox.Show("Xoá thành công"); loadGV();
MessageBox.Show("Xoá không thành công");
MessageBox.Show("Hãy chọn giảng viên muốn xoá");
Giao diện quản lý điểm
- Giúp người dùng quản lý điểm thi theo từng môn của sinh viên có thể thêm những điểm kiểm tra mới cho sinh viên, xem được số lần thi.
Hình 3.5a: Giao diện quản lý điểm
Hình 3.5b: Giao diện thêm điểm
Code chính của giao diện
Code liên kết sang bên ThemSuaDiemThi
ThemSuaDiemThi themDiem = new ThemSuaDiemThi(this, "Thêm điểm", true); themDiem.Show();
Code thêm public ThemSuaDiemThi(DiemThi diem, string formName, bool themSua, string maSV, string maMH, int lanThi, double diemThi, string maKhoa)
Text = formName; this.themSua = themSua; selectedKhoa(maKhoa);
DataTable dtLop = bllDiem.getData($"SELECT maLop FROM SinhVien WHERE maSV cbKhoa.Enabled = cbLop.Enabled = cbMaSV.Enabled = cbMH.Enabled = false; cbKhoa.BackColor = cbLop.BackColor = cbMaSV.BackColor = cbMH.BackColor Color.White; txtDiemThi.Text = diemThi.ToString(); txtDiemThi.Focus(); dtoDiem = new DTO_DiemThi(maSV, maMH, lanThi, diemThi);
Code sửa private void btnSua_Click(object sender, EventArgs e)
{ if (dgv_Diem.SelectedRows.Count > 0)
DataTable dtMH = bllDiem.getData($"SELECT maMH FROM MonHoc WHERE tenMH like N'{txtMH.Text.Trim()}'"); if (dtMH.Rows.Count > 0)
DataTable dtKhoa = bllDiem.getData($"SELECT maKhoa FROM Khoa WHERE tenKhoa like N'{txtKhoa.Text.Trim()}'"); if (dtKhoa.Rows.Count > 0)
ThemSuaDiemThi suaDiem = new ThemSuaDiemThi(this, "Sửa điểm", false, txtMaSV.Text.Trim(), maMH, Convert.ToInt32(txtLanThi.Text.Trim()),
Convert.ToDouble(txtDiem.Text.Trim()), maKhoa); suaDiem.Show();
MessageBox.Show("Hãy chọn điểm thi muốn sửa");
Code xoá private void btnXoa_Click(object sender, EventArgs e)
{ if (dgv_Diem.SelectedRows.Count > 0)
DataTable dtMH = bllDiem.getData($"SELECT maMH from MonHoc where tenMH like N'{txtMH.Text.Trim()}'"); if (dtMH.Rows.Count > 0)
} if (bllDiem.xoaDiem(txtMaSV.Text.Trim(), maMH, Convert.ToInt32(txtLanThi.Text))) {
MessageBox.Show("Xoá thành công"); loadDiem();
MessageBox.Show("Xoá không thành công");
MessageBox.Show("Hãy chọn điểm thi muốn xoá");
Giao diện quản lý khoa
- Giúp người dùng them và xem được mã khoa và tên khoa
Hình 3.6a:Giao diện quản lý khoa
Hình 3.6b: Giao diện thêm khoa
Code chính của giao diện
Code liên kết sang bên ThemSuaKhoa private void btnThemKhoa_Click(object sender, EventArgs e)
ThemSuaKhoa themKhoa = new ThemSuaKhoa(this, "Thêm khoa", true, "", ""); themKhoa.Show();
Code thêm public ThemSuaKhoa(Khoa khoa, string formName, bool themSua, string maKhoa, string tenKhoa)
_khoa = khoa; this.themSua = themSua; dtoKhoa = new DTO_Khoa(maKhoa, tenKhoa); if (!themSua)
{ txtMaKhoa.Enabled = false; txtMaKhoa.BackColor = Color.White; txtMaKhoa.Text = maKhoa; txtTenKhoa.Text = tenKhoa;
Code sửa private void btnSuaKhoa_Click(object sender, EventArgs e)
{ if (dgv_Khoa.SelectedRows.Count > 0)
ThemSuaKhoa suaKhoa = new ThemSuaKhoa(this, "Sửa khoa", false, txtMaKhoa.Text.Trim(), txtTenKhoa.Text.Trim()); suaKhoa.Show();
MessageBox.Show("Hãy chọn khoa muốn sửa");
{ if (bllKhoa.xoaKhoa(txtMaKhoa.Text.Trim()))
MessageBox.Show("Xoá thành công"); loadKhoa();
MessageBox.Show("Xoá không thành công");
MessageBox.Show("Hãy chọn khoa muốn xoá");
Giao diện quản lý lớp
- Giúp hiển thị được tên, mã lớp và lớp thuộc khoa nào đồng thời có thể thao tác thêm sửa xoá.
Hình 3.7a:Giao diện quản lý lớp
Hình 3.7b.: Giao diện thêm lớp
Code chính của giao diện
Code liên kết sang bên ThemSuaLop
ThemSuaLop themLop = new ThemSuaLop(this, "Thêm lớp", true, "", "", ""); themLop.Show(); this.Hide();
Code thêm private void ThemSuaLop_FormClosing(object sender, FormClosingEventArgs e)
{ tsSV.selectedLop(txtMaLop.Text.Trim()); tsSV.Show();
Code sửa private void btnSua_Click(object sender, EventArgs e)
ThemSuaLop suaLop = new ThemSuaLop(this, "Sửa lớp", false, txtMaLop.Text.Trim(), txtTenLop.Text.Trim(), maKhoa); suaLop.Show(); this.Hide();
MessageBox.Show("Hãy chọn lớp muốn sửa");
Code xoá private void btnXoa_Click(object sender, EventArgs e)
{ if (MessageBox.Show("Bạn có muốn xoá không?", "Thông báo",
{ if (bllLop.xoaLop(txtMaLop.Text.Trim()))
MessageBox.Show("Xoá thành công"); loadData();
MessageBox.Show("Xoá không thành công");
MessageBox.Show("Hãy chọn lớp muốn xoá");
Giao diện quản lý môn học
- Hỗ trợ người dùng xem được thông tin môn học dồng thời có thể thêm sửa xoá bớt môn Thêm được môn học cho từng khoa, thêm số tín chỉ,và mã môn học. Ảnh giao diện
Hình 3.8a: Giao diện quản lý môn học
Code chính của giao diện
Code liên kết sang bên ThemSuaMonHoc
ThemSuaMonHoc themMH = new ThemSuaMonHoc(this, "Thêm môn học", true); themMH.Show(); this.Hide();
Code thêm public ThemSuaMonHoc(MonHoc monHoc, string formName, bool themSua)
Text = formName; this.themSua = themSua;
} public ThemSuaMonHoc(MonCuaKhoa monKhoa, string formName, bool themSua)
Text = formName; this.themSua = themSua;
} public ThemSuaMonHoc(MonHoc monHoc, string formName, bool themSua, string maMH, string tenMH, int soTiet)
Text = formName; this.themSua = themSua; txtMaMH.Enabled = false; txtMaMH.Text = maMH; txtTenMH.Text = tenMH; nudSotiet.Value = soTiet; dtoMonhoc = new DTO_MonHoc(maMH.Trim(), tenMH.Trim(), soTiet);
Code sửa private void btnSua_Click(object sender, EventArgs e)
{ if (dgv_Monhoc.SelectedRows.Count > 0)
MessageBox.Show("Hãy chọn môn học muốn sửa");
Code xoá private void btnXoa_Click(object sender, EventArgs e)
{ if (dgv_Monhoc.SelectedRows.Count > 0)
{ if (MessageBox.Show("Bạn có muốn xoá không?", "Thông báo", MessageBoxButtons.YesNo,
DAL_MonCuaKhoa dalMonKhoa = new DAL_MonCuaKhoa(); if (dalMonKhoa.xoaMonCuaKhoa(txtMaMH.Text.Trim())) { if (bllMonhoc.xoaMH(txtMaMH.Text.Trim()))
MessageBox.Show("Xoá môn học thành công");
MessageBox.Show("Xoá môn học không thành công"); }
MessageBox.Show("Xoá môn học không thành công"); }
Giao diện thống kê
- Giúp hiển thị danh sách môn học theo khoa, danh sách giáo viên theo khoá và thống kê sinh viên
Hình 3.9: Giao diện thống kê
Code chính của giao diện
Code tìm kiếm private void btnTimKiem_Click(object sender, EventArgs e)
List where = new List(); string sqlSinhVien = "SELECT ROW_NUMBER() OVER(ORDER BY SinhVien.maSV) AS STT, SinhVien.maSV AS [Mã SV], SinhVien.tenSV AS [Tên SV], SinhVien.gioiTinh AS [Giới tính], SinhVien.ngaySinh AS [Ngày sinh], SinhVien.noiSinh AS [Nơi sinh], Khoa.tenKhoa AS Khoa, Lop.tenLop AS Lớp " +
" Lop ON Khoa.maKhoa = Lop.maKhoa INNER JOIN" +
" SinhVien ON SinhVien.maLop = Lop.maLop";
{ where.Add($" tenSV like N'%{txtHoTen.Text.Trim()}%'");
{ where.Add($" noiSinh like N'{txtNoiSinh.Text.Trim()}'");
} if (rbNam.Checked || rbNu.Checked)
{ string gioiTinh = (rbNam.Checked) ? "Nam" : "Nữ"; where.Add($" gioiTinh = N'{gioiTinh}'");
{ where.Add($" Khoa.maKhoa = '{cbKhoa_SinhVien.SelectedValue.ToString()}'");
{ where.Add($" Lop.maLop = '{cbLop_SinhVien.SelectedValue.ToString()}'");
DataTable dtNgaySinh = bllSV.getData("SELECT MAX(ngaySinh) FROM SinhVien"); if (DateTime.Compare(Convert.ToDateTime(dtpNgaySinh.Value),
Convert.ToDateTime(dtNgaySinh.Rows[0][0].ToString())) 0)
DataTable dtSV = bllSV.getData(sqlSinhVien); bool hocLuc = rbXS.Checked || rbG.Checked || rbK.Checked || rbTB.Checked || rbY.Checked; int count = 0; string strHocLuc = (rbXS.Checked) ? "xuất sắc" : (rbG.Checked) ? "giỏi" : (rbK.Checked) ?
"khá" : (rbTB.Checked) ? "trung bình" : (rbY.Checked) ? "Yếu" : ""; if (hocLuc)
{ if (diemTK(dr[1].ToString().Trim()) >= 9.0) { count++;
{ double dtk = diemTK(dr[1].ToString().Trim()); if (dtk >= 8.5 && dtk < 9)
{ double dtk = diemTK(dr[1].ToString().Trim()); if (dtk >= 7 && dtk < 8.5)
{ double dtk = diemTK(dr[1].ToString().Trim()); if (dtk >= 5 && dtk < 7)
{ double dtk = diemTK(dr[1].ToString().Trim()); if (dtk < 5)
MessageBox.Show($"Đã tìm thấy {dtSV.Rows.Count} sinh viên thoả mãn"); dgvSinhVien.DataSource = dtSV; dgvSinhVien.Columns[0].Width = 40;
MessageBox.Show("Không có sinh viên nào thoả mãn"); dgvSinhVien.DataSource = null;
MessageBox.Show($"Có {count} sinh viên có học lực {strHocLuc}"); }
Code dẫn tới bảng để xem chi tiết sinh viên private void btnChiTiet_Click(object sender, EventArgs e)
{ string maSV = dgvSinhVien.CurrentRow.Cells[1].Value.ToString().Trim(); ChiTietSinhVien ctsv = new ChiTietSinhVien(maSV, diemTK(maSV)); ctsv.Show();
MessageBox.Show("Hãy chọn sinh viên muốn xem chi tiết");
Giao diện xem chi tiết sinh viên
- Giúp người dùng xem chi tiết thông tin về 1 sinh viên bất kỳ bao gồm: mã sinh viên, tên sinh viên, giới tính,…
Hình 3.10:Giao diện xem chi tiết sinh viên
Code chính của giao diện public ChiTietSinhVien(string maSV, double diemTk)
InitializeComponent(); this.maSV = maSV; this.diemTk = diemTk; if (dtSV.Rows[0][2].ToString().Equals("Nam"))
} dtpNgaySinh.Value = Convert.ToDateTime(dtSV.Rows[0][3].ToString()); // ngaySinh txtNoiSinh.Text = dtSV.Rows[0][4].ToString(); // noiSinh txtKhoa.Text = dtSV.Rows[0][5].ToString(); // Khoa txtLop.Text = dtSV.Rows[0][6].ToString(); // Lop txtDiemTK.Text = (Math.Round(diemTk, 2)).ToString(); txtHocLuc.Text = (diemTk >= 9) ? "Xuất sắc" : (diemTk >= 8.5) ? "Giỏi" : (diemTk >= 7) ?
"Khá" : (diemTk >= 5) ? "Trung bình" : "Yếu";
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Những gì đã đạt được:
- Về cơ bản đã nắm rõ được tiến trình làm việc ngôn ngữ C#.Tạo được một website hỗ trợ được cho người dùng có thể quản lý cơ bản được những vấn đề thiết yếu của 1 website quản lý sinh viên như:
Quản lý và đăng nhập người dùng gồm khả năng đăng nhập và xác thực danh tính người dùng, quản lý thông tin người dùng như tên, địa chỉ , mật khẩu,…
Quản lý được sinh viên giúp hiển thị được danh sách học sinh viên học trong mỗi lớp Giúp giảng viên dễ dàng thêm, sửa, xóa thông tin sinh viên,quản lý điểm số của từng sinh viên của từng lớp Hệ thống cũng giúp cung cấp chức năng tìm kiếm và lọc sinh viên dựa trên các tiêu chí như tên, lớp, khoa ,
Giúp người dùng dễ dàng quản lý được khoa, lớp,… hiển thị được danh sách yếu tố quan trọng của một website quant lý sinh viên Giúp dễ dàng thêm, sửa, xóa thông tin từng hạng mục Nó cũng cung cấp tính năng tìm kiếm và lọc các lớp theo các tham số như tên lớp, khoa ,…
Thống kê đươc điểm số danh sách sinh viên theo từ khoa từng lớp học
Dự kiến và hướng phát triển:
- Do còn nhiều thiếu sót trong quá trình phát triển nhóm sẽ phấn đấu hơn đưa ra những dự kiến và hướng phát triển nhằm nâng cao tính ứng dụng cho website cũng như có thể hỗ trợ được cho nhiều người dừng hơn và đây là những dự kiến
Cải thiện giao diện người dùng để tạo trải nghiệm tốt hơn cho người sử dụng Bao gồm sắp xếp, lọc, phân trang dữ liệu, cung cấp thông báo và gợi ý khi nhập dữ liệu, v.v
Thêm chức năng quản lý điểm số của sinh viên, cho phép thêm, sửa, xóa điểm số và tính toán điểm trung bình, xếp loại học tập, v.v
Kết nối dự án với các hệ thống khác như hệ thống tài khoản thanh toán, hệ thống email, v.v để cung cấp tính năng bổ sung như thanh toán học phí, gửi email thông báo, v.v.
Phát triển chức năng quản lý tài liệu, cho phép tải lên, tải xuống và chia sẻ tài liệu giảng dạy, bài giảng, v.v
Tạo tính năng chat trực tuyến giữa sinh viên và giảng viên hoặc giữa sinh viên với nhau để tương tác và trao đổi thông tin
Thêm chức năng đánh giá giảng viên và khóa học từ phía sinh viên, cung cấp đánh giá và nhận xét để nâng cao chất lượng giảng dạy.