Các chức năng sẽ ứng dụng KNT

Một phần của tài liệu 28030_171220200191278LUANVANLETHITHANHCHAU (Trang 38 - 48)

6. Bố cục luận văn

2.3.Các chức năng sẽ ứng dụng KNT

Các chức năng sẽ ứng dụng KNT là các chức năng mà việc tạo ra dữ liệu sử dụng phải được tính toán nhiều/phức tạp làm tốn nhiều thời gian hoặc bị truy cập đồng thời với số lượng lớn người dùng.

2.3.1. Đăng ký học phần

- Mô tả quá trình thao tác dữ liệu của chức năng: Gồm 2 quá trình + Quá trình 1: lấy danh sách học phần có thể đăng ký

Dữ liệu vào: Masv, KyThu

Dữ liệu ra: Danh sách các lớp học phần mà sinh viên có thể đăng ký: ds

Xử lý: - Danh sách lớp học phần đang mở có thể đăng ký bổ sung: A TrangThai = true  count(MaSV)<50 (LOPHOCPHAN)

- Danh sách các môn học có lớp đang mở: B MONHOC.* (A  MONHOC)

- Các môn học trong kỳ hiện tại của sinh viên masv:

C  MONHOC.* ((SINHVIEN.MaSV = masv  KyHT = KyThu) (SINHVIEN 

LOP  NGANH  CHUONGTRINH  MONHOC)) - Các môn học mà sinh viên masv đã học:

D   MONHOC.* ( SINHVIEN.MaSV = masv (SINHVIEN  HOC 

LOPHOCPHAN  MONHOC))

- Các môn học mà sinh viên masv còn nợ hoặc được phép cải thiện: E   MONHOC.* ( (MaSV = masv  (DiemTP*0.4 + DiemThi*0.6)<5.5)  Cuoi=1

(SINHVIEN  HOC  LOPHOCPHAN  MONHOC)) - Các môn học mà sinh viên masv được phép học vượt:

F MHTruoc in D.MaMH (MONHOC)

- Danh sách môn học mà sinh viên masv được đăng ký: G  B  (C  E  F)

- Danh sách các lớp học phần mà sinh viên có thể đăng ký: H MaMH in G.MaMH (A)

ds = H SELECT dbo.LOPHOCPHAN.* FROM dbo.LOPHOCPHAN WHERE ( (TrangThai = 1) AND (dbo.LOPHOCPHAN.MaLopHP in (

select dbo.LOPHOCPHAN.MaLopHP FROM dbo.LOPHOCPHAN INNER JOIN

dbo.HOC ON dbo.LOPHOCPHAN.MaLopHP = dbo.HOC.MaLopHP GROUP BY dbo.LOPHOCPHAN.MaLopHP HAVING (count(MaSV)<50)) ) AND dbo.LOPHOCPHAN.MaMH in ( SELECT dbo.MONHOC.MaMH

FROM dbo.LOPHOCPHAN INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH WHERE (dbo.LOPHOCPHAN.TrangThai = 1) INTERSECT ( SELECT dbo.MONHOC.MaMH FROM dbo.SINHVIEN INNER JOIN

dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN

dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN

dbo.CHUONGTRINH ON dbo.NGANH.MaNg = dbo.CHUONGTRINH.MaNg INNER JOIN

dbo.MONHOC ON dbo.CHUONGTRINH.MaMH = dbo.MONHOC.MaMH

WHERE (dbo.LOP.KyHT - dbo.CHUONGTRINH.KyThu = 0) AND (dbo.SINHVIEN.MaSV = masv)

SELECT dbo.MONHOC.MaMH FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH (adsbygoogle = window.adsbygoogle || []).push({});

WHERE (dbo.SINHVIEN.MaSV = masv) AND (dbo.HOC.Cuoi = 1) AND (dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 < 5.5) UNION

SELECT dbo.MONHOC.MaMH FROM dbo.MONHOC

WHERE dbo.MONHOC.MAMH in ( SELECT dbo.MONHOC.MaMH FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH WHERE (dbo.HOC.Cuoi = 1) ) ) ) )

+ Quá trình 2: đăng ký lớp học phần

Dữ liệu vào: masv, danh sách lớp học phần đăng ký ds

Dữ liệu ra: Thông báo kết quả đăng ký tb

