Giáo trình
Hệ quản trị cơ sở dữ
liệu Visual Foxpro
Bài 1 - Mở đầu
I. Giới thiệu
Nội dung môn học
Khai thác hệ quản trị cơ sở dữ liệu Visual Foxpro
Tiếp cận với công việc xây dựng một hệ thống quản lý
Tài liệu tham khảo
[1] - Sử dụng và khai thác Microsoft Visual Foxpro 6.0 - Nguyễn Ngọc Minh, Nguyễn Đình
Đề - NXB Lao động 2003
[2] - Bộ Help MSDN của Microsoft (tiếng anh)
[3] - Phân tích và thiết kế hệ thống thông tin - Đào Thanh Tĩnh - NXB Quân đội 2004
[4] - Help của Visual Foxpro
II. Hệ quản trị csdl
Hệ quản trị cơ sở dữ liệu (Database Management System) là một hệ thống phần mềm máy tính
được thiết kế chuyên biệt cho bài toán quản lý. Mô hình dữ liệu của các hệ quản trị csdl là mô
hình quan hệ.
Hệ quản trị csdl cung cấp 2 tính năng chính sau:
1- Lưu trữ, quản lý dữ liệu
2- Công cụ truy cập, khai thác dữ liệu
Các Hệ quản trị csdl thường dùng hiện nay:
1- SQL Server: Phát triển bởi Microsoft; là hệ CSDL dùng cho các tổ chức, doanh nghiệp lớn;
Khả năng đáp ứng trên mạng cao; Đảm bảo tính an toàn, bảo mật.
2- Oracle: Phát triển bởi Oracle; là hệ CSDL dùng cho các tổ chức, doanh nghiệp lớn; Khả
năng đáp ứng trên mạng cao; Đảm bảo tính an toàn, bảo mật. (Được đánh giá là mạnh hơn
SQL verver và thực tế giá phần mền này cũng đắt hơn SQL Server)
Bài tập môn học - Xây dựng hệ quản lý điểm
A. Mô tả bài toán
Bài toán Quản lý điểm (đối với các trường Đại học, Cao đẳng): Công tác quản lý điểm (hay
kết quả học tập) của sinh viên đóng vai trò hết sức quan trọng đối với hoạt động của các trường
ĐH và CĐ. Trong khoảng 10 năm trở lại đây công tác quản lý điểm (ở một số trường trong đó
có HVKTQS) đã dần được tin học hóa nhằm đem lại hiệu quả cao hơn, tin cậy hơn.
Simpo PDF Merge and Split Unregistered Version -
Bài toán Quản lý điểm đặt ra các vấn đề cơ bản như sau: Thể hiện được mô hình tổ chức quản
lý sinh viên theo khóa, theo lớp, các loại hình đào tạo; Quản lý các môn học của các lớp theo
học kỳ và kết quả học tập của sinh viên đối với các môn học đó. Hệ thống còn phải cho phép
tạo ra các báo cáo từ kết quả học tập của sinh viên nhằm phục vụ công tác điều hành huấn
luyện như: Tổng kết kết quả học tập theo kỳ, theo năm, theo khóa; In Danh sách thi lại; In
Bảng điểm học kỳ; In Bảng điểm các nhân…
Ngoài các chức năng chính như trên, hệ thống này còn cần thêm một số chức năng khác như:
cập nhật các loại danh mục dữ liệu (danh mục lớp, danh mục loại hình đào tạo, danh mục
ngành học …); các chức năng sao chép/copy dữ liệu; chuyển đổi – tách lớp; các chức năng trợ
giúp …
Có thể mô tả sơ lược các công việc chính (đối với 1 khóa học) trong hệ thống quản lý điểm
như sau:
1. Với mỗi khóa học mới -> cần phải có mô tả cho khóa mới này.
2. Mô tả danh mục các lớp cho khóa mới.
3. Với mỗi lớp đã có cập nhật danh sách sinh viên của lớp
4. Với mỗi học kỳ cần cập nhật danh sách môn học/lớp
5. Khi có kết quả các môn học -> Cập nhật điểm môn học/lớp
6. Tổng kết kết quả học tập học kỳ, năm học, khóa học
7. In Danh sách thi lại
8. In Bảng điểm học kỳ
9. In Bảng điểm các nhân.
B. Yêu cầu
Xây dựng hệ thống Quản lý điểm phục vụ công tác quản lý điểm của các trường ĐH và CĐ với
Tên trường Kiểu Độ rộng Ghi chú
Ma C 10 Mã lớp (khoá chính)
Ten C 30 Tên lớp
NgayKG D 8 Ngày khai giảng
NgayBG D 8 Ngày bế giảng
Manganh C 10 Mã ngành (khoá ngoài – dùng để đặt liên kết đến bảng
DMNGANH)
MaLHDT C 10 Mã loại hình đào tạo (khoá ngoài – dùng để đặt liên kết
đến bảng DMLHDT)
Makhoa C 10 Ma khoá (khoá ngoài – dùng để đặt quan hệ đến bảng
DMKHOA)
Ghichu C 200 Ghi chú
3. Danh mục ngành học DMNGANH.DBF
Tên trường Kiểu Độ rộng Ghi chú
Ma C 10 Mã ngành (khoá chính)
Simpo PDF Merge and Split Unregistered Version -
Ten C 30 Tên ngành
Ghichu C 200 Ghi chú
4. Danh mục loại hình đào tạo DMLHDT.DBF
Tên trường Kiểu Độ rộng Ghi chú
Ma C 10 Mã loại hình đào tạo (khoá chính)
Ten C 30 Tên loại hình
Ghichu C 200 Ghi chú
5. Hồ sơ sinh viên HOSOSV.DBF
Tên trường Kiểu Độ rộng Ghi chú
Ma C 10 Mã sinh viên (Khoá chính)
Mã sinh viên có dạng XXXXYYYYYY, trong đó XXXX
có dạng là năm sinh viên đó trúng tuyển vào trường,
YYYYYY là số thứ tự của sinh viên nhập học năm XXXX
(Ví dụ: mã 2004000012 là mã của sinh viên thứ 12 trúng
Tên trường Kiểu Độ rộng Ghi chú
Mamon C 10 Mã môn
MaSV C 10 Mã sinh viên
Diem1 N 5,2 Điểm thi lần 1
Diem2 N 5,2 Điểm thi lần 2
Diem3 N 5,2 Điểm thi lần 3
Ghichu C 200 Ghi chú
Các chức năng của chương trình có thể thiết kế như sau:
o Cập nhật danh mục khoá
Giao diện này có dạng như sau:
A1 – Danh sách khoá (Sử dụng GRID)
Khi chọn 1 dòng (1 khoá) thông tin về khoá được chọn sẽ hiển thị trong ô A2
A2 – Chi tiết khoá được chọn
A3 Các chức năng : Thêm, sửa, xoá …(1 khoá)
o Cập nhật danh mục lớp
A1
Chọn khoá : ……… (sử dụng ô combox)
Chức năng [OK]
Khi chọn OK, danh sách các lớp của khoá
được chọn sẽ hiển thị trong ô A2
A3 – Chi tiết về lớp được chọn
A2 – Danh sách lớp của khoá được chọn (Sử
dụng GRID)
Khi chọn 1 dòng (1 lớp) thông tin chi tiết về
lớp này sẽ hiển thị trong ô A3
Các chức năng: Thêm, sửa, Xoá … (1 lớp)
o Cập nhật danh mục ngành
Tương tự cập nhật danh mục khoá
Simpo PDF Merge and Split Unregistered Version -
A2 – Danh sách môn học của lớp/khoá/học kỳ-
năm học đã chọn (sử dụng GRID)
Khi chọn 1 dòng (1 môn học) thì thông tin chi
tiết về môn học này sẽ hiển thị trong ô A3
Các chức năng: Thêm, Sửa, Xoá … (1 môn
học)
o Cập nhật điểm thi kết thúc môn
Giao diện này có dạng như sau:
A1
Chọn khoá: …. (sử dụng ô Combox)
Chọn lớp: …. (Sử dụng ô Combox)
Simpo PDF Merge and Split Unregistered Version -
Chọn học kỳ: …. Năm học: ………
Chọn môn học: ………….(sử dụng ô Combox)
Thi lần: ……… (1 – thi lần đầu, 2 thi lại lần 1, 3 – thi lại lần 2)
Chức năng [OK]
Khi chọn [OK] danh sách “lớp-môn học” đã chọn sẽ hiển thị trong ô A2
A2 – Danh sách “lớp-môn học” đã chọn (Sử dụng GRID)
(nếu là thi lần 1 – cho phép nhập vào cột điểm 1, lần 2 cho phép nhập vào cột điểm 2, lần 3 cho
phép nhập vào cột điểm 3)
Lưu ý: Danh sách “lớp-môn học” do chương trình tự động sinh ra, cần lưu ý khi thiết kế để tránh
sinh ra nhiều lần.
o In danh sách lớp
Giao diện này có dạng như sau:
A1
Chọn khoá: …. (sử dụng ô Combox)
Chọn lớp: …. (Sử dụng ô Combox)
Chức năng: Xem, In, Thoát
(chức năng Xem cho phép xem report “danh sách lớp” trên màn hình
chức năng In cho phép đưa report “danh sách lớp” ra máy in)
o In phiếu điểm
Giao diện này có dạng như sau:
A1
Chọn khoá: …. (sử dụng ô Combox)
Chọn lớp: …. (Sử dụng ô Combox)
Chọn học kỳ: …. Năm học: ………
Chọn môn học: ………….(sử dụng ô Combox)
Thi lần: ……… (1 – thi lần đầu, 2 thi lại lần 1, 3 – thi lại lần 2)
Chức năng: Xem, In, Thoát
(chức năng Xem cho phép xem report “phiếu điểm” trên màn hình
chức năng In cho phép đưa report “phiếu điểm” ra máy in)
Report “phiếu điểm” có dạng như sau:
Học viện KTQS
Phòng Đào tạo
Phiếu điểm
Lớp: ………………… , khoá:……………………
Simpo PDF Merge and Split Unregistered Version -
Môn học: …………………….Học kỳ: năm học:………
Giáo viên: …………………… , ngày thi:………………
STT Mã SV Họ tên Ngày sinh Đề số Điểm Ghi chú
… … … … … … …
Giáo viên chấm thi (Ký và ghi rõ họ tên)o In tổng kết kết quả học kỳ
Giao diện này có dạng như sau:
A1
Chọn khoá: …. (sử dụng ô Combox)
Phòng Đào tạo
Tổng kết kết quả năm học
Năm học:………
Lớp: ………………… , khoá:……………………
STT Mã SV Họ tên Ngày sinh Điểm TBC Xếp loại Ghi chú
… … … … … … …
Xếp loại theo điểm trung bình chung được tính như sau:
Điểm TBC>=9 -> Xuất sắc; Điểm TBC>=8 -> Giỏi; Điểm TBC>=7 -> Khá; Điểm TBC>=6 ->
Trung bình khá; Điểm TBC>=5 -> Trung bình; Điểm TBC<9 -> Không đạt
o In tổng kết kết quả toàn khoá
Giao diện này có dạng như sau:
A1
Chọn khoá: …. (sử dụng ô Combox)
Chọn lớp: …. (Sử dụng ô Combox)
Chức năng: Xem, In, Thoát
(chức năng Xem cho phép xem report “Tổng kết khoá học” trên màn hình
chức năng In cho phép đưa report “Tổng kết khoá học” ra máy in)
Report “Tổng kết năm học” có dạng như sau:
Học viện KTQS
Phòng Đào tạo
Tổng kết kết quả khoá học
Lớp: ………………… , khoá:……………………
STT Mã SV Họ tên Ngày sinh Điểm TBC Xếp loại Ghi chú
… … … … … … …
Xếp loại theo điểm trung bình chung được tính như sau:
Simpo PDF Merge and Split Unregistered Version -
Điểm TBC>=9 -> Xuất sắc; Điểm TBC>=8 -> Giỏi; Điểm TBC>=7 -> Khá; Điểm TBC>=6 ->
Trung bình khá; Điểm TBC>=5 -> Trung bình; Điểm TBC<9 -> Không đạt
Bảng điểm cá nhân
Simpo PDF Merge and Split Unregistered Version -
Họ tên: ……………………… , Ngày sinh
Loại hình đào tạo: ……………………, Ngành:…………………., Khoá học: ………
STT Mã môn Tên
môn
Số
ĐVHT
Điểm 1
Điểm 2
Điểm 3
Ghi chú
Điểm trung bình chung toàn khoá: ………….
Xếp loại: ………………………. Simpo PDF Merge and Split Unregistered Version -
Bài 2 - Tổng quan về visual foxpro
I. Cài đặt visual foxpro
Công cụ Visual Foxpro 6.0 là một thành phần trong bộ Visual Studio của Microsoft. Do đó cần
cài đặt bộ Visual Studio và lựa chọn thành phần Visual Foxpro.
[Start menu -> Visual Foxpro một thành phần của bộ Visual Studio]
Bộ Visual Foxpro 7.0 (8.0, 9.0) được phát triển độc lập do đó có thể cài đặt riêng.
Việc cài đặt các công cụ này tương đối đơn giản và giống với các phần mềm khác. Do đó việc
cài đặt công cụ này các bạn tự tham khảo.
II. Một số thành phần trong giao diện của Visual foxpro
+ Other: Menu, Text file, Other file
III. Những nét đặc trung cơ bản
1. Công cụ quản lý ứng dụng - Project manager đem lại một cách nhìn tổng quan, hiệu quả
trong việc phát triển một ứng dụng nào đó.
2. Công cụ trực quan cho phép thiết kế giao diện được nhanh chóng, đẹp.
Simpo PDF Merge and Split Unregistered Version -
3. Công cụ Report Designer tiện dụng, cho phép tạo ra nhiều report đa dạng.
4. Công cụ tool tip trong Visual Foxpro 7.0 trợ giúp nhanh và hữu hiệu với việc lập trình.
Bài tập
1. Cài đặt Visual Foxpro 6.0 hoặc 7.0
2. Tạo thư mục QLDIEM trên ổ đĩa C:
3. Tạo shortcut trên Destop đến chương trình Visual Foxpro và đặt lại thuộc tính [Start in] vào
thư mục C:\QLDIEM (như hình vẽ).
4. Tạo Project QLDIEM trống (Project sẽ được lưu trong thư mục C:\QLDIEM). Simpo PDF Merge and Split Unregistered Version -
Bài 3 - Các thành phần cơ bản của ngôn ngữ
I. từ khóa, kí hiệu, LệnH
Từ khóa (Key Word): Là các từ mà Visual Foxpro đã sử dụng cho một mục đích nào đó. Và
người dùng không được phép đặt tên trùng với từ khóa. Tham khảo tài liệu về tất cả các khóa
của Visual Foxpro. Trong Foxpro từ khoá có thể không cần viết đầy đủ mà chỉ cần viêt 4 ký tự
đầu của từ khoá đó, ví dụ từ khoá CREATE có thể chỉ cần viết Crea (Visual Foxpro không
phân biệt chữ hoa, chữ thường).
Kí hiệu comment: Đối với phần cuối 1 dòng dùng kí tự &&
Với cả dòng dùng ký tự * hoặc &&
Lệnh của Visual Foxpro
Trong Visual Foxpro có hia loại câu lệnh: 1. Các câu lệnh có thể thực hiện trực tiếp từ cửa sổ
lệnh (Command Windows) - gọi là Lệnh trực tiếp , 2. Các lệnh chỉ thực hiện trong chương
Ngày + Số = Ngày
Số + Ngày = Ngày
Ngày - Số = Ngày
Ngày - Ngày = Số
Tương tự cho ngày giờ
3. Currency
Kiểu tiền tệ (thực chất là kiểu số và thêm kí tự tiền $ hoặc ký tự bất kỳ khác) vào số đó. Kiểu này
thường ít được sử dụng.
4. Logic
Kiểu logíc, tập giá trị là Đúng hoặc Sai
Hằng Logic: .T. ->TRUE đúng (hoặc .t.); .F. ->FALSE sai (hoặc .f.)
Các phép toán: NOT, AND, OR.
5. Numeric
Kiểu số, dùng tối đa 20 byte.
Hằng số: 10, 20, 15.7
Các phép toán: +, - , *, /, ^ (mũ), % (chia lấy phần dư)
6. Memo
Simpo PDF Merge and Split Unregistered Version -
Kiểu kí ức, dùng 4 byte để ánh xạ đến 1 file khác có phần mở rộng là fpt. Kiểu này cho phép lưu 1
văn bản rất dài.
7. General
Kiểu kí ức, dùng 4 byte để ánh xạ đến 1 file khác có phần mở rộng là fpt. Kiểu này cho phép lưu 1
đối tượng bất kỳ như file văn bản, file word, file excel, file ảnh và thường được sử dụng để lưu trữ
file ảnh.
III. Biến
Có 3 loại biến: Biến do người sử dụng tự định nghĩa: Biến là trường của bảng đang mở; hoặc Biến
hệ thống (do Visual Foxpro tạo ra).
Đối với các biến do người sử dụng định nghĩa:
Là đối tượng lưu trữ dữ liệu trong bộ nhớ, được xác định qua tên biến, kiểu và phạm vi tác
động của biến
Là đối tượng dữ liệu mà giá trị của nó chỉ xác định 1 lần khi khai báo và không thay đổi được.
Hằng cũng được xác định qua tên, kiểu và phạn vi tác động của nó.
Khai báo hằng: Visual Foxpro dùng từ khoá #DEFINE <Tênhằng> <Giá trị> để khai báo hằng.
Kiểu của hằng phụ thuộc vào kiểu của biểu thức <Giá trị>
Phạn vi tác động của hằng được xác định tương tự với Biến.
V. biểu thức
Biểu thức được tạo nên từ các biến, hằng, hàm và các toán tử (phép toán) theo một qui tắc nào
đó (các toán tử và toán hạng phảI phù hợp nhau).
Thứ tự ưu tiên của các phép toán trong 1 biểu thức
1. Các phép số học: Dấu âm, dương
Luỹ thừa
Nhân, chía
Phần dư
Cộng, trừ
2. Các phép chuỗi: +, -
3. Các phép quan hệ: =,<,>,>=,<=,<>
4. Các phép logic: NOT, AND, OR
Sử dụng cập dấu () trong biểu thức để tránh sai sót về thứ tự ưu tiên các phép toán.
Simpo PDF Merge and Split Unregistered Version -
VI. Hàm
Trong Visual Foxpro có hai loại hàm: Hàm do Visual Foxpro cung cấp và hàm do người sử dụng
tự tạo ra. Hàm bao giờ cũng trả về một giá trị nào đó. Trong phần này sẽ giới thiệu một số hàm do
Visual Foxpro cung cấp.
Hàm xâu kí tự
1. ALLTRIM(st), LTRIM(st), RTRIM(st)
2. LEFT(st,n), RIGHT(st,2), SUBSTRING(st,p,n)
3. AT(st1,st2,n), RAT(st1,st2,n)
4. LOWER(st), UPPER(st)
5. ASC(ch), CHR(n)
6. DTOC(d)
Simpo PDF Merge and Split Unregistered Version -
Bài 4 - thiết kế database và tables
I. Giới thiệu
Bảng dữ liệu (gọi tắt là bảng) là nơi lưu trữ dữ liệu và nó đóng một vai trò quan trọng trong các
bài toán quản lý. Xuất phát từ việc phân tích yêu cầu, các mẫu biểu của bài toán để từ đó đưa ra
cấu trúc các bảng sao cho phù hợp, đáp ứng các yêu cầu đặt ra là một công việc khá phức tạp,
đòi hỏi phảI có kiến thức và kinh nghiệm trong lĩnh vực cụ thể đó.
Có thể tham khảo một số vấn đề giúp các bạn rõ hơn trong việc phân tích, thiết kế dữ liệu trong
tài liệu [1] từ trang 131 đến 142, hoặc tham khảo tài liệu [3].
II. Tạo Database
1. Tạo mới Database
Câch 1: Sử dụng câu lệnh
Bằng cách này chúng ta có thể tạo ta một Database, tuy nhiên database này là một Database độc
lập (không liên quan đến Project nào)
Câu lệnh:
CREATE DATABASE <TenDatabase>
Kết thúc lệnh này Visual Foxpro sẽ tạo ra file Database có tên là TenDatabase (phần mở
rộng là DBC)
Về sau có thể thêm Database này vào trong 1 Project nào đó.
Cách 2: Sử dụng Project Manager
Bằng cách này thì Database được tạo ra sẽ là một thành phần của Project
1. Mở Project QLDIEM
2. Trong Tab Data, chọn mục Database rồi chọn New, khi đó giao diện New database xuất hiện
như hình 1.
Hình 1 - Hộp thoại New database
Simpo PDF Merge and Split Unregistered Version -