Bai tap Visual Foxpro co loi giai
25/01/2010 14:37 | 15,044 lượt xem
Phần Microsoft VisualFox
Chương 1
1.1. Kiểu dữ liệu ( Data Type)
a. Kiểu Character
b. Kiểu Numeric
c. Kiểu Float
d. Kiểu Date và Datetime
e. Kiểu Currency
f. Kiểu Memo
g. Kiểu Logical
h. Kiểu General
1.2. Hằng (Constant)
a. Hằng ký tự (Hằng chuỗi): Được đặt trong cặp dấu '..', "....", [...]
b. Hằng kiểu ngày: Đặt trong {.........}
c. Hằng kiểu số
d. Hằng logic
1.3. Biến ( Variable)
a. Biến nhớ
b. Biến trường
c. Biến hệ thống
1.4. Hàm (Function)
Hàm do người định nghĩa phải theo cú pháp sau:
FUNCTION <Tên hàm>
<Các lệnh>
RETURN <Giá trị>
1.5. Biểu thức (Expression)
Biểu thức được tạo bới các biến, hằng, hàm và một số phép toán. Kết quả của biểu thức thuộc về các kiểu dữ liệu Character, Numeric, Date, Datetime, Logical.
2. CÁC PHÉP TOÁN
2.1. Phép gán: Ký hiệu =
2.2. Phép toán chuỗi ký tự
a. Phép +
b. Phép -
c. Phép $
2.3. Phép toán trên kiểu ngày
Phép toán |
Kết quả |
|
<Ngày> + Số |
<Ngày> |
|
Số + <Ngày> |
<Ngày> |
|
<Ngày> - Số |
<Ngày> |
|
<Ngày> - <Ngày> |
Số |
|
<Ngày giờ> + Số |
<Ngày giờ> |
|
Số + <Ngày giờ> |
<Ngày giờ> |
|
<Ngày giờ> - Số |
<Ngày giờ> |
|
<Ngày giờ> - <Ngày giờ> |
Số |
2.4. Phép toán quan hệ: =, <, >, >=, <=, != ( <>)
2.5. Phép toán logic: NOT ( hoặc !), AND, OR
2.6. Phép toán số học: +, -, *, /, ** ( Hoặc ^), % (Chia lấy phần dư)
2.7. Thứ tự ưu tiên của các phép toán
Thứ tự ưu tiên của phép toán trên cùng một hàng thì cùng mức ưu tiên, nếu các phép toán cùng mức ưu tiên thì tính từ trái sang phải.
a. Các phép tính số học: Dấu âm, dương
Luỹ thừa
Nhân, chia
Phần dư
Cộng, trừ
b. Các phép toán cộng chuỗi: +, -
c. Các phép toán quan hệ: =, <, >, >=, <=
d. Các phép tính logic: NOT, OR, AND
3. LỆNH VÀ CẤU TẠO LỆNH
3.1. Lệnh
Lệnh là một chỉ thị của người sử dụng yêu cầu VisualFox làm một việc gì đó. Lệnh có thể đưa vào từ cửa sổ lệnh hoặc menu hệ thống
3.2. Cấu tạo lệnh
<Lệnh> [phạm vi] [FIELDS <dsách trường>] [FOR <bthức logic1>] [WHILE <biểu thức logic2>] [FROM <tên file> / ARRAY <tên mảng>] [TO print/tên file/dsách biến]
4. MỘT SỐ LỆNH CƠ BẢN
a. Định vị tuyệt đối
b. Định vị tương đối
Cú pháp: Skip [+|-] [<n>]
Cú pháp: Display [<phạm vi>] [fields<danh sách trường>] [For<bthức logic>] [While<bthức logic>] [on|off ]
Cú pháp: List [<phạm vi>] [fields<danh sách trường>] [For<bthức logic>] [While<bthức logic>] [on|off]
Cú pháp: ?|?? <danh sách biểu thức>
Cú pháp: INSERT [BEFORE][BLANK]
b. Bổ sung bản ghi
Cú pháp: APPEND [BLANK]
4.4. Sửa chữa nội dung bản ghi
a. Lệnh BROWSE
c. Lệnh REPLACE
4.5. Xoá và khôi phục bản ghi
a. Đánh dấu xoá
b. Xoá
5. SẮP XẾP, TÌM KIẾM VÀ THỐNG KÊ
a. Lập chỉ mục IDX cho bảng dữ liệu
Cú pháp:
b. Một số lệnh liên quan
Set index to <file chỉ mục>: Dùng để mở file chỉ mục sau khi đã mở một bảng dữ liệu.
Set index to: Dùng để đóng file chỉ mục.
Reindex: Dùng để cập nhật lại file chỉ mục sau khi có sự sửa đổi trên bảng dữ liệu.
a. Tìm kiếm tuần tự
Cú pháp: Locate [<phạm vi>] for<bthức logic> [While<bthức logic>]
b. Lệnh continue
Cú pháp : CONTINUE
c. Tìm kiếm sau khi đã lập chỉ mục
Cú pháp : SEEK <biểu thức>
5.3. Thống kế
a. Đếm số lượng bản ghi
Cú pháp:COUNT [<phạm vi>][for<Bthức Logic>] [while<Bthức Logic>] [TO<biến nhớ>]
b. Tính tổng giá trị các trường kiểu số
Cú pháp: SUM [<phạm vi>] [<dsách bt>] [to <ds biến>][for <Bthức logic>] [While <Bthức logic>]
c. Tính trung bình cộng các trường kiểu số
Cú pháp: AVERAGE [<phạm vi>] [<ds biểu thức>] [to <ds biến >] [for <bt logic>] [while <Bthức logic>]
d. Tính tổng các trường số theo nhóm
[field <dstrường>][for <Bthức Logic>][while < Bthức Logic>]
Để quản lý thông tin của nhân viên người ta sử dụng một tập tin dự án QLNV.PJX chứa tập tin cơ sở dữ liệu QLNV.DBC, tập tin này chứa bảng HOSONV.DBF có cấu trúc như sau:
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MANV
|
C |
5 |
Mã nhân viên |
Khoá chính |
MADV
|
C |
2 |
Mã đơn vị |
|
|
HOLOT |
C |
20 |
Họ đệm |
|
|
TEN |
C |
10 |
Tên |
|
|
NGAYSINH |
D |
8 |
Ngày sinh |
|
|
DIACHI |
C |
30 |
Địa chỉ |
|
|
GIOITINH |
L |
1 |
Giới tính |
|
a. Dùng lệnh SORT để sắp xếp lại bảng dữ liệu HOSONV.DBF sang một bảng dữ liệu mới HOSONVSX.DBF theo chỉ tiêu: Các bản ghi được sắp xếp theo mã đơn vị (giảm dần), trong mỗi đơn vị thứ tự tên, họ được sắp xếp tăng dần.
b. Mở tập tin HOSONVSX.DBF
Sử dụng lệnh BROW liệt kê các trường MADV, HOLOT, TEN, NGAYSINH, MLUONG .
c. Lập 3 tập tin chỉ mục: CMASO.IDX theo trường MANV, CDONVI.IDX theo trường MADV, CLUONG.IDX theo trường LUONG giảm dần.
Bằng cách thay thế tập tin chỉ mục chủ, hãy liệt kê các bản ghi theo MANV tăng dần, theo MADV tăng dần, theo LUONG giảm dần.
d. Dùng lệnh LOCATE:
Tìm người có họ tên là ‘NGUYEN MINH HUONG’. Dùng lệnh DISPLAY cho hiện nội dung của bản ghi này, rồi dùng lệnh EDIT để sửa lại.
Tìm những người ở phòng Tổ chức (MADV=’TC’), cho hiện đầy đủ thông tin của những người này.
Tìm những người có LUONG > 100000.
e. Dùng lệnh SEEK để tìm kiếm người có MANV=’0001A’ rồi hiển thị nội dung của bản ghi này.
f. Cho biết địa chỉ của người có tên là ‘THUY’, sinh ngày 11/11/80 .
Chọn File/New/Project/Newfile
Trong mục Enter Project: QLNV
Trong mục Enter Database : QLNV
Chọn Database/New table/New Table
Trong mục Enter Table : HOSONV
|
|
Trong mục Name : Chọn tên trường, chọn Indexes, chọn Primary đối với trường MANV.
Type : Chọn kiểu dữ liệu
Width : Chọn độ rộng
Decimal : Số chữ số thập phân
Index : Thiết lập chỉ mục:
Null: Cho phép giá trị của trường là Null hoặc không
Trong mục Display : Chọn hình thức hiển thị của dữ liệu
Trong mục Field Validation: Chọn ràng buộc dữ liệu và đặt giá trị mặc định.
Sau khi tạo cấu trúc bảng xong, nhập 10 bản ghi cho bảng dữ liệu HOSONV.
|
MANV |
MADV |
HOLOT |
TEN |
NGAYSINH |
DIACHI |
GIOITINH |
|
0001A 0001B K0003 K0001 C0002 C0003 C0004 T0005 T0006 T0007 |
TC HC TC HC KT TC HC KT TC HC |
Cao Van Nguyen Thi Dau Van Le Te Thi Le Van Cao Do Duc Lo Thi Ly Van |
Huong Ly Tung Cung Quen Ty Cuoi Lan Huong Hy |
11-04-1975 12-05-1965 04-12-1978 06-06-1979 18-10-1977 09-04-1969 01-10-1965 15-02-1968 08-01-1967 02-06-1965 |
Quang Binh TP.HCM TP.HCM Qtri |
.T. .F. .T. .T. .T. .F. .T. .F. .T. .F. |
Trở về cửa sổ lệnh (Command) rồi lần lượt thực hiện các lệnh sau
USE HOSONV
a. SORT TO HOSONVSX ON MADV/D, TEN/A, HOLOT/A
b. USE HOSONVSX
BROW Fiel MADV, HOLOT, TEN, NGAYSINH, MLUONG .
c. USE HOSONV
INDE ON MANV TO CMASO
INDE ON MADV TO CDONVI
INDE ON -LUONG TO CLUONG
SET INDE TO CMASO
BROW
SET INDE TO CDONVI
BROW
SET INDE TO CLUONG
BROW
d. LOCA FOR ALLT(HOLOT)+' '+ALLT(TEN)='NGUYEN MINH HUONG'
DISP
EDIT
LOCA FOR MADV='TC'
DISP
LOCA FOR LUONG>1000000
e. INDE ON MANV TO SXMANV
SEEK '0001A'
DISP
f. BROW FIEL DIACHI FOR TEN='THUY' AND NGAYSINH={11/11/80}
Để quản lý điểm của sinh viên bộ phận giáo vụ sử dụng một tập tin dự án QLDIEMSV.PJX chứa tập tin cơ sở dữ liệu QLDIEM.DBC, tập tin này chứa bảng DIEMSV.DBF có cấu trúc như sau:
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MASV
|
C |
5 |
Mã sinh viên |
Khoá chính |
HOLOT
|
C |
20 |
Họ lót |
|
TEN
|
C |
10 |
Tên |
|
NGAYSINH
|
D |
8 |
Ngày sinh |
|
QUEQUAN
|
C |
30 |
Quê quán |
|
VFOX
|
N |
2 |
Điểm VFOX |
|
ACCESS
|
N |
2 |
Điểm ACCESS |
|
PASCAL
|
N |
2 |
Điểm Pascal |
|
DTB
|
N |
4,2 |
Điểm TB |
|
XEPLOAI
|
C |
20 |
Xếp loại |
|
Nhập vào 10 bản ghi cho các trường: MASV, HOLOT, TEN, NGAYSINH, QUEQUAN, VFOX, ACCESS, PASCAL như sau:
|
MASV |
HOLOT |
TEN |
NGAYSINH |
QUEQUAN |
VFOX |
ACCESS |
PASCAL |
|
K0001 K0002 K0003 T0001 T0002 T0003 T0004 T0005 T0006 T0007 |
Cao Van Nguyen Thi Dau Van Le Te Thi Le Van Cao Do Duc Lo Thi Ly Van |
Huong Ly Tung Cung Quen Ty Cuoi Lan Huong Hy |
11-04-1975 12-05-1965 04-12-1978 06-06-1979 18-10-1977 09-04-1969 01-10-1965 15-02-1968 08-01-1967 02-06-1965 |
Quang Binh TP.HCM TP.HCM Qtri |
6 7 7 7 8 7 9 7 8 8 |
9 6 4 7 4 6 9 6 4 5 |
7 8 7 9 7 9 10 9 4 2 |
a. Tính (điểm trung bình), biết rằng VFOX có hệ số hai, ACCESS có hệ số 1, PASCAL có hệ số 3. Xếp loại, biết rằng:
DTB>=9 : Xếp loại ‘GIOI’
7<=DTB<9 : Xếp loại ‘KHA’
5<=DTB<7 : Xếp loại ‘TB’
DTB<5 : Xếp loại ‘YEU’
b. Sắp xếp giảm dần theo DTB và ghi vào bảng dữ liệu SXDTB.DBF. Mở bảng dữ liệu SXDTB.DBF rồi dùng lệnh BROWSE để xem kết quả
c. Đổi dữ liệu của trường QUEQUAN thành chữ hoa.
d. Tính trung bình cộng của các môn học cho toàn bộ các bản ghi, cho từng nhóm có MASV bắt đầu bằng 'K', 'T'.
e. Cho biết số sinh viên có ít nhất hai môn có điểm >=8.
f. Từ bảng dữ liệu DIEMSV.DBF hãy tạo ra một bảng dữ liệu DIEMGIOI.DBF để lưu thông tin của những sinh viên Xếp loại giỏi.
g. Loại bỏ những sinh viên xếp loại yếu ra khỏi bảng dữ liệu DIEMSV.DBF.
Hướng dẫn giải
USE DIEMSV
a. REPL ALL DTB WITH (VFOX*2+ACCESS+PASCAL*3)/6
REPL ALL XEPLOAI WITH IIF(DTB<5, 'YEU', IIF(DTB<7,'TB', IIF(DTB<8,'KHA','GIOI')))
b. SORT TO SXDTB ON DTB/D
USE SXDTB
BROW
c. REPL ALL QUEQUAN WITH UPPE(QUEQUAN)
d. SUM VFOX, ACCESS, PASCAL TO X, Y, Z
SUM VFOX, ACCESS, PASCAL FOR LEFT(MASV,1)='T' TO X, Y, Z
SUM VFOX, ACCESS, PASCAL FOR LEFT(MASV,1)='K' TO X, Y, Z
e. COUN TO X FOR MIN(VFOX,ACCESS)>=8 OR MIN(VFOX,PASCAL)>=8 OR MIN(ACCESS, PASCAL)>=8
f. COPY TO DIEMGIOI FOR XEPLOIA='GIOI'
g. DELE FOR XEPLOAI='YEU'
PACK
Để quản lý vật tư trong của hàng XYZ sử dụng một tập tin dự án QLVATTU.PJX chứa tập tin cơ sở dữ liệu QLVATTU.DBC, tập tin này chứa các bảng có cấu trúc như sau:
Bảng NHAPVATU.DBF
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MAVT
|
C |
5 |
Mã vật tư |
|
NGAYNHAP
|
D |
8 |
Ngày nhập kho |
|
MANX
|
C |
1 |
Mã nhập, xuất |
Nhập: N |
SOLUONG
|
N |
6 |
Số lượng nhập |
|
DONGIA
|
N |
9 |
Đơn giá |
|
THANHTIEN
|
N |
10 |
Thành tiền |
|
Nhập vào 10 bản ghi theo bảng dữ liệu trên:
|
MAVT |
NGAYNHAP |
MANX |
SOLUONG |
DONGIA |
|
TV001 |
01-01-1998 |
N |
12 |
3850000 |
|
TL001 |
04-01-1998 |
N |
10 |
4700000 |
|
ML001 |
08-01-1998 |
X |
40 |
5100000 |
|
BU001 |
04-05-1998 |
N |
30 |
220000 |
|
QB001 |
05-01-1998 |
N |
28 |
350000 |
|
MG001 |
05-06-1998 |
X |
12 |
4000000 |
|
ND001 |
06-06-1998 |
N |
20 |
650000 |
|
HD002 |
10-10-1998 |
N |
12 |
13000000 |
|
HD004 |
01-01-1998 |
N |
10 |
16000000 |
|
XD001 |
01-01-1998 |
X |
30 |
1200000 |
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MAVT
|
C |
5 |
Mã vật tư |
|
TONDAU
|
N |
10 |
Tồn đầu kỳ |
|
SLN
|
N |
10 |
Số lượng nhập |
|
SLX
|
N |
10 |
Số lượng xuất |
|
TONCUOI
|
N |
10 |
Tồn cuối |
|
Nhập vào các bản ghi cho bảng dữ liệu
|
MAVT |
TONDAU |
|
TV001 TL001 ML001 BU001 QB001 MG001 ND001 HD002 HD004 XD001 |
12 30 50 40 50 55 100 50 45 100 |
Bảng DMVTU.DBF
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MAVT
|
C |
5 |
Mã vật tư |
Khoá chính |
TENVT
|
C |
30 |
Tên vật tư |
|
Nhập vào các bản ghi cho bảng dữ liệu.
|
MAVT |
TENVT |
|
TV01 |
Tivi mau SHAP 14 |
|
TL001 |
Tu lanh TOSHIBA 1401 |
|
ML001 |
May lanh 1.5 HP |
|
BU001 |
Ban ui Philip |
|
QB001 |
Quat ban |
|
MG001 |
May giat SANYO 40 |
|
ND001 |
Noi com dien SANYO |
|
HD002 |
Xe cub 86 |
|
XD001 |
Xe dap NHAT |
|
HD002 |
Xe Union |
a. Tính giá trị trường THANHTIEN của tập tin NHAPVT.DBF
b. Tính tổng số tiền nhập của mỗi loại vật tư có chữ cái đầu tiên bên trái giống nhau.
c. Tính SLN, SLX, TONCUOI, sau thời gian nhập xuất trên.
d. Tạo bảng dữ liệu TONKHO95.DBF có cấu trúc giống như bảng TONKHO99.DBF. Lấy TONCUOI của bảng dữ liệu TONKHO95.DBF để cập nhật vào TONDAU của TONKHO99.DBF
e. Liệt kê danh sách Nhập vật tư gồm các mục sau:
MAVT TENVT NGAYNHAP MANX SOLUONG
f. Liệt kê danh sách TONKHO gồm các mục sau:
MAVT TENVT TONDAU TONCUOI
Để quản lý điểm của một trung tâm tin học, ban giám đốc trung tâm sử dụng Project QLHV.PJX chứa một CSDL QuanlyHV.dbc gồm các bảng dữ liệu có cấu trúc như sau:
Bảng HOCVIEN có cấu trúc như sau:
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MA_HV |
C |
5 |
Mã học viên |
Khoá chính |
|
MA_LOP |
C |
4 |
Mã lớp |
|
|
HO |
C |
20 |
Họ |
|
|
TEN |
C |
10 |
Tên |
|
|
PHAI |
L |
1 |
Phái |
|
|
NGAY_SINH |
D |
8 |
Ngày sinh |
|
|
NOI_SINH |
C |
30 |
Nơi sinh |
|
|
DIA_CHI |
C |
30 |
Địa chỉ |
|
|
MA_GV_CN |
C |
3 |
Mã GVCN |
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MA_GV_CN |
C |
3 |
Mã GVCN |
Khoá chính |
|
TEN |
C |
30 |
Họ tên GVCN |
|
|
DIACHI |
C |
30 |
Địa chỉ |
|
|
SODT |
C |
9 |
Số điện thoại |
|
Tên trường
|
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
MA_HV
|
C |
5 |
Mã học viên |
Khoá chính |
|
DIEM_LT |
N |
4,1 |
Điểm LT |
|
|
DIEM_TH |
N |
4,1 |
Điểm TH |
|
|
DIEMTB |
N |
4,1 |
Điểm TB |
|
|
XEPLOAI |
C |
15 |
Xếp loại |
|
a. Nhập dữ liệu thích hợp cho các bảng dữ liệu trên.
c. Hiển thị tổng số học viên trong bảng HOCVIEN.
d. Tính giá trị DIEMTB=(DIEM_LT+DIEM_TH*2)/3.
XEPLOAI: "Yếu" nếu DIEMTB<5, "TB" nếu 5<=DIEMTB<7, "KHÁ" nếu 7<=DIEMTB<8,"GIỎi" nếu DIEMTB>=8.
e. Thực hiện các yêu cầu sau:
Hiển thị danh sách các học viên nam (PHAI=.T.).
Hiển thị các học viên nam có tuổi từ 18 đến 35.
Hiển thị theo thứ tự tăng đần của TEN, HO của nhứng học viên có địa chỉ ở TT-Huế.
Loại bỏ các học viên xếp loại "YẾU"
f. Thiết lập mối quan hệ cho 3 bảng dữ liệu trên.
g. Đếm xem có bao nhiêu học viên có nơi sinh ở Huế xếp loại "giỏi".
h. Sử dụng lệnh SET FILTER TO để xem những học viên nữ đạt loại "TB".
i. Hiển thị danh sách học viên thuộc lớp của giáo viên chủ nhiệm "Lê văn Tam" nhưng chỉ gồm các thông tin: Mã lớp, Họ và tên, Điểm trung bình, Xếp loại.
Để quản lý các mặt hàng bán được trong một siêu thị HÙNG VƯƠNG, ban quản lý siêu thị sử dụng Project QLSIEUTHI.PJX chứa một CSDL Banhang.dbc gồm các bảng dữ liệu có cấu trúc như sau:
Bảng KH_HANG (Khách hàng)
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_KH |
C |
6 |
|
|
|
TEN_KH |
C |
30 |
|
|
|
DIA_CHI |
C |
30 |
|
|
|
TINH_TP |
C |
20 |
|
|
|
THIXA_QH |
C |
30 |
|
|
|
SO_DT |
C |
9 |
|
|
|
FAX |
C |
15 |
|
|
Bảng DON_HANG (Đơn hàng)
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_DH |
C |
6 |
|
|
|
MA_KH |
C |
6 |
|
|
|
MA_NV |
C |
6 |
|
|
|
TEN_NV |
C |
30 |
|
|
|
DIACHI_NN |
C |
30 |
|
|
|
THANHPHO_NN |
C |
15 |
|
|
|
NGAY_DH |
D |
8 |
|
|
|
NGAY_GIAO |
D |
8 |
|
|
|
TIEN |
N |
12 |
|
|
Bảng CHITIET_DH (Chi tiết đơn hàng)
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_DH |
C |
6 |
|
|
|
MA_SP |
C |
6 |
|
|
|
DONGIA |
N |
8 |
|
|
|
SOLUONG |
N |
6 |
|
|
Bảng NHAN_VIEN (Nhân viên)
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_NV |
C |
6 |
|
|
|
HO_NV |
C |
20 |
|
|
|
TEN_NV |
C |
10 |
|
|
|
NGAYSINH |
D |
8 |
|
|
|
DIA_CHI |
C |
30 |
|
|
|
THANH_PHO |
C |
20 |
|
|
|
NUOC |
C |
15 |
|
|
|
SO_DT |
C |
9 |
|
|
Bảng MAT_HANG (Mặt hàng) có cấu trúc như sau:
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_SP |
C |
6 |
|
|
|
TEN_SP |
C |
20 |
|
|
|
SOLUONGCO |
N |
10 |
|
|
a. Lập các chỉ mục và thiết lập mối quan hệ cho các bảng dữ liệu trên.
|
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MA_KH |
PRIMARY |
MA_KH |
|
TINH_TP |
REGULAR |
TINH_TP |
Bảng DON_HANG
|
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MA_DH |
PRIMARY |
MA_DH |
|
MA_KH |
REGULAR |
MA_KH |
|
MA_NV |
REGULAR |
MA_NV |
Bảng CHITIET_DH
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MA_DH |
PRIMARY |
MA_DH |
|
MA_SP |
REGULAR |
MA_SP |
Bảng MAT_HANG
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MA_SP |
PRIMARY |
MA_SP |
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MA_NV |
PRIMARY |
MA_NV |
b. Nhập dữ liệu phù hợp cho các bảng dữ liệu trên.
c. Dùng bảng dữ liệu KH_HANG để hiển thị tên khách hàng, tên cơ quan, địa chỉ, số điện thoại của các khách hàng ở "HÀNỘI".
d. Dùng bảng dữ liệu KH_HANG để tạo truy vấn với yêu cầu sau: Hiển thị tên khách hàng, tên cơ quan, địa chỉ, số điện thoại của các khách hàng ở "HUẾ" và có tên bắt đầu là "T".
e. Hiển thị các khách hàng có tổng giá trị đơn hàng từ 50000 đến 200000.
g. Sử dụng bảng NHAN_VIEN hiển thị danh sách các nhân viên có Tuổi là 30.
h. Hiển thị các thông tin Mã số đơn hàng, mã số khách hàng, ngày đặt hàng, ngày giao hàng, người nhận, địa chỉ đối với các đơn hàng có giá trị trên 1000000.
i. Hiển thị các thông tin Mã số đơn hàng, mã số khách hàng, ngày đặt hàng, ngày giao hàng, người nhận, địa chỉ đối với các đơn hàng giao trong quý 1 năm 2000 và sắp xếp theo thứ tự về thời gian.
j. Hiển thị 5 đơn đặt hàng có giá trị lớn nhất trong.khoảng thời gian từ 20/10/99 đến 31/12/99.
k. Hiển thị 5 mặt hàng có số lượng đặt hàng nhiều nhưng chỉ hiển thị mã mặt hàng, tên mặt hàng và số lượng.
l. Hiển thị 5 đơn hàng của 5 khách hàng có giá trị lớn nhất.
p. Hiển thị tổng giá trị các đơn hàng của các khách hàng ở "Đà Nẵng".
k. Dùng bảng dữ liệu KH_HANG để tạo truy vấn với yêu cầu: Hiển thị thông tin tên khách hàng, tên cơ quan, địa chỉ, số điện thoại, thị xã, huyện của khách hàng ở HÀ NỘI hoặc HẢI PHÒNG hoặc TPHCM.
s. Hiển thị các khách hàng ở HUẾ nhưng có tổng giá trị đơn đặt hàng >1000000.
r. Dùng bảng NHAN_VIEN để liệt kê danh sách các nhân viên có tuổi là 35.
t. Hiển thị các đơn hàng có giá trị trên 500000. Xuất ra màn hình các thông tin mã số đơn hàng, mã số khách hàng, ngày đặt hàng, ngày giao hàng, người nhận, địa chỉ.
v. Hiển thị các thông tin mã số đơn hàng, mã số khách hàng, ngày đặt hàng, ngày giao hàng, người nhận, địa chỉ đối với các đơn hàng có ngày giao hàng trong tháng 10 và xếp theo thứ tự tăng dần của thời gian.
x. Hiển thị 10 đơn đặt hàng có giá trị lớn nhất trong khoảng thời gian từ 01/01/95 đến 01/01/96.
y. Hiển thị 10 mặt hàng có số lượng đặt hàng nhiều nhất, xuất ra màn hình mã mặt hàng và số lượng.
w. Sử dụng 2 bảng KH_HANG và DON_HANG để xuất ra màn hình các đơn hàng của khách hàng trong tháng 9 năm 2000.
z. Hiển thị tổng giá trị các đơn hàng của khách hàng ở thành phố.
a. Tạo một tập tin dự án Quanly.pjx chứa tập tin cơ sở dữ liệu ql.dbc, tập tin này chứa 3 bảng dữ liệu có cấu trúc như sau:
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_SO_NV |
C |
7 |
Mã số nhân viên |
|
|
HOLOT |
C |
35 |
Họ nhân viên |
|
|
TEN |
C |
9 |
Tên nhân viên |
|
|
PHAI |
L |
1 |
Giới tính (T: |
|
|
DIA_CHI |
C |
30 |
Địa chỉ |
|
|
NGAY_SINH |
D |
8 |
Ngày sinh |
|
|
TDVH |
C |
2 |
Trình độ văn hoá |
|
|
LUONG |
N |
10 |
Lương |
|
|
NGAY_LUONG |
D |
8 |
Ngày xếp lương |
|
|
MA_DV |
C |
4 |
Mã đơn vị |
|
|
GHI_CHU |
Memo |
10 |
Ghi chú |
|
Thực hiện việc cập nhật thông tin cho bảng trên, trong đó trường TDVH được qui định như sau: 1-12: từng lớp phổ thông, 13:Đại học, 14:Cao học, 15:Tiến sĩ, 0:Mù chữ.
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MA_HV |
C |
5 |
Mã Học viên |
|
|
MA_LOP |
C |
4 |
Mã lớp |
|
|
HOLOT |
C |
35 |
Họ học viên |
|
|
TEN |
C |
9 |
Tên học viên |
|
|
PHAI |
L |
1 |
Giới tính (T: |
|
|
NGAY_SINH |
D |
8 |
Ngày sinh |
|
|
NOI_SINH |
C |
30 |
Nơi sinh |
|
|
DIA_CHI |
C |
30 |
Địa chỉ |
|
|
MA_GVCN |
C |
3 |
Mã gvcn |
|
|
DIEM_LT |
N |
4,2 |
Điểm Lý thuyết |
|
|
DIEM_TH |
N |
4,2 |
Điểm Thực hành |
|
|
XEP_LOAI |
C |
10 |
Xếp loại học viên |
|
|
GHI_CHU |
Memo |
10 |
Ghi chú |
|
Thực hiện việc cập nhật thông tin cho bảng trên.
|
Tên trường |
Kiểu dữ liệu |
Chiều rộng |
Diễn giải |
Ghi chú |
|
MA_GVCN |
C |
3 |
Mã GVCN |
|
|
TEN |
C |
30 |
Tên GVCN |
|
b. Mở bảng dữ liệu HSNV hãy cho biết các thông tin HOLOT, TEN, PHAI, NGAY_SINH, LUONG.
c. Mở bảng dữ liệu HOCVIEN hãy cho biết các thông tin HOLOT, TEN, PHAI, NGAY_SINH, DIEM_LT, DIEM_TH.
d. Tạo chỉ mục cho trường MA_GVCN trong bảng HOCVIEN và DS_GVCN.
e. Thiết lập mối quan hệ giữa hai bảng HOCVIEN và DS_GVCN.
f. .Dùng hàm RECCOUNT() để cho biết tổng số Record của hai bảng dữ liệu.
g. Thêm vào bảng HOCVIEN trường DTB N(4,2) rồi thực hiện các yêu cầu sau:
Tính DTB=(DIEM_LT*2+DIEM_TH)/3
Hiển thị tất cả học viên
Hiển thị tất cả các học viên
Hiển thị tất cả học viên có DTB>=8
Hiển thị tất cả học viên có tên bắt đầu là 'T'
Sắp thứ tự học viên theo DTB
Hiển thị 3 học viên có điểm cao nhất
Đánh dấu xoá các học viên có DTB<3
Khôi phục lại các học viên đã bị đánh dấu xoá
h. Tính giá trị trường XEP_LOAI theo tiêu chuẩn sau:
DTB>=9: Xuất sắc
8<=DTB<9: Giỏi
7<=DTB<8: Khá
5<=DTB<7: Trung bình
DTB<5: Yếu
i. .Đếm xem mỗi xếp loại có bao nhiêu học viên?
j. Dùng lệnh SET FILTER để xem những học viên loại Xuất sắc
k. Mở bảng HSNV, lập các chỉ mục sau:
Lập chỉ mục dựa trên trường TEN tăng dần, nếu tên trùng nhau thì tăng dần theo HOLOT và đặt chỉ mục này là HTEN.
Lập chỉ mục dựa trên trường LUONG.
Lập chỉ mục dựa trên trường MANV.
Bài toán quản lý nhân sự và lương cho một phòng giáo dục, với các yêu cầu chính sau:
Quản lý về lý lịch của nhân viên trong phòng giáo dục.
Quản lý quá trình khen thưởng và kỷ luật.
Quản lý về quá trình đào tạo và bổ sung của nhân viên.
Quản lý về trình độ tin học và ngoại ngữ của nhân viên
Trong đó:
Phần quản lý về lý lịch cần lưu trữ các thông tin như sau:
Đơn vị công tác, Họ tên nhân viên, Phái, ngày sinh, nơi sinh, dân tộc, quê quán, địa chỉ, tôn giáo, chức vụ, loại hình lao động, các thông tin liên quan về chính trị, trình độ văn hoá, trình độ chuyên môn gốc, ngành được đào tạo, nước được đào tạo, năm tốt nghiệp, các thông tin liên quan đến lương....
Phần quản lý về quá trình kỷ luật, khen thưởng cần lưu trữ các thông tin sau:
Nhân viên được khen thưởng hay kỷ luật, loại hình khen thưởng, kỷ luật, ngày khen thưởng, kỷ luật.
Phần quản lý về đào tạo bổ sung cần lưu trữ các thông tin sau:
Nhân viên được cử đi đào tạo bổ sung, chuyên môn được đào tạo, ngày được cử đi đào tạo, ngày tốt nghiệp và bằng cấp.
Phần quản lý về Tin học và ngoại ngữ cần lưu trữ các thông tin sau:
Loại trình độ về tin học và ngoại ngữ của nhân viên.
Chương 2
1.1. Tạo truy vấn
Có thể tạo một truy vấn với nhiều lý do khác nhau như: Tổ chức thông tin cho Report, trả lời nhanh một câu hỏi hoặc nhóm dữ liệu.
Các bước tạo truy vấn ( Sử dụng Query Designer)
Trong Project Manager Data, Chọn Queries/New/New Query
Chọn các bảng hoặc View tham gia truy vấn, chọn Add, chọn Close
Trong mục Fields : Chọn các trường tham gia truy vấn, chọn Add
Join :Thiết lập mối quan hệ giữa các bảng
Inner Join
Left Outer Join
Right Outer Join
Full Join
Filter: Chọn điều kiện lọc dữ liệu
Trong Fieldname: Chọn tên trường (Hoặc biểu thức: Expression)
Criteria: Chọn phép toán.
Example: Chọn giá trị so sánh.
Case: Nếu chọn thì không phân biệt chữ hoa.
Logical: Phép toán logic.
Trong mục Orerby : Chọn trường cần sắp xếp.
Trong mục Group by : Chọn trường để nhóm dữ liệu
Trong mục Miscellaneous : Chọn phần trăm số bản ghi cần hiển thị
1.2. Thêm biểu thức vào truy vấn
Trong mục Fields, nhập biểu thức cần thêm trong mục Fucntions and Expression, chọn nút Add.
Nếu muốn đặt tên mới: <Biểu thức> As <Tên mới>.
2. View
2.1. Khái niệm
Có thể sử dụng View để xuất một số bản ghi từ bảng dữ liệu, hiệu chỉnh một số bản ghi rồi gửi đến bảng dữ liệu gốc. Có thể tạo View từ các bảng dữ liệu, các view khác...
2.2.Tạo View cục bộ
Cách tạo View tương tựu cách tạo truy vấn, được thực hiện như sau:
Trong Project Manager Data, Chọn Database/ Chọn Local View, chọn New/ New View.
Chọn các bảng vào tham gia View và thiết lập các mục (giống trong queries).
Tuy nhiên khác với truy vấn, trong các View có thể chọn sự thay đổi nào mà chúng ta muốn dữ liệu trong một View được gửi về nguyên bản, hay các bảng để tạo thành view.
Để quản lý điểm thi học kỳ của trường PTTH Lê lợi, bộ phậ khảo thí nhfa trường dụng Project QLDIEMHK.PJX chứa một CSDL Diemthi.dbc gồm các bảng dữ liệu có cấu trúc như sau:
Bảng DSLOP.DBF (Danh sách lớp)
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MALOP |
C |
2 |
Mã lớp |
Khoá chính |
|
TENLOP |
C |
20 |
Tên lớp |
|
|
TENGVCN |
C |
30 |
Tên GV chủ nhiệm |
|
Bảng DSHSINH.DBF (Danh sách học sinh)
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MAHS |
C |
3 |
Mã học sinh |
Khoá chính |
|
MALOP |
C |
2 |
Mã lớp |
|
|
TENHS |
C |
30 |
Họ và tên |
|
|
NSINH |
D |
8 |
Ngày sinh |
|
|
GIOITINH |
L |
1 |
Giới tính |
|
|
QUEQUAN |
C |
30 |
Quê quán |
|
|
DTB |
N |
4,1 |
Điểm TB thi |
|
|
XEPLOAI |
C |
20 |
Xếp loại |
|
Bảng DSDIEMHS.DBF (Danh sách điểm)
|
Tên trường |
Kiểu dữ liệu |
Độ rộng |
Diễn giải |
Ghi chú |
|
MAHS |
C |
3 |
Mã học sinh |
Khoá chính |
|
TOAN |
N |
4,1 |
Điểm môn Toán |
|
|
LY |
N |
4,1 |
Điểm môn Lý |
|
|
VAN |
N |
4,1 |
Điểm môn Văn |
|
|
HOA |
N |
4,4 |
Điểm môn Hoá |
|
Bảng DSLOP.DBF
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MALOP |
PRIMARY |
MALOP |
Bảng DSHSINH.DBF
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MALOP |
REGULAR |
MALOP |
|
MAHS |
PRIMARY |
MAHS |
Bảng DSDIEMHS.DBF
Tên chỉ mục |
Loại chỉ mục |
Biểu thức |
|
MAHS |
PRIMARY |
MAHS |
b. Cập nhật dữ liệu cho các bảng trên.
c. Thiết lập mối quan hệ giữa các bảng dữ liệu
d. Tạo truy vấn để hiển thị các thông tin: Tenlop, Tenhs, QUEQUAN.
e. Tạo truy vấn để hiển thị các thông tin: Tenlop, Tenhs, Toan, Ly đối với những học sinh thuộc lớp 11.
f. Tạo truy vấn để hiển thị các thông tin: Tenlop, Tenhs, DTB, Xeploai biết rằng:
DTB=(TOAN*2 +LY+HOA+VAN*2)/6
Xeploai: DTB<5: Yếu
5<= DTB<7: Trung bình
7<=DTB<8: Khá
DTB>=8: Giỏi
g. Tạo truy vấn để hiển thị những học sinh xếp loại khá hoặc giỏi bao gồm các thông tin MAHS, TENLOP, TENHS, TENGVCN, NSINH.
h. Tạo một truy vấn để hiển thị tổng số học sinh lớp 12 xếp loại giỏi bao gồm các thông tin: Tenlop, tongsohs, Xeploai.
g. Tạo một truy vấn để hiển thị những học sinh nữ lớp 10 sinh trước năm 1987 bao gồm các thông tin: TENHS, NSINH, GIOITINH.
i. Tạo một View để hiển thị những học sinh nam có QUEQUAN ở Huế bao gồm các thông tin: TENLOP, TENHS, GIOITINH, QUEQUAN.
j. Tạo một View để hiển thị những học sinh lớp xếp loại yếu bao gồm các thông tin: TENLOP, TENHS, XEPLOAI.
k. Tạo một View để hiển thị tổng số học sinh lớp 12 có điểm TOAN và LY>=8 bao gồm các thông tin: TENLOP, TONGSOHS.
Hướng dẫn giải
c. Thiết lập quan hệ theo sơ đồ sau:
d.
Trong cửa sổ Project, chọn data/ Queries/New Query
Đưa hai bảng Dslop và Dshsinh tham gia truy vấn, đưa các trường: Tenlop, Tenhs, Quequan
e.
Trong mục Field: Chọn các trường
Trong mục Filter: Chọn biểu thức lọc.
f. Tại Fucntion and Expression: round((toan*2+ly+hoa+van*2)/6,1) as dtb
Sau đó chọn nút Add
g. Trong mục Field chọn các trường
Trong mục Filter: Chọn điều kiện lọc
h.
Trong mục Field: Chọn trường Tenlop, Xeploai
Tại mục Function ansd Expressions: Nhạp vào count([Xeploai]) rồi nhấn Add
Trong mục Group by: chọn trường Xeploai
Trong mục Filter chọn các điều kiện lọc
g.
Trong mục Field chọn các trường
Trong mục Filter chọn các điều kiện lọc
i. Trong mục Field chọn các trường
Trong mục Filter chọn các điều kiện lọc
j. Trong mục Field chọn các trường
Trong mục Filter chọn các điều kiện lọc
k. Trong mục Field chọn các trường
Trong mục Group by chọn TENLOP
Trong mục Filter chọn các điều kiện lọc
Hãy tạo Project TuyenSinh.Pjx lưu trữ cơ sở dữ liệu Thidaihoc.dbc để quản lý kết quả thi vào đại học của các thí sinh thi vào Đại học Huế gồm các bảng có cấu trúc sau:
|
Tên trường |
Kiểu DL |
Độ rộng
|
Diễn giải |
Ghi chú |
Makhoi
|
C |
3 |
Mã khối thi |
|
|
Manganh |
C |
6 |
Mã ngành thi |
|
|
Tennganh |
C |
20 |
Tên ngành |
|
Matruong
|
C |
2 |
Mã trường |
|
Mon1
|
C |
6 |
Mã môn thi 1 |
|
|
Mon2 |
C |
6 |
Mã môn thi 2 |
|
|
Mon3 |
C |
6 |
Mã môn thi 3 |
|
|
Heso1 |
N |
5,2 |
Hệ số môn 1 |
|
|
Heso2 |
N |
5,2 |
Hệ số môn 2 |
|
|
Heso3 |
N |
5,2 |
Hệ số môn 3 |
|
Bảng Hocsinh.DBF
|
Tên trường |
Kiểu DL |
Độ rộng
|
Diễn giải |
Ghi chú |
Makhoi
|
C |
3 |
Mã khối thi |
|
|
Manganh |
C |
6 |
Mã ngành dự thi |
|
Mahs
|
C |
10 |
Mã thí sinh |
|
|
Ho |
C |
20 |
Họ và lót |
|
|
Ten |
C |
10 |
Tên |
|
|
Phai |
L |
1 |
Giới tính |
|
|
Diachi |
C |
30 |
Địa chỉ |
|
|
Ngaysinh |
D |
8 |
Ngày sinh |
|
|
Diem1 |
N |
5,2 |
Điểm môn 1 |
|
|
Diem2 |
N |
5,3 |
Điểm môn 2 |
|
|
Diem3 |
N |
5,2 |
Điểm môn 3 |
|
|
Khuvuc |
C |
1 |
Khu vực |
|
|
Tongdiem |
N |
5 |
Tổng điểm |
|
|
Ketqua |
C |
10 |
Kết quả thi |
|
|
Ghichu |
Memo |
|
Ghi chú |
|
|
Tên trường |
Kiểu DL |
Độ rộng
|
Diễn giải |
Ghi chú |
Khuvuc
|
C |
1 |
Khu vực |
|
|
Diem |
N |
5,2 |
Điểm cộng |
|
|
Tên trường |
Kiểu DL |
Độ rộng
|
Diễn giải |
Ghi chú |
Makhoi
|
C |
3 |
Mã khối thi |
|
|
Manganh |
C |
6 |
Mã ngành |
|
|
Chinhqui |
N |
3 |
Chỉ tiêu chính qui |
|
|
Morong |
N |
3 |
Chỉ tiêu mở rộng |
|
Tên trường |
Kiểu DL |
Độ rộng
|
Diễn giải |
Ghi chú |
Mamh
|
C |
6 |
Mã môn thi |
|
|
Tenmh |
C |
20 |
Tên môn thi |
|
Tên trường |
Kiểu DL |
Độ rộng
|
Diễn giải |
Ghi chú |
Matruong
|
C |
2 |
Mã trường |
|
|
Tentruong |
C |
20 |
Tên trường |
|
Hãy xác định khóa chính cho từng bảng và thiết lập mối quan hệ giữa các bảng thoe mô hình dưới đây và nhập dữ liệu cho các bảng (Các trường in đậm và nghiêng là khóa chính, các trường in nghiêng là khóa ngoại)
a. Hãy cập nhật dữ liệu cho các bảng sau:
Bảng KHOI.DBF
|
Makhoi |
Manganh |
Tennganh |
Mon1 |
Mon2 |
Mon3 |
Heso1 |
Heso2 |
Heso3 |
Matruong |
|
DLA |
DLAVLY |
Vật Lý |
TOAN |
LY |
HOA |
1 |
2 |
1 |
KH |
|
DLA |
DLAHOA |
Hóa |
TOAN |
LY |
HOA |
1 |
1 |
2 |
KH |
|
DLA |
DLATIN |
Tin học |
TOAN |
LY |
HOA |
2 |
2 |
1 |
KH |
|
DLB |
DLBSIN |
Sinh |
TOAN |
HOA |
SINH |
1 |
1 |
2 |
SP |
|
DLC |
DLAVAN |
Văn |
VAN |
SU |
DIA |
2 |
1 |
1 |
SP |
Bảng Hocsinh.DBF
|
Makhoi |
Manganh |
Mahs |
Ho |
Ten |
Phai |
Khuvuc |
|
DLA |
DLATIN |
0001 |
Nguyễn Thanh |
Hùng |
|
1 |
|
DLA |
DLAVLY |
0002 |
Trần Cao |
Thúy |
Nữ |
1 |
|
DLA |
DLAVLY |
0003 |
Hồ Tùng |
Mậu |
|
2 |
|
DLA |
DLATIN |
0004 |
Lã Thế |
Thanh |
Nữ |
3 |
|
DLA |
DLAHOA |
0005 |
Hoàng Văn |
Thu |
|
3 |
|
DLA |
DLAVLY |
0006 |
Xuân Mai |
Diệu |
Nữ |
2 |
|
DLA |
DLAVLY |
0007 |