Tải bản đầy đủ (.pdf) (44 trang)

Bộ môn cơ sở dữ liệu tiểu luận hệ thống quản lý thí sinh và điểm thi

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 (765.81 KB, 44 trang )

TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

ng

.c

om

KHOA ĐIỆN TỬ - VIỄN THÔNG

co

BÁO CÁO BÀI TẬP LỚN

an

MÔN CƠ SỞ DỮ LIỆU

du

on

g

th

HỆ THỐNG
QUẢN LÝ THÍ SINH VÀ ĐIỂM THI

cu


u

Giáo viên hƣớng dẫn: Thầy Nguyễn Hồi Giang
Nhóm

: AFC ĐT9 - K47

Các thành viên:

Nguyễn Trung Thu (NT)
Đặng Hữu Tùng
Nguyễn Đình Tuấn
Vũ Ngọc Hà
Nguyễn Cơng Chiến
Khuất Bá Đông

Hà nội, 5/2005

CuuDuongThanCong.com

/>

MỤC LỤC
Yêu cầu của hệ thống quản lý thí sinh và điểm thi

3

Phần I: Nhận diện thực thể của hệ thống

4


Phần II: Các giả thiết về phụ thuộc hàm

5

Phần III: Chuần hóa
6

Chuẩn hóa 3NF

7

Chuẩn hóa BCNF

8

om

Nhận diện các khóa chính và khóa ứng củ của các bảng

Phần IV: Sơ đồ thực thể liên kết

.c

Từ điển dữ liệu của hệ thống đã đƣợc chuẩn hóa

9
9
12


Phần VI: Thiết kế chƣơng trình

13

co

ng

Phần V: Lƣợc đồ khái niệm của hệ thống đã đƣợc chuẩn hóa
Phần VII: Các thủ tục đảm bảo ngun tắc tồn vẹn dữ liệu

15

an

Phần VIII: Chƣơng trình nguồn

17

Form nhập Điểm thi

21

Form cập nhật Tỉnh/Thành phố

29

Form nhập môn thi cho từng khối

33


Form tìm kiếm thí sinh

38

Form tìm kiếm điểm thi của thí sinh

41

cu

u

du

on

g

th

Form Nhập thơng tin về Thí sinh

Phần IX: Các bảng dữ liệu mẫu

45

Thống kê điểm trung bình của thí sinh theo vùng

47


Thống kê thí sinh đỗ của từng Tỉnh/Thành phố

48

Phần X: Hƣớng dẫn sử dụng chƣơng trình

CuuDuongThanCong.com

49

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

YÊU CẦU CỦA HỆ THỐNG QUẢN LÝ THÍ SINH VÀ
ĐIỂM THI

cu

u

du

on

g


th

an

co

ng

.c

om

I. Thơng tin cần lƣu trữ
Thơng tin về thí sinh:
- Số báo danh của thí sinh
- Họ và tên của thí sinh
- Ngày tháng năm sinh
- Giới tính
- Địa chỉ (Bao gồm thành phố/tỉnh, quận/huyện, phƣờng/xã, tên
phố/xóm, số nhà)
- Mã vùng
- Số phách của từng môn thi
- Điểm của từng mơn thi.
II. Các chức năng của chƣơng trình
1. Nhập dữ liệu
2. Sửa dữ liệu
3. Tìm kiếm thí sinh theo:
- Số báo danh
- Tên thí sinh
- Ngày tháng năm sinh

4. Tìm kiếm điểm thí sinh theo:
- Số báo danh
- Số phách
5. Xem tồn bộ thơng tin đƣợc sắp xếp:
- Sắp xếp về thí sinh kèm theo các thơng tin về điểm từng mơn học
của thí sinh
- Sắp xếp theo tổng điểm thi kèm theo các thơng tin về thí sinh và
điểm của từng môn thi
6. Lập báo cáo thống kê điểm trung bình của các thí sinh theo từng vùng
gồm thơng tin về:
- Số báo danh
- Họ và tên thí sinh
- Ngày tháng năm sinh
- Giới tính
- Điểm trung bình của từng thí sinh
- Điểm trung bình của các thí sinh trong từng vùng
7. Lập báo cáo thống kê tỷ lệ thí sinh đỗ của các tỉnh/thành phố, bao gồm
các thơng tin về:
- Số báo danh
- Họ và tên thí sinh
- Ngày tháng năm sinh
- Giới tính
- Điểm trung bình của từng thí sinh
- Tỷ lệ thí sinh thi đỗ trong từng thành phố/tỉnh
- Tỷ lệ thí sinh thi đỗ của tất cả các thành phố/tỉnh

3
CuuDuongThanCong.com

/>


Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

PHẦN I: NHẬN DIỆN THỰC THỂ
I. Thực thể THÍ SINH
Để tiện cho việc sắp xếp thí sinh ta tách thuộc tính Họ và tên thí sinh
thành Họ đệm thí sinh và Tên thí sinh.
Để tiện cho việc quản lý thí sinh, ta đƣa thêm thc tính Đối tượng và
Mã đối tượng, Khối thi và Mã Khối thi.
Để dễ dàng xác định thí sinh đỗ hay trƣợt ta thêm thuộc tính Điểm
chuẩn của mỗi khối
Tách thuộc tính Địa chỉ thành các thuộc tính nhỏ hơn
Vậy thực thể THÍ SINH bao gồm các thuộc tính sau:

