IMG-LOGO
Trang Chủ Chủ Đề BT04. Hướng dẫn chừa bài tập quản lý rạp chiều phím - Lập trình C
× 1) 01 - Nhập môn cho người mới bắt đầu - Lập trình C 2) 02.Flowchart & ví dụ viết flowchart của phương trình bậc 1 - Lập Trình C 3) 03. Hướng dẫn cài đặt môi trường lập trình C - Lập trình C 4) 04. Tìm hiểu biến & kiểu dữ liệu trong C - Lập trình C 5) 05. Toán tử & biểu thức login trong C - Lập Trinh C 6) 06. Nhập dữ liệu trong C (scanf, printf) - Lập trình C 7) 07. Nhập xuất dữ liệu phần 2 - Lập Trình C 8) 08. Tìm hiểu if, else, switch trong lập trình C - Lập Trình C 9) 09. Tìm hiểu về vòng lặp for trong C - Lập trình C 10) 10. Tìm hiểu while, do..while trong lập trình C - lập Trình C 11) 11. Tìm hiểu mảng 1 chiều trong C - Lập trình C 12) 12. Tìm hiểu mảng 2 chiều - Lập Trình C 13) 15. Tìm hiểu pointer phần 3 - Lập trình C 14) 14. Tìm hiểu pointer phần 2 - Lập Trình C 15) 13. Tìm hiểu pointer phần 1 - Lập Trình C 16) 16. Tìm hiểu function trong lập trình C - Lập Trình C 17) 17. Tìm hiểu string trong lập trình C - Lập Trình C 18) BT01. Bai tap C - Ôn Tập Full C - Lập Trình C 19) 18. Struct trong C - Lập Trình C 20) 1000 Bài tập C - Lập Trình C 21) BT02 - Hướng dẫn chữa bài Fibonaci - Lập Trình C 22) BT03. Ôn luyện - Sắp xếp trong C, con trỏ cấp phát động 23. BT04. Hướng dẫn chừa bài tập quản lý rạp chiều phím - Lập trình C

BT04. Hướng dẫn chừa bài tập quản lý rạp chiều phím - Lập trình C

by TRẦN VĂN ĐIỆP - 10:50 03/09/2019 1,884 Lượt Xem

Đề bài: Rạp chiều phim

1. Dữ liệu[1]

Định nghĩa 1 cấu trúc:

-struct Cinema: (rạp chiếu phim) với các trường char Name[25] (tên rạp), char Address[35] (địa chỉ rạp), int Seats (tổng số ghế của rạp)

-     Trong hàm main() khai báo một mảng gồm 4 phần tử lưu danh sách các rạp chiếu phim tại Hà Nội tên “cinemaList”.


2. Tạo ra Menu dưới đây:[ 1 ]

  1. Nhập dữ liệu quản lý danh sách rạp chiếu phim.

  2. Hiển thị danh sách rạp ra màn hình.

  3. Tìm rạp theo số ghế tối thiểu.

  4. Lưu dữ liệu ra tệp cinema.dat

  5. Đọc dữ liệu từ tệp cinema.dat

  6. Thoát.

3.  Nhập dữ liệu quản lý danh sách rạp chiếu phim[ 4 ]

Khi chọn 1 từ Menu, thực hiện các yêu cầu dưới đây cho cả 4 rạp cần quản lý:

  • Hiển thị  “Nhap ten rap chieu phim thu 1:

  • Sau đó, hiển thị “Nhap dia chi rap:” 

  • Sau đó, hiển thị  “Nhap so luong ghe:”

Viết hàm để thực hiện chức năng này theo yêu cầu dưới đây:

  • Sử dụng tham biến là con trỏ cấu trúc Cinema. 

  • Lưu các giá trị nhập từ người sử dụng vào mảng cinemaList trong hàm main().

4. Hiển thị danh sách rạp ra màn hình .[ 5.5]

Khi chọn 2 từ Menu, sắp xếp các rạp theo tên theo thứ tự alphabet từ A đến Z sau đó hiển thị thông tin chi tiết của các rạp như dưới đây:


Name

Address

Seats

DAN CHU

211 Kham Thien DD

400

FAFIM VN

191 Nguyen Trai TX

800

FANSLAND

84 Ly Thuong Kiet HK

670

MEGASTAR CINEPLEX

191 Ba Trieu HBT

1200


5. Tìm rạp theo số ghế tối thiểu[4]

Khi chọn 3 từ Menu, thực hiện các yêu cầu dưới đây:

  • Hiển thị  “Nhap so ghe toi thieu:” 

  • Tìm và hiển theo định dạng như câu 4 tất cả các rạp có số ghế lớn hơn hoặc bằng số ghế người dung vừa nhập. Trong trường hợp không tìm thấy rạp nào, hiển thị thông báo  “Khong co rap nao phu hop”

Sử dụng hàm để thực hiện chức năng này theo yêu cầu dưới đây:

  • Sử dụng tham biến là mảng cấu trúc Cinema.


6. Lưu dữ liệu ra tệp cinema.dat.[2]


Khi chọn 4 từ Menu, ghi tất cả thông tin của từng rạp chiếu phim vào file nhị phân  “cinema.dat”.

Sử dụng hàm để thực hiện chức năng này theo yêu cầu dưới đây:

  • Sử dụng tham biến là mảng cấu trúc Cinema. 

  • Tạo file nhị phân “cinema.dat”. 

  • Lưu trữ tất cả thông tin của các rạp chiếu phim trong cinemaList vào tệp này, ghi với chế độ ghi đè.  

  • Đóng tệp.

