Bài tập + đáp án visual foxpro cho ngành công nghệ thông tin, thực hành foxpro đáp án cho IT, bài tập thực hành foxpro cơ bản đến nâng cao, Bài tập +đáp án visual foxpro cho người mới bắt đầu học, bài tập thực hành foxpro có đáp án hay, hướng dẫn chi tiết thực hành foxpro bài tập có đáp án.
Trang 1
BÀI TẬP 1 Câu 1: Sử dụng bảng nhanvien.dbf đã tạo ở buổi 1, thực hiện các công việc sau:
(Chú ý: mỗi bản ghi ta lại khai báo lại toàn bộ biến)
+ Ho = Hodem
+ Ten = TenNV
+ MNV = MaNV
+ DC = DiaChi
+ NS = NgaySinh
+ GT = GioiTinh
+ Luong = Luongcoban
- Xem lại giá trị của các biến nhận được bằng lệnh: ? tên_biến.
người thứ 2 với điều kiện loại bỏ các ký tự trống bị thừa
?manv-honv-tennv…
- Hiển thị thông tin của HoNV và TenNV với tất cả các ký tự là chữ in hoa
?upper(ho),upper(ten)
- Hiển thị ngày sinh theo dạng: Ngày sinh: 12/05.
?”ngày sinh:”,day(ns),"/",month(ns)
?left(dtoc(ns),5)
- Hiển thị địa chỉ theo dạng: Địa chỉ: 165, Cầu Giấy, Hà Nội.
?”Địa chỉ:”,dc
NGUYỄN VÂN ANH – ngày sinh: 12/05 – Địa chỉ: 165, Cầu Giấy, Hà Nội - Lương cơ bản:
1,800,000 VNĐ”
?"ma nhan vien:",manv,"-","hnv:",honv,"-","ten:",tennv,"-","n/s:",ngaysinh,"-","d/c:",diachi
?"M· nh©n viªn: ",mnv," - ",ho," ",ten," - ",ns," - ",dc," - ",luong," VN§"
- Cho biết mã nhân viên của người thứ 2 trong bảng nhanvien.dbf có bao nhiêu kí tự ?
?len(alltrim(mnv))
hiển thị “Nữ” còn nếu giới tính của nhân viên là T thì hiển thị “Nam”
Trang 2
?iif(gt=.T.,”Nam”,”Nữ”)
Câu 2: Tới bản ghi thứ 3, gán biến NS = NgaySinh, sau đó thực hiện các yêu cầu sau:
?year(date())-year(ns)
?cdow(ns)
?month(ns)
Set date french
?NS
02, May, 1979”.
?cdow(ns),",",day(ns),",",cmonth(ns),",",year(ns)
Câu 3: Tới bản ghi thứ 5, gán giá trị cho các biến: CL = calam, LCB = luongcb Sau đó thực
hiện các yêu cầu sau:
Use ?
Brow
Go 5
Cl=calam
Lcb=luongcb
bh=9.5/100*lcb
?bh
PC = 200,000, ca làm là 2 thì PC = 250,000, ca làm là 3 PC = 350,000.
Pc=iif(ca=1,200,iif(ca=2,250,350))
?pc
Trang 3
brow
Thuclinh=lcb+pc+bh
?thuclinh Câu 4:
nhanvien.dbf Thực hiện các yêu cầu:
Use ? Brow
Go 1 A=luongcoban
Go 2 B=luongcoban
Go 3 C=luongcoban
Tongluongcb=a+b+c
?tongluongcb
trungbinhluongcb=tongluongcb/3
?trungbinhluongcb
?max(a,b,c)
?min(a,b,c)
Go 4 D=luongcoban Go5
E=luongcoban
Trang 4
Tongluongcb_full=a+b+c+d+e
Trungbinhluongcb_full=tongluongcb_full/5
?Trungbinhluongcb_full
Câu 5:
A=10
B=13
C=0
A=10 kt=iif(a=0,"bang 0", iif(a % 2 =0,"chan","le"))
?kt hoac A=10
? iif(a=0,"so khong",iif(mod(a,2)=0,”chan”,”le”))
?max(a,b,c)
?min(a,b,c)
?int (a+b+c)/3 hoac
?round((a+b+c)/3,0)
in ra một trong các kết luận sau:
Trang 5
a=3
b=5
c=-7
delta=b*b-4*a*c
X12=-b/(2*a)
X1=-b-sqrt(delta)/(2*a)
X2=-b+sqrt(delta)/(2*a)
ketqua=iif(delta>0,"2 nghiem",iif(delta=0,"nghiem kep","vo nghiem"))
?ketqua
?x1
?x2
Bài tập 2 Câu 1 :
A Mở Project đã tạo ở buổi một
❖ Tên Project : QUANLY_TENSV.PJX
❖ Tạo Database : QUANLYBANHANG.DBC
❖ Tạo các Table: KHACHHANG.DBF, HOADON.DBF, SANPHAM.DBF, CHITIETHOADON.DBF
Cấu trúc của các Table trên như sau:
KHACHHANG (Khách hàng)
DienThoa
HOADON (Hoá đơn)
Trang 6
NgayLapH
D
Rule = NgayLapHD<=Date() Message = "Hoá đơn lập trước hoặc bằng ngày hiện tại"
Ngày lập hoá đơn
SANPHAM (Sản phẩm)
Message = "Số lượng hàng không âm"
Số lượng tồn
CHITIETHD (Chi tiết hoá đơn)
SoLuongBa
n
Numeric 10 Rule = soluongban>0 and
soluongban<=Sanpham.soluong Message = "Số hàng bán ra phải nhỏ hơn hoặc bằng số hàng hiện có"
Số lượng bán
Rule = dongia>0 Message = "Đơn giá phải dương"
Đơn giá
Yêu cầu sinh viên hãy thao tác các công việc sau: (em đề xuất thêm phần này).
- Remove bảng NHANVIEN.DBF ra khỏi Project
- Add thêm bảng NHANVIEN.DBF vào CSDL QUANLYBANHANG.DBC
- Sử dụng bảng NHANVIEN.DBF (sử dụng lệnh Use?)
- Modify Stru và sửa bảng nhân viên theo cấu trúc sau
NHANVIEN (Nhân viên)
Rule = (YEAR(DATE())-YEAR(NgaySinh))>=18 AND
(YEAR(DATE())-YEAR(NgaySinh))<=60 Message = "Tuổi của nhân viên từ 18 đến 60"
Ngày sinh
Trang 7
DienThoa
i
CaLam Numeric 1 Rule = CaLam>=1 AND CaLam<=3
Message = "Ca làm việc chỉ có thể là 1 hoặc 2 hoặc 3"
Default value = 1
Ca làm (1,2,3)
B Thiết lập mối quan hệ (Relationships) cho các bảng như hình sau:
Đặt điều kiện ràng buộc dữ liệu cho các bảng theo bảng sau:
Trang 8
C Nhập dữ liệu cho các bảng theo thứ tự như sau:
❖ Khách Hàng
KH01 Trần Xuân Trường Đống Đa, Hà Nội 0984339456 tranxuantruong@yahoo.com KH02 Phạm Văn Long Tây Hồ, Hà Nội 0988678999 longpvg@ gmail.com
KH03 Bùi Thanh Tuấn Long Biên, Hà Nội 0904040999 thanhtuan@yahoo.com
KH04 Lê Thành Long Cầu Giấy, Hà Nội 0904543999 thanhlongle@gmail.com
❖ Hoá Đơn
❖ Sản Phẩm
MaSP TenSP SoLuong DonViTinh MoTa
SS7560
Samsung Galaxy Trend
Điện thoại Smart phone, Android 2.3.6, ARMv6 830 MHz, RAM 290 MB
NL520B Nokia Lumia 520
Lumia 520, Điện thoại Smart phone, Windows Phone 8 Apollo, Dual-core 1 GHz
Trang 9
SC6902 Sony C6902 – Xperia Z1 White 380 Cái Smart phone C6902, Android 4.2, Quad-core 2.2 Ghz,RAM 2GB
HTC720 HTC One X S720E White
16g
Quad-core 1.2 GHz Cortex-A5,Ram 1G IP0006 Iphone 5 White – 16g 300 Cái I-Phone 5, Smart phone, IOS 6, Apple A6
❖ Chi tiết hoá đơn
Câu 2: Thực hiện các yêu cầu sau:
- Hãy thoát khỏi chương trình Visual Foxpro
- Khởi động lại VF và thực hiện các lệnh dưới đây từ của sổ COMMAND
- Mở Database QUANLYBANHANG.DBC bằng lệnh Open database
- Sử dụng bảng NHANVIEN.dbf Dùng lệnh MODI STRU:
● Sửa tên trường GioiTinh thành Phai
● Thêm vào trường LuongCB, TongLuong
2.1 Dùng lệnh Browse có FONT = “.Vntime” và cỡ FONT là 14 hiện thông tin với các điều kiện sau :
● Hiện các thông tin của nhân viên có MaNV=”NV02” brow font "vntime",14 for manv="NV02"
● Hiện các thông tin của các nhân viên có NAMSINH>=1991 và THANGSINH>=6
brow font "vntime",14 for year(ngaysinh)>=1991 and month(ngaysinh)>=6
● Hiện các thông tin của các nhân viên có PHAI là F và sinh năm 1980
brow font "vntime",14 for year(ngaysinh)>=1980 and phai=.f
2.2 Sử dụng bảng CHITIETHOADON.dbf và thực hiện các yêu cầu sau:
● Thêm vào cột THANHTIEN bằng lệnh MODI STRU
● Dùng lệnh List để hiện các điều kiện sau:
+ Hiện các thông tin của sản phẩm với MASP= “SS7560” list for masp="SS7560"
+ Hiện thông tin của sản phẩm gồm MaHD, MaSP, DonGia có SOLUONGBAN>=50
list masp,mahd,dongia for soluongban>=50 + Hiện đầy đủ thông tin của nhân viên thứ 5 list record 5
Trang 10
+ Hiện các thông tin gồm: MaNV, HoNV, TenNV, DienThoai, CaLam của các nhân viên
từ thứ 2 đến 5 (go 2, list next 4)
+ Hiện các thông tin gồm: MaNV, HoNV, TenNV, DienThoai, CaLam từ thứ 3 đến hết
tệp (go 3, list rest fields manv,honv) 2.3 Hãy thực hiện lại các lệnh của BROWSE bằng lệnh EDIT ở phần 2.1
edit font "vntime",14 for manv="NV02"
edit font "vntime",14 for year(ngaysinh)>=1991 and month(ngaysinh)>=6 edit font "vntime",14 for year(ngaysinh)>=1980 and phai=.f
2.4 Sử dụng bảng Khách hàng Dùng lệnh Append để ghép thêm 5 khách hàng append
2.5 Sử dụng bảng CHITIETHOADON
● Đánh dấu xóa những hoá đơn có Soluongban * Dongia nhỏ hơn 30,000,000 vnđ
go top, delete for dongia*soluongban<3000000
● Về bản ghi đầu tiên và đánh dấu xóa từ bản ghi thứ 1 đến hết go top delete rest
● Hãy phục hồi những bản ghi bị đánh dấu (Lệnh Recall) recall all
● Tới bản ghi số 5 Hãy xóa bản ghi thứ 5 (Lệnh Delete và lệnh Pack) go 5 delete record 5 pack
● Tới bản ghi số 4 Hãy xóa từ bản ghi thứ 4 đến 6 go 4 delete next 3
2.6 Thống kê xem có bao nhiêu hoá đơn có Soluongban * Dongia lớn hơn 30,000,000(count for dongia*soluongban>=3000000 to a, ?a)
2.7 Thống kê xem có bao nhiêu sản phẩm bán với SOLUONG>=50(count for soluong>50 to b, ?b) 2.8 Hãy dùng lệnh Replace để tính cột THANHTIEN(repla all thanhtien with soluongban*dongia) 2.9 Kết hợp lệnh COUNT và lệnh SUM để tính trung bình của THANHTIEN
2.10 Dùng lệnh Average để tính trung bình cột THANHTIEN(average dongia to f)
2.11 Dùng lệnh SORT để sắp xếp cột SOLUONGBAN theo chiều tăng dần(sort on soluongban/a to sx1, use sx1, brow)
2.12 Hãy chèn một bản ghi trắng trong bảng CHITIETHOADON.dbf sau bản ghi thứ 5 (Lệnh Insert Blank) go 5 insert blank
2.13 Hãy chèn thêm một bản ghi trước bản ghi thứ 4 trong bảng CHITIETHOADON.dbf (Lệnh Insert Before) go 4 insert before
2.14 Sử dụng ToTal để tính tổng SOLUONGBAN theo MASP
total on masp to thongke12 field soluongban
use thongke12
brow
2.15 Hãy dùng lệnh Replace để giảm giá 5% nếu THANHTIEN>=100,000,000 vnđ
Trang 11
2.16 Hãy dùng lệnh Replace để điền LuongCB cho từng nhân viên với LuongCB = 1,050,000 vnđ (repla all luongcb with 1050000)
2.17 Hãy dùng lệnh Replace để tính cột TONGLUONG:
● Nếu CaLam bằng 1 hoac 2 thì TongLuong = LuongCB
● Neu CaLam=3 thi TongLuong = LuongCB + PhuCap với PhuCap = 10% LuongCB
repla all tongluong with iif(calam=3,luongcb+0.1*luongcb,luongcb)
BÀI TẬP THỰC HÀNH SỐ 3
A Phần thực hành
Câu 1: Hãy tạo một Project sau:
+ Tên Project: QUANLY.pjx
+ Tên Database: QLDIEM.dbc
+ Tên Table gồm: SINHVIEN.dbf, DIEM.dbf, DMLOP.dbf
Cấu trúc 3 bảng như sau:
a SINHVIEN.dbf:
H
Message: “năm nhập học phải nhỏ hơn hoặc bằng năm hiện tại”
Năm nhập học
b DIEM.dbf
and Mon 1 <=10 Message: “Hãy nhập lại điểm”
Môn 1
c DMLOP.dbf
Sau khi tạo xong cấu trúc bảng, sinh viên thực hiện các yêu cầu:
Trang 12
o MALOP của bảng DMLOP.dbf với MALOP trong bảng SINHVIEN.dbf.
o MASV trong bảng SINHVIEN.dbf với MASV trong bảng DIEM.dbf.
…,13005)
COMMAND
kiểu Currency
B Phần kiểm tra
Masv: Họ và Tên: Lớp:
Điểm cộng cho phần thực hành(1đ):
I Thực hiện các lệnh dưới đây từ cửa sổ COMMAND ( 7 điểm)
*.Sử dụng bảng SINHVIEN thực hiện các yêu cầu sau:
1 Ghép dữ liệu cột HODEM và TEN vào cột HOVATEN Chuyển HOVATEN thành chữ
in hoa (0.5đ)
Tạo trường HOVATEN
Replace all hovaten with honv+tennv
brow font "vntime",14 field MASV,HOVATEN,TENLOP for ten="ANH"
sau năm 1993
brow font "vntime",14 field MASV,HOVATEN for day(ngaysinh)>=12 and
month(ngaysinh)=9 and year(ngaysinh)=1993
tự tăng dần (0.5đ)
Use?
Appen
* Sử dụng bảng DIEM thực hiện các yêu cầu sau:
môn học nào dưới 5.0 (0.5đ)
Use? Chon bang DIEM
brow font "vntime",14 for ĐTB >=5
Use?
Go 4
delete rest
Replace all DTB with (MON1+MON2+MON3)/3
Trang 13
“khá”, 6 <= DTB < 7 loại “TB”, còn lại loại “kém” (1đ)
loại khá thì học bổng =150000, còn lại không có học bổng (0.5đ)
(0.5đ)
II Phần trắc nghiệm ( 2điểm)
Câu 1 Cho biết khối lệnh sau thực hiện công việc gì?
Use Sinhvien
Go bottom
INSERT BEFORE
Câu 2 Hãy chỉ ra dòng lệnh sai:
Use Sinhvien (1)
Go to 3 (2)
Delete rest (3)
a Dòng 1 c Dòng 1 và 2
b Dòng 2 d Dòng 3
Câu 3: Cho biết kết quả của lệnh sau:
? date()-{^2009/08/20}
a 1573 c 1357
b 1537 d 1735
Câu 6: Đối tượng Table thuộc thành phần nào quản lý trong cửa sổ của Project Manager
a Database c From, Data
Câu 4: Cho bảng Sinhvien có 10 bản ghi Cho biết kết quả của đoạn lệnh sau:
Use Sinhvien
Go 4
Count rest to a
?a
a 5 c 7
b 6 d 4
Câu 5: Cho biết kết quả của đoạn lệnh sau:
A = "Truong "
B = "KD & CN "
Trang 14
Câu 7: Để hiển thị toàn bộ dữ liệu trong bảng SINHVIEN với phông chữ vntimeH và cỡ chữ
14 ta chọn:
a Browse field font = ''.vntimeH'',14 c Browse all font ''.vntimeH'',14
b Browse all font ''.vntimeH'',size=14 d Browse field font ''.vntimeH'' 14
Câu 8 : Ký tự A trong khuôn dạng InputMask có ý nghĩa gì ?