om

Kiểu dữ liệu
Character(15)
Character(30)
Character(20)
Date/Time
Character(5)
Character(30)
Character(30)
Character(30)
Character(30)
Character(10)
Numeric(4)

Character(2)
Numeric(2)
Character(30)
Numeric(2)
Character(255)
Numeric(5)

th

an

co

ng

.c

Ký hiệu
Sbd
Ho
Ten
NgaySinh
GioiTinh
Tp
Qh
Pxa
Pxom
SoNha
Mv
Khoi

MaKhoi
Dt
MaDt
GChu
DiemChuan

u

du

on

g

Thuộc tính
Số báo danh
Họ đệm
Tên
Ngày tháng năm sinh
Giới tính
Thành phố/tỉnh
Quận/huyện
Phƣờng/xã
Tên phố/xóm
Số nhà
Mã vùng
Khối thi
Mã khối
Đối tƣợng
Mã đối tƣợng

Ghi chú
Điểm chuẩn

cu

STT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

II. Thực thể ĐIỂM THI
Để xác định điểm thi của một môn ta đƣa thêm thuộc tính Mơn thi và
Mã mơn thi. Vậy thực thể ĐIỂM THI gồm các thuộc tính sau:
STT Thuộc tính
Ký hiệu
Kiểu dữ liệu

1
Số báo danh
Sbd
Character(15)
2
Số phách (của một môn thi)
SoPhach
Character(15)
3
Mã môn
MaMon
Numeric(2)
4
Tên môn
Mon
Character(20)
5
Điểm thi (của một môn thi)
Diem
Numeric(4)

4
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47


PHẦN II: CÁC GIẢ THIẾT VỀ CÁC PHỤ THUỘC HÀM
1. Giả thiết số báo danh là duy nhất đối với mỗi thí
sinh và mỗi thí sinh chỉ có duy nhất một Họ đệm,
Tên, Ngày sinh, Giới tính, Ghi chú, mỗi thí sinh chỉ
có duy nhất một địa chỉ: Thành phố/Tỉnh,
Quận/Huyện, Phƣờng/Xã, Phố/Xóm. Số nhà, Mã
vùng. Do vậy các thuộc tính này phụ thuộc hàm vào
thuộc tính Số báo danh

cu

u

du

on

g

th

an

co

ng

.c

om


Sbd  Ho
Sbd  Ten
Sbd  NgaySinh
Sbd  GioiTinh
Sbd  Gchu
Sbd  Tp
Sbd  Qh
Sbd  Pxa
Sbd  Pxom
Sbd  SoNha
Sbd  Mv
2. Mỗi đối tƣợng đƣợc xác định duy nhất bởi một MaDt  Dt
Mã đối tƣợng nên Đối tƣợng phụ thuộc hàm vào Mã
Đối tƣợng
3. Giả thiết mỗi Khối thi chỉ có một điểm chuẩn, mà MaKhoi  Khoi
mỗi khối thi đƣợc xác định duy nhất bởi Mã khối MaKhoi  DiemChuan
nên Khối thi và Điểm chuẩn phụ thuộc hàm vào Mã
khối
4. Giả thiết mỗi thí sinh chỉ thuộc duy nhất một loại Sbd  Dt
đối tƣợng mà Số báo danh xác định duy nhất một thí Sbd  MaDt
sinh nên Đối tƣợng và Mã đối tƣợng phụ thuộc hàm
vào Số báo danh
5. Giả thiết với mỗi số báo danh chỉ dùng cho thí Sbd  Khoi
sinh thi trong một khối nên khối thi và mã khối thi Sbd  MaKhoi
phụ thuộc hàm vào Số báo danh
6. Giả thiết mã vùng xác định duy nhất một thành Mv  Tp
phố, mỗi thành phố cũng chỉ có duy nhất một mã Tp  Mv
vùng
7. Mỗi môn thi đƣợc xác định duy nhất bởi Mã môn MaMon  Mon

thi nên Môn thi phụ thuộc hàm vào Mã môn
9. Giả thiết mỗi bài thi của một môn đƣợc đánh số (SoPhach, Mon)  Diem
phách ngẫu nhiên và do đó có thể trùng nhau. Vì (SoPhach, Mon)  Sbd
vậy mỗi số phách ứng với một môn thi nhất định
xác định một điểm thi mơn đó
10. Một thí sinh thi nhiều mơn thi khác nhau nên (Sbd, Mon)  Diem
điểm mỗi mơn của thí sinh đƣợc xác định nhờ Số (Sbd, Mon)  SoPhach
báo danh và Tên môn. Đồng thời với ngƣời quản trị
(Nhập/sửa dữ liệu), số phách của một bài thi hoàn
toàn xác định khi biết Số báo danh và Tên môn thi

5
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

PHẦN III: CHUẨN HĨA
1. Nhận diện các khóa chính và khóa ứng cử.
Từ các thực thể và phụ thuộc hàm đã xác định ở trên ta có các quan hệ
sau:
THÍ SINH(*Sbd, Ho, Ten, NgaySinh, GioiTinh, Tp, Qh, Pxa, Pxom,
SoNha, Mv, Dt, MaDt, Khoi, Makhoi, DiemChuan,
T H I S IN H
GChu)
P_key: Sbd
*S b d

