CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
ĐÁP ÁN
ĐỀ THI TỐT NGHIỆP CAO ĐẲNG NGHỀ KHOÁ II (2008 - 2011)
NGHỀ: LẬP TRÌNH MÁY TÍNH
MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ
Mã đề số: DA LTMT - LT02
Câu Nội dung Điểm
I. Phần bắt buộc 7 điểm
Câu 1 1,5 điểm
1 Trình bày giải thuật sắp xếp kiểu nổi bọt để sắp xếp một
dãy khóa theo thứ tự tăng dần.
0,75 điểm
procedure sxnoibot(a,n)
1. for i:=1 to n-1 do
begin
0,25 điểm
for j:= n downto i+1 do
begin
if(a[j]<a[j-1]) then
begin
0,25 điểm
X:=a[j]; a[j]:=a[j-1]; a[j]:=X;
end;
end;end;
2. return;
0,25 điểm
2 Hãy đưa ra một dãy khoá gồm 10 phần tử bất kỳ, sau đó
đưa ra kết quả thực hiện 3 bước đầu tiên để sắp xếp dãy
khoá đó theo thứ tự tăng dần bằng giải thuật sắp xếp
kiểu nổi bọt.
0,75 điểm
Cho một dãy khoá bất kỳ gồm 10 phần tử, chẳng hạn
40 23 17 55 22 45 15 60 30 20.
Bước 1: 15 40 23 17 55 22 45 20 60 30
0,25 điểm
Bước 2: 15 17 40 23 20 55 22 45 30 60 0,25 điểm
Bước 3: 15 17 20 40 23 22 55 30 45 60 0,25 điểm
Trang:1/ 6
Câu 2 Một công ty sản xuất may mặc cần quản lý lương cho nhân
viên công ty mình. Hãy viết chương trình đáp ứng các yêu
cầu:
3,5 điểm
a Xây dựng lớp NHANVIEN có dữ liệu thành phần là mã
nhân viên, mã đơn vị, họ tên, ngày sinh. Các hàm thành
phần bao gồm: nhập dữ liệu nhân viên, hiển thị dữ liệu.
0,75 điểm
#include <iostream.h>
#include <conio.h>
#include<stdio.h>
typedef struct date
{
int ngay,thang,nam;
};
class NHANVIEN
{ char manv[10];
char madv[10];
char hoten[30];
date ngaysinh;
public:
void nhap()
{
cout<<"ma nhan vien:";gets(manv);
cout<<"ma don vi:";gets(madv);
cout<<"ho ten:";gets(hoten);
cout<<"ngay sinh:";
cin>>ngaysinh.ngay>>ngaysinh.thang>>ngaysinh.nam;
}
void hienthi()
{
cout <<" "<<madv<<manv<< " "<<hoten<<"
"<<ngaysinh.ngay<<"/"<<ngaysinh.than
g
<<"/"<<ngaysinh.nam;
}
};
0,25 điểm
0,25 điểm
0,25 điểm
Trang:2/ 6
b Xây dựng lớp LUONG thừa kế lớp NHANVIEN và có
thêm các thuộc tính: phụ cấp, hệ số lương, bảo hiểm. Các
hàm thành phần để nhập và tính lương cho nhân viên
theo công thức:
Lương = hệ số lương *830000 + phụ cấp - bảo hiểm
0,75 điểm
class LUONG: public NHANVIEN
{ float phucap,baohiem;
float hesoluong;
public:
void nhapluong()
{
cout<<"phu cap:";cin>>phucap;
cout<<"bao hiem:";cin>>baohiem;
cout<<"he so luong:";cin>>hesoluong;
}
float tinhluong()
{
return(hesoluong*830000+phucap-baohiem);
}
void hienthiluong()
{
cout<<" "<<hesoluong<<" "<<phucap<<"
"<<baohiem<<" "<<tinhluong();
}
};
0,25 điểm
0,25 điểm
0,25 điểm
c Xây dựng hàm main() thực hiện:
+ Nhập danh sách gồm n nhân viên
+ Sắp xếp lương nhân viên tăng dần bằng phương
pháp sắp xếp nổi bọt và hiển thị kết quả sắp xếp ra màn
hình
+ Hiển thị ra màn hình bảng lương của nhân viên.
2 điểm
void main()
{ clrscr();
LUONG *ds,tg;
int n,i,j;
cout<<"\nNhap vao so nhan vien:";
cin>>n;
0,5 điểm
Trang:3/ 6
ds=new LUONG[n];
for (i = 1; i <=n; i++)
{ cout <<"\nNhap thong tin cho nhan vien thu "
<<i<<endl;
ds[i].nhap();
ds[i].nhapluong();
}
cout<<"Bang luong cua nhan vien theo tung don vi:"
<<endl;
for (i = 1; i <=n; i++)
{
ds[i].hienthi();
ds[i].hienthiluong();
cout<<endl;
}
cout<<endl;
for(i=2;i<=n+1;i++)
for(j=n;j>=i;j )
if(ds[j].tinhluong()<ds[j-1].tinhluong())
{
tg=ds[j-1];
ds[j-1]=ds[j];
ds[j]=tg;
}
for (i = 1; i <=n; i++)
{
ds[i].hienthi();
ds[i].hienthiluong();
cout<<endl;
}
getch();
}
0,75 điểm
0,75 điểm
0,25 điểm
Câu 3 Cho lược đồ cơ sở dữ liệu sau:
Docgia(MADG, HOTEN, NGAYSINH, DIACHI,
NGHENGHIEP)
Phieumuon(SOPM, NGAYMUON, MADG)
Chitietmuon(SOPM, MADAUSACH, NGAYTRA)
2 điểm
Trang:4/ 6
Dausach(MADAUSACH, BAN, TAP, MASH)
Sach(MASH, TENSACH, TACGIA, NHAXB,
NAMXB)
Hãy thực hiện các câu hỏi sau đây bằng SQL
a Danh sách các đọc giả đã đăng ký mượn sách trong ngày d.
Yêu cầu các thông tin: MADG, HOTEN, DIACHI:
Các quyển sách của phiếu mượn có SOPM là x. Yêu cầu các
thông tin MASH, TENSACH, TACGIA, NGAYMUON,
NGAYTRA.
0,5 điểm
b Các quyển sách của phiếu mượn có SOPM là x. Yêu cầu các
thông tin MASH, TENSACH, TACGIA, NGAYMUON,
NGAYTRA:
SELECT Mash, Tensach, Tacgia, Ngaymuon, Ngaytra
FROM ((Sach INNER JOIN Dausach ON
Sach.Mash=Dausach.Mash)
INNER JOIN Chitietmuon ON
Chitietmuon.Madausach = Dausach.Madausach)
INNER JOIN Phieumuon On Phieumuon.Sopm
= Chitietmuon.Sopm
WHERE Phieumuon.Sopm = x;
0,5 điểm
c Tổng số lượt mà mỗi đọc giả đến mượn sách trong năm
2001. Thông tin kết xuất MADG, HOTEN, SOLANMUON
(SOLANMUON là thuộc tính tự đặt)
SELECT Madg, Hoten, Count(*) As Solanmuon
FROM Phieumuon INNER JOIN Docgia ON
Docgia.Madg=Phieumuon.Madg
WHERE YEAR(Ngaymuon)=2001
GROUP BY Phieumuon.Madg, Docgia.Hoten
0,5 điểm
d Danh sách các đọc giả cao tuổi nhất đã mượn sách trong
ngày d. Thông tin kết xuất MAĐG, HOTEN, NGAYSINH,
DIACHI, NGHENGHIEP:
SELECT Madg, Hoten, Ngaysinh, Diachi, Nghenghiep
FROM Phieumuon INNER JOIN Docgia ON
Docgia.Madg=Phieumuon.Madg
WHERE (Ngaymuon=d)
AND (Ngaysinh IN (SELECT MIN(Ngaysinh)
0, 5 điểm
Trang:5/ 6
FROM Docgia))
II. Phần tự chọn, do trường biên soạn 3 điểm
1
2
Tổng cộng (I + II)
……… , Ngày…………Tháng……… Năm…………
Trang:6/ 6