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 (948.03 KB, 31 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>KHOA ĐIỆN TỬ VIỄN THÔNG</b>
<i><b>BÁO CÁO BÀI TẬP LỚNMÔN CƠ SỞ DỮ LIỆU</b></i>
<b>: AFC ĐT9 Nguyễn TrungĐặng Hữu TùngNguyễn Đình TuấnVũ Ngọc HàNguyễn Công ChiếnKhuất Bá Đông</b>
<b>Hà nội, </b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Yêu cầu của hệ thống quản lý thí sinh và điểm thiPhần I Nhận diện thực thể của hệ thống
hần II: Các giả thiết về phụ thuộc hàmPhần III: Chuần hóa
Nhận diện các khóa chính và khóa ứng củ của các bảngChuẩn hóa 3NF
Chuẩn hóa BCNFPhần IV: Sơ đồ thực thể liên kết
Từ điển dữ liệu của hệ thống đã được chuẩn hóaPhần V: Lược đồ khái niệm của hệ thống đã được chuẩn hóaPhần VI: Thiết kế chương trình
Phần VII: Các thủ tục đảm bảo nguyên tắc tồn vẹn dữ liệuPhần VIII: Chương trình nguồn
orm Nhập thơng tin về Thí sinhForm nhập Điểm thi
Form cập nhật Tỉnh/Thành phốForm nhập mơn thi cho từng khốiForm tìm kiếm thí sinh
Form tìm kiếm điểm thi của thí sinhPhần IX: Các bảng dữ liệu mẫu
Thống kê điểm trung bình của thí sinh theo vùngThống kê thí sinh đỗ của từng Tỉnh/Thành phốPhần X: Hướng dẫn sử dụng chương trình
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">I. Thông tin cần lưu trữThông tin về thí sinh:
Số báo danh của thí sinhHọ và tên của thí sinhNgày tháng năm sinhGiớ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à)
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
Nhập dữ liệuSửa dữ liệu
Tìm kiếm thí sinh theo:Số báo danhNgày tháng năm sinhTìm kiếm điểm thí sinh theo:
Số báo danhSố phách
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
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
Họ và tên thí sinhNgày tháng năm sinhGiớ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
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 danhHọ và tên thí sNgày tháng năm sinhGiớ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ỉnhTỷ lệ thí sinh thi đỗ của tất cả các thành phố/tỉnh
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><i><b>Để tiện cho việc sắp xếp thí sinh ta ách thuộc tính Họ và tên thí sinh</b></i>
<i><b>Họ đệm thí sinh</b></i>
<i><b>Để tiện cho việc quản lý thí sinh, ta đưa thêm thc tính Đối tượng</b></i>
<i><b>Mã đối tượng Khối thiMã Khối thi</b></i>
<i><b>Để dễ dàng xác định thí sinh đỗ hay trượt ta thêm thuộc tính Điểm </b></i>
<i><b>chuẩ của mỗi khối</b></i>
Tách thuộc tính Địa chỉ thành các thuộc tính nhỏ hơnVậy thực thể THÍ SINH bao gồm các thuộc tính sau:
Số báo danhHọ đệmNgày tháng năGiới tínhThành phố/tỉnhQuận/huyệnPhường/xãTên phố/xómSố nhàKhốMã khốiĐối tượngMã đối tượngĐiểm chuẩn
<b>II. Thực thể ĐIỂM THI</b>
Để 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:
Số báo danh
Số phách (của một môn thi)
Điểm thi (của một môn thi)
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">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ỉ 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
Mỗi đối tượng được xác định duy nhất bởi một Mã đối tượng nên Đối tượng phụ thuộc hàm vào Mã Đối tượng
Giả thiết mỗi Khối thi chỉ có một điểm chuẩn, mà ỗi khối thi được xác định duy nhất bởi Mã khối nên Khối thi và Điểm chuẩn phụ thuộc hàm vào Mã khối
Giả thiết mỗi thí sinh chỉ thuộc duy nhất một loại đối tượng mà Số báo danh xác định duy nhất một thí sinh nên Đối tượng và Mã đối tượng phụ thuộc hàm vào Số báo danh
Giả thiết với mỗi số báo danh chỉ dùng cho thí sinh thi trong một khối nên khối thi và mã khối thi phụ thuộc hàm vào Số báo danh
Giả thiết mã vùng xác định duy nhất một thành phố, mỗi thành phố cũng chỉ có duy nhất một mã
Mỗi môn thi được xác định duy nhất bởi Mã môn thi nên Môn thi phụ thuộc hàm vào Mã môn
Giả thiết mỗi bài thi của một môn được đánh số phách ngẫu nhiên và do đó có thể trùng nhau. Vì 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 đó
Một thí sinh thi nhiều mơn thi khác nhau nên điểm mỗi mơn của thí sinh được xác định nhờ Số 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
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Từ các thực thể và phụ thuộc hàm đã xác định ở trên ta có các quan hệ
<b>ĐIỂM THI(*Sbd, *Mon</b>
Bảng ĐIỂM THI có phụ thuộc hàm:
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:
<b>ĐIỂM THI</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Bảng Khối thi có phụ thuộc hàm bắc cầu
Ta tách bảng này thanh 2 bảng sau:
<b>KHỐI THI(*MaKhoi</b>
<b>ĐIỂM CHUẨN</b>
Bàng ĐIỂM THI có phụ thuộc hàm bắc cầu:
Ta tách bảng ĐIỂM THI thành 2 bảng sau:
<b>SỐ PHÁCH(*Sbd</b>
<b>ĐIỂM THI</b>
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
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>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.</b>
<b>Từ điển dữ liệu của hệ thống đã chuẩn hóa</b>
Thơng tin về thí sinhĐiểm thi Đ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
Khối thi Danh sách khối thi và mã khối–
Khối thi <sup>Danh sách các môn thi tương ứng với các </sup>khối thiĐối tượng Danh sách các đối tượng tương ứng với mã
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">2.2. Danh sách các thuộc tính của từng bảng2.2.1. Bảng THÍ SINH
Mã khốiMã đối tƣợng
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Khoảng giá
trị Giá trị mẫuTỉnh/thành phố Hà Nội
<b>2.2.9. Bảng ĐỐI TƯỢNG</b>
Tên viế
tắt Tên đầy đủ
Kiểu dữ liệu
Khoảng giá
trị Giá trị mẫuMã đối tượng
Đối tượng Con thương binhTên viết tắt Tên đầy đủ Kiểu dữ liệu
Khoảng
giá trị Giá trị mẫuMã khối
Điểm chuẩn
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Hệ thống Menu chính của chương trình
2. Chức năng của các mục chọn
Menu chính (frmMain) xuất hiện sau màn hình giới thiệu ban đầu (Main)
<i><b>Thơng tin về Thí sinh: frmThisinh cho phép xem, nhập và sửa, xóa các thơng </b></i>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><i><b>Danh sách Tỉnh/Thành phố</b></i> phép xem, nhập, sửa, xóa các tỉnh/ thành phố
<i><b>Tương tự với các lựa chọn Danh sách Khối thi</b></i>
<i><b>Danh sách Môn thi của các Khối</b></i>
<i><b>Sắp xếp theo họ tên:Sắp xếp theo Tổng điểm</b></i>
<i><b>Tỷ lệ thí sinh đỗ của các Tỉnh/Thành phốThống kê điểm trung bình theo vung</b></i>
<i><b>Tìm kiếm thí sinh: frmTimTs cho phép tìm kiếm thí sinh theo SBD, Tên, Ngày </b></i>
tháng năm sinh và hiển thị tất cả thông tin về thí sinh tìm được
<i><b>Tìm kiếm Điểm thi của th</b></i> : 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,…
<i><b>Hướng dẫn: frmTip Hướng dẫn cách sử dụng chương trình, file nguồn là </b></i>
TIPOFDAY.txt nằm trong cùng thư mục cài đặt chương trình
<i><b>Tác giả</b></i> t Giới thiệu về nhóm AFC và lời cảm ơn.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Để đả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 của các khóa chính là hờ đó, 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.
<b>Quy tắc tồn vẹn quy chiếu</b>
Các bảng sau có quan hệ 1 –
Để đảm bào tính tồn vẹn quy chiếu, dữ liệu khóa chinh ở bảng 1 ln 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 nguyên tắc toàn vẹn dữ liệu:
Lấy mã tương ứng của các dữ liệu được chọn ở các DataCombo từ bảng 1 để lưu vào bảng n. 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
Bảng 1 Bảng n
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">‘Thiết đặt giao diện khi form mới được load
‘Khóa các text box và Dat
‘Mở các textbox và DataCombo
<i><b>3. Form nhập dữ liệu Tỉnh/Thành phố frmMavung</b></i>
Form này cùng với form frmDoituong, frmMon, frmKhoi, frmMonKhoiList đều sử dụng ADO Code ở giao diện Grid nên hoàn toàn tương tự nhau.
Chức năng của các form:
frmDoituong: cập nhật danh mục Đối tượngfrmMon: Cập nhật danh mục Môn thfrmKhối: Cập nhật danh mục Khối thi
frmMonKhoiList: Xem danh sách các môn thi tương ứng với Khối
frmMavung: Cập nhật danh mục Tỉnh/Thành phốSau đây là mã nguồn của frmMavung
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">‘Hiển thị số thứ tự của bản ghi hiện tại
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><i><b>4. Form Nhập Môn thi cho từng khối frnMon_Khoi</b></i>
Sử dụng ADO Code dưới hình thức Single Record
Private Sub Commit() ‘Đảm bảo tính tồn vẹn dữ liệu (xem phần VI)
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">Private Sub Command1_Click() ‘Hiện thị danh sách các môn thi thuộc các khối
‘Thực hiện lệnh khi một số phím quen thuộc đƣợc nhấn
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">‘Hiển thị số thứ tự của bản ghi hiện tại
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25"><i><b>5. Form Tìm kiếm Thí sinh frmTimTs</b></i>
Private Sub cmdTim_Click() ‘Thủ tục đƣợc gọi khi Click nút Tìm
Private Sub TimKiem() ‘Tìm kiếm thí sinh theo SBD, Tên, Ngày sinh
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">Private Sub DisplayListviewKq() ‘Hiển thị kết quả tìm đƣợc
If optSbd.Value Then ‘Tìm kiếm theo Số báo danh
If OptTen.Value Then ‘Tìm kiếm theo Tên
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">If OptNs.Value Then ‘Tìm kiếm theo Ngày sinh
Private Sub Init() ‘Khởi tạo ban đầu
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">Private Sub txtTim_KeyPress(KeyAscii As Integer) ‘Thủ tục sau khi ấn phím Enter ‘ sau khi nhập từ khóa tìm kiếm
<i><b>6. Form Tìm kiếm Điểm thi của thí sinh</b></i>
Private Sub TimKiem() ‘Thực hiện tìm kiếm theo Số báo danh và số phách
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Sub DisplayListviewKq() ‘Hiển thị kết quả tìm đƣợc
If optSbd.Value Then ‘Tìm theo Số báo danh
‘Lấy điểm từ CSDL đƣa vào thông tin của đối tƣợng tìm đƣợc
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">If OptSp.Value Then ‘Tìm theo số phách
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">Private Sub Init() ‘Khởi tạo
txtTim_KeyPress(KeyAscii As Integer) ‘Thủ tục khi nhấn Enter ngay ‘ nhập từ khóa tìm kiếm
<i><b>7. Các form frmhelp và frmTip sử dụng các form Visual Basic 6.0 đã xây dựng sẵn</b></i>
</div>