C_key: Sbd
Ho
Ten
N g a y S in h

om

G io iT in h

.c

D IE M T H I
*S b d

ng

*M o n
*-M a M o n
*-S o P h a c h

co

D ie m

Tp
Qh
P xa
P xom
SoN ha
Mv

M aD t
Dt
M aKhoi
Khoi

an

D ie m C h u a n
G C hu

du

on

g

th

ĐIỂM THI(*Sbd, *Mon, *-MaMon, *-SoPhach, Diem)
P_key: (Sbd, Mon)
C_key: (Sophach, Mon)
C_key: (Sbd, MaMon)
C_key: (SoPhach, MaMon)

2. Chuẩn hóa 1NF:

cu

u


Cả 2 bảng trên đều đã ở dạng chuẩn 1NF vì tất cả các thuộc tính đều có
tính chất ngun tố.

3. Chuẩn hóa 2NF:
Bảng THÍ SINH đã ở dạng chuẩn 2 NF vì có khóa chính chỉ gồm
một thuộc tính
Bảng ĐIỂM THI có phụ thuộc hàm:
MaMon  Mon
Thuộc tính Mơn phụ thuộc hàm khơng đầy đủ vào khóa chính. Tách
bảng ĐIỂM THI thành 2 bảng ĐIỂM THI và MÔN THI nhƣ sau:
ĐIỂM THI(*Sbd, *MaMon, *-SoPhach, Diem)

MÔN THI(* MaMon, *-Mon)
D IE M T H I
M O N THI

*S b d

*M o n

*M a M o n

*-M a M o n

*-S o P h a c h
D ie m

6
CuuDuongThanCong.com


/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

4. Chuẩn hóa 3NF
Bảng THÍ SINH chƣa ở dạng 3NF vì có các phụ thuộc hàm bắc cầu sau:
1.
Sbd  Mv
Mv  Tp
2.
Sbd  MaKhoi
MaKhoi  Khoi
3.
Sbd  MaDt
MaDt  Dt
Ta tách bảng THÍ SINH thành các bảng sau:
THÍ SINH(*Sbd, Ho, Ten, NgaySinh, GioiTinh, Qh, Pxa, Pxom,
SoNha, Mv, MaDt, Makhoi, Gchu)
T H I S IN H

om

*S b d
Ho

Ten

G io iT in h

Qh
P xa
P xom
SoNha
Mv
M aD t
M aKhoi

an

MÃ VÙNG(*Mv, *-Tp)

co

ng

.c

N g a y S in h

G Chu

MA VUNG

th

*M v

g


*-T p

DO I TUO NG
*M a D t
*-D t

cu

u

du

on

ĐỐI TƢỢNG(*MaDt, *- Dt)

KHỐI THI(*MaKhoi, *-Khoi, DiemChuan)
KHO I THI
*M a K h o i
*-K h o i
D ie m C h u a n

Các bảng trên sau khi tách đã thỏa mãn điều kiện 3NF đó là mọi thuộc
tính khơng khóa đều khơng phụ thuộc hàm bắc cầu vào khóa chính thơng
qua thuộc tính khơng khóa khác.

7
CuuDuongThanCong.com

/>


Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

5. Chuẩn hóa BCNF:

.c

ĐIỂM CHUẨN(*Khoi, DiemChuan)

ng



om

Các bảng MÃ VÙNG, ĐỐI TƢỢNG đều đã ở dạng chuẩn BCNF
vì mọi thuộc tính quyết định đều là khóa ứng cử và khơng cịn
phụ thuộc hàm bắc cầu
Bảng THÍ SINH đã ở dạng chuẩn vì chỉ có một khóa chính đồng
thời là khóa ứng cử
Bảng Khối thi có phụ thuộc hàm bắc cầu
MaKhoi  Khoi
Khoi  DiemChuan
 MaKhoi  DiemChuan
Ta tách bảng này thanh 2 bảng sau:
KHỐI THI(*MaKhoi, *-Khoi)
KHO I THI
*M a K h o i

*-K h o i

D IE M C H U A N
*M a K h o i
D ie m C h u a n

g

th

an

co

Bàng ĐIỂM THI có phụ thuộc hàm bắc cầu:
(Sbd, MaMon)  SoPhach
(Sbd, Sophach)  Diem
 (Sbd, MaMon)  Diem
Ta tách bảng ĐIỂM THI thành 2 bảng sau:
SỐ PHÁCH(*Sbd, *MaMon, *-SoPhach)

on

*S b d
*M a M o n

du

*-S o P h a c h


ĐIỂM THI(*Sbd, *MaMon, Diem)

D IE M T H I

u



SO PHACH

cu

*S b d
*M a M o n
D ie m

Do hai bảng MÔN THI VÀ KHỐI THI có quan hệ n – n nên ta có bảng
mới MƠN KHỐI. Bảng này có quan hệ n – 1 với các bảng MÔN THI, KHỐI
THI.
MON KHOI
*M a K h o i
*M a M o n
G C hu

8
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi


Nhóm AFC ĐT9 K47

PHẦN IV: SƠ ĐỒ THỰC THỂ LIÊN KẾT

an

co

ng

.c

om

1. Sơ đồ thực thể liên kết