Xử lý: - Tính tổng số tín chỉ tong mà sv đăng ký: tong  Sum(SoTC) (ds  MONHOC)

Nếu tong phù hợp thì chấp nhận đăng ký, tb = ‘Thành công’. Ngược lại, không chấp nhận đăng ký, tb = ‘Số tín chỉ đăng ký không phù hợp’

SQL truy vấn số tín chỉ đăng ký

SELECT SUM(dbo.MONHOC.SoTC) AS tong FROM dbo.LOPHOCPHAN INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH

WHERE (dbo.LOPHOCPHAN.MaLopHP IN (ds)) - Nhận xét:

+ Vào đợt đăng ký lớp học phần, sinh viên toàn trường tập trung đăng ký/hủy đăng ký làm tạo ra một lượng lớn user truy cập đồng thời.

+ Để có được danh sách lớp học phần mà sinh viên có thể đăng ký, chương trình phải tính nhiều dữ liệu trung gian, đặc biệt là tính các môn học: sinh viên đã học, sinh viên còn nợ hoặc được phép học cải thiện và các môn học được phép học vượt. Các phép tính này dùng nhiều phép nối (). Trong đó phép tính các môn học sinh viên còn nợ hoặc được phép học cải thiện phải dùng thêm phép thống kê (Max).

- Tiểu kết: Chức năng đăng ký học phần cần được hỗ trợ KNT.

2.3.2. Hủy đăng ký học phần

- Mô tả quá trình thao tác dữ liệu của chức năng: Gồm 2 quá trình + Quá trình 1: lấy danh sách học phần có thể hủy đăng ký

Dữ liệu vào: masv

Dữ liệu ra: Danh sách các lớp học phần mà sinh viên có thể hủy đăng ký: ds

Xử lý: - Danh sách các lớp học phần mà sinh viên masv đang đăng ký A   LOPHOCPHAN.* ( SINHVIEN.MaSV = masv  TrangThai = 1 (SINHVIEN

 HOC  LOPHOCPHAN)) ds = A SQL truy vấn danh sách học phần mà sinh viên SELECT dbo.LOPHOCPHAN.*

FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

masv đang đăng ký

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP

WHERE (dbo.LOPHOCPHAN.TrangThai = 1) AND (dbo.SINHVIEN.MaSV = masv )

+ Quá trình 2: hủy đăng ký lớp học phần (adsbygoogle = window.adsbygoogle || []).push({});

Dữ liệu vào: masv, danh sách lớp học phần còn lại sau hủy đăng ký ds Dữ liệu ra: Thông báo kết quả hủy đăng ký tb

Xử lý: Tính tổng số tín chỉ còn lại tong sau khi sv hủy đăng ký:

tong   Sum(SoTC) (LOPHOCPHAN.MaLopHP in ds (LOPHOCPHAN 

MONHOC))

Nếu tong phù hợp thì chấp nhận đăng ký, tb = ‘Thành công’. Ngược lại, không chấp nhận đăng ký, tb = ‘Không thể hủy đăng ký quá số tín chỉ cho phép’

SQL truy vấn số tín chỉ hủy đăng ký

SELECT SUM(dbo.MONHOC.SoTC) AS tong

FROM dbo.LOPHOCPHAN INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH

WHERE (dbo.LOPHOCPHAN.MaLopHP IN (ds)) - Nhận xét:

+ Vào đợt đăng ký lớp học phần, sinh viên toàn trường tập trung đăng ký/hủy đăng ký làm tạo ra một lượng lớn user truy cập đồng thời.

+ Sử dụng 02 phép nối () trong câu truy vấn xử lý dữ liệu. - Tiểu kết: Nên hỗ trợ KNT cho chức năng hủy đăng ký học phần

2.3.3. Xem điểm

- Mô tả quá trình thao tác dữ liệu của chức năng xem điểm: Dữ liệu vào: masv

Dữ liệu ra: Danh sách kết quả điểm ds, số tín chỉ tích lũy sotctl, điểm trung bình tích lũy diemtbtl

Xử lý: - Danh sách điểm chưa tính điểm học phần:

A   SINHVIEN.MaSV = masv (SINHVIEN  HOC 

LOPHOCPHAN  MONHOC  HOCKY  NAMHOC) - Danh sách điểm đã tính điểm học phần:

B A.*, diemtbDiem4(DiemTP*0.4+DiemThi*0.6)(A) ds = B

