Bài 35, Nhập danh sách n khách hàng từ bàn phím. Mỗi khách hàng có các thông tin sau: Mã khách hàng, họ và tên, giới tính, năm sinh, số ngày ở, giá phòng.
Viết các hàm con thực hiện các yêu cầu sau đây:

  • Hiển thị danh sách khách hàng
  • Hiển thị thông tin khách hàng có thời gian lưu trú lâu nhất
  • Tìm khách hàng theo mã khách hàng
  • Tính trung bình cộng thành tiền mà khách hàng phải trả, với thành tiền = số ngày ở * số phòng
  • Sắp xếp danh sách khách hàng theo thứ tự tăng dần về ngày sinh
Bài viết nằm trong: Series thực hành cơ sở lập trình

Code:

[#include <iostream>
#include <iomanip>
using namespace std;
struct DS {
char maKH[20], hoTen[30], gioiTinh[20];
int namSinh, ngayO, giaPhong;
};
void nhapDS(int n, DS a[]);
void inDS(int n, DS a[]);
void khachluuTruLau(int n, DS a[]);
void timKhach(int n, DS a[]);
void giaTB(int n, DS a[]);
void sapXep(int n, DS a[]);
int main()
{
int n;
cout<<"Nhap vao so luong khach";
cin>>n;
DS a[100];
nhapDS( n, a);
inDS(n, a);
khachluuTruLau(n, a);
timKhach(n, a);
giaTB(n, a);
sapXep(n, a);
}
void nhapDS(int n, DS a[])
{
for(int i = 0; i<n; i++) {
cout<<"Nhap thong tin khach hang"<< i+1<< endl;
cout<<"Ho va ten: ";
fflush(stdin);
gets(a[i].hoTen);
cout<<"Ma khach hang: ";
cin>>a[i].maKH;
cout<<"Gioi tinh: ";
cin>>a[i].gioiTinh;
cout<<"Nam sinh: ";
cin>>a[i].namSinh;
cout<<"So ngay o: ";
cin>>a[i].ngayO;
cout<<"Gia phong: ";
cin>>a[i].giaPhong;
cout<<"--------------\n";
}
}
void inDS(int n, DS a[])
{
cout<<setw(70)<<setfill('*');
cout<<setw(20)<<setfill(' ')<<"STT";
cout<<setw(20)<<setfill(' ')<<"Ho va ten";
cout<<setw(20)<<setfill(' ')<<"Ma khach hang";
cout<<setw(20)<<setfill(' ')<<"Gioi tinh";
cout<<setw(20)<<setfill(' ')<<"Nam sinh";
cout<<setw(20)<<setfill(' ')<<"So ngay o";
cout<<setw(20)<<setfill(' ')<<"Gia phong\n";
for(int i = 0; i<n; i++ ) {
cout<<setw(20)<<setfill(' ')<<i+1;
cout<<setw(20)<<setfill(' ')<<a[i].hoTen;
cout<<setw(20)<<setfill(' ')<<a[i].maKH;
cout<<setw(20)<<setfill(' ')<<a[i].gioiTinh;
cout<<setw(20)<<setfill(' ')<<a[i].namSinh;
cout<<setw(20)<<setfill(' ')<<a[i].ngayO;
cout<<setw(20)<<setfill(' ')<<a[i].giaPhong<<endl;
}
}
void khachluuTruLau(int n, DS a[])
{
int max = 0, k;
for (int i = 0; i<n; i++) {
if(a[i].ngayO > max) {
max = a[i].ngayO;
k = i;
}
}
cout<<"Khach hang thu "<<k+1<<"co thoi gian luu tru lau nhat la: "<<max<<" ngay";
}
void timKhach(int n, DS a[])
{
string ma;
cout<<"\nMoi ban nhap vao ma khach hang can tim: ";
cin>>ma;
for(int i =0; i<n; i++) {
if(ma == (string)a[i].maKH) {
cout<<"Khach hang ban can tim la: \n";
cout<<setw(70)<<setfill('*');
cout<<setw(20)<<setfill(' ')<<"Ho va ten";
cout<<setw(20)<<setfill(' ')<<"Ma khach hang";
cout<<setw(20)<<setfill(' ')<<"Gioi tinh";
cout<<setw(20)<<setfill(' ')<<"Nam sinh";
cout<<setw(20)<<setfill(' ')<<"So ngay o";
cout<<setw(20)<<setfill(' ')<<"Gia phong\n";
cout<<setw(20)<<setfill(' ')<<a[i].hoTen;
cout<<setw(20)<<setfill(' ')<<a[i].maKH;
cout<<setw(20)<<setfill(' ')<<a[i].gioiTinh;
cout<<setw(20)<<setfill(' ')<<a[i].namSinh;
cout<<setw(20)<<setfill(' ')<<a[i].ngayO;
cout<<setw(20)<<setfill(' ')<<a[i].giaPhong<<endl;
}
}
}
void giaTB(int n, DS a[]) {
float tb =0;
for(int i = 0; i<n; i++) {
tb += a[i].giaPhong;
}
tb =tb/n;
cout<<"Gia phong trung binh la: "<<tb;
}
]