g

th

Sơ đồ trên chỉ đƣợc dùng trong lập báo cáo. Thực tế khi lập trình,
việc chuẩn hóa chỉ dừng lại ở mức 3NF để cho đơn giản.

Tên đầy đủ
Thí sinh
Điểm thi
Mã vùng

cu


u

du

Tên viết tắt
THI SINH
DIEM THI
MA VUNG

on

2. Từ điển dữ liệu của hệ thống đã chuẩn hóa

MON THI
KHOI THI
MON KHOI
DOI TUONG

Mơn thi
Khối thi
Mơn thi –
Khối thi
Đối tƣợng

Mơ tả
Thơng tin về thí sinh
Điểm thi của thí sinh ứng với từng môn
Danh sách các thành phố/tỉnh kèm theo mã
vùng tƣơng ứng

Danh sách môn thi và mã môn
Danh sách khối thi và mã khối
Danh sách các môn thi tƣơng ứng với các
khối thi
Danh sách các đối tƣợng tƣơng ứng với mã

9
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

2.2. Danh sách các thuộc tính của từng bảng
2.2.1. Bảng THÍ SINH

Khoảng
Kiểu dữ liệu giá trị Giá trị mẫu
Khóa
Character
15 BKA11234
P_key
Number
2
2 P_key
number
5
8,25


g

th

an

Tên đầy đủ
Số báo danh
mã môn thi
Điểm thi của môn

on

TT
1
2
4

Tên viết
tắt
Sbd
MaMon
Diem

co

2.2.2. Bảng ĐIỂM THI

Khoảng

Kiểu dữ liệu giá trị Giá trị mẫu
Khóa
Character
15 BKA11234
P_key
Text
30 Nguyễn Trung
Text
20 Thu
Date/time
10
08/10/1984
Nam/nữ
5 Nam
Number
4 04
Text
30 Từ Liêm
Text
30 Cầu Diễn
Text
30 Xóm Sếp
Text
10 8C
Number
2
1
Number
2
2

Text
255 Khơng có gì

om

Tên đầy đủ
Số báo danh
Họ đệm của thí sinh
Tên thí sinh
Ngày tháng năm sinh
Giới tính
Mã vùng
Quận/huyện
Phƣờng /xã
Tên phố/xóm
Số nhà
Mã khối
Mã đối tƣợng
Ghi chú

.c

Tên viết
tắt
Sbd
Ho
Ten
NgaySinh
GioiTinh
Mv

Qh
Pxa
Pxom
SoNha
MaKhoi
MaDt
GChu

ng

TT
1
2
3
4
5
6
7
8
9
10
11
12
13

Tên đầy đủ
Số báo danh
mã môn thi
Số phách


u

cu

TT
1
2
3

Tên viết
tắt
Sbd
MaMon
SoPhach

du

2.2.3 Bảng SỐ PHÁCH

Khoảng
Kiểu dữ liệu giá trị Giá trị mẫu
Character
15 BKA11234
Number
2
2
Number
10
332114


Khóa
P_key
P_key
C_key

2.2.4. Bảng MƠN THI
Tên viết
TT tắt
1 MaMon
2 Mon

Tên đầy đủ
mã mơn thi
Tên môn thi

Khoảng
Kiểu dữ liệu giá trị Giá trị mẫu
number
2
text
20 Tốn

Khóa
2 P_key
C_key

Khoảng
Kiểu dữ liệu giá trị Giá trị mẫu
Number
2

text
2 A

Khóa
1 P_key
C_key

2.2.5 Bảng KHỐI THI
Tên viết
TT tắt
1 MaKhoi
2 Khoi

Tên đầy đủ
Mã khối
Tên khối thi

10
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

2.2.6 Bảng ĐIỂM CHUẨN
TT Tên viết tắt Tên đầy đủ
1 MaKhoi
Mã khối

2 DiemChuan Điểm chuẩn

Khoảng
Kiểu dữ liệu giá trị Giá trị mẫu
Number
2
Number
5 24,5

Khóa
1 P_key

Khoảng
Kiểu dữ liệu giá trị Giá trị mẫu
number
2
Number
2
text
255

Khóa
2 P_key
1 P_key

2.2.7. Bảng MƠN-KHỐI
Tên đầy đủ
mã mơn thi
Mã khối
Ghi chú


om

Tên viết tắt
MaMon
MaKhoi
GChu

.c

TT
1
2
3

2.2.9. Bảng ĐỐI TƢỢNG

du

on

g

Tên đầy đủ
Mã đối tƣợng
Đối tƣợng

co

Khoảng giá

trị
Giá trị mẫu
4
30 Hà Nội

Kiểu dữ
liệu
Number
text

cu

11
CuuDuongThanCong.com

Khóa
4 P_key
C_key

Khoảng giá
trị
Giá trị mẫu
Khóa
2
2 P_key
30 Con thƣơng binh C_key

u

Tên viết

TT tắt
1 MaDt
2 Dt

th

Tên đầy đủ
Mã vùng
Tỉnh/thành phố

Kiểu dữ
liệu
Number
text

an

Tên viết
TT tắt
1 Mv
2 Tp

ng

2.2.8. Bảng MÃ VÙNG

/>

Hệ thống quản lý Thí sinh và Điểm thi


