Hiện nay, công nghệ thông tin được xem là một
ngành mũi nhọn của các quốc gia, đặc biệt là các quốc gia đang phát triển,
tiến hành công nghiệp hóa và hiện đại hoá như nước ta. Sự bùng nổ thông tin và sự phát triển mạnh mẽ của công nghệ kỹ thuật số, yêu cầu muốn phát triển thì
phải tin học hoá tất cả các ngành,
các lĩnh vực.
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.
Ví dụ như việc quản
lý điểm số học sinh trong trường
trung đại học. 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ố, học bạ,…), lớp học (sỉ số, giáo viên chủ nhiệm,…), giáo viên,… cũng như các nghiệp vụ 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 hàng
ngàn). 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.
1.1
LỜI GIỚI THIỆU
Trong những năm gần đây sự phát triển của
ngành IT đã đem lại những thành tựu to lớn trong việc phát triển kinh tế. Những chương trình tin học ứng dụng ngày càng
nhiều, rất nhiều công việc thủ công trước đây nay đã được sử ly bằng các phần
mềm chuyên dụng đã giảm đáng kể công sức, nhanh chóng và chính xác. Để có một phần mềm ứng dụng đáp ứng được yêu
cầu công việc đặt ra thì những người làm tin học phải biết phân tích thiết kế
hệ thống làm việc của của chương trình để từ đó xây dựng nên một phần mền ứng
dụng quản lý chương trình đó bằng ngôn ngữ lập trình nào đó những chương trình,
phần mềm ứng dụng đóng vai trò quan trọng trong lĩnh vực quản lý, nó là những
công cụ hỗ trợ đắc lực và hầu như không thể thiếu nhằm đáp ứng đầy đủ nhất
thuận lợi nhất những đòi hỏi của công việc quản lý nhờ những công cụ trợ giúp
có sẵn, access hay SQL sever la những phần mềm như vậy nó được ứng dụng rộng
rãi trong công tác quản lý không những thế nó con là một ngôn ngữ lập trình khá
mạnh giúp cán bộ quản lý có thể viết những chương trình để sử sụng cơ sơ dữ
liệu hay giải quyết một yêu cầu nào đó, những phần mền ứng dụng này đã phần nào
trợ giúp các nhà quản lý trở lên nhanh chóng, thuận lợi, chính xác và kịp thời
với những tính năng có sẵn sát với thực tế quản lý .
Chương trình quản lý điểm sinh viên là một
chương trình được xây dựng nhằm đáp ứng những đòi hỏi đặt ra của quá trình quản
lý như nhập thong tin sinh viên, tìm
kiếm, thống kê, in báo cáo và rất nhiều công việc khác một cách nhanh chóng và
thuận tiện, chính xác một cách hệ thống. Trong chương trình phần mền ứng dụng
này thì chương trình nghiên cứu phân tích thiết kế hệ thống đóng vai trò rất
quan trọng trong việc thiết kế chương trình phần mền, nhìn vào bản phân tích ta
có thể hiểu được người lập trình muốn làm gì, hiểu được sự hoạt động của hệ thống.
Trong thời gian học tập, nghiên cứu tại
trường, bằng kiến thức đồng thời được sự giúp đỡ nhiệt tình thầy cô giáo trong
khoa CNTT đặc biệt là Cô giáo đã giúp đỡ
nhóm sinh viên chúng em hoàn thành tốt bài tập môn học, bài tập xây dựng một
chương trình phần mền ứng dụng “quản lý kết điểm sinh viên khoa CNTT”. Nhưng do
trình độ kiến thức và kinh nghiệm còn non kém tài liệu tham khảo còn thiếu thốn
cho nên trong bài còn có nhiều hạn chế, chúng em mong thầy cô giáo cùng các bạn
đóng góp ý kiến. Chúng em xin chân thành cảm ơn!
1.2
PHÂN TÍCH HỆ
THỐNG QUẢN LÝ KẾT QUẢ HỌC TẬP SINH VIÊN
1.2.1
Thực trạng của hệ
thống quản lý điểm (qld)
Điểm thi
được quản lý dựa trên phương pháp thủ công.
+ Điểm thi của từng sinh viên được ghi
chép và lưu dữ bằng sổ sách.
+ Quản lý điểm, thông tin về sinh viên quản
lý bằng việc ghi chép và
kiểm kê.
+ Quản lý nhập điểm, xuất điểm bằng cách
ghi chép thủ công, sinh viên
muốn xem điểm bằng việc đối chiếu thủ công
muốn xem điểm bằng việc đối chiếu thủ công
+ Chưa có cơ chế kiểm tra bạn đọc
Nhược điểm:
+ Tốn rất nhiều thời gian và công sức.
+ Dễ nhầm lẫn, sai sót .
+ Khó kiểm tra quản lý.
+ Hiệu quả năng suất thấp.
Do đó hệ thống quản lý kết quả thi cần phải
sửa đổi lại cơ cấu quản lý hoạt động nhằm nâng cao hiệu quả để dễ quản lý đến
từng học sinh.
Giải pháp:
+ Cần tổ chức lại cơ
cấu quản lý, thay thế một số công đoạn thủ công bằng “tin học hoá hoá” nhờ
có sự trợ của các chương trình, phần
mềm ứng dụng
+ Việc nhập điểm, tìm
kiếm, sửa chữa, báo cáo, thống kê cần được xử lý nhờ máy tính
+ Đưa ra máy in khi
có yêu cầu
Các dữ liệu đầu vào:
Dữ liệu đầu vào là
nguồn thông tin được đưa vào máy tính để xử lý, bao gồm các thông tin sau :
+ thông tin sinh
viên, thông tin về điểm
+ Các yêu cầu tìm
kiếm
Dữ liệu đầu ra:
Dữ liệu đầu ra là các
thông tin sau khi xử lý bao gồm các thông tin sau:
+ Bảng danh sách điểm
+ Bảng thống kê báo
cáo.
Từ thực trạng trên, chúng ta có
sơ đồ luân chuyển thông tin:
Sơ đồ luân chuyển thông tin của hệ thống quản lý học tập sinh viên
Sau khi
lưu hồ sơ sinh viên với các môn học và có điểm các môn thi, phòng giáo vụ tiến
hành vào điểm của từng môn học.
Sinh
viên sẽ đương nhiên bị điểm 0 đối với mỗi môn thi nếu:
+ Không
dự thi, xin hoãn thi.
+ Không
thuộc diện được học hai trường, được nghỉ học một số môn mà nghỉ quá 25% số giờ
của học phần (dù có phép hay không có phép).
Điểm
thi sẽ tính theo thang điểm 10.
Điểm
tổng kết sẽ được tính bằng điểm các môn nhân với số đơn vị học trình tương ứng
và chia cho tổng số đơn vị học trình.
Sinh
viên có thể dự thi các học phần tích để có điểm cao hơn vào những kỳ thi chính
thức tiếp theo. Sau khi học lại hay thi
lại hoặc thi nâng điểm, điểm tổng kết mới sẽ được tính theo điểm cao nhất của
từng môn.
Sinh
viên phải học lại những môn có điểm thi lại < 5 và thi lại những môn có điểm
thi lần đầu < 5 vào thời điểm sớm nhất của nhà trường.
Nếu
phải học lại một học phần làm cơ sở cho các học phần tiếp theo sau, sinh viên
không được học và dự thi các học phần tiếp sau nếu nhà trường không cho
phép.
Sau mỗi
học kỳ các khoa sẽ tiến hành xét khen thưởng/ kỷ luật, xếp loại cho sinh
viên.
- Xếp loại học tập:
9. 00
-> 10. 00 xếp loại Xuất sắc
8. 00
-> 8. 99 xếp loại Giỏi
7. 00
-> 7. 99 xếp loại Khá
6. 00
-> 6. 99 xếp loại Trung bình - Khá
5. 00
-> 5. 99 xếp loại Trung bình
< 5
xếp loại Yếu
-
Xét loại học bổng:
+ Loại 1: Đạt điểm trung bình từ 8. 00 trở
lên và không có môn nào có điểm dưới 7.
+ Loại 2: Đạt điểm trung bình từ 7. 00 ->
7. 99 và không có môn nào có điểm dưới 6.
1.2.2
Biểu đồ phân cấp
chức năng:
§
Quản lý môn học
-
Có các chức năng
thêm, sửa,xoá các môn học theo yêu cầu của nhà quản lý.
-
Cung cấp thông
tin về các môn học trong mỗi kỳ học cho nhà quản lý, giáo
viên và sinh viên khi có yêu cầu .
§
Quản lý
sinh viên
-
Có các chức năng
thêm, sửa, xoá thông tin sinh viên theo yêu cầu của nhà quản lý
-
Cung cấp thông tin về
sinh viên cho nhà quản lý,giáo viên và sinh viên khi có yêu cầu.
§
Quản lý
điểm
-
Có chức năng cập nhật điểm cho sinh viên sau mỗi kỳ
học.
-
Thực hiện phúc khảo điểm cho sinh viên khi sinh viên
yêu cầu.
-
Báo cáo, thống kê
điểm của sinh viên cho nhà quản lý, giáo viên và sinh viên khi có yêu
cầu.
§
Thống
kê,báo cáo
-
Thống kê danh
sách sinh viên đỗ lần 1, lần 2, tỷ lệ sinh viên đỗ lần 1, lần 2 theo từng lớp
học, môn học sau mỗi kỳ học.
-
Thống kê danh
sách sinh viên trượt lần 1, lần 2(học lại),tỷ lệ sinh viên trượt lần 1, lần 2
theo từng lớp học, môn học sau mỗi kỳ học.
-
Thống kê danh
sách sinh viên bị lưu ban, tỷ lệ sinh
viên bị lưu ban sau mỗi năm học.
-
Thống kê danh
sách sinh viên đạt học bổng, tỷ lệ sinh viên đạt học bổng sau mỗi kỳ học.
-
Trong quá trình
thống kê sẽ sử dụng chức năng tính điểm của quản lý điểm.
1.2.3
Biểu đồ luồng dữ
liệu:
1: Sơ đồ luồng dữ liệu mức khung cảnh
1.2.4
Phân loại các
thuộc tính vào một tập thực thể
Kiểu thực thể liên kết là nguồn
thông tin cần thiết cho hệ thống ,các kiểu thực thể có thể xuất hiện ở các tác nhân ngoài , các luồng thông
tin nội bộ hoặc các kho dữ liệu
Kiểu
thực thể Môn Học gồm MaMH, TenMH, So Trinh.
Kiểu
Thực Thể Điểm: MaSV, MaMH, Hoc
Ky ,Diem lan 1, Diem lan 2, Hoc
lai.
Kiểu
thực thể HeDT: Ma HDT, Ten HDT.
Kiểu
thực thể Lớp gồm Ma Lop, Ten Lop,Ma Khoa, Ma HDT, Ma Khoa Hoc.
Kiểu
thực thể Sinh Viên gồm MaSV, TenSV, Ngày Sinh, giới tính, Que quan, ma lop.
Kiểu
thực thể Học Kỳ: Ma HK, Ten HK.
Kiểu
thực thể Khóa Học: Ma Khoa Hoc, Ten Khoa Hoc.
1.2.5 Mô hình thực thể liên kết
1.2.6 Biểu đồ cấu trúc dữ liệu theo mô hình quan hệ :
· Danh sách các thuộc tính: MaHDT,
TenHDT, MaKhoa, TenKhoa, MaKhoaHoc, TenKhoaHoc, MaLop, TenLop, MaSV, TenSV,
MaMH, TenMH, MaHocKy, TenHocKy, Diem.
· Danh sách các thuộc tính lặp: MaSV,
TenSV, Diem.
· Danh sách các phụ thuộc hàm:
MaSV → TenSV, MaLop.
MaLop → TenLop,
MaKhoa, MaKhoaHoc, MaHDT.
MaSV, MaMH→ Diem.
MaKhoa → TenKhoa.
MaKhoaHoc → TenKhoaHoc.
MaHDT → TenHDT.
MaMH → TenMH.
|
Sử dụng thuật toán phân rã để chuẩn hóa
thành dạng 3NF như sau:
Ta có
lược đồ quan hệ R(ABCDEFGHIJKLM) có các phụ thuộc hàm là F(K→AL, A→BCEF, IK→M, G→H, E→F, C→D, I→J)
B1: Tìm
phủ tối tiểu của F
F= { K→AL, A→BCEF, IK→M, G→H, E→F, C→D, I→J}
Đặt G=F,
Tách các phụ thuộc hàm của G có vế phải chỉ chứa 1 thuộc tính.
G={ K→A, K→L, A→B, A→C, A→E, A→F, IK→M, G→H,
E→F, C→D, I→J }
G là
tối tiểu
B2:
Tách thành các lược đồ con
F=G
Xét K→A,
K→L có 2 phụ thuộc hàm vế trái bằng K ta có R1(KAL) loại K→A, K→L khỏi F
Xét A→B, A→C, A→E, A→F có 2 phụ thuộc hàm vế trái
bằng A ta có R2(ABCEF) loại A→B, A→C, A→E, A→F khỏi F
Xét IK→M
có 1 phụ thuộc hàm vế trái bằng IK ta có R3(IKM) loại IK→M khỏi F
Tương tự xét đến khi F=Æ dừng thuật toán
Kết luận: Lược đồ R(ABCDEFGHIJKLM)
được tách thành 7 lược đồ con chuẩn 3NF như sau:
R1(KAL) khóa K
R2(ABCEF) khóa A
R3(IKM) khóa IK
R4( GH) khóa G
R5(EF) khóa E
R6(CD) khóa C
R7(IJ) khóa I
2.1.
Thiết kế cơ sở dữ
liệu:
2.2.
Từ điển dữ liệu
Thuộc
tính
Tên bảng
|
Tên
cột
|
Kiểu dữ liệu
|
Độ rộng
|
Miêu
tả
|
MONHOC
(Môn
học)
|
MaMH
|
char
|
5
|
Mã
môn học
|
TenMH
|
nvarchar
|
30
|
Tên
môn học
|
|
SoTrinh
|
int
|
Số
trình
|
||
DIEM
(Điểm)
|
MaSV
|
Char
|
15
|
Mã
sinh viên
|
MaMH
|
char
|
5
|
Mã
môn học
|
|
HocKy
|
Int
|
Học kỳ
|
||
DiemLan1
|
Int
|
Điểm tk lần 1
|
||
DiemLan2
|
Int
|
Điểm tk lần 2
|
||
HEDT
(Hệ
đào tạo)
|
MaHeDT
|
Char
|
5
|
Mã hệ đào tạo
|
TenHeDT
|
nvarchar
|
30
|
Tên hệ đào tạo
|
|
LOP
(Lớp)
|
MaLop
|
char
|
5
|
Mã lớp
|
TenLop
|
nvarchar
|
50
|
Tên lớp
|
|
MaKhoa
|
char
|
5
|
Mã khoa
|
|
MaHDT
|
char
|
5
|
MaHDT
|
|
MaKhoaHoc
|
char
|
5
|
Mã khóa học
|
|
SINHVIEN
(Sinh viên)
|
MaSV
|
char
|
15
|
Mã sinh viên
|
TenSV
|
nvarchar
|
30
|
Tên sinh viên
|
|
GioiTinh
|
Bit
|
Giới tính
|
||
NgaySinh
|
Datetime
|
Ngày sinh
|
||
MaLop
|
char
|
5
|
Mã lớp
|
|
Que Quan
|
nvarchar
|
100
|
Que Quan
|
|
KHOAHOC
|
MaKhoaHoc
|
Char
|
5
|
Mã khóa học
|
TenKhoaHoc
|
nvarchar
|
30
|
Tên khóa học
|
|
Khoa
|
MaKhoa
|
Char
|
5
|
Mã khoa
|
TenKhoa
|
nvarchar
|
50
|
Tên khoa
|
|
DiaChi
|
Nvarchar
|
100
|
Địa chỉ
|
|
DienThoai
|
varchar
|
15
|
Điện thoại
|
2.3.
Một số truy vấn SQL
Create Database
BTLSQL
go
Use QLDiemSV
go
-- Tao Bang Mon
Hoc --
Create Table
MonHoc
(
MaMH char(5) primary key,
TenMH nvarchar(30) not null,
SoTrinh int not null check ( (SoTrinh>0)and (SoTrinh<7) )
)
--- Tao Bang He
Dao Tao ---
Create Table
HeDT
(
MaHeDT char(5) primary key,
TenHeDT nvarchar(40) not null
)
--- Tao Bang
Khoa Hoc ---
Create Table
KhoaHoc
(
MaKhoaHoc char(5) primary key,
TenKhoaHoc nvarchar(20) not null
)
--- Tao Bang
Khoa --
Create Table
Khoa
(
MaKhoa char(5) primary key,
TenKhoa nvarchar(30) not null,
DiaChi nvarchar(100) not null,
DienThoai varchar(20) not null
)
-- Tao Bang Lop
---
Create Table
Lop
(
MaLop char(5) primary key,
TenLop nvarchar(30) not null,
MaKhoa char(5) foreign key references Khoa (MaKhoa),
MaHeDT char(5) foreign key references HeDT (MaHeDT),
MaKhoaHoc char(5) foreign key references KhoaHoc (MaKhoaHoc),
)
--- Tao Bang
Sinh Vien ---
Create Table
SinhVien
(
MaSV char(15) primary key,
TenSV nvarchar(20) ,
GioiTinh bit
,
NgaySinh datetime
,
QueQuan nvarchar(50) ,
MaLop char(5) foreign key references Lop(MaLop)
)
--- Tao Bang
Diem ---
Create Table
Diem
(
MaSV char(15) foreign key references SinhVien(MaSV),
MaMH char(5) foreign key references MonHoc (MaMH),
HocKy int check(HocKy>0) not null,
DiemLan1 int
,
DiemLan2 int
)
---Nhap Du Lieu
Cho Bang He Dao Tao --
insert into
HeDT values('A01',N'Ðại Học')
insert into
HeDT values('B01',N'Cao Ðẳng')
insert into
HeDT values('C01',N'Trung Cấp')
insert into
HeDT values('D01',N'Công nhân')
Select * from HeDT
-- Nhap Du Lieu
Bang Ma Khoa Hoc ---
insert into
KhoaHoc values('K1',N'Ðại học khóa 1')
insert into
KhoaHoc values('K2 ',N'Ðại học khóa 2')
insert into
KhoaHoc values('K3',N'Ðại học khóa 3')
insert into
KhoaHoc values('K9',N'Ðại học khóa 4')
insert into
KhoaHoc values('K10',N'Ðại học khóa 5')
insert into
KhoaHoc values('K11',N'Ðại học khóa 6')
Select * from KhoaHoc
-- Nhap Du Lieu
bang Khoa --
insert into
Khoa values('CNTT',N'Công nghệ thông tin',N'Tầng 4 nhà B','043768888')
insert into
Khoa values('CK',N'Cõ Khí',N'Tầng 5 nhà B','043768888')
insert into
Khoa values('DT',N'Ðiện tử',N'Tằng 6 nhà B','043768888')
insert into
Khoa values('KT',N'Kinh Tế',N'Tầng 2 nhà C','043768888')
Select * from Khoa
--- Nhap Du Lieu
Cho Bang Lop --
insert into
Lop values('MT1',N'MÁy Tính 1','CNTT','A01','K2 ')
insert into
Lop values('MT2',N'MÁy Tính 2','CNTT','A01','K2 ')
insert into
Lop values('MT3',N'MÁy Tính 3','CNTT','A01','K2 ')
insert into
Lop values('MT4',N'MÁy Tính 4','CNTT','A01','K2 ')
insert into
Lop values('KT1',N'Kinh tế 1','KT','A01','K2 ')
select * from Lop
-- Nhap Du Lieu
Bang Sinh Vien --
insert into
SinhVien values('0241060218',N'Nguyễn Minh Một',1,'08/27/1989','Hải Dýõng','MT3')
insert into
SinhVien values('0241060318',N'Nguyễn Minh Hai',1,'2/08/1989','Nam Dinh','MT1')
insert into
SinhVien values('0241060418',N'Nguyễn Minh Ba',1,'7/04/1989','Ninh Binh','MT2')
insert into
SinhVien values('0241060518',N'Nguyễn Minh Bốn',1,'7/08/1989','Ninh Binh','MT1')
insert into
SinhVien values('0241060618',N'Nguyễn Minh Nãm',0,'7/08/1989','Nam Dinh','MT3')
insert into
SinhVien values('0241060718',N'Nguyễn Minh Sáu',1,'7/08/1989','Ha Noi','MT3')
insert into
SinhVien values('0241060818',N'Nguyễn Minh Bảy',1,'7/08/1989','Ha Noi','MT3')
insert into
SinhVien values('0241060918',N'Nguyễn Minh Tám',1,'7/08/1989','Hai Duong','MT2')
insert into
SinhVien values('0241060128',N'Nguyễn Minh Chín',1,'7/08/1989','Hai Duong','MT2')
insert into
SinhVien values('0241060138',N'Nguyễn Minh Mýời',1,'7/08/1989','Ha Nam ','MT2')
insert into
SinhVien values('0241060148',N'Nguyễn Minh Mýời Một',0,'7/08/1989','Bac Giang','MT4')
insert into
SinhVien values('0241060158',N'Nguyễn Minh Mýời Hai',0,'7/08/1989','Ha Noi','MT4')
insert into
SinhVien values('0241060168',N'Nguyễn Minh Mýời Ba',1,'7/08/1989','Hai Duong','MT4')
insert into
SinhVien values('0241060178',N'Nguyễn Minh Mýời Bốn',1,'7/08/1989','Nam Dinh','MT1')
insert into
SinhVien values('0241060978',N'Nguyễn Minh Mýời Nãm',1,'7/08/1989','Nam Dinh','KT1')
select *
from SinhVien
-- Nhap Du Lieu
Bang Mon Hoc --
insert into
MonHoc values('SQL','SQL',5)
insert into
MonHoc values('JV','Java',6)
insert into
MonHoc values('CNPM','Công Nghệ phần mềm',4)
insert into
MonHoc values('PTHT','Phân tích hệ thống',4)
insert into
MonHoc values('Mang','Mạng máy tính',5)
select * from MonHoc
-- Nhap Du Lieu
Bang Diem --
insert into
Diem(MaSV,MaMH,HocKy,DiemLan1) values('0241060218','SQL',5,7)
insert into
Diem(MaSV,MaMH,HocKy,DiemLan1) values('0241060418','SQL',5,6)
insert into
Diem(MaSV,MaMH,HocKy,DiemLan1) values('0241060218','CNPM',5,8)
insert into
Diem values('0241060518','SQL',5,4,6)
insert into
Diem values('0241060218','Mang',5,4,5)
insert into
Diem values('0241060218','JV',5,4,4)
insert into
Diem values('0241060518','JV',5,4,6)
insert into
Diem values('0241060218','PTHT',4,2,5)
insert into
Diem(MaSV,MaMH,HocKy,DiemLan1) values('0241060318','SQL',4,9)
insert into
Diem(MaSV,MaMH,HocKy,DiemLan1) values('0241060618','SQL',4,8)
insert into
Diem values('0241060318','Mang',5,3,4)
insert into
Diem values('0241060418','Mang',5,4,4)
insert into
Diem(MaSV,MaMH,HocKy,DiemLan1) values('0241060518','Mang',5,8)
select * from Diem
----- Cac Cau
Lenh
-- 1.Hiển thị danh
sách sinh viên gồm các thông tin sau:MaSV,TenSV, NgaySinh, GioiTinh,Ten Lop
create proc
show_sv
as
Select MaSV,TenSV,NgaySinh,GioiTinh,TenLop
From
SinhVien,Lop
Where
SinhVien.MaLop=Lop.MaLop
-- 2.Hien Thi Top 3
sinh vien lop may tinh 3 co diem mon SQL >=7
create proc
show_top3sv
as
Select Top 3 TenSV,TenLop,DiemLan1,TenMH
From
SinhVien,Diem,Lop,MonHoc
Where TenLop='MÁy tính 3' and DiemLan1>=7 and TenMH='SQL'
And
SinhVien.MaLop=Lop.MaLop And Diem.MaSV=SinhVien.MaSV And Diem.MaMH=MonHoc.MaMH
-- 3.Hien Thi
MaSV,TenSV,Ngay Sinh,Que Quan cua cac sinh vien ten la Ba va co tuoi lon hon
19.
create proc
show_svba19
as
Select MaSV,TenSV,NgaySinh,QueQuan
From
SinhVien
Where (TenSV like '%Ba') And (Year(getdate()) - Year(NgaySinh) >19)
-- 4. Hien Thi Tat
Ca Nhung Sinh Vien Khoa Cong Nghe Thong Tin
create proc show_svcntt
as
Select TenSV,TenLop,NgaySinh,QueQuan
From (SinhVien Inner join Lop on SinhVien.MaLop=Lop.MaLop)
Inner join Khoa on Khoa.MaKhoa=Lop.MaKhoa
Where
TenKhoa=N'Công nghệ
thông tin'
-- 5. Hien Thi Diem
cua sinh vien lop May Tinh 3 Khoa 2 Sap Xep Diem Giam Dan
create proc show_diemsvmt3
as
Select TenSV,TenLop,DiemLan1
From
SinhVien,Lop,KhoaHoc,Diem
Where
SinhVien.MaLop=Lop.MaLop And Lop.MaKhoaHoc=KhoaHoc.MaKhoaHoc And Diem.MaSV=SinhVien.MaSV And TenKhoaHoc='dai hoc khoa 2' And TenLop='may tinh 3'
Order By DiemLan1 DESC
--6. Tinh Trung Binh
Diem Cac Mon Hoc Cua Cac Sinh Vien Lop May tinh 3
create proc show_diemtbsvmt3
as
Select SinhVien.MaSV,TenSV,Lop.TenLop, SUM(DiemLan1*SoTrinh)/SUM(SoTrinh) as DiemTrungBinh
From
SinhVien,Diem,MonHoc,Lop
Where
SinhVien.MaLop=Lop.MaLop And Diem.MaSV=SinhVien.MaSV And Diem.MaMH=MonHoc.MaMH
And
TenLop=N'MÁy Tính 3'
Group By SinhVien.MaSV,TenSV,Lop.TenLop
--7.Hien Thi Tat Ca
Sinh Vien Phai Hoc Lai Mon Mang May Tinh
create proc show_svhlmt3
as
Select TenSV,TenMH,DiemLan1,DiemLan2
From
SinhVien,Diem,MonHoc
Where
SinhVien.MaSV=Diem.MaSV And Diem.MaMH=MonHoc.MaMH And (DiemLan1<5) And (DiemLan2<5) And TenMH='Mạng máy tính'
--SV phai thi
lai
create proc show_svthilai
as
Select TenSV,DiemLan1
From
SinhVien,Diem
Where
SinhVien.MaSV=Diem.MaSV And (DiemLan1<5)
--SV thi lai
mang may tinh
create proc
show_svthilaimmt
as
Select TenSV,DiemLan1,TenMH
From
SinhVien,Diem,MonHoc
Where SinhVien.MaSV=Diem.MaSV And Diem.MaMH=MonHoc.MaMH And (DiemLan1<5) And TenMH='Mạng máy tính'
--8. Dem So Luong
Sinh Vien Cua Khoa Cong Nghe Thong Tin
create proc show_demsvcntt
as
select count(*) as CNTT from SINHVIEN,KHOA,LOP
where
SINHVIEN.MALOP=LOP.MALOP and LOP.MAKHOA=KHOA.MAKHOA and TENKHOA=N'Công nghệ thông tin'
--9. Dem So Luong
Sinh Vien Cua Tung Khoa
create proc show_demsvkhoa
as
select
KHOA.MAKHOA, count(*) as SoLuong from
SINHVIEN,LOP,KHOA
where
SINHVIEN.MALOP=LOP.MALOP and LOP.MAKHOA=KHOA.MAKHOA
group by KHOA.MAKHOA
--10. Cho biet diem
thap nhat cua moi mon hoc
create proc show_diemthapnhat
as
select
MonHoc.MAMH,min(diemlan1) as [Min diem]
from
MonHoc inner join
diem on MonHoc.MAMH=diem.MAMH
group by MonHoc.MAMH
---11. Tao cac
Thu Tuc Sau:
-- 11.1 Hien Thi
Chi Tiet Sinh Vien Va Diem
create proc hienthisv_diem
as
SELECT
SinhVien.MaSV,TenSV,QueQuan,MaMH,DiemLan1
from SinhVien
join diem
on Sinhvien.masv=diem.masv
--11.4 Tao thu tuc
nhap them sinh vien moi
create procedure nhapmoiSV
@Masv char(15),
@Tensv nvarchar(20),
@gioitinh bit,
@ngaysinh datetime,
@quequan nvarchar(50),
@malop char(5)
as
begin
insert into sinhvien
values(@Masv,@Tensv,@gioitinh,@ngaysinh,@quequan,@malop)
end
--test
nhapmoiSV '0241060898','my love',0,'5/5/1987','vung tau','KT1'
go
select * from sinhvien
--12. CAC THAO TAC
DU LIEU VOI CAC BANG
-- 12.1 BANG SINH
VIEN
--A. THEM DU
LIEU
create
PROCEDURE sp_insSINHVIEN
(
@MASV char(15),
@TENSV nvarchar(20),
@GIOITINH bit,
@NGAYSINH DATETIME,
@QueQuan nvarchar(50),
@MALOP char(5)
)
AS
BEGIN
insert
into SINHVIEN
(
MASV,
TENSV,
GIOITINH,
NGAYSINH,
QueQuan,
MALOP
)
values (@MASV,@TENSV,@GIOITINH,@NGAYSINH,@QUEQUAN,@MALOP)
END
--TEST
sp_insSINHVIEN '0241061298','BANG KIEU',1,'5/5/1987','HA NOI','MT3'
SELECT
* FROM SINHVIEN
--B. XOA DU
LIEU
create
procedure sp_delSINHVIEN
@MASV char(15)
as
delete from SINHVIEN
where MASV=@MASV
-- TEST
sp_delSINHVIEN '0241060218'
select
* from sinhvien
--C. HIEN THI
DU LIEU
create
proc sp_showSINHVIEN
as
select * from SINHVIEN
--TEST
sp_showSINHVIEN
--D. SUA DU
LIEU
create
procedure sp_updateSINHVIEN
(
@MASV char(15),
@TENSV nvarchar(20),
@GIOITINH bit,
@NGAYSINH DATETIME,
@QUEQUAN nvarchar(50),
@MALOP char(5)
)
as
update
SINHVIEN
set
MASV=@MASV,
TENSV=@TENSV,
GIOITINH=@GIOITINH,
NGAYSINH=@NGAYSINH,
QUEQUAN=@QUEQUAN,
MALOP=@MALOP
where
MASV=@MASV
--- KIEM TRA
sp_updateSINHVIEN '0241060218','BANG KIEU',1,'5/5/1987','HA NOI','MT3'
select
* from SINHVIEN
-- 12.2 BANG LOP
--A. THEM DU
LIEU
create
PROCEDURE sp_insLOP
(
@MALOP char(5),
@TENLOP nvarchar(30),
@MAKHOA CHAR(5),
@MaHeDT CHAR(5),
@MaKhoaHoc CHAR(5)
)
AS
BEGIN
insert
into LOP
(
MALOP,
TENLOP,
MAKHOA,
MaHeDT,
MaKhoaHoc
)
values
(@MALOP,@TENLOP,@MAKHOA,@MaHeDT,@MaKhoaHoc)
END
--TEST
sp_insLOP 'KT4','KINH TE 4','KT','A01','K2'
select
* from lop
--B. XOA DU
LIEU
create
procedure sp_delLOP
@MALOP char(5)
as
delete from LOP
where MALOP=@MALOP
-- TEST
sp_delLOP 'KT4'
--C. HIEN THI
DU LIEU
create
proc sp_showLOP
as
select * from LOP
--D. SUA DU
LIEU
create
procedure sp_updateLOP
(
@MALOP char(5),
@TENLOP nvarchar(30),
@MAKHOA CHAR(5),
@MaHeDT CHAR(5),
@MaKhoaHoc CHAR(5)
)
as
update
LOP
set
MALOP=@MALOP,
TENLOP=@TENLOP,
MAKHOA=@MAKHOA,
MaHeDT=@MaHeDT,
MaKhoaHoc=@MaKhoaHoc
where
MALOP=@MALOP
-- 12.3 BANG MON
HOC
--A. THEM DU
LIEU
create
PROCEDURE sp_insMONHOC
(
@MaMH char(5),
@TenMH nvarchar(30),
@SoTrinh INT
)
AS
BEGIN
insert
into MONHOC
(
MAMH,
TENMH,
SOTRINH
)
values
(@MAMH,@TENMH,@SOTRINH)
END
--B. XOA DU
LIEU
create
procedure sp_delMONHOC
@MAMH char(5)
as
delete from MonHoc
where MAMH=@MAMH
--C. HIEN THI
DU LIEU
create
proc sp_showMONHOC
as
select * from MONHOC
--D. SUA DU
LIEU
create
procedure sp_updateMONHOC
(
@MaMH char(5),
@TenMH nvarchar(30),
@SoTrinh INT
)
as
update
MONHOC
set
MAMH=@MAMH,
TENMH=@TENMH,
SOTRINH=@SOTRINH
where
MAMH=@MAMH
--- 12.4 BANG KHOA
HOC
--A. THEM DU
LIEU
create
PROCEDURE sp_insKHOAHOC
(
@MaKhoaHoc char(5),
@TenKhoaHoc nvarchar(20)
)
AS
BEGIN
insert
into KHOAHOC
(
MaKhoaHoc,
TenKhoaHoc
)
values
(@MaKhoaHoc,@TenKhoaHoc)
END
--B. XOA DU
LIEU
create
procedure sp_delKHOAHOC
@MaKhoaHoc char(5)
as
delete from KHOAHOC
where MaKhoaHoc=@MaKhoaHoc
--C. HIEN THI
DU LIEU
create
proc sp_showKHOAHOC
as
select * from KHOAHOC
--D. SUA DU
LIEU
create
procedure sp_updateKHOAHOC
(
@MaKhoaHoc char(5),
@TenKhoaHoc nvarchar(20)
)
as
update
KHOAHOC
set
MaKhoaHoc=@MaKhoaHoc,
TenKhoaHoc=@TenKhoaHoc
where
MaKhoaHoc=@MaKhoaHoc
--- 12.5 BANG KHOA
--A. THEM DU
LIEU
create
PROCEDURE sp_insKHOA
(
@MaKhoa char(5),
@TenKhoa nvarchar(30),
@DiaChi nvarchar(100),
@DienThoai varchar(20)
)
AS
BEGIN
insert
into KHOA
(
MaKhoa,
TenKhoa,
DiaChi,
DienThoai
)
values
(@MaKhoa,@TenKhoa,@DiaChi,@DienThoai)
END
--B. XOA DU
LIEU
create
procedure sp_delKHOA
@MAKHOA char(5)
as
delete from KHOA
where MAKHOA=@MAKHOA
--C. HIEN THI
DU LIEU
create
proc sp_showKHOA
as
select * from KHOA
--D. SUA DU
LIEU
create
procedure sp_updateKHOA
(
@MaKhoa char(5),
@TenKhoa nvarchar(30),
@DiaChi nvarchar(100),
@DienThoai varchar(20)
)
as
update
KHOA
set
MaKhoa=@MaKhoa,
TenKhoa=@TenKhoa,
DiaChi=@DiaChi,
DienThoai=@DienThoai
where
MaKhoa=@MaKhoa
-- 12.6 BANG HE DAO
TAO
--A. THEM DU LIEU
create
PROCEDURE sp_HEDT
(
@MaHeDT char(5),
@TenHeDT nvarchar(40)
)
AS
BEGIN
insert
into HEDT
(
MaHeDT,
TenHeDT
)
values
(@MaHeDT,@TenHeDT)
END
--B. XOA DU
LIEU
create
procedure sp_delHEDT
@MaHeDT char(5)
as
delete from HEDT
where MaHeDT=@MaHeDT
--C. HIEN THI
DU LIEU
create
proc sp_showHEDT
as
select * from HEDT
--D. SUA DU
LIEU
create
procedure sp_updateHEDT
(
@MaHeDT char(5),
@TenHeDT nvarchar(40)
)
as
update
HEDT
set
MaHeDT=@MaHeDT,
TenHeDT=@TenHeDT
where
MaHeDT=@MaHeDT
-- 12.7 BANG DIEM
--A. THEM DU
LIEU
create
PROCEDURE sp_insDIEM
(
@MaSV char(15),
@MaMH CHAR(5),
@HocKy INT,
@DiemLan1 INT,
@DiemLan2 INT
)
AS
BEGIN
insert
into DIEM
(
MASV,
MAMH,
HOCKY,
DIEMLAN1,
DIEmLAN2
)
values
(@MaSV,@MaMH,@HocKy,@DiemLan1,@DiemLan2)
END
--B. XOA DU
LIEU
create
procedure sp_delDIEM
@MASV char(15)
as
delete from DIEM
where MASV=@MASV
--C. HIEN THI
DU LIEU
create
proc sp_showDIEM
as
select * from DIEM
--D. SUA DU
LIEU
create
procedure sp_updateDIEM
(
@MaSV char(15),
@MaMH CHAR(5),
@HocKy INT,
@DiemLan1 INT,
@DiemLan2 INT
)
as
update
DIEM
set
MaSV=@MaSV,
MaMH=@MaMH,
HocKy=@HocKy,
DiemLan1=@DiemLan1,
DiemLan2=@DiemLan2
where
MaSV=@MaSV
--- TAO TRIGGER
---13. Tao
trigger khong cho phep xoa mon hoc
--- Tao Trigger
insert Bang Diem
CREATE TRIGGER trginsert_Diem
ON Diem
For insert
as
DECLARE
@DiemLan1 int
DECLARE
@DiemLan2 int
SELECT
@DiemLan1=DiemLan1,@DiemLan2=DiemLan2
FROM
Inserted
IF (@DiemLan1 <0 ) or (@DiemLan1 >10) or (@DiemLan2 <0) or (@DiemLan2 >10)
begin
print 'Sai gia tri diem'
Rollback transaction
end
else
begin
Print 'qua trinh chen dl thanh cong'
end
Go
-- check
INSERT INTO Diem VALUES ('0241060148','SQL',5,14,8)
INSERT INTO Diem VALUES ('0241060158','SQL',5,-2,8)
INSERT INTO Diem VALUES ('0241060168','SQL',5,8,8)
INSERT INTO Diem VALUES ('0241060178','SQL',5,12,24)
INSERT INTO Diem VALUES ('0241060918','JV',5,12,24)
Go
SELECT * FROM Diem
-- Tao trigger de
tat cac truong trong bang sv phai nhap
create trigger trginsert_Sinhvien
on Sinhvien
for insert
as
begin
-- khai bao 4 bien
luu tru
Declare
@tensv nvarchar(20)
Declare
@quequan nvarchar(50)
Declare
@gioitinh bit
Declare
@ngaysinh datetime
-- lay du lieu ra
cac bien tu bang inserterd
select @tensv=inserted.tensv,
@quequan=inserted.quequan,
@gioitinh=inserted.gioitinh,
@ngaysinh=inserted.ngaysinh
From Inserted
if((@tensv is null) or (@quequan is null)
or (@gioitinh is null) or (@ngaysinh is null))
begin
print'Ban phai day du cac thong'
print'qua trinh them dl khong thanh cong'
rollback tran
end
else
begin
print'ban da them du lieu thanh cong'
end
end
-- kiem tra
select* from sinhvien
1.
Giáo trình SQL Server 2000-NXB Lao Động Xã Hội
2.
Một số Website tham khảo:
Download file báo cáo+ csdl: https://drive.google.com/drive/folders/0B5fbXrMbFIyBRGNERjFfRmRoZU0?usp=sharing