Đồ án Phân tích thiết kế hệ thống quản lý điểm THPT

Cùng với sự phát triển nhanh chóng về phần cứng máy tính, các phần mềm ngày càng trở nên đa dạng, phong phú, hoàn thiện hơn và hỗ trợ hiệu quả cho con người. Các phần mềm hiện nay ngày càng mô phỏng được rất nhiều nghiệp vụ khó khăn, hỗ trợ cho người dùng thuận tiện sử dụng, thời gian xử lý nhanh chóng, và một số nghiệp vụ được tự động hoá cao. Do vậy mà trong việc phát triển phần mềm, sự đòi hỏi không chỉ là sự chính xác, xử lý được nhiều nghiệp vụ thực tế mà còn phải đáp ứng các yêu cầu khác như về tốc độ, giao diện thân thiện, mô hình hoá được thực tế vào máy tính để người sử dụng tiện lợi, quen thuộc, tính tương thích cao, bảo mật cao (đối với các dữ liệu nhạy cảm), Các phần mềm giúp tiết kiệm một lượng lớn thời gian, công sức của con người, và tăng độ chính xác và hiệu quả trong công việc (nhất là việc sửa lỗi và tự động đồng bộ hoá). Nhằm mục đích tổng hợp các kiến thức đã học, môn học thực tập công nhân tạo điều kiện cho sinh viên có cơ hội phát huy khả năng lập trình., khả năng phát triển các ứng dụng phần mềm vào thực tế. Trong môn học này, nhóm đã chọn đề tài quản lý học sinh cấp 3. Thực tế, việc quản lý học vụ trong trường trung học phổ thông. Nếu không có sự hỗ trợ của tin học, việc quản lý này phải cần khá nhiều người, chia thành nhiều khâu, mới có thể quản lý được toàn bộ hồ sơ, học sinh (thông tin, điểm số, kỷ luật, học bạ, ), lớp học (sỉ số, GVCN, thời khoá biểu, ), giáo viên (thông tin, lịch dạy, ) cũng như các nghiệp vụ sắp thời khoá biểu, tính điểm trung bình, xếp loại học lực cho học sinh toàn trường (số lượng học sinh có thể lên đến hai ba ngàn học sinh). Các công việc này đòi hỏi nhiều thời gian và công sức, mà sự chính xác và hiệu quả không cao, vì đa số đều làm bằng thủ công rất ít tự động. Một số nghiệp vụ như tra cứu, thống kê, và hiệu chỉnh thông tin khá vất vả. Ngoài ra còn có một số khó khăn về vấn đề lưu trữ khá đồ sộ, dễ bị thất lạc, tốn kém, Trong khi đó, các nghiệp vụ này hoàn toàn có thể tin học hoá một cách dễ dàng. Với sự giúp đỡ của tin học, việc quản lý học vụ sẽ trở nên đơn giản, thuận tiện, nhanh chóng và hiệu quả hơn rất nhiều.