Nhóm AFC ĐT9 K47

PHẦN V: MÔ TẢ LƢỢC ĐỒ KHÁI NIỆM
CỦA HỆ THỐNG ĐÃ ĐƢỢC CHUẨN HÓA

ng

.c

om

CHARACTER(15)
CHARACTER(30)
CHARACTER(20)
Date/Time
CHARACTER(5)
CHARACTER(30)
CHARACTER(30)
CHARACTER(30)
CHARACTER(30)
CHARACTER(10)
NUMERIC(5)
NUMERIC(2)
NUMERIC(2)
CHARACTER(30)
CHARACTER(255)
NUMERIC(4)
NUMERIC(2)
CHARACTER(20)
CHARACTER(2)

CHARACTER(10)
NUMERIC(5)

co

g

th

an

Sbd
Ho
Ten
NgaySinh
GioiTinh
Tp
Qh
Pxa
Pxom
SoNha
DiemChuan
MaKhoi
MaDt
Dt
GChu
Mv
MaMon
Mon
Khoi

SoPhach
Diem

du

on

Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain
Domain

u


THI SINH(Sbd, Ho, Ten, NgaySinh, GioiTinh, Mv,
RELATION Qh, Pxa, Pxom, SoNha, MaKhoi, MaDt, GChu)

cu

RELATION DIEM THI(Sbd, MaMon, Diem)
RELATION MON(MaMon, Mon)
RELATION Khoi thi(MaKhoi, Khoi)

RELATION MON KHOI(MaMon, MaKhoi, GChu)
RELATION DOI TUONG(MaDt. Dt)
RELATION MA VUNG(Mv, Tp)
RELATION DIEM CHUAN(MaKhoi, DiemChuan)
RELATION SO PHACH(Sbd, MaMon, SoPhach)
12
CuuDuongThanCong.com

/>
P_key: Sbd
P_key:(Sbd,
MaMon)
P_key:
MaMon
P_key:
MaKhoi
P_key:
(MaMon,
MaKhoi)
P_key: MaDt

P_key: Mv
P_key:
MaKhoi
P_key: (Sbd,
MaMon)


Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

PHẦN VI: THIẾT KẾ CHƢƠNG TRÌNH

th

an

co

ng

.c

om

1. Hệ thống Menu chính của chƣơng trình

g

T


on

2. Chức năng của các mục chọn

cu

u

du

Menu chính (frmMain) xuất hiện sau màn hình giới thiệu ban đầu (Main)
Thơng tin về Thí sinh: frmThisinh cho phép xem, nhập và sửa, xóa các thơng
tin về Thí sinh
Nhập Điểm thi : frmDiemThi cho phép xem, nhập và sửa, xóađiểm thi của Thí
sinh
Trở về Windows: Thốt khỏi chƣơng trình.

Danh sách Đối tượng: frmDoituong cho phép xem, nhập và sửa, xóa các đối
tƣợng
13
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

Danh sách Tỉnh/Thành phố: frmMavung cho phép xem, nhập, sửa, xóa các

tỉnh/ thành phố
Tƣơng tự với các lựa chọn Danh sách Khối thi (frmKhoi), Danh sách Môn thi
(frmMon), Danh sách Môn thi của các Khối( frmMon_Khoi)

ng

.c

om

Sắp xếp theo họ tên: RptSapxepten
Sắp xếp theo Tổng điểm: RptsxTong

du

on

g

th

an

co

Tỷ lệ thí sinh đỗ của các Tỉnh/Thành phố: rptTylevung
Thống kê điểm trung bình theo vung: rptDTB

cu


u

Tìm kiếm thí sinh: frmTimTs cho phép tìm kiếm thí sinh theo SBD, Tên, Ngày
tháng năm sinh và hiển thị tất cả thơng tin về thí sinh tìm đƣợc
Tìm kiếm Điểm thi của thí sinh: frmTimDiem cho phép tìm kiếm Điểm của thí
sinh theo SBD, Số phách và hiển thị các thông tin về điểm,…

Hướng dẫn: frmTip Hƣớng dẫn cách sử dụng chƣơng trình, file nguồn là
TIPOFDAY.txt nằm trong cùng thƣ mục cài đặt chƣơng trình
Tác giả: frmAbout Giới thiệu về nhóm AFC và lời cảm ơn.

14
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

PHẦN VII: CÁC THỦ TỤC ĐẢM BẢO
NGUYÊN TẮC TOÀN VẸN DỮ LIỆU
1. Quy tắc toàn vẹn thực thể
Để đảm bảo các khóa khơng đƣợc phép NULL, trong q trình thiết kế CSDL,
ta đặt thuộc tính Required của các khóa chính là Yes. Nhờ đó, khi ngƣời dùng
khơng nhập dữ liệu cho khóa chính của các bảng, DBMS sẽ đƣa ra thông báo
lỗi và không cho phép lƣu dữ liệu.

2. Quy tắc toàn vẹn quy chiếu:


Bảng n
Mon_Khoi
Mon_Khoi
ThiSinh
ThiSinh
ThiSinh
DiemThi

co

ng

.c

Bảng 1
Mon
Khoi
Khoi
Doituong
Mv
ThiSinh

om

Các bảng sau có quan hệ 1 – n

cu

u


du

on

g

th

an

