Bài 40, Bài tập sử dụng struct, lưu file để quản lý tài xế C/C++

Câu 40, Nhập danh sách n tài xế từ bàn phím. Mỗi tài xế có các thông tin sau: Mã tài xế, Họ và tên, Giới tính, Năm sinh, Biển số xe, Lương...

Câu 40, Nhập danh sách n tài xế từ bàn phím. Mỗi tài xế có các thông tin sau: Mã tài xế, Họ và tên, Giới tính, Năm sinh, Biển số xe, Lương. Viết các hàm thực hiện các yêu cầu sau đây:
  • Lưu danh sách tài xế vào file "Taixe.txt"
  • Đọc file "Taixe.txt" và hiển thị danh sách tài xế ra màn hình
  • Nhập vào từ bàn phím mã tài xế, chỉnh sửa lương của tài xế sau đó cập nhật vào file. Đọc file"Taixe.txt" và hiển thị danh sách tài xế cập nhật ra màn hình
  • Sắp xếp danh sách tài xế theo Họ và Tên và lưu vào file "Taixesx.txt"
  • Trích lọc thông tin các tài xế có giới tính nữ và lưu vào file "Taixenu.txt"
Lưu ý: Tổ chức các file dưới dạng nhị phân
Bài viết nằm trong: Series thực hành cơ sở lập trình

Code: 

[#include <iostream>
#include <stdio.h>
#include <string.h>
#include <iomanip>
//ndanh1.blogspot.com
using namespace std;
struct DS {
    int maTX, namSinh, luong;
    char tenTX[30], bienSo[30], gioiTinh[30];

};
void nhapDS(int &n, DS a[]);
void luuDS(int &n, DS a[]);
void docDS(int n, DS a[]);
void inDS(int n, DS a[]);
void chinhSua(int n, DS a[]);
void sapXep(int n, DS a[]);
void trichTT(int n, DS a[]);

int main()
{
    int n;
    DS a[100];
    nhapDS(n, a);
    luuDS(n, a);
    docDS(n, a);
    inDS(n, a);
    chinhSua(n, a);
    sapXep(n, a);
    trichTT(n, a);
}
void nhapDS(int &n, DS a[])
{
    cout<<"Nhap vao so tai xe: ";
    cin>>n;
    for(int i =0; i<n; i++) {
        cout<<"\n------------------\n";
        cout<<"Thong tin tai xe thu "<<i+1<<endl;
        cout<<"Ho va ten tai xe: ";
        fflush(stdin);
        gets(a[i].tenTX);
        cout<<"Ma tai xe: ";
        cin>>a[i].maTX;
        cout<<"Nam sinh tai xe: ";
        cin>>a[i].namSinh;
        cout<<"Luong tai xe: ";
        cin>>a[i].luong;
        cout<<"Bien so xe: ";
        cin>>a[i].bienSo;
        cout<<"Gioi tinh: ";
        cin>>a[i].gioiTinh;
    }
}
void luuDS(int &n, DS a[])
{
    FILE *file;
    file = fopen("taixe.txt", "wb");
    for(int i =0; i<n; i++) {
        fwrite(&a[i], sizeof(DS), 1, file);
    }
    fclose(file);
}

void docDS(int n, DS a[])
{
    FILE *file;
    file = fopen("taixe.txt", "rb");
    if(file == NULL) {
        cout<<"khong tim thay file"<<endl;
    }
    n=0;
    while(fread(&a[n], sizeof(DS), 1, file) == 1) {
        n++;
    }
    fclose(file);
}
void inDS(int n, DS a[])
{
    docDS(n, a);
    cout<<"In ra danh sach thong tin cac tai xe\n";
    cout<<"\n------------------\n";
    cout<<setw(20)<<setfill(' ')<<"Ho va ten";
    cout<<setw(15)<<setfill(' ')<<"Ma tai xe";
    cout<<setw(15)<<setfill(' ')<<"Nam sinh";
    cout<<setw(15)<<setfill(' ')<<"Luong";
    cout<<setw(15)<<setfill(' ')<<"Bien so";
    cout<<setw(15)<<setfill(' ')<<"Gioi tinh\n";
    for(int i = 0; i<n; i++) {
        cout<<setw(20)<<setfill(' ')<<a[i].tenTX;
        cout<<setw(15)<<setfill(' ')<<a[i].maTX;
        cout<<setw(15)<<setfill(' ')<<a[i].namSinh;
        cout<<setw(15)<<setfill(' ')<<a[i].luong;
        cout<<setw(15)<<setfill(' ')<<a[i].bienSo;
        cout<<setw(15)<<setfill(' ')<<a[i].gioiTinh<<endl;
    }
}
void chinhSua(int n, DS a[])
{
    int maTX, luongTX, i;
    docDS(n, a);
    cout<<"Nhap vao ma tai xe: ";
    cin>>maTX;
    for(i =0; i< n; i++) {
        if(a[i].maTX == maTX) {
            cout<<"Luong tai xe hien tai: "<<a[i].luong<<endl;
            break;
        }
    }
    cout<<"Nhap vao luong thay doi cua tai xe: ";
    cin>>luongTX;
    a[i].luong = luongTX;
    luuDS(n, a);
    inDS(n, a);
}
void sapXep(int n, DS a[])
{
    docDS(n, a);
    DS tg;

    for(int i =0; i<n; i++) {
        for(int j=i+1; j<n; j++) {
            if( strcmp(a[i].tenTX, a[j].tenTX)>0) {
                tg = a[i];
                a[i] = a[j];
                a[j] = tg;
            }
        }
    }
   //luu danh sach
   FILE *file;
    file = fopen("taixesx.txt", "wb");
    for(int i =0; i<n; i++) {
        fwrite(&a[i], sizeof(DS), 1, file);
    }
    fclose(file);

    file = fopen("taixesx.txt", "rb");
    n=0;
    while(fread(&a[n], sizeof(DS), 1, file) == 1) {
        n++;
    }
    fclose(file);
    cout<<"In ra danh sach tai xe sau khi sap xep\n";
    cout<<"\n------------------\n";
    cout<<setw(20)<<setfill(' ')<<"Ho va ten";
    cout<<setw(15)<<setfill(' ')<<"Ma tai xe";
    cout<<setw(15)<<setfill(' ')<<"Nam sinh";
    cout<<setw(15)<<setfill(' ')<<"Luong";
    cout<<setw(15)<<setfill(' ')<<"Bien so";
    cout<<setw(15)<<setfill(' ')<<"Gioi tinh\n";
    for(int i = 0; i<n; i++) {
        cout<<setw(20)<<setfill(' ')<<a[i].tenTX;
        cout<<setw(15)<<setfill(' ')<<a[i].maTX;
        cout<<setw(15)<<setfill(' ')<<a[i].namSinh;
        cout<<setw(15)<<setfill(' ')<<a[i].luong;
        cout<<setw(15)<<setfill(' ')<<a[i].bienSo;
        cout<<setw(15)<<setfill(' ')<<a[i].gioiTinh<<endl;
    }

}
void trichTT(int n, DS a[]) {
    docDS(n, a);
    int j =0;
    for(int i =0; i<n; i++) {
        if(strcmp(a[i].gioiTinh, "nu") ==0) {
            a[j] = a[i];
            j++;
        }

    }
    // luu vao file taixenu.txt
    FILE *file;
    file = fopen("taixenu.txt", "wb");
    for(int i =0; i<=j; i++) {
        fwrite(&a[i], sizeof(DS), 1, file);
    }
    fclose(file);

    file = fopen("taixesx.txt", "wb");
    for(int i =0; i<n; i++) {
        fwrite(&a[i], sizeof(DS), 1, file);
    }
    fclose(file);

    file = fopen("taixenu.txt", "rb");
    n=0;
    while(fread(&a[n], sizeof(DS), 1, file) == 1) {
        n++;
    }
    fclose(file);
    cout<<"In ra danh sach tai xe nu\n";
    cout<<"\n------------------\n";
    cout<<setw(20)<<setfill(' ')<<"Ho va ten";
    cout<<setw(15)<<setfill(' ')<<"Ma tai xe";
    cout<<setw(15)<<setfill(' ')<<"Nam sinh";
    cout<<setw(15)<<setfill(' ')<<"Luong";
    cout<<setw(15)<<setfill(' ')<<"Bien so";
    cout<<setw(15)<<setfill(' ')<<"Gioi tinh\n";
    for(int i = 0; i<n-1; i++) {
        cout<<setw(20)<<setfill(' ')<<a[i].tenTX;
        cout<<setw(15)<<setfill(' ')<<a[i].maTX;
        cout<<setw(15)<<setfill(' ')<<a[i].namSinh;
        cout<<setw(15)<<setfill(' ')<<a[i].luong;
        cout<<setw(15)<<setfill(' ')<<a[i].bienSo;
        cout<<setw(15)<<setfill(' ')<<a[i].gioiTinh<<endl;
    }
}]