doc40 trang | Chia sẻ: tuandn | Lượt xem: 3168 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồ án Phân tích thiết kế hệ thống quản lý điểm THPT, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TỔNG QUAN VỀ ĐỀ TÀI Bối cảnh và lý do thực hiện đề tài Cùng với sự phát triển nhanh chóng về phần cứng máy tính, các phần mềm ngày càng trở nên đa dạng, phong phú, hoàn thiện hơn và hỗ trợ hiệu quả cho con người. Các phần mềm hiện nay ngày càng mô phỏng được rất nhiều nghiệp vụ khó khăn, hỗ trợ cho người dùng thuận tiện sử dụng, thời gian xử lý nhanh chóng, và một số nghiệp vụ được tự động hoá cao. Do vậy mà trong việc phát triển phần mềm, sự đòi hỏi không chỉ là sự chính xác, xử lý được nhiều nghiệp vụ thực tế mà còn phải đáp ứng các yêu cầu khác như về tốc độ, giao diện thân thiện, mô hình hoá được thực tế vào máy tính để người sử dụng tiện lợi, quen thuộc, tính tương thích cao, bảo mật cao (đối với các dữ liệu nhạy cảm), Các phần mềm giúp tiết kiệm một lượng lớn thời gian, công sức của con người, và tăng độ chính xác và hiệu quả trong công việc (nhất là việc sửa lỗi và tự động đồng bộ hoá). Nhằm mục đích tổng hợp các kiến thức đã học, môn học thực tập công nhân tạo điều kiện cho sinh viên có cơ hội phát huy khả năng lập trình., khả năng phát triển các ứng dụng phần mềm vào thực tế. Trong môn học này, nhóm đã chọn đề tài quản lý học sinh cấp 3. Thực tế, việc quản lý học vụ trong trường trung học phổ thông. Nếu không có sự hỗ trợ của tin học, việc quản lý này phải cần khá nhiều người, chia thành nhiều khâu, mới có thể quản lý được toàn bộ hồ sơ, học sinh (thông tin, điểm số, kỷ luật, học bạ, ), lớp học (sỉ số, GVCN, thời khoá biểu, ), giáo viên (thông tin, lịch dạy, ) cũng như các nghiệp vụ sắp thời khoá biểu, tính điểm trung bình, xếp loại học lực cho học sinh toàn trường (số lượng học sinh có thể lên đến hai ba ngàn học sinh). Các công việc này đòi hỏi nhiều thời gian và công sức, mà sự chính xác và hiệu quả không cao, vì đa số đều làm bằng thủ công rất ít tự động. Một số nghiệp vụ như tra cứu, thống kê, và hiệu chỉnh thông tin khá vất vả. Ngoài ra còn có một số khó khăn về vấn đề lưu trữ khá đồ sộ, dễ bị thất lạc, tốn kém, Trong khi đó, các nghiệp vụ này hoàn toàn có thể tin học hoá một cách dễ dàng. Với sự giúp đỡ của tin học, việc quản lý học vụ sẽ trở nên đơn giản, thuận tiện, nhanh chóng và hiệu quả hơn rất nhiều. Cuối cùng, chúng em xin chân thành cảm ơn thầy đã nhiệt tình hướng dẫn nhóm thực hiện đề tài này. Phương pháp triển khai đề tài Từ những yêu cầu, đề cương chi tiết đối với đề tài của giáo viên hướng dẫn, nhóm đề ra các công việc cụ thể : Giai đoạn 1: Thu thập yêu cầu, xác định các chức năng của hệ thống. Giai đoạn 2: Thiết kế cơ sỡ dữ liệu. Giai đoạn 3: Mã hóa. Giai đoạn 4: Kiểm thử. Giai đoạn 5: Cài đặt . Môi trường phát triển và triễn khai Yêu cầu môi trường phát triển Hệ điều hành windows XP trở lên .net framework 2.0 + Hệ quản trị cơ sơ dữ liệu cơ sở dữ liệu SQL Server 2005 Ngôn ngữ lập trình: C# IDE hổ trợ: Visual studio 2005 Môi trường triển khai Hệ thống mạng LAN Chương 1. PHÂN TÍCH YÊU CẦU NGHIỆP VỤ BÀI TOÁN Giới thiệu Để phù hợp với thực tế, phần mềm tạo ra phải than thiện, dễ sử dụng đối với người dùng, bước khảo sát hiện trạng, tìm hiểu và phân tích các yêu cầu về mặt nghiệp vụ là rất cần thiết đối với một phần mềm. Bài toán quản lý học sinh cấp 3 được thiết kế nhằm ứng dụng cho việc quản lý hệ thống một trường trung học phổ thông. Bài toán được cài đặt trên hệ thống mạng Lan. Mỗi người dùng khi sử dụng hệ thống cần phải thiết lập cấu hình kết nối đến máy chủ của trường. Sau đó, đăng nhập vào hệ thống với username và password của mình. Tại mỗi vai trò của người dùng, hệ thống sẽ tự động giới hạn các chức năng tương ứng với vai trò đó. Các yêu cầu nghiệp vụ Bài toán quản lý học sinh cấp 3 gồm các yêu cầu sau: Chức năng cấu hình hệ thống: trước khi đăng nhập vào hệ thống, người dùng cần phải cấu hinh tên máy chủ, mật khẩu và tài khoản máy chủ, chọn cơ sở dữ liệu cần thao tác. Quản lý học sinh: Việc quản lý học sinh bao gồm các thao tác như thêm học sinh mới, sửa đổi thông tin học sinh, xếp lớp… Quản lý cán bộ giáo viên trong trường: Việc quản lý này cũng bao gồm: Thêm mới giáo viên, sửa đổi thông tin, phân công nhiệm vụ giảng dạy, nhiệm vụ chủ nhiệm lớp… Quản lý điểm học sinh: nhập điểm, thống kê kết quả học tập của từng học sinh, từng lớp học. Ngoài ra đối với vai trò admin, người dùng còn có các tác vụ như thay đổi mật khẩu, thiết lập lại mật khẩu, thiết lập quyền cho người dùng…. Đối với vai trò người dùng User còn có các chức năng : thay đổi mật khẩu của chính người dùng hiện tại. Chương 2. THIẾT KẾ CƠ SỞ DỮ LIỆU 2.1. Sơ đồ ERD 2.2. Danh sách các bảng STT Tên Ý nghĩa HocSinh Lưu trữ thông tin học sinh GiaoVien Lưu trữ thông tin giáo viên HocKy Lưu trữ thông tin về các học kỳ trong một năm học NamHoc Lưu trữ thông tin về các năm học LopHoc Lưu trữ thông tin về tất cả lớp học KhoiHoc Lưu trữ thông tin về các khối học, vd: 10,11,12 BanHoc Lưu trữ thông tin về các ban học, vd: ban A, B, cơ sở MonHoc Lưu trữ thông tin phân các môn học XepLop Lưu trữ thông tin phân công học sinh vào một lớp cụ thể PhanCong Lưu trữ thông tin về phân công dạy học cho giáo viên Diem Lưu trữ điểm số của học sinh 2.3. Miêu tả chi tiết các bảng 2.3.1. Bảng học sinh HocSinh Tên trường Kiểu dữ liệu Miêu tả Ghi chú Mahs int Mã học sinh Khóa chính Ho nvarchar Họ và tên đệm Ten nvarchar Tên học sinh GioiTinh nvarchar Giới tính học sinh NgaySinh datetime Ngày sinh học sinh DiaChi nvarchar Địa chỉ học sinh DienThoai Varchar Điện thoại liên hệ CMDN Varchar Số CMND 2.3.2. Bảng giáo viên GiaoVien Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaGV int Mã giáo viên Khóa chính Ho nvarchar Họ và tên đệm Ten nvarchar Tên giáo viên GioiTinh nvarchar Giới tính giáo viên NgaySinh datetime Ngày sinh giáo viên DiaChi nvarchar Địa chỉ giáo viên DienThoai Varchar Điện thoại liên hệ CMDN Varchar Số CMND MatKhau Varchar Mật khẩu đăng nhập hệ thống Role Varchar Vai trò đăng nhập User, admin 2.3.3. Bảng năm học Namhoc Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaNH int Mã năm học Khóa chính, tăng tự động TenNH Nvarchar Tên năm học NamBatDau Int Năm bắt đầu NamKetThuc Int Năm kết thúc 2.3.4. Bảng học kỳ HocKy Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaHK Int Mã học kỳ Khóa chính, tăng tự động TenHK Nvarchar Tên học kỳ ThangBatDau Int Tháng bắt đầu học kỳ NgayBatDau Int Ngày bắt đầu học kỳ ThangKetThuc Int Tháng kết thúc học kỳ NgayKetThuc Int Ngày kết thúc học kỳ 2.3.5. Bảng lớp học LopHoc Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaLH Int Mã lớp học Khóa chính, tăng tự động TenLH Nvarchar Tên lớp học MaKH Int Mã khối học Khóa ngoại MaBH Int Mã ban học Khóa ngoại MaNH Int Mã năm học Khóa ngoại MaGV Varchar Mã giáo viên chủ nhiệm Khóa ngoại 2.3.6. Bảng ban học BanHoc Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaBH Int Mã ban học Khóa chính, tăng tự động TenBH Nvarchar Tên ban học 2.3.7. Bảng môn học MonHoc Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaMH Int Mã môn học Khóa chính, tăng tự động TenMH Nvarchar Tên môn học 2.3.8. Bảng khối học KhoiHoc Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaKH Int Mã khóa học Khóa chính TenKH Nvarchar Tên khóa học Khóa chính 2.3.9. Bảng phân công PhanCong Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaPC int Mã phân công Khóa chính, tăng tự động MaGV Int Mã giáo viên Khóa ngoại MaLH Int Mã lớp học Khóa ngoại MaHK Int Mã học kỳ Khóa ngoại MaMH Int Mã môn học Khóa ngoại 2.3.10. Bảng xếp lớp XepLop Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaHS Varchar Mã học sinh Khóa chính, khóa ngoại MaLH Int Mã lớp học Khóa chính, khóa ngoại 2.3.11. Bảng điểm Diem Tên trường Kiểu dữ liệu Miêu tả Ghi chú MaHS Varchar Mã học sinh Khóa chính, khóa ngoại MaPC int Mã phân công Khóa chính, khóa ngoại DiemHS1 Varchar Điểm hệ số 1 Các điểm được ngăn cách bởi dấu phẩy DiemHS2 Varchar Điểm hệ số 2 Các điểm được ngăn cách bởi dấu phẩy DiemThi Decimal(3,1) Điểm thi Số thập phân, 1 chữ số ở phần thập phân TBM Decimal(3,2) Điểm trung bình môn Số thập phân, 2 chữ số ở phần thập phân Chương 3. XÂY DỰNG CHỨC NĂNG CỦA CHƯƠNG TRÌNH Chức năng cấu hình máy chủ Bài toán được cài đặt trong môi trường mạng LAN nên sẽ có một máy chủ lưu trữ cơ sở dữ liệu. Mỗi máy khách khi đăng nhập vào hệ thống cần phải cấu hình các thông số để đăng nhập vào. Ở bài toán này, với chức năng cấu hình máy chủ, các thông số cần thiết phải được cung cấp là tên máy chủ, tài khoản và mật khẩu đăng nhập vào hệ quản trị cơ sở dữ liệu của máy chủ, tên cơ sở dữ liệu mà tại máy khách cần thao tác đến. Để tạo kết nối đến máy chủ ta sử dụng đoạn mã: SqlConnection cn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + database + ";Integrated Security=True"); if (cn != null) { cn.Open(); } Hoặc đoạn mã sau nếu đăng nhập với tài khoản và mật khẩu : cn = new SqlConnection("Data Source=" + Server + ";database=" + database + ";uid=" + user + ";pwd=" + pass); if (cn != null) { cn.Open(); } Chức năng đăng nhập Nhằm đảm bảo tính bảo mật trong hệ thống, với mỗi người dùng được cấp môt tài khoản cùng với quyền của mình. Khi vào hệ thống, người dùng cần phải thực hiện tác vụ đăng nhập với username và password. Hệ thống sẽ đưa ra các chức năng tương ứng với quyền của người đăng nhập. Khi người dùng cung cấp user name và password, chương trình sẽ gửi chúng đến hệ thống và kiểm tra xem tài khoản có hợp lệ hay không: việc kiểm tra này sẽ gọi thủ tục hàm được cài đặt trong hệ thống: create proc [dbo].[usp_checkLogin] @user varchar(10), @pass varchar(50), @flag bit output, @role varchar(10) output, @name nvarchar(100)output as begin select @role= [Role],@name = TenGV from giaovien where [MaGV]=@user and MatKhau=@pass if (count(@role)=1) set @flag = 1 else set @flag = 0 end Chức năng quản lý học sinh Thêm danh sách học sinh: chọn năm học, chọn học kỳ, chọn ban học và lớp học, điền đầy đủ thông tin của học sinh và chọn nút thêm mới học sinh. Hoặc có thể chọn từ file excel: Thủ tục chèn dữ liệu vào bảng học sinh: CREATE proc usp_InsertHS @Ho [nvarchar](50), @Ten [nvarchar](100) , @Gioitinh [nvarchar](10), @Ngaysinh [datetime] , @Diachi [nvarchar](Max), @Dienthoai [varchar](50) , @CMND [varchar](50), @MaHS [varchar](50) output as begin INSERT INTO HocSinh VALUES ('',@Ho,@Ten, @Gioitinh ,@Ngaysinh,@Diachi,@Dienthoai,@CMND) select @MaHS=max([MaHS]) from HocSinh end Trong chương trình sẽ gọi thủ tục này và truyền vào các thông số trên. Sửa đổi thông tin học sinh: chọn lớp học. dùng datagridview để load tất cả các học sinh thuộc lớp đó. Để sửa đổi thông tin học sinh, cần chọn một hàng , các thông tin cụ thể sẽ được set lên các textbox nhằm cho chúng ta sửa đổi. Thủ tục cập nhật lại dữ liệu của học sinh create proc usp_UpdateHocSinh @MaHS [varchar](50) , @Ho [nvarchar](50), @Ten [nvarchar](100) , @Gioitinh [nvarchar](10), @Ngaysinh [datetime] , @Diachi [nvarchar](Max), @Dienthoai [varchar](50) , @CMND [varchar](50) as update HocSinh set Ho=@Ho,Ten=@Ten,Gioitinh=@Gioitinh,Ngaysinh=@Ngaysinh,Diachi=@Diachi,Dienthoai=@Dienthoai,CMND=@CMND where MaHS=@MaHS Tìm kiếm học sinh: Người dùng cần nhập vào mã học sinh. Thông tin học sinh này sẽ được load về datagridview. Đối với học sinh vừa tìm được, chúng ta có thể sửa đổi thông tin. Xếp lớp: chọn các học sinh cần xếp lớp mới, chọn lớp. Chức năng quản lý điểm học sinh Đối tượng sử dụng: Giáo viên bộ môn đã đăng nhập vào hệ thống. Giáo viên chỉ có quyền cập nhật điểm của bọ môn mình phụ trách Chức năng ghi điểm Mở bảng điểm phù hợp với mã phân công của giáo viên bộ môn: ALTER PROC [dbo].[usp_GETBANGDIEMBYMAPC] @MAPC INT AS SELECT HS.MAHS,(HO+TEN)AS HOTEN, DIEMHS1,DIEMHS2,DIEMTHI,TBM FROM HOCSINH AS HS,DIEM, PHANCONG AS PC WHERE DIEM.MAPC = PC.MAPC AND PC.MAPC = @MAPC AND DIEM.MAHS = HS.MAHS Cập nhật điểm ALTER PROC [dbo].[usp_UPDATEDIEM] @MAHS VARCHAR(50), @MAPC INT, @DIEMHS1 VARCHAR(50), @DIEMHS2 VARCHAR(50), @DIEMTHI DECIMAL(3,1) AS UPDATE DIEM SET DIEMHS1=@DIEMHS1,DIEMHS2 = @DIEMHS2,DIEMTHI=@DIEMTHI WHERE MAHS = @MAHS AND MAPC = @MAPC Chức năng tính điểm trung bình ALTER PROC [dbo].[usp_UPDATETBM] @MAHS VARCHAR(50), @MAPC INT, @DIEMHS1 VARCHAR(50), @DIEMHS2 VARCHAR(50), @DIEMTHI DECIMAL(3,1), @TBM DECIMAL(3,2) AS UPDATE DIEM SET DIEMHS1=@DIEMHS1,DIEMHS2 = @DIEMHS2,DIEMTHI=@DIEMTHI,TBM = @TBM WHERE MAHS = @MAHS AND MAPC = @MAPC Chức năng tổng kết điểm từng môn của một lớp ALTER PROC [dbo].[USP_GETBANGDIEMTONGKETMON] @MALH INT, @MAMH INT AS DECLARE @MAPC1 INT DECLARE @MAPC2 INT EXEC USP_GET2MAPC @MAMH,@MALH,@MAPC1 OUTPUT,@MAPC2 OUTPUT --TAO BANG TAM 1 (DIEM HKI) SELECT MAHS,HOTEN,TBM AS HKI INTO #BANGTAM1 FROM VIEW_BANGDIEM WHERE MAPC = @MAPC1 --TAO BANG TAM 2 SELECT MAHS,HOTEN,TBM AS HKII INTO #BANGTAM2 FROM VIEW_BANGDIEM WHERE MAPC = @MAPC2 --KET NOI 2 BANG TAM SELECT #BANGTAM1.MAHS, #BANGTAM1.HOTEN,HKI,HKII,DBO.DIEMTKMON(HKI,HKII) AS CANAM FROM #BANGTAM1,#BANGTAM2 WHERE #BANGTAM1.MAHS = #BANGTAM2.MAHS Chức năng tổng kết điểm tất cả các môn ALTER PROC [dbo].[USP_TKCUOINAM] @MALH INT, @LUACHON INT --1:KY 1, 2:KY 2 , 3: CA NAM AS SELECT HS.MAHS AS MAHS,(HO+TEN)AS HOTEN,PC.MAPC,MH.TENMH AS MON,TBM AS HKI,MAHK INTO #BANGTAM3 FROM PHANCONG AS PC,DIEM,HOCSINH AS HS,MONHOC AS MH WHERE MAHK = 1 AND MALH = @MALH AND PC.MAPC = DIEM.MAPC AND HS.MAHS = DIEM.MAHS AND MH.MAMH = PC.MAMH SELECT HS.MAHS AS MAHS,(HO+TEN)AS HOTEN,PC.MAPC,MH.TENMH AS MON,TBM AS HKII,MAHK INTO #BANGTAM4 FROM PHANCONG AS PC,DIEM,HOCSINH AS HS,MONHOC AS MH WHERE MAHK = 2 AND MALH = @MALH AND PC.MAPC = DIEM.MAPC AND HS.MAHS = DIEM.MAHS AND MH.MAMH = PC.MAMH SELECT BT3.MAHS,BT3.HOTEN,BT3.MON,BT3.HKI,BT4.HKII,(BT3.HKI+BT4.HKII*2)/3 AS CANAM INTO #BANGTAM5 FROM #BANGTAM3 AS BT3,#BANGTAM4 AS BT4 WHERE BT3.MAHS = BT4.MAHS AND BT3.MON = BT4.MON IF @LUACHON = 1 SELECT MAHS,HOTEN,[Toán],[Vật Lý],[Hóa Học],[Sinh Học],[Tin Học],[Ngữ Văn],[Lịch Sử],[Địa Lý],[Ngoại Ngữ],[Giáo dục công dân],[Công nghệ],[Thể dục], ([Toán]*2+[Vật Lý]+[Hóa Học]+[Sinh Học]+[Tin Học]+[Ngữ Văn]*2+[Lịch Sử]+[Địa Lý]+[Ngoại Ngữ]+[Giáo dục công dân]+[Công nghệ]+[Thể dục])/14 AS [ĐIỂM TB KỲ I] FROM (SELECT MAHS,HOTEN,MON,HKI FROM #BANGTAM3) o PIVOT (SUM (HKI) FOR MON IN ([Toán],[Vật Lý],[Hóa Học],[Sinh Học],[Tin Học],[Ngữ Văn],[Lịch Sử],[Địa Lý],[Ngoại Ngữ],[Giáo dục công dân],[Công nghệ],[Thể dục])) AS pv ELSE IF @LUACHON = 2 SELECT MAHS,HOTEN,[Toán],[Vật Lý],[Hóa Học],[Sinh Học],[Tin Học],[Ngữ Văn],[Lịch Sử],[Địa Lý],[Ngoại Ngữ],[Giáo dục công dân],[Công nghệ],[Thể dục], ([Toán]*2+[Vật Lý]+[Hóa Học]+[Sinh Học]+[Tin Học]+[Ngữ Văn]*2+[Lịch Sử]+[Địa Lý]+[Ngoại Ngữ]+[Giáo dục công dân]+[Công nghệ]+[Thể dục])/14 AS [ĐIỂM TB KỲ II] FROM (SELECT MAHS,HOTEN,MON,HKII FROM #BANGTAM4) o PIVOT (SUM (HKII) FOR MON IN ([Toán],[Vật Lý],[Hóa Học],[Sinh Học],[Tin Học],[Ngữ Văn],[Lịch Sử],[Địa Lý],[Ngoại Ngữ],[Giáo dục công dân],[Công nghệ],[Thể dục])) AS pv ELSE IF @LUACHON = 3 SELECT MAHS,HOTEN,[Toán],[Vật Lý],[Hóa Học],[Sinh Học],[Tin Học],[Ngữ Văn],[Lịch Sử],[Địa Lý],[Ngoại Ngữ],[Giáo dục công dân],[Công nghệ],[Thể dục], ([Toán]*2+[Vật Lý]+[Hóa Học]+[Sinh Học]+[Tin Học]+[Ngữ Văn]*2+[Lịch Sử]+[Địa Lý]+[Ngoại Ngữ]+[Giáo dục công dân]+[Công nghệ]+[Thể dục])/14 AS [ĐIỂM TK NĂM HỌC] FROM (SELECT MAHS,HOTEN,MON,CANAM FROM #BANGTAM5) o PIVOT (SUM (CANAM) FOR MON IN ([Toán],[Vật Lý],[Hóa Học],[Sinh Học],[Tin Học],[Ngữ Văn],[Lịch Sử],[Địa Lý],[Ngoại Ngữ],[Giáo dục công dân],[Công nghệ],[Thể dục])) AS pv Chức năng quản lý cán bộ giáo viên trong trường Tạo mới giáo viên Nhập các thông tin cần thiết vào các textbox. Các thông tin này sẽ được chèn vào bảng giáo viên, mã giáo viên sẽ được trả về. alter proc usp_InsertGV @Tengv [nvarchar](100) , @Gioitinh [nvarchar](10), @Ngaysinh [datetime] , @Diachi [nvarchar](Max), @Dienthoai [varchar](50) , @CMND [varchar](50), @Magv [varchar](10) output as begin INSERT INTO Giaovien VALUES ('',@Tengv, @Gioitinh ,@Ngaysinh,@Diachi,@Dienthoai,@CMND,'123456','User') select @Magv=max([MaGV]) from giaovien end Sửa đổi thông tin giáo viên Thông tin giáo viên sẽ được hiển thị trên form, để sửa đổi thông tin của giáo viên, ta cần phải chọn một hàng. Và sửa đổi, cập nhật lại dữ liệu. Dữ liệu này nếu hợp lệ sẽ được thay đổi trong bảng giáo viên theo mã giáo viên đã chọn. create proc usp_UpdateGiaovien @MaGV [varchar](50) , @TenGV [nvarchar](100) , @Gioitinh [nvarchar](10), @Ngaysinh [datetime] , @Diachi [nvarchar](Max), @Dienthoai [varchar](50) , @CMND [varchar](50) as update giaovien set TenGV=@TenGV,Gioitinh=@Gioitinh,Ngaysinh=@Ngaysinh,Diachi=@Diachi,Dienthoai=@Dienthoai,CMND=@CMND where MaGV=@MaGV Phân công lịch giảng dạy cho từng giáo viên Mỗi giáo viên sẽ có nhiều lịch phân công, nhiều lớp, chọn môn học, lớp học, học kỳ, năm học và chọn nút phân công. Trong bảng phân công sẽ chèn dữ liệu vào. Để lấy dữ liệu của giáo viên ta dùng storeprocudure create proc getDataGV as select MaGV,TenGV as [Tên giáo viên],Gioitinh as[Giới tính],Ngaysinh as[Ngày sinh],diachi as [Địa chỉ],dienthoai as [điện thoại],CMND from giaovien Phân công dùng storeproc: create proc usp_insertphancong @Magv varchar(10), @MaMH int, @MaLH int, @MaHK int, @MaPC int output as begin insert into phancong(MaGV,MaMH,MaLH,MaHK) values(@Magv,@MaMH,@MaLH,@MaHK) select @MaPC=max(MaPC) from phancong end Phân công lớp chủ nhiệm Chọn lớp, chọn giáo viên. Lịch phân công chủ nhiệm sẽ được cập nhật trên mỗi lớp được chọn create proc usp_UpdateChunhiem @MaLH int, @MaGV varchar(10) as update lophoc set MaGV=@MaGV where MaLH=@MaLH Sửa đổi lịch phân công dạy theo lớp Chọn mã giáo viên. Mỗi giáo viên sẽ có lịch phân công được load lên trên form, để sửa đổi chỉ cần cập nhật lại nó. create proc updatePhancong @MaPC int, @MaMH int, @MaGV varchar(10), @MaHK int as update phancong set MaMH=@MaMH,MaGV=@MaGV,MaHK=@MaHK where MaPC=@MaPC Chức năng reset mật khẩu và phân quyền cho từng user đối với người dùng có vai trò là admin Chức năng này chỉ được áp dụng cho người dùng có vai trò là admin, người dùng với vai trò là user nếu bị mất mật khẩu có thể lấy lại nhờ vào admin. Việc reset lại mật khẩu chẳng qua là cập nhật lại bảng giáo viên với mật khẩu mặc định là 123456. if (radioButton1.Checked == true) { radioButton2.Checked = false; groupBox1.Enabled = false; if (dal.CheckData("update giaovien set Matkhau= '123456' where MaGV='" + comboBox1.SelectedValue.ToString().Trim() + "'", CommandType.Text, null)) { MessageBox.Show("Bạn đã reset mật khẩu thành công. Mật khẩu mặc định là 123456"); } else { MessageBox.Show("Bạn đã reset mật khẩu không thành công."); } } else { if (radioButton2.Checked == true) { groupBox1.Enabled = true; if (radioButton3.Checked == true) { radioButton4.Checked = false; if (dal.CheckData("update giaovien set [Role]= 'Admin' where MaGV='" + comboBox1.SelectedValue.ToString().Trim() + "'", CommandType.Text, null)) { MessageBox.Show("Set quyền Admin thành công"); } else { MessageBox.Show("Không thành công."); } } else { if (radioButton4.Checked == true) { if (dal.CheckData("update giaovien set [Role]= 'User' where MaGV='" + comboBox1.SelectedValue.ToString().Trim() + "'", CommandType.Text, null)) { MessageBox.Show("Set quyền User thành công"); } else { MessageBox.Show("Không thành công."); } } } } } Chức năng thay đồi mật khẩu từng người dùng Với mỗi người dùng đều có thể đổi mật khẩu nhằm đảm bảo độ an toàn của hệ thống. chức năng này cũng là update lại mật khẩu trên bảng giáo viên. Khi người dùng đăng nhập lại hệ thống thì phải nhập mật khẩu mới. alter proc usp_checkMatkhau @user varchar(10), @pass varchar(50), @flag bit output, @passmoi varchar(50) as begin declare @Mgv varchar(10) select