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.
40 trang |
Chia sẻ: tuandn | Lượt xem: 3168 | Lượt tải: 5
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