1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài Tiểu Luận Lập Trình Hướng Đối Tượng Đề Tài 33 Xây Dựng Chương Trình Quản Lý Cán Bộ Theo Hướng Đối Tượng..pdf

25 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

TRƯỜNG ĐẠI HỌC ĐẠI NAM.

BÀI TIỂU LUẬN

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Đề tài 33: Xây dựng chương trình quản lý cán bộ theo hướng đối tượng.

Họ & tên sinh viên:Đỗ Quốc KhánhĐỗ Thị Hoan

Giảng viên hướng dẫn:Nguyễn Thái Sơn

Hà Nội 10-2021

Trang 2

Lý do chọn đề tài:

Từ trước đến nay, công việc quản lý nhân lực của các doanh nghiệp luôn là mộtcông việc thiết yếu Nhu cầu quản lý càng lúc càng cao cũng như đi kèm đó là nhữngkhó khăn và phức tạp do nguồn nhân lực ngày một lớn Việc có những ứng dụng từcông nghệ thông tin đang rất phát triển giúp giảm tải công việc quản lý bằng thủ côngcủa con người là điều rất cần thiết để giải quyết vấn đề trên.

Ưu điểm của việc sử dụng những phần mềm quản lý là giảm sự trùng lặp, khảnăng sắp xếp thông tin cũng như đưa ra các báo cáo, hỗ trợ tìm kiếm giúp cho độ chínhxác và toàn vẹn dữ liệu của thông tin được đưa ra ở mức cao nhất có thể khi truy xuấttheo nhiều cách khác nhau cũng như là chia sẻ và ứng dụng thông tin.

Từ những cơ sở đã tìm hiểu được về chủ đề trên, nhóm chúng em đã chọn đề tài:Xây dựng chương trình quản lý cán bộ theo hướng đối tượng

Thông tin cán bộ bao gồm:

Yêu cầu chương trình:

Mã Cán Bộ - Họ tênGiới tính – Quê quánNăm sinh – Chuyên MônTrình độ - Hệ số lươngPhụ cấp trách nhiệm – Ăn trưa

Thực lĩnh tính theo công thức = (HSL + PC)*450000+Ăntrưa

Năm tăng lương – Xếp loại lao động

Tạo và nhập một danh sách cán bộHiển thị các cán bộ có trong danh sáchLiệt kê các cán bộ có chuyên môn CNTT

Hiển thị danh sách các cán bộ được sắp xếp loại giỏiSắp xếp danh sách theo mã cán bộ

Loại bỏ một cán bộ theo mã cán bộThêm một cán bộ vào trong danh sách

Trang 3

Trong quá trình làm bài, nhóm em đã cố gắng tìm hiểu những tư liệu cũng như nhữngkiến thức dưới sự hướng dẫn của giảng viên nhằm hoàn thiện bài tập lớn Song khôngthể tránh khỏi sai sót Nhóm em rất mong được nhận sự góp ý từ thấy cô để bài làmđược hoàn thiện hơn.

Trang 4

I.Hướng đối tượng và các khái niệm trong lập trìnhhướng đối tượng.

1 Hướng đối tượng là gì?

Hướng đối tượng là thao tác phân tích quy đổi những sự vật, sự việc, vật thể cótrong bài toán thành những đối tượng trong lập trình, giúp việc quản lý, phát triển, mởrộng chương trình được đơn giản hơn

Lập trình hướng đối tượng là cách sử dụng hàm để tạo ra một hệ thống code cólogic, những hàm được xây dựng có quan hệ với nhau được đặt vào một file và chúngkhông thể liên kết chặt chẽ với nhau.