7. Đọc dữ liệu từ tệp cinema.dat.[2]


Khi chọn 5 từ Menu, đọc tất cả thông tin của các rạp chiếu phim từ file nhị phân  “cinema.dat”. Khi bắt đầu chương trình nếu đã lưu tệp 1 lần thì chỉ cần đọc nội dung từ tệp ra rồi chạy các chức năng khác như hiển thị hoặc tìm kiếm bình thường.

Sử dụng hàm để thực hiện chức năng này theo yêu cầu dưới đây:

  • Sử dụng tham biến là mảng cấu trúc Cinema. 

  • Đọc file nhị phân “cinema.dat”. 

  • Đọc tất cả thông tin trong tệp này và lưu vào mảng là tham biến được truyền vào.  

  • Đóng tệp.

7. Exit[ 0.5 ]

Khi chọn 6 từ Menu, chương trình kết thúc.

Lời Giải:



#include <stdio.h>
#include <stdlib.h>
#include "cinema.h"

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	Cinema cinemaList[4];
	int choose;
	
	do {
		showMenu();
		scanf("%d", &choose);
		
		switch(choose) {
			case 1:
				inputCinemaList(cinemaList);
				break;
			case 2:
				sort(cinemaList);
				displayCinemaList(cinemaList);
				break;
			case 3:
				searchByMinSeats(cinemaList);
				break;
			case 4:
				saveFile(cinemaList);
				break;
			case 5:
				readFile(cinemaList);
				break;
			case 6:
				printf("\nGood bye!!!");
				break;
			default:
				printf("\nNhap sai!!!");
				break;
		}
	} while(choose != 6);
	
	return 0;
}



typedef struct Cinema_ST {
	char name[25], address[35];
	int seats;
} Cinema;

void showMenu();

void inputCinemaList(Cinema *p);

void displayCinemaList(Cinema *p);

void sort(Cinema *p);

void searchByMinSeats(Cinema *p);

void saveFile(Cinema *p);

void readFile(Cinema *p);



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cinema.h"

void showMenu() {
	printf("\n1. Nhap du lieu");
	printf("\n2. Hien thi du lieu");
	printf("\n3. Tim kiem");
	printf("\n4. Luu data");
	printf("\n5. Doc data");
	printf("\n6. Thoat");
	printf("\nChon: ");
}

void inputCinemaList(Cinema *p) {
	int i;
	for(i=0;i<4;i++) {
		printf("\nNhap ten rap chieu phim thu %d: ", i+1);
		fflush(stdin);fflush(stdout);
		gets(p[i].name);
		printf("\nNhap dia chi rap: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].address);
		printf("\nNhap so ghe: ");
		fflush(stdin);fflush(stdout);
		scanf("%d", &p[i].seats);
	}
}

void sort(Cinema *p) {
	int i, j;
	for(i=0;i<3;i++) {
		for(j=i+1;j<4;j++) {
			int cmp = strcmp(p[i].name, p[j].name);
			if(cmp > 0) {
				//swap cinema.
				Cinema tmp = p[i];
				p[i] = p[j];
				p[j] = tmp;
			}
		}
	}
}

void displayCinemaList(Cinema *p) {
	int i, j;
	//header
	printf("\n");
	for(i=0;i<70;i++) {
		printf("-");
	}
	printf("\n|%25s|%35s|%6s|", "Name", "Address", "Seats");
	printf("\n");
	for(i=0;i<70;i++) {
		printf("-");
	}
	for(i=0;i<4;i++) {
		printf("\n|%25s|%35s|%6d|", p[i].name, p[i].address, p[i].seats);
		printf("\n");
		for(j=0;j<70;j++) {
			printf("-");
		}
	}
}

void searchByMinSeats(Cinema *p) {
	int i, j, minSeats;
	printf("\nNhap so ghe toi thieu can tim: ");
	scanf("%d", &minSeats);
	
	//header
	printf("\n");
	for(i=0;i<70;i++) {
		printf("-");
	}
	printf("\n|%25s|%35s|%6s|", "Name", "Address", "Seats");
	printf("\n");
	for(i=0;i<70;i++) {
		printf("-");
	}
	//header end
	int count = 0;
	
	for(i=0;i<4;i++) {
		if(p[i].seats >= minSeats) {
			count++;
			printf("\n|%25s|%35s|%6d|", p[i].name, p[i].address, p[i].seats);
			printf("\n");
			for(j=0;j<70;j++) {
				printf("-");
			}
		}
	}
	
	if(count == 0) {
		printf("\nKhong co rap nao phu hop");
	}
}

void saveFile(Cinema *p) {
	FILE *fp;
	fp = fopen("cinema.dat", "wb");
	fwrite(p, sizeof(Cinema), 4, fp);
	fclose(fp);
}

void readFile(Cinema *p) {
	FILE *fp;
	fp = fopen("cinema.dat", "rb");
	fread(p, sizeof(Cinema), 4, fp);
	fclose(fp);
}


Theo dõi cập nhật nội dung học trên Youtube


Bình luận



Chia sẻ từ lớp học

Phân Loại Bài Viết

Danh Sách Bài Học

Quick Quizzz!!!

User ImageUser ImageUser Image
User ImageUser ImageUser Image
User ImageUser ImageUser Image
User ImageUser ImageUser Image
User ImageUser ImageUser Image
User Image
User ImageUser ImageUser Image
>> Hiển Thị Quizzz
Đã sao chép!!!