Để đảm bào tính tồn vẹn quy chiếu, dữ liệu khóa chinh ở bảng 1 luôn
phải đƣợc nhập trƣớc và hiện thị trong mục lựa chọn của khóa ngoại lai của
bảng n. Trong chƣơng trình này, ta dùng công cụ DataCombo đuợc hỗ trợ bởi
ADO có khả năng ràng buộc dữ liệu để hiển thị dữ liệu trong form nhập của
bảng n từ dữ liệu nguồn của bảng 1. Ngƣời dùng không thể nhập dữ liệu ở bảng
n mà bảng 1 chƣa có vì chỉ đƣợc phép chọn những dữ liệu đã đƣợc nhập trƣớc
từ DataCombo.
Để sửa dữ liệu tại bảng n, ngƣời dùng phải sửa dữ liệu trƣớc ở bảng 1
thông qua form nhập dữ liệu tƣơng ứng.
Muốn xóa dữ liệu ở bảng n, ngƣời dùng hoàn toàn yên tâm rằng dữ liệu
thuộc về bảng 1 (đƣợc chọn lựa từ DataCombo) không hề bị xóa.
Sau đây là danh sách các thủ tục/hàm đảm bảo ngun tắc tồn vẹn dữ
liệu:
Tên thủ tục/hàm
Commit()

Mục đích
Bảng dữ liệu
Lấy mã tƣơng ứng của các dữ liệu đƣợc chọn ở ThiSinh,
các DataCombo từ bảng 1 để lƣu vào bảng n. Mon_Khoi

Về mặt giao diện, ngƣời dùng lựa chọn các
thông tin nhƣ bình thƣờng nhƣng chƣơng trình
chỉ lƣu khóa của các thơng tin đó bằng việc so
sánh thơng tin đó với danh mục thơng tin trong
một bảng 1 khác có quan hệ với bảng n đang
đƣợc nhập thông tin. VD: trong phần
Tỉnh/Thành phố, ngƣời dùng chọn Hà Nội

15
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

cu

u

du

on

g

th

an


co

ng

.c

om

nhƣng thực chất thơng tin đƣợc lƣu vào bảng
Thí sinh là Mã vùng của Hà Nội vốn đƣợc lƣu
trong bảng Mã vùng
cmdUpdate_Click() Nhƣ trên
DiemThi
cmdSelect_Click
Lấy tất cả các môn thi ứng với khối thi đƣợc
DiemThi
chọn để hiển thị lên các button cho phép ngƣời
sử dụng nhập điểm cho các môn thi đó. Vì vậy
ngƣời sử dụng khơng thể nhập điểm cho một
mơn thi chƣa có tên trong bảng Mơn thi hoặc
khơng nằm trong khối thi của Thí sinh
cmdOther_Click() Chọn mơn thi khác hoặc khối thi khác để nhập DiemThi
điểm (có chức năng giống hàm Select_Click()

16
CuuDuongThanCong.com

/>


Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

PHẦN VIII: CHƢƠNG TRÌNH NGUỒN
1. Form nhập thơng tin về thí sinh frmThiSinh
Sử dụng ADO Code xây dựng bởi VB ở giao diện Single Record

.c

om

Option Explicit
Dim WithEvents adoPrimaryRS As Recordset
Dim WithEvents rsMv As Recordset
Dim WithEvents rsMadt As Recordset
Dim WithEvents rsMaKhoi As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean

cu

u

du

on


g

th

an

co

ng

Private Sub Commit() ‘Đảm bảo tính tồn vẹn dữ liệu (xem phần VI)
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\du an
AFC243\afc.mdb;"
Set rsMv = New Recordset
Set rsMadt = New Recordset
Set rsMaKhoi = New Recordset
rsMv.Open "select * from Mavung where Tp = '" & dcbMv & "'", db
With rsMv
txtFields(6).Text = .Fields("Mv")
End With
rsMadt.Open "select * from Doituong where Dt = '" & dcbMadt & "'", db
With rsMadt
txtFields(4).Text = .Fields("MaDt")
End With
rsMaKhoi.Open "select * from Khoi where Khoi = '" & dcbMakhoi & "'", db
With rsMaKhoi

txtFields(5).Text = .Fields("Makhoi")
End With
txtFields(2).Text = txtGioitinh.Text
End Sub
Private Sub Form_Load() ‘Kết nối dữ liệu với file CSDL
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\du an
AFC243\afc.mdb;"
Set adoPrimaryRS = New Recordset

17
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

adoPrimaryRS.Open "select Gchu, Gioitinh, Ho, MaDt, MaKhoi, Mv, Ngaysinh, Pxa,
Pxom, Qh, Sbd, Sonha, Ten from ThiSinh Order by Sbd", db, adOpenStatic,
adLockOptimistic
Dim oText As TextBox
‘Ràng buộc thông tin trên từng textbox với CSDL
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
mbDataChanged = False

LockText
End Sub

cu

u

du

on

g

th

an

co

ng

.c

om

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
‘Thực hiện lệnh khi một số phím quen thuộc đƣợc bấm
If mbEditFlag Or mbAddNewFlag Then Exit Sub
Select Case KeyCode
Case vbKeyEscape

cmdClose_Click
Case vbKeyEnd
cmdLast_Click
Case vbKeyHome
cmdFirst_Click
Case vbKeyUp, vbKeyPageUp
If Shift = vbCtrlMask Then
cmdFirst_Click
Else
cmdPrevious_Click
End If
Case vbKeyDown, vbKeyPageDown
If Shift = vbCtrlMask Then
cmdLast_Click
Else
cmdNext_Click
End If
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End Sub

Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As
ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As
ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
‘Hiển thị số thứ tự của bản ghi hiện tại
lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)
End Sub
Private Sub cmdAdd_Click() ‘Thêm một bản ghi

