Tải bản đầy đủ (.docx) (12 trang)

SQL Quản Lý Sinh Viên || Báo Cáo Đồ Án Học Tập Cuối Kì Môn Cơ Sở Dữ Liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (150.39 KB, 12 trang )

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên nhóm: Nhóm 7
Tên hệ thống “Quản lý điểm danh sinh viên’’
Thành viên nhóm

STT

Họ và Tên

1

Nguyễn Đức Phú

2

Lê Công Quyền

3

Trần Minh Sơn

4

Đặng Hùng Sơn

5



Lê Văn Thiêm

6

Nguyễn Đức Thịnh

7

Vũ Nguyên Ngọc Tâm

Nhiệm vụ


Hà Nội, tháng .. năm ....

I)Mô tả bài toán
1.Sự cần thiết của bài toán:
a. Sự cần thiết của bài toán:
Trường đại học là môi trường đào tạo nên những nhân tài đóng góp vào sự phát
của đất nước. Do vậy, sinh viên là một nhân tố vô cùng quan trọng. Để biết được sinh
viên có trang bị đầy đủ kiến thức hay không thì chúng ta cần phải xem sinh viên đó có
đến lớp, đến trường, học hành có đầy đủ hay không. Vì thế, chúng ta cần một chương
trình quản lý điểm danh sinh viên để kiểm tra xem sinh viên có đi học đầy đủ hay
không.
b. Yêu cầu về CSDL:
YC01: Cho phép lưu thông tin về cá nhân của từng sinh viên học trong trường
YC02: Cho phép lưu thông tin về lớp học của từng sinh viên học trong trường
YC03: Cho phép lưu thông tin về từng môn học mà có sinh viên đó đang học
YC04: Cho phép lưu thông tin về số ngày nghỉ của từng sinh viên theo môn học tín

chỉ
YC05: Cho phép tính số này nghỉ của từng sinh viên để biết sinh viên nào đi học
đầy đủ nhất và sinh viên nào nghỉ học nhiều nhất
YC06: Cho biết lớp nào có sinh viên đi học đầy đủ nhất và sinh viên nghỉ học
nhiều nhất
YC07: Cho biết môn học nào có sinh viên đi học đầy đủ nhất và sinh viên nghỉ học
nhiều nhất


II)Xây dựng bài toán:
1)Sơ đồ SQL:

Tên CSDL: Quản lý điểm danh sinh viên


Bảng lop (malop, tenlop) là bảng lưu thông tin các lớp học. Mảng có malop
là mã lớp và tenlop là tên của các lớp học. Khóa chính – Primary key là



malop. Ứng với YC02
Bảng sinhvien (masv, ten, ngaysinh, gt) là bảng lưu thông tin của các sinh
viên. Bảng có masv là mã sinh viên, tên và họ của từng sinh viên, ngaysinh


là ngày sinh của sinh viên, gt là giới tính của sinh viên. Khóa chính•

Primary key là masv. Ứng với YC01
Bảng monhoc (mamh, tenmh, tc) là bảng lưu thông tin của các môn học.
Bảng có mamh là mã môn học, tenmh là tên môn học và tc là tín chỉ. Khóa




chính – Primary key là mamh. Ứng với YC03
Bảng diemdanh (malop, mamh, masv, cp, kp) là bảng lưu thông tin điểm
danh của từng sinh viên. Bảng có malop là mã lớp, mamh là mã môn học,
masv là mã sinh viên, cp là có phép, kp là không phép. Khóa ngoại –
Foreign key là malop tham chiếu đến lop(malop), mamh tham chiếu đến
monhoc(mamh) và masv tham chiếu đến sinhvien(masv). Ứng với YC04,
YC05, YC06, YC07


Diagram:


SQLQuery1.sql

2)Code T - SQL:
CREATE DATABASE quanly
CREATE TABLE lop(
malop NVARCHAR(10),
tenlop NVARCHAR(10),
PRIMARY KEY(malop)
);
INSERT INTO Lop VALUES('NV1','CNPM');
INSERT INTO Lop VALUES('NV2','CNDT');
INSERT INTO Lop VALUES('NV3','HTD');

CREATE TABLE sinhvien(
masv NVARCHAR(20),

ten VARCHAR(30),
ngaysinh DATE,
gt BIT,
PRIMARY KEY(masv)
);
INSERT INTO sinhvien VALUES('A100','Nguyen Van Anh','1/1/1999','0');
INSERT INTO sinhvien VALUES('A101','Le Van Anh','2/3/1999','1');
INSERT INTO sinhvien VALUES('A102','Nguyen Dinh Duong','1/21/1999','1');
INSERT INTO sinhvien VALUES('A103','Nguyen Tri Tue','2/8/1999','1');
INSERT INTO sinhvien VALUES('A104','Ngo Thi Uyen','3/12/1999','0');
INSERT INTO sinhvien VALUES('A105','Nguyen Van A','3/12/1999','0');
CREATE TABLE monhoc(
mamh NVARCHAR(10),
tenmh VARCHAR(30),
tc INT,
PRIMARY KEY(mamh)
);
INSERT INTO monhoc VALUES('MH1','Toan','2');
INSERT INTO monhoc VALUES('MH2','Ly','3');
INSERT INTO monhoc VALUES('MH3','Hoa','2');
INSERT INTO monhoc VALUES('MH4','Sinh','2');
INSERT INTO monhoc VALUES('MH5','CSDL','2');
INSERT INTO monhoc VALUES('MH6','GDTC','1');
CREATE TABLE diemdanh(
malop NVARCHAR(10),
mamh NVARCHAR(10),
masv NVARCHAR(20),
cp INT,
kp INT,
CONSTRAINT fk_diemdanh_malop FOREIGN KEY(malop) REFERENCES Lop(malop),

CONSTRAINT fk_diemdanh_masv FOREIGN KEY(masv) REFERENCES sinhvien(masv),
CONSTRAINT fk_diemdanh_mamh FOREIGN KEY(mamh) REFERENCES monhoc(mamh)
);
INSERT INTO diemdanh VALUES('NV1','MH1','A100','0','0');
INSERT INTO diemdanh VALUES('NV2','MH2','A100','4','2');
INSERT INTO diemdanh VALUES('NV1','MH1','A101','0','1');
INSERT INTO diemdanh VALUES('NV3','MH3','A102','2','3');
INSERT INTO diemdanh VALUES('NV1','MH4','A103','4','2');
INSERT INTO diemdanh VALUES('NV2','MH5','A104','4','2');
INSERT INTO diemdanh VALUES('NV3','MH6','A104','4','2');
INSERT INTO diemdanh VALUES('NV3','MH1','A105','4','2');


Bài Tập Và Lời Giải Chi Tiết

Bài 1 : Danh sách sinh viên có vần A
SELECT mamh,sinhvien.*,cp,kp
From sinhvien,diemdanh
WHERE sinhvien.masv=diemdanh.masv and ten like '%a%'
GROUP BY
mamh,sinhvien.masv,sinhvien.ten,sinhvien.ngaysinh,sinhvien.gt,cp,kp
Bài 2 : Cập nhật môn học với phí phạt không đi học.Căn cứ vào số buổi không đi
học của từng sinh viên.Cập nhật tổng tiền phạt
ALTER TABLE monhoc ADD tienphat int
UPDATE monhoc
SET tienphat='20000'
WHERE mamh='MH1'AND mamh='MH3' AND mamh='MH4' AND
mamh='MH5'
UPDATE monhoc
SET tienphat='30000'

WHERE mamh='MH2'
UPDATE monhoc
SET tienphat='10000'
WHERE mamh='MH6'
ALTER TABLE diemdanh ADD tongtienphat int
UPDATE diemdanh
SET tongtienphat=(SELECT SUM((cp+kp)*tienphat)
WHERE diemdanh.mamh=monhoc.mamh )


Bài 3 : Danh sách sinh viên sinh vào tháng 1 đi học đầy đủ
SELECT malop,diemdanh.mamh, sinhvien.*, cp, kp
FROM sinhvien, diemdanh
WHERE sinhvien.masv=diemdanh.masv and kp=0 and cp=0 and
month(ngaysinh) = '1'
Bài 4 : Cập nhật thời gian điểm danh của lớp .
ALTER TABLE dbo.diemdanh
ADD timedd DATE
UPDATE dbo.diemdanh SET timedd='2018/11/19' WHERE malop='NV1'
UPDATE dbo.diemdanh SET timedd='2018/11/21' WHERE malop='NV2'
UPDATE dbo.diemdanh SET timedd='2018/11/20' WHERE malop='NV3'
Bài 5 : Tính số lượng sinh viên đi học trong ngày 20-11
IF EXISTS ( SELECT COUNT(masv)
FROM dbo.diemdanh
WHERE timedd='2018/11/20')
BEGIN
PRINT('TONG SO SINH VIÊN ĐI HOC TRONG NGAY 20-11')
SELECT COUNT(masv)
FROM dbo.diemdanh



WHERE timedd='2018/11/20'
END
ELSE
PRINT('KHONG CO SINH VIÊN DI HOC TRONG NGAY 20/11')
Bài 6:Thêm tổng cột sinh viên đi học trong bảng môn học

ALTER TABLE monhoc
ADD tongsinhvien INT
GO
UPDATE monhoc SET tongsinhvien = (SELECT COUNT(diemdanh.masv)
FROM monhoc,diemdanh where monhoc.mamh = diemdanh.mamh
group by monhoc.mamh )

SELECT * FROM monhoc
Bài 7 :Danh sách lớp có sinh viên đi học ít nhất
SELECT DISTINCT diemdanh.malop,tenlop,count(masv) AS'So luong sinh
vien'
FROM lop,diemdanh
WHERE lop.malop=diemdanh.malop and diemdanh.malop in (SELECT malop
FROM diemdanh
WHERE (cp+kp) in
(SELECT max (cp+kp)
FROM diemdanh) )
GROUP BY diemdanh.malop,tenlop,diemdanh.masv
Bài 8 :Môn học có sinh viên đi học đầy đủ nhất


SELECT DISTINCT diemdanh.mamh,tenmh,count(masv) AS 'So luong sinh
vien'

FROM monhoc,diemdanh
WHERE monhoc.mamh=diemdanh.mamh and diemdanh.mamh in (SELECT
mamh
FROM diemdanh
WHERE (cp+kp) in
(SELECT min(cp+kp)
FROM diemdanh))
GROUP BY diemdanh.mamh,tenmh,diemdanh.masv
Bài 9 : Danh sách sinh viên đi học đầy đủ theo lớp
SELECT malop,mamh,sinhvien.*,cp,kp
FROM diemdanh,sinhvien
WHERE diemdanh.masv = sinhvien.masv and cp=0 and kp=0
GROUP BY sinhvien.masv,ten,ngaysinh,gt,malop,mamh,cp,kp
Bài 10 ;Danh sách sinh viên ít đi học nhất
SELECT DISTINCT sinhvien.*,tenmh,cp,kp,sum(cp+kp) AS 'So buoi nghi'
FROM sinhvien,diemdanh,monhoc
WHERE sinhvien.masv=diemdanh.masv and diemdanh.masv in (SELECT
DISTINCT masv
FROM diemdanh
WHERE (cp+kp) in
(SELECT DISTINCT max(cp+kp)
FROM diemdanh))
GROUP BY sinhvien.masv,ten,ngaysinh,gt,cp,kp,monhoc.tenmh


III)Thao tác với CSDL:
1)Nguyễn Đức Thịnh:
/>usp=sharing
2) Nguyễn Đức Phú:
/>usp=sharing

3) Lê Công Quyền:
/>usp=sharing
4) Trần Minh Sơn: />id=1JGsrQmjzTeSLCFNEWfAWLALkhVbuHzYx
5) Đặng Hùng Sơn:
/>usp=sharing
6) Lê Văn Thiêm:


/>usp=sharing
7) Vũ Nguyên Ngọc Tâm:
/>usp=sharing



×