Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

Chương 1: Giới thiệu

1.1 Giới thiệu đề bài


Xây dựng chức năng tiềm kiếm và sắp xếp trên các cấu trúc hỗ trợ
quản lý thông tin phòng học bao gồm : mã phòng (Maphong), loại
phòng (Loaiphong), diện tích (Dientich), sức chứa (Succhua), nhân
viên quản lý (NVQL).
1.2 Cấu trúc (mô tả cấu trúc được yêu cầu, chọn CTDL để thể
hiện, khai báo/định nghĩa cấu trúc)
Thông tin phòng học cần quản lý:
- Maphong : mã phòng học, gồm một chuỗi ký tự gồm 10 ký tự
- Loaiphong : có nhiều loại phòng bao gồm như phòng thực hành
máy tính, phòng lý thuyết, ….
- Dientich : diện tích phòng học với đơn vị là mét vuông
- Succhua : một phong học có sức chứa bao nhiêu học sinh có thể
là 50 học sinh, 60 học sinh,…
- NVQL : nhân viên quản lý đó là thầy cô quản lý của từng loại
phòng học đó .
Cấu trúc dữ liệu hỗ trợ quản lý thông tin phòng học:
- Maphong : chuỗi gồm 10 ký tự
- Loaiphong : chuỗi gồm 30 ký tự
- Dientich : số thực không âm ( Dientich >0)
- Succhua : số nguyên dương ( Succhua >0)
- NVQL : chuỗi gồm 40 ký tự
Định nghĩa cấu trúc phòng học :
struct phonghoc
{
char maphong[20];
char loaiphong[20];
char NVQL[20];
int dientich, succhua;
};
1.3 Dữ liệu mẫu
ST Maphong Loaiphong Dientic Succhua NVQL
T h
1 1035978897 Thực hành máy tính 65 mét 45 sinh viên Nguyễn Thị Hạnh
vuông
2 1325647625 Thực hành sinh học 86 mét 60 sinh viên Nguyễn Thị Huệ
vuông
3 1348792542 Phòng sinh hoạt 60 mét 70 sinh viên Nguyễn Thị Tuyết
vuông Anh
4 2468579468 Phòng đoàn 68 mét 80 sinh viên Lâm Văn Thiện
vuông
5 3498756482 Phòng hỗ trợ sinh viên 70 mét 55 sinh viên Nguyễn Thị Thắm
vuông
6 1324879654 Phòng nghỉ sinh viên 76 mét 64 sinh viên Nguyễn đoàn Trang
vuông
7 1354864953 Phòng ăn 86 mét 53 sinh viên Lâm Ngọc Trang
vuông
8 5264895354 Phòng tuyển sinh 56 mét 67 sinh viên Nguyễn Hồng Sơn
vuông
9 2456796349 Phòng lý thuyết 63 mét 66 sinh viên Lâm Tấn Khang
vuông
10 1648943558 Phòng công tác xã hội 66 mét 90 sinh viên Nguyễn Quách
vuông Tuấn

1.4 Các chức năng ( liệt kê các chức năng sẽ xây dựng)
- Nhập danh sách phòng học
+ Nhập ô cấu trúc
// nhập ô cấu trúc
void nhap_o(phonghoc& a)
{
cin.ignore();
cout << "\n\tNHAP MA PHONG : ";
cin.getline(a.maphong, 20);
cout << "\tNHAP LOAI PHONG : ";
cin.getline(a.loaiphong, 20);
cout << "\tNHAP NHAN VIEN QUAN LY : ";
cin.getline(a.NVQL, 20);
cout << "\tNHAP DIEN TICH CUA PHONG HOC : ";
cin >> a.dientich;
cout << "\tNHAP SUC CHUA CUA PHONG HOC ";
cin >> a.succhua;
}
+ Nhập mảng cấu trúc
// nhập mảng cấu trúc
void nhapmang(phonghoc a[], int& n)
{
for (int i = 0; i < n; i++)
{
cout << "\nPhong thu " << i + 1;
nhap_o(a[i]);
}
}

- Xuất danh sách phòng học


+ Xuất mảng cấu trúc
// xuất mảng cấu trúc
void xuat_mang(phonghoc a[], int n)
{
for (int i = 0; i < n; i++)
{
xuat_o(a[i]);
}
}

In kết quả xuất nhập phòng học


int main()
{
phonghoc a[50];
int n;

cout << "\tNhap so phong : ";


cin >> n;
nhapmang(a, n);
xuat_mang(a, n);
_getch();
return 0;
}
- Tìm thông phòng học theo loại phòng(Linearsearch)
void linearsearch(phonghoc a[], int n, char tp[50])
{
int tim = 0;
for (int i = 0; i < n; i++)
{
if (strcmp(tp, a[i].loaiphong) == 0)
{

xuat_o(a[i]);
tim = 1;
}

}
if (tim == 0)
{
cout << "\nkh tim thay loai phong trong danh
sach ";
}

Kiểm tra chương trình con


int main()
{
phonghoc a[50];
int n;

cout << "\tNhap so phong : ";


cin >> n;
nhapmang(a, n);
/*xuat_mang(a, n);*/

char tp[50];
cout << "\nNhap loai phong can tim : ";
cin.ignore();
gets_s(tp);
linearsearch(a, n, tp);
_getch();
return 0;
}
- Tìm thông tin phòng học theo diện tích(Binarysearch)
int binarysearch(phonghoc a[], int n, int k)
{
int left = 0; int right = n - 1;
int mid = (left + right) / 2;
while (left <= right && a[mid].dientich != k)
{
if (a[mid].dientich > k)
right = mid - 1;
else left = mid + 1;
mid = (left + right) / 2;
}
if (left > right) return (-1);
return (mid);

Kiểm tra chương trình con


int main()
{
phonghoc a[50];
int n,x;
cout << "\tNhap so phong : ";
cin >> n;
nhapmang(a, n);
cout << "\nNhap dien tich phong hoc can tim : ";
cin >> x;
if (binarysearch(a, n, x) == -1)
{
cout << "khong tim thay dien tich phong hoc can tim";
}
else
{
xuat_o(a[binarysearch(a, n, x)]);
}
_getch();
return 0;
}
- Sắp xếp danh sách phòng học theo

You might also like