UnlockText

18
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

.c

om

txtFields(4).Enabled = False
txtFields(6).Enabled = False
txtFields(11).SetFocus
On Error GoTo AddErr
With adoPrimaryRS
If Not (.BOF And .EOF) Then
mvBookMark = .Bookmark
End If
.AddNew
mbAddNewFlag = True
SetButtons False
End With
Exit Sub
AddErr:
MsgBox "Thong tin ban nhap vao khong dung, de nghi kiem tra lai!", vbExclamation

+ vbOKCancel, "Thong bao"
End Sub

cu

u

du

on

g

th

an

co

ng

Private Sub cmdDelete_Click() ‘Xóa một bản ghi
Dim response
On Error GoTo DeleteErr
MsgBox " Ban co chac chan xoa thi sinh nay khong?", vbYesNo + vbQuestion,
"Thong bao"
If response = vbNo Then
Exit Sub
Else: With adoPrimaryRS
.Delete

.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
End If
DeleteErr:
MsgBox "Khong the xoa thong tin nay, vui long kiem tra lai!", vbExclamation +
vbOKCancel, "Thong bao"
End Sub
Private Sub cmdEdit_Click() ‘Sửa đổi bản ghi
UnlockText
txtFields(11).SetFocus
On Error GoTo EditErr
lblStatus.Caption = "Edit record"
mbEditFlag = True
SetButtons False
Exit Sub
EditErr:
MsgBox "Thong tin nay khong the sua doi, vui long kiem tra lai!", vbExclamation +
vbOKCancel, "Thong bao"
End Sub

19
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47


om

Private Sub cmdCancel_Click() ‘Hủy bỏ
On Error Resume Next
LockText
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
If mvBookMark > 0 Then
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbDataChanged = False
End Sub

cu

u

du

on

g

th


an

co

ng

.c

Private Sub cmdUpdate_Click() ‘Lƣu dữ liệu
Commit ' xac nhan viec chon Tp. doi tuong va khoi thi
On Error GoTo UpdateErr
adoPrimaryRS.UpdateBatch adAffectAll
If mbAddNewFlag Then
adoPrimaryRS.MoveLast
'move to the new record
End If
LockText
mbEditFlag = False
mbAddNewFlag = False
SetButtons True
mbDataChanged = False
adoPrimaryRS.MoveNext
adoPrimaryRS.MovePrevious
cmdAdd.SetFocus
Exit Sub
UpdateErr:
MsgBox "He thong khong the cap nhat thong tin ban nhap vao, vui long kiem tra
lai!", vbExclamation + vbOKCancel, "Thong bao"
End Sub
Private Sub cmdClose_Click()

Unload Me
End Sub
Private Sub cmdFirst_Click()
On Error GoTo GoFirstError
adoPrimaryRS.MoveFirst
mbDataChanged = False
Exit Sub
GoFirstError:
MsgBox Err.Description
End Sub
Private Sub cmdLast_Click()

20
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

On Error GoTo GoLastError
adoPrimaryRS.MoveLast
mbDataChanged = False
Exit Sub
GoLastError:
MsgBox Err.Description
End Sub

ng


.c

om

Private Sub cmdNext_Click()
On Error GoTo GoNextError
If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
adoPrimaryRS.MoveLast
End If
mbDataChanged = False
Exit Sub
GoNextError:
MsgBox Err.Description
End Sub

u

du

on

g

th

an


co

Private Sub cmdPrevious_Click()
On Error GoTo GoPrevError
If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
Beep
adoPrimaryRS.MoveFirst
End If
mbDataChanged = False
Exit Sub
GoPrevError:
MsgBox Err.Description
End Sub

cu

Private Sub SetButtons(bVal As Boolean)
cmdAdd.Visible = bVal
cmdEdit.Visible = bVal
cmdUpdate.Visible = Not bVal
cmdCancel.Visible = Not bVal
cmdDelete.Visible = bVal
cmdClose.Visible = bVal
cmdNext.Enabled = bVal
cmdFirst.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
End Sub
Private Sub UnlockText() ‘Mở các textbox

txtFields(1).Locked = False
txtFields(2).Locked = False

21
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

co

ng

.c

om

txtFields(3).Locked = False
txtFields(4).Locked = False
txtFields(5).Locked = False
txtFields(6).Locked = False
txtFields(7).Locked = False
txtFields(8).Locked = False
txtFields(9).Locked = False
txtFields(10).Locked = False
txtFields(11).Locked = False
txtFields(12).Locked = False
txtFields(13).Locked = False
Label1.Visible = True

Label3.Visible = True
dcbMv.Visible = True
dcbMadt.Visible = True
dcbMakhoi.Visible = True
txtGioitinh.Visible = True
txtFields(2).Visible = False
txtFields(5).Visible = False
lblLabels(5).Visible = False
Label2.Visible = True
End Sub