Những đối tượng trong một ngôn ngữ hướng đốin tượng là các kết hợp giữa mãvà dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất Mỗi đối tượng cómột tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua têncủa nó Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu(bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường.

2 Công dụng của hướng đối tượng trong lập trình.

Công dụng chính của hướng đối tượng là giúp tăng năng suất, đơn giản hóa độphức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viêntập trung vào các đối tượng phần mềm ở bậc cao hơn.

Dựa trên nguyên lý kế thừa, trong quá trình mô tả các lớp có thể loại bỏ nhữngchương trình bị lặp, dư Và có thể mở rộng khả năng sử dụng các lớp mà không cầnthực hiện lại Tối ưu và tái sử dụng code hiệu quả.

3 Các khái niệm trong lập trình hướng đối tượng.

- Class: Là tập hợp các đối tượng (object) có điểm tương đồng hay khuôn mẫuđể tạo ra đối tượng Ngược lại, đối tượng là khuôn mẫu để tạo ra đối tượng

- Object: còn được gọi là thực thể hay là đối tượng Tùy vào ngữ cảnh củachương trình mà chúng ta phân tích trạng thái và hành vi cho phù hợp Chỉ lấy ranhững hành vi mà ta quan tâm đến, ko cần phải lấy hết tất cả các trạng thái và hành vicủa đối tượng có thể có.

-Inheritance: Còn được gọi là kế thừa, đây là đặc tính cho phép một đối tượngcó thể có sẵn đặc tính mà đối tượng đã có thông qua kế thừa Điều này cho phép cácđối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩalại.

Trang 5

II Trình bày thuật toán.

Chương trình thực hiện:void CanBo::CNTT(){

ifstream MyReadFile("text.txt"); string text;

getline(MyReadFile,text); vector<string> a; bool check = 0;

while (getline(MyReadFile,text)) {

if(text == "endl"){ a.clear(); if(check) cout<<endl; check = 0; }

else{

a.push_back(text); }

if(check) cout << text << setw(11); if(text == "CNTT"){

for(auto i: a){

Trang 6

cout << i << setw(11); }

check = 1; }

}

MyReadFile.close();

2 Hàm tính số tượng cán bộ xếp loại giỏi.

Ý tưởng thuật toán: Đối chiếu với mục xếp loại lao động có trong input Nếu xếp loại trùng với xếp loại giỏi thì đếm cán bộ đó và đưa thông tin ra màn hình.

Cách thức thực hiện: Sử dụng biến check có kiểu bool và đối chiếu Nếu text rỗng thì biến check trả về giá trị check = 0, ngược lại thì thêm text vào b Sau đó xét, nếu text trùng khớp với chuỗi “Gioi” thì đấy giá trị check về true và in ra

Chương trình thực hiện: void CanBo::LDGioi(){

ifstream MyReadFile("text.txt"); string text;

getline(MyReadFile,text); vector<string> b; bool check = 0;

while (getline(MyReadFile,text)) {

if(text == "endl"){ b.clear(); if(check) cout<<endl; check = 0; }

else{

Trang 7

b.push_back(text); }

if(check) cout << text << setw(11); if(text == "Gioi"){

for(auto i: b){

cout << i << setw(11); }

check = 1; }

}

MyReadFile.close();}

3 Hàm sắp xếp cán bộ theo mã cán bộ.

Ý tưởng thuật toán: Sử dụng bubble sort lên trường MaCB so sánh phần tử với phần tửbên phải của nó Nếu phần tử đang xét lớn hơn phần tử bên phải của nó thì ta đưa phầntử về bên phải của nó bằng cách sử dụng hoán vị với phần tử bên phải của nó.Cách thực hiện: Sử dụng 2 vòng lặp for để duyệt toàn bộ mảng MaCB, lần lượt so sánhvà đổi chỗ (nếu cần) từ trái sang phải với các phần từ a[i].MaCB đến a[n].MaCB với biến gán j=i+1 và lặp lại khi a[i].MaCB > a[j].MaCB.

Chương trình thực hiện: void CanBo::SapXepMCB(){ for (int i = 0; i < n-1; i++) {

for (int j = i+1; j < n; j++) {

if(a[i].MaCB > a[j].MaCB){ CanBo temp;

temp = a[i];

Trang 8

a[i] = a[j]; a[j] = temp; }

} }}

4 Xây dựng hàm xóa cán bộ theo mã xác định.

Ý tưởng thuật toán: Nhập vào biến id cần xóa, sau đó đối chiếu với data Nếu data trống thì không xóa, nếu không, ta đối chiếu và lọc ra những cán bộ có mã cán bộ không trùngvới chuỗi kí tự mã cán bộ vào một file text1.txt Sau đó ta xóa dữ liệu trong file cũ đi và copy dữ liệu từ file text1 mới vào file text.txt

Cách thức thực hiện: sử dụng một biến id làm chuỗi kí tự cần xóa Sau đó dùng biến check để có thể đánh dấu đối chiếu trùng hay không Sau đó duyệt chuỗi và dùng file text1 để lưu trữ những phần tử không trùng lặp với id Tiếp đến là xóa dữ liệu của file text và duyệt file text1 và đưa những phần tử có trong đó vào lại text.

Chương trình:

void CanBo::XoaMCB(){ string id;

cout<<"Nhap MCB can xoa:"; cin >> id;

ofstream MyWriteFile1("text1.txt"); ifstream MyReadFile("text.txt"); string text;

int check = -1, stt = 0; MyReadFile >> text; MyWriteFile1 << text << endl; while(!MyReadFile.eof()) {

MyReadFile >> text;

Trang 9

MyWriteFile1 << text << endl; MyReadFile >> text; MyWriteFile1 << text << endl; cout << text << endl; if(text == id) check = stt; stt++;

while(getline(MyReadFile,text)){ MyWriteFile1 << text << endl; if(text == "endl") break; }

}

MyReadFile.close(); MyWriteFile1.close();

ifstream MyWriteFile2("text1.txt"); ofstream MyReadFile2("text.txt"); int so;

stt = 0;

MyWriteFile2 >> so;

cout << check << " 123213" << endl; if(check != -1) MyReadFile2 << so - 1; else MyReadFile2 << so;

MyReadFile2 << endl;

while(getline(MyWriteFile2,text)){ if(stt != check){

Trang 10

MyWriteFile2 >> text; MyReadFile2 << text << endl; }

if(text == "endl") stt++; }

MyWriteFile2.close(); MyReadFile2.close();}

Trang 11

III Chương trình chính.

Sau khi xây dựng toàn bộ các hàm bên trên, nhóm em xin phép trình bày chương trìnhchính dưới đây:

#include<bits/stdc++.h>#include<string.h>#include<conio.h>using namespace std;class CanBo{ public: string HoTen; int MaCB; string GioiTinh; string QueQuan; int NamSinh; string ChuyenMon; string TrinhDo; float HSL; float PhuCap; float AnTrua; float ThucLinh; int NamTL; string XepLoai; public:

CanBo(){ this->HoTen=" "; this->MaCB=0;

Trang 12

this->GioiTinh=" "; this->QueQuan=" "; this->NamSinh=0; this->ChuyenMon=" "; this->TrinhDo=" "; this->HSL=0; this->PhuCap=0; this->AnTrua=0; this->ThucLinh=0; this->NamTL=0; this->XepLoai=" "; }

~CanBo(){ this->HoTen=" "; this->MaCB=0; this->GioiTinh=" "; this->QueQuan=" "; this->NamSinh=0; this->ChuyenMon=" "; this->TrinhDo=" "; this->HSL=0; this->PhuCap=0; this->AnTrua=0; this->ThucLinh=0; this->NamTL=0; this->XepLoai=" "; }

virtual void nhap();

Trang 13

virtual void xuat(); virtual void tinhluong(); virtual void CNTT(); virtual void LDGioi(); virtual void SapXepMCB(); virtual void XoaMCB();};

int n;int SLCB;int demcntt=0;int demldg=0;CanBo a[100];ofstream MyWriteFile;void CanBo::nhap(){ fflush(stdin);

cout<<"Nhap Ho & Ten: "; getline(cin, HoTen); cout<<"Nhap Ma Can Bo: "; cin>>MaCB;

fflush(stdin);

cout<<"Nhap Gioi Tinh: "; getline(cin, GioiTinh); cout<<"Nhap Que Quan: "; getline(cin, QueQuan); cout<<"Nhap Nam Sinh: "; cin>>NamSinh;

Trang 14

fflush(stdin);

cout<<"Nhap Chuyen Mon: "; getline(cin, ChuyenMon); cout<<"Nhap Trinh Do: "; getline(cin, TrinhDo); cout<<"Nhap He So Luong: "; cin>>HSL;

cout<<"Nhap Phu Cap: "; cin>>PhuCap;

cout<<"Nhap An Trua: "; cin>>AnTrua;

cout<<"Nhap Nam Tang Luong: "; cin>>NamTL;

void CanBo::tinhluong(){

ThucLinh=(HSL+PhuCap)*450000+AnTrua;}

void CanBo::CNTT(){

ifstream MyReadFile("text.txt"); string text;

getline(MyReadFile,text);

Trang 15

vector<string> a; bool check = 0;

while (getline(MyReadFile,text)) {

if(text == "endl"){ a.clear(); if(check) cout<<endl; check = 0; }

else{

a.push_back(text); }

if(check) cout << text << setw(11); if(text == "CNTT"){

for(auto i: a){

cout << i << setw(11); }

check = 1; }

}

MyReadFile.close();}

void CanBo::LDGioi(){

ifstream MyReadFile("text.txt"); string text;

getline(MyReadFile,text); vector<string> b;

Trang 16

bool check = 0;

while (getline(MyReadFile,text)) {

if(text == "endl"){ b.clear(); if(check) cout<<endl; check = 0; }

else{

b.push_back(text); }

if(check) cout << text << setw(11); if(text == "Gioi"){

for(auto i: b){

cout << i << setw(11); }

check = 1; }

}

MyReadFile.close();}

void CanBo::SapXepMCB(){ for (int i = 0; i < n-1; i++) {

for (int j = i+1; j < n; j++) {

if(a[i].MaCB > a[j].MaCB){

Trang 17

CanBo temp; temp = a[i]; a[i] = a[j]; a[j] = temp; }

} }}

void CanBo::XoaMCB(){ string id;

cout<<"Nhap MCB can xoa:"; cin >> id;

ofstream MyWriteFile1("text1.txt"); ifstream MyReadFile("text.txt"); string text;

int check = -1, stt = 0; MyReadFile >> text; MyWriteFile1 << text << endl; while(!MyReadFile.eof()) {

MyReadFile >> text; MyWriteFile1 << text << endl; MyReadFile >> text; MyWriteFile1 << text << endl; cout << text << endl; if(text == id) check = stt;

Trang 18

stt++;

while(getline(MyReadFile,text)){ MyWriteFile1 << text << endl; if(text == "endl") break; }

}

MyReadFile.close(); MyWriteFile1.close();

ifstream MyWriteFile2("text1.txt"); ofstream MyReadFile2("text.txt"); int so;

stt = 0;

MyWriteFile2 >> so;

cout << check << " 123213" << endl; if(check != -1) MyReadFile2 << so - 1; else MyReadFile2 << so;

MyReadFile2 << endl;

while(getline(MyWriteFile2,text)){ if(stt != check){

MyWriteFile2 >> text; MyReadFile2 << text << endl; }

if(text == "endl") stt++; }

MyWriteFile2.close(); MyReadFile2.close();

Trang 19

void CanBo::xuat(){

ifstream MyReadFile("text.txt"); string text;

getline(MyReadFile,text); while (getline(MyReadFile,text)) {

if(text == "endl"){ cout<<endl; }

else

cout<<text<<setw(11); }

MyReadFile.close();}

void pressAnyKey() {

cout << "\n\nBam phim bat ky de tiep tuc "; getch();

system("cls");}

int main(){

ifstream MyReadFile("text.txt"); MyReadFile >> SLCB; MyReadFile.close(); n=SLCB;

while (1) {

Trang 20

int tt;

char fileName[]= "canbo.txt";

cout<<" -MENU -"<<endl; cout<<"1 Hien thi danh sach can bo."<<endl;

cout<<"2 Liet ke cac cac bo co chuyen mon CNTT."<<endl; cout<<"3 Hien Thi cac can bo xep loai gioi."<<endl; cout<<"4 Hien thi danh sach theo ma can bo."<<endl; cout<<"5 Loai bo mot can bo theo ma can bo."<<endl; cout<<"6 Them can bo vao danh sach."<<endl; cout<<"Nhap thao tac:";

cin>>tt; if(tt==7){ break; } switch (tt) { case 1:

cout<<"\n1 Hien thi danh sach can bo."<<endl; if(SLCB==0){

cout<<"\nDanh sach can bo trong "; }

else{

cout<<"Ho Ten"<<setw(10)<<"|"<<"Ma can bo "<<"|"<<"Gioi tinh "<<"|"<<"Que quan "<<"|"<<" Nam sinh "<<"|"<<"Chuyen mon "<<"|"<<"Trinh do"<<"|"<<"He so luong "<<"|"<<" Phu cap "<<"|"<<" An trua "<<"|"<<"Nam tanglg"<<"|"<<"Xep loai "<<endl;

a[0].tinhluong(); a[0].xuat();

Ngày đăng: 25/05/2024, 10:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w