- Số tín chỉ tích lũy, điểm trung bình tích lũy:

C sotctlSum(SoTC),tongdiemtbSum(diemtb)(Cuoi = true (B)) - Điểm trung bình tích lũy:

D diemtbtl (tongdiemtb/sotctl) (C) SQL truy

vấn danh sách điểm hiện tại của sinh viên

SELECT dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV, dbo.MONHOC.TenMH, dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 AS diem,

CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END AS diemtb

FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH

WHERE (dbo.HOC.Cuoi = 1) AND (dbo.SINHVIEN.MaSV = (adsbygoogle = window.adsbygoogle || []).push({});

masv)

SQL truy vấn số tín chỉ tích lũy, điểm tich lũy của sinh viên

SELECT dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV, dbo.MONHOC.TenMH, dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 AS diem,

CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END AS diemtb, SUM(dbo.MONHOC.SoTC)

AS sotctl, SUM((CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END) * dbo.MONHOC.SoTC)

/ SUM(dbo.MONHOC.SoTC) AS diemtbtl FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN

dbo.MONHOC.MaMH

WHERE (dbo.HOC.Cuoi = 1)

GROUP BY dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV, dbo.MONHOC.TenMH, dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6

HAVING (dbo.SINHVIEN.MaSV = masv) - Nhận xét:

+ Để xem được bảng điểm, chương trình phải thực hiện 05 phép nối.

+ Để có được số tín chỉ tích lũy, điểm trung bình tích lũy, chương trình phải thực hiện thêm 02 phép thống kê (Sum).

- Tiểu kết: chức năng xem điểm cần được hỗ trợ KNT.

2.3.4. Lọc danh sách xét học bổng

- Chức năng này chỉ lọc danh sách điểm của những sinh viên đủ tiêu chí xét học bổng học tập trong năm học cụ thể. Từ danh sách này, Khoa, Phòng CT HSSV sẽ xem xét lại, cân đối, chọn lọc để cấp học bổng học tập.

- Mô tả quá trình thao tác dữ liệu của chức năng lọc danh sách xét học bổng: Dữ liệu vào: manh

Dữ liệu ra: Danh sách xét cấp học bổng ds

Xử lý: - Danh sách điểm chưa tính điểm học phần:

A   NAMHOC.MaNH = manh (SINHVIEN  HOC 

LOPHOCPHAN  MONHOC  HOCKY  NAMHOC

 LOP  NGANH  KHOA) - Danh sách điểm đã tính điểm học phần: B A.*, diemtbDiem4(DiemTP*0.4+DiemThi*0.6)(A) - Danh sách sinh viên đạt đạt điều kiện:

C Min(diemtb)≥1.0  Average(diemtb)≥ 2.5  Sum(SoTC) ≥ 15 (B) - Danh sách sau sắp xếp:

D  Sort MaKhoa Asc, MaLop Asc, diemtbnh Desc( diemtbnh(Sum(diemtb)/Sum(SoTC)) (C)) ds = D SQL truy vấn danh sách xét cấp học bổng

SELECT TOP (100) PERCENT dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 AS diem,

CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1

ELSE 0 END AS diemtb, dbo.SINHVIEN.MaSV,

SUM(dbo.MONHOC.SoTC) AS sotctl, SUM(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END) * 'dbo.MONHOC.SoTC)' /

SUM(dbo.MONHOC.SoTC) AS diemtbtl, (adsbygoogle = window.adsbygoogle || []).push({});

dbo.LOPHOCPHAN.MaMH, dbo.SINHVIEN.HoDem,

dbo.SINHVIEN.TenSV, dbo.KHOA.MaKhoa, dbo.NGANH.MaNg, dbo.LOP.MaLop FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH INNER JOIN

dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN

dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN

dbo.KHOA ON dbo.NGANH.MaKhoa = dbo.KHOA.MaKhoa

GROUP BY dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6,

dbo.SINHVIEN.MaSV, dbo.LOPHOCPHAN.MaMH,

dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV,

dbo.KHOA.MaKhoa,

dbo.NGANH.MaNg, dbo.LOP.MaLop

HAVING (dbo.LOPHOCPHAN.MaMH = 123) AND (MIN(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END)

> 0) AND (SUM(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END)

SUM(dbo.MONHOC.SoTC) >= 2.5)