COMMENTS

BLOGGER
Tên

bài viết hay,4,Bài viết khác,1,cấu trúc dữ liệu và giải thuật,3,fithou,36,ghim,4,giải tích 2,1,Hướng dẫn,5,Lập trình C,1,lập trình hướng đối tượng,3,Lập trình java,1,phần mềm,2,phần mềm lập trình,2,sách,1,tác phẩm đồ họa,3,tản mạn,4,Thiết kế web,3,thực hành lập trình cơ sở,18,thực hành lập trình hướng đối tượng,16,
ltr
item
Blog NDanh: Bài 40, Bài tập sử dụng struct, lưu file để quản lý tài xế C/C++
Bài 40, Bài tập sử dụng struct, lưu file để quản lý tài xế C/C++
https://1.bp.blogspot.com/-Y6D5SqdlP5A/XjfVMSOLyGI/AAAAAAAAcgc/c1I_teA058siM1j1ZdGoLIQIB-YK81ReACLcBGAsYHQ/s400/40.png
https://1.bp.blogspot.com/-Y6D5SqdlP5A/XjfVMSOLyGI/AAAAAAAAcgc/c1I_teA058siM1j1ZdGoLIQIB-YK81ReACLcBGAsYHQ/s72-c/40.png
Blog NDanh
https://blog.ndanh.com/2020/02/bai-40-bai-tap-su-dung-struct-luu-file.html
https://blog.ndanh.com/
https://blog.ndanh.com/
https://blog.ndanh.com/2020/02/bai-40-bai-tap-su-dung-struct-luu-file.html
true
1596452775547375681
UTF-8
Tải tất cả bài viết Không tìm thấy bài viết nào XEM TẤT CẢ Đọc thêm Trả lời Hủy trả lời Xóa Bởi Trang chủ PAGES POSTS Xem tất cả Bài viết đề xuất CHỦ ĐỀ LƯU TRỮ SEARCH TẤT CẢ BÀI VIẾT Không tìm thấy nội dung của bạn Quay về trang chủ Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow CHIA SẺ ĐỂ XEM NỘI DUNG Bước 1: Chia sẻ lên facebook chế độ công khai Bước 2: Vào facebook, ấn vào bài đã chia sẻ công khai để hiện nội dung! Click Copy All Code Select All Code Code của bạn đã được copy Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content