Nhóm AFC ĐT9 K47

cu

u

du

on

g

th

an

Private Sub LockText() ‘Khóa các textbox
txtFields(1).Locked = True
txtFields(2).Locked = True

txtFields(3).Locked = True
txtFields(4).Locked = True
txtFields(5).Locked = True
txtFields(6).Locked = True
txtFields(7).Locked = True
txtFields(8).Locked = True
txtFields(9).Locked = True
txtFields(10).Locked = True
txtFields(11).Locked = True
txtFields(12).Locked = True
txtFields(13).Locked = True
dcbMv.Visible = False
dcbMadt.Visible = False
dcbMakhoi.Visible = False
txtGioitinh.Visible = False
Label1.Visible = False
Label3.Visible = False
txtFields(2).Visible = True
txtFields(5).Visible = True
lblLabels(5).Visible = True
Label2.Visible = False
End Sub

22
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi


Nhóm AFC ĐT9 K47

2. Form Nhập điểm thi frmDiemThi
Sử dụng ADO Code ở giao diện Single Record

om

Option Explicit
Public str As String
Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean
Dim WithEvents rsMonKhoi As Recordset
Dim WithEvents rsMon As Recordset
Dim WithEvents rsKhoi As Recordset
Dim WithEvents rs As Recordset

co

ng

.c

Private Sub FormChange() ‘Thay đổi thanh tiêu đề của form
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient

db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\du an
AFC243\afc.mdb;"

cu

u

du

on

g

th

an

Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select Diem,MaMon,Sbd,Sophach from DiemThi Order by
Sbd", db, adOpenStatic, adLockOptimistic
Me.Caption = "Nhap Diem thi mon " & "" & str & ""
Dim oText As TextBox
‘Ràng buộc dữ liệu với file nguồn
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
mbDataChanged = False
End Sub
Private Sub cmdOther_Click()
Frame2.Visible = True

Frame1.Visible = False
picButtons.Visible = False
cmdPrevious.Visible = False
cmdNext.Visible = False
cmdFirst.Visible = False
cmdLast.Visible = False
lblStatus.Visible = False
LockText
End Sub

‘Chọn môn thi khác để nhập điểm

Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End Sub

23
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As
ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As
ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
‘Hiển thị số thứ tự của bản ghi hiện tại đang xem
lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)

End Sub

an

co

ng

.c

om

Private Sub cmdAdd_Click() ‘Thêm một bản ghi
UnlockText
On Error GoTo AddErr
With adoPrimaryRS
If Not (.BOF And .EOF) Then
mvBookMark = .Bookmark
End If
.AddNew
lblStatus.Caption = "Add record"
mbAddNewFlag = True
SetButtons False
End With
Exit Sub
AddErr:
MsgBox "Ban da nhap du lieu chua dung. Vui long nhap lai!", vbExclamation +
vbOKOnly, "Thong bao"
End Sub


cu

u

du

on

g

th

Private Sub cmdDelete_Click() ‘Xóa một bản ghi
On Error GoTo DeleteErr
With adoPrimaryRS
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox "Ban khong the xoa thong tin nay, vui long kiem tra lai!", vbExclamation +
vbOKCancel, "Thong bao"
End Sub
Private Sub cmdEdit_Click() ‘Sửa đổi một bản ghi
UnlockText
On Error GoTo EditErr
lblStatus.Caption = "Edit record"
mbEditFlag = True
SetButtons False

Exit Sub
EditErr:
MsgBox "Ban khong the sua doi thong tin nay!", vbExclamation + vbOKOnly,
"Thong bao"
End Sub

24
CuuDuongThanCong.com

/>

Hệ thống quản lý Thí sinh và Điểm thi

Nhóm AFC ĐT9 K47

om

Private Sub cmdCancel_Click() ‘Hủy bỏ
LockText
On Error Resume Next
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
If mvBookMark > 0 Then
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbDataChanged = False

End Sub

cu

u

du

on

g

th

an

co

ng

.c

Private Sub cmdUpdate_Click() ‘Đảm bảo tính tồn vẹn dữ liệu (xem phần VI)
Dim db As Connection
Dim MonId As Byte
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\du an
AFC243\afc.mdb;"
Set rsMon = New Recordset

Set rs = New Recordset
rsMon.Open "select Mamon from Mon where Mon = '" & str & "'", db
With rsMon
txtFields(1) = .Fields("Mamon")
MonId = .Fields("Mamon")
End With
txtFields(2) = dcbSbd.Text
rs.Open "select * from Diemthi where sophach = " & txtFields(3).Text & " and
mamon = " & MonId & " ", db
If rs.EOF = True Then
Save ' chinh thuc luu vao bo nho
LockText
Else
MsgBox "So phach cua mon thi nay da ton tai. Hay kiem tra lai!", vbOKOnly +
vbExclamation, "Thong bao"
End If
End Sub
Private Sub Save() ‘Lƣu dữ liệu
On Error GoTo UpdateErr
adoPrimaryRS.UpdateBatch adAffectAll
If mbAddNewFlag Then
adoPrimaryRS.MoveLast
'move to the new record
End If
mbEditFlag = False
mbAddNewFlag = False

25
CuuDuongThanCong.com


/>

×