ORDER BY dbo.KHOA.MaKhoa, dbo.NGANH.MaNg, dbo.LOP.MaLop, dbo.SINHVIEN.TenSV, dbo.SINHVIEN.HoDem, diemtbtl DESC

- Nhận xét:

+ Để có được bảng điểm, chương trình phải thực hiện 08 phép nối, lấy dữ liệu từ nhiều bảng SINHVIEN, HOC, LOPHOCPHAN, MONHOC, HOCKY, NAMHOC, LOP, NGANH, KHOA

+ Để có được danh sách xét cấp học bổng cuối cùng, chương trình phải thực hiện thêm 05 phép thống kê (Sum, Min, Average).

- Tiểu kết: Chức năng lọc danh sách xét học bổng cần được hỗ trợ KNT.

2.3.5. Lọc danh sách nợ học phần

- Chức năng này chỉ lọc danh sách điểm của những sinh viên nợ học phần. Từ danh sách này, Khoa, Phòng Đào tạo sẽ xem xét lại, để cố vấn cho sinh viên. Trong những trường hợp nặng (điểm tích lũy thấp, số môn nợ nhiều, đã cảnh báo học tập…) thì sẽ ra cảnh báo học tập.

- Mô tả quá trình thao tác dữ liệu của chức năng lọc danh sách nợ học phần: Dữ liệu vào:

Dữ liệu ra: Danh sách nợ học phần sv, danh sách số tín chỉ tích lũy t, danh sách điểm tích lũy d

Xử lý: - Danh sách điểm chưa tính điểm học phần:

A  (SINHVIEN  HOC  LOPHOCPHAN  MONHOC

 LOP  NGANH  KHOA) - Danh sách điểm đã tính điểm học phần: B A.*, diemtbDiem4(DiemTP*0.4+DiemThi*0.6)(A) - Danh sách sinh viên nợ học phần:

C diemtb = 0  Cuoi = true (B)

- Danh sách số tín chỉ tích lũy, điểm trung bình tích lũy: (adsbygoogle = window.adsbygoogle || []).push({});

D  Sort MaKhoa Asc, MaLop Asc, diemtbtl Desc( diemtbtl(Sum(diemtb*SoTC)/Sum(SoTC)), sotctlSum(SoTC) (C))

ds = C

t = sotctl (D) d = diemtbtl (D)

SQL truy vấn danh sách sinh viên nợ học phần dsno

SELECT dbo.SINHVIEN.*, dbo.MONHOC.TenMH,

CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END AS diemtb

FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH INNER JOIN

dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN

dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN

dbo.KHOA ON dbo.NGANH.MaKhoa = dbo.KHOA.MaKhoa

WHERE (dbo.HOC.Cuoi = 1) AND (dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 < 4) SQL truy vấn số tín chỉ tích lũy, điểm trung bình tích lũy của sinh viên masv

SELECT TOP (100) PERCENT dbo.SINHVIEN.MaSV,

dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV,

SUM(dbo.MONHOC.SoTC) AS sotctl,

SUM(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END)

* 'dbo.MONHOC.SoTC)' / SUM(dbo.MONHOC.SoTC) AS diemtbtl, dbo.KHOA.MaKhoa, dbo.NGANH.MaNg

FROM dbo.SINHVIEN INNER JOIN

dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN

dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN-

dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH INNER JOIN

dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN

dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN

dbo.KHOA ON dbo.NGANH.MaKhoa = dbo.KHOA.MaKhoa

WHERE (dbo.HOC.Cuoi = 1)

GROUP BY dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6,

dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem,

dbo.SINHVIEN.TenSV, dbo.KHOA.MaKhoa, dbo.NGANH.MaNg HAVING (dbo.SINHVIEN.MaSV = masv) (adsbygoogle = window.adsbygoogle || []).push({});

ORDER BY dbo.KHOA.MaKhoa, dbo.NGANH.MaNg, dbo.SINHVIEN.TenSV, dbo.SINHVIEN.HoDem

- Nhận xét:

+ Để có được bảng điểm, chương trình phải thực hiện 06 phép nối.

+ Để có được danh sách cuối cùng, chương trình phải thực hiện thêm 02 phép thống kê (Sum).

- Tiểu kết: Chức năng lọc danh sách nợ học phần cần được hỗ trợ KNT.

Một phần của tài liệu 28030_171220200191278LUANVANLETHITHANHCHAU (Trang 38 - 48)