Sử dụng ngôn ngữ lập trình C++ viết chương trình tính lương cho công ty TOTO. Công ty có 2 loại lao động: Lao động thời vụ và công nhân chính thức (trả lương theo tháng).
Tính lương tháng của công nhân như sau:
+ Lao động thời vụ: Lương tháng = số ngày công * đơn giá ngày công + thưởng
Trong đó: Thưởng = 2500000 nếu số ngày công lơn hơn hoặc bằng 25.
Thưởng = 2000000 nếu số ngày công nhỏ hơn 25 và lớn hơn 10.
Thường =0 nếu số ngày công nhỏ hơn hoặc bằng 10.
+ Công nhân chính thức: Lương tháng = lương cơ bản * Hệ số lương + phụ cấp
Trong đó: Phụ cấp = lương cơ bản * 1.2 nếu thâm niên công tác từ 3 năm trở nên
Phụ cấp = lương cơ bản * 1.0 nếu thâm niên công tác nhỏ hơn 3 năm
Yêu cầu:
1. Xây dựng lớp trừu tượng TOTO bao gồm:
+ Thuộc tính: Mã NV, Họ tên, loại hợp đồng (lao động thời vụ hay công nhân chính thức).
+ Phương thức:
- NhapThongTin để nhập thông tin cho người lao động gồm: Họ tên, địa chỉ, loại hợp đồng
- Khởi tạo thông tin ban đầu cho người lao động.
- TinhLuong để tính lương tháng cho người lao động (trừu tượng).
- InThongTin để in thông tin người lao động gồm:
*Mã NV2. Xây dựng hai lớp LDThoiVu và CNChinhThuc kế thừa từ lớp TOTO (bổ sung thêm các thuộct tính cần thiết cho từng lớp)
*Họ tên: …
*Loại hợp đồng: …
*Lương tháng: …
- Khởi tạo giá trị ban đầu về thông tin cho từng loại công nhân (mỗi loại đối tượng).
- Cài đặt phương thức TinhLuong cho từng loại lao động.
- Nhập giá trị cho các thuộc tính mới được bổ sung.
3. Trong phương thức main thực hiên:
- Khởi tạo các đối tượng (mỗi loại lao động một đối tượng)
- Nhập thông tin cho đối tượng
- In thông tin đối tượng
Biết rằng: lương cơ bản = 1,050,000 (VNĐ).
// Code Turbo C++ 3.0 / 4.5 //
--------------------------------
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// class TOTO
class TOTO{
// khai bao cac thuoc tinh
public:
char manv[10],ht[30],lhd[30];
public:
// khai bao cac phuong thuc
TOTO(char *manv,char *ht,char *lhd) //phuong thuc khoi tao
{
strcpy(this->manv,manv);
strcpy(this->ht,ht);
strcpy(this->lhd,lhd);
}
virtual void NhapTT() // phuong thuc ao
{
fflush(stdin);
cout<<"\n Nhap thong tin nguoi lao dong:\n";
cout<<"\n Ma nhan vien: "; gets(manv);
cout<<"\n Ho ten: "; gets(ht);
cout<<"\n Loai hop dong: "; gets(lhd);
}
virtual double TinhLuong()=0; // phuong thuc thuan ao
virtual void InTT()
{
cout<<"\n Ma nhan vien: "<<manv;
cout<<"\n Ho ten: "<<ht;
cout<<"\n Loai hop dong: "<<lhd;
cout<<"\n Luong thang: "<<TinhLuong();
}
};
// class LDThoiVu
class LDThoiVu: public TOTO{
// bo sung them cac thuoc tinh
public:
int soNgayCong;
float donGia;
// Phuong thuc
public:
// phuong thuc khoi tao
LDThoiVu(char manv[],char ht[],char lhd[], int soNgayCong, float donGia):TOTO(manv,ht,lhd)
{
this->soNgayCong=soNgayCong;
this->donGia=donGia;
}
void NhapTT(){
TOTO::NhapTT(); // goi phuong thuc nhap cua lop cha
cout<<"\n So ngay cong: "; cin>>soNgayCong;
cout<<"\n Don gia: "; cin>>donGia;
}
double TinhLuong(){
double thuong;
if (soNgayCong>25) thuong=2500000.0;
else if(soNgayCong>10) thuong=2000000.0;
else thuong=0.0;
return (donGia*soNgayCong+thuong);
}
};
// class CNChinhThuc
class CNChinhThuc: public TOTO{
// bo sung them cac thuoc tinh
public:
float heSoLuong,LCB;
int soNamCT;
// Phuong thuc
public:
// phuong thuc khoi tao
CNChinhThuc(char manv[],char ht[],char lhd[], float heSoLuong, int soNamCT):TOTO(manv,ht,lhd)
{
this->LCB=1050000.0;
this->heSoLuong=heSoLuong;
this->soNamCT=soNamCT;
}
void NhapTT(){
TOTO::NhapTT(); // goi phuong thuc nhap cua lop cha
cout<<"\n He so luong: "; cin>>heSoLuong;
}
double TinhLuong(){
double phuCap;
if (soNamCT>3) phuCap=LCB*1.2;
else phuCap=LCB*1.0;
return (LCB*heSoLuong+phuCap);
}
};
// ham main
void main(){
clrscr();
// khai bao doi tuong LDThoiVu
LDThoiVu t=LDThoiVu("","","",1,1.0);
t.NhapTT();
t.InTT();
// khai bao doi tuong CNChinhThuc
CNChinhThuc t1=CNChinhThuc("","","",1.0,1);
t1.NhapTT();
t1.InTT();
getch();
}
0 nhận xét:
Đăng nhận xét