IMG-LOGO
Trang Chủ Lập Trình C [Share Code] Quản lý tranh - quản lý gallery - Lập trình C - 2020-11-03
×

Lý Thuyết

01 - Nhập môn cho người mới bắt đầu - Lập trình C 02.Flowchart & ví dụ viết flowchart của phương trình bậc 1 - Lập Trình C 03. Hướng dẫn cài đặt môi trường lập trình C - Lập trình C 04. Tìm hiểu biến & kiểu dữ liệu trong C - Lập trình C 05. Toán tử & biểu thức login trong C - Lập Trinh C 06. Nhập dữ liệu trong C (scanf, printf) - Lập trình C 07. Nhập xuất dữ liệu phần 2 - Lập Trình C 08. Tìm hiểu if, else, switch trong lập trình C - Lập Trình C 09. Tìm hiểu về vòng lặp for trong C - Lập trình C 10. Tìm hiểu while, do..while trong lập trình C - lập Trình C 11. Tìm hiểu mảng 1 chiều trong C - Lập trình C 12. Tìm hiểu mảng 2 chiều - Lập Trình C 15. Tìm hiểu pointer phần 3 - Lập trình C 14. Tìm hiểu pointer phần 2 - Lập Trình C 13. Tìm hiểu pointer phần 1 - Lập Trình C 16. Tìm hiểu function trong lập trình C - Lập Trình C 17. Tìm hiểu string trong lập trình C - Lập Trình C 18. Struct trong C - Lập Trình C 1000 Bài tập C - Lập Trình C BT02 - Hướng dẫn chữa bài Fibonaci - Lập Trình C BT03. Ôn luyện - Sắp xếp trong C, con trỏ cấp phát động 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

Bài Tập

Bài tập - Chuyển flowchart sang code - Lập trình C Bài tập - Ôn tập biến + kiểu dữ liệu + scanf & printf - Lập trình C Bài tập - Nhập xuất thông tin sinh viên - Lập trình C Bài tập - Giải phương trình bậc 2 - Lập trình C Bài tập - Giải hệ phương trình bậc nhất nhất 2 ẩn - Lập trình C Bài tập - Tìm min & max - số lớn nhất & nhỏ nhất - Lập trình C Loop - Viết chương trình Reserve chuỗi - Lập trình C Loop - Switch case - Chương trình quản lý sinh viên - Lập trình C Fibonacci - Lập trình C Ôn tập While, Do .. While, For lập trình C - Lập trình C Tính tổng mảng N phần tử - Lập trình C Bài tập ôn luyện mảng 1 chiều - Lập trình C Bài tập ôn tập String - Lập trình C Bài tập ôn luyện Function - Lập trình C Tách phần tử chẵn + lẻ trong C - Lập trình mảng trong C - Lập trình C Bài toán sắp xếp trong C - Lập trình C Bài toán pointer đầu tiên - Hello pointer - Lập trình C Bài tập pointer nâng cao - cấp phát động - Lập trình C Bài tập - Quản lý hình chữ nhật - struct trong C - Lập trình C Tìm kiếm chuỗi trong chuỗi - Lập trình C Bài tập FILE - Lập trình C Bài tập - ôn tập nhật xuất và biểu tức toán học - Lập trình C Bài tập - Giải phương trình bậc 1 - giải phương trình bậc nhất - Lập trình C Ôn tập function - viết chương trình máy tính - Lập trình C Bài tập tổng quát - quản lý mảng số nguyên - Lập trình C Bài tập nâng cao pointer - Lập trình C

Examination & Test

[Test] Kiểm tra 60 phút - if, else, switch, loop trong C - Lập trình C [Test] Kiểm tra 60 phút - Lập trình C

Tài Liệu Học

C - Basic Syntax(Cú pháp cơ bản)




[Share Code] Quản lý tranh - quản lý gallery - Lập trình C - 2020-11-03

by GokiSoft.com - 19:28 03/11/2020 1,705 Lượt Xem



Phat trien du an : Quan ly tranh
Cách làm: Làm từng bước, từ trên xuống dưới
1.Dữ liệu
2.Tao menu chuong trinh => OK
3.Nhap thong tin tranh theu
	- Chu y: de tranh TH ko nhap dc string (mang char)=>
	fflush(stdin);fflush(stdout);
4.Sap xep, thong ke, hien thi
	- Chung ta co the su dung 3 function khac nhau de giai quyet yeu cau nay
	- sapxep + thongke + hienthi



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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef struct tranhtheu_st {
	char ten[30], tacgia[30];
	int chieudai, chieurong, giaban;
} tranhtheu;

void showMenu();
void input(tranhtheu *p);
void sort(tranhtheu *p);
void statistic(tranhtheu *p);
void display(tranhtheu *p);
//Cach don gian trong lap trinh
//return : 0 -> size nho
//		   1 -> size Trung Binh
//		   2 -> size LON
int checkSize(int dt);
void search(tranhtheu *p);

void showHeader();
void showFooter();

void saveFile(tranhtheu *p);
void readFile(tranhtheu *p);

int main(int argc, char *argv[]) {
	tranhtheu dsTranh[3];
	int choose;
	
	do {
		showMenu();
		scanf("%d", &choose);
		
		switch(choose) {
			case 1:
				input(dsTranh);
				break;
			case 2:
				sort(dsTranh);
				display(dsTranh);
				statistic(dsTranh);
				break;
			case 3:
				search(dsTranh);
				break;
			case 4:
				saveFile(dsTranh);
				break;
			case 5:
				readFile(dsTranh);
				break;
			case 6:
				printf("\nThoat!!! byebye ...");
				break;
			default:
				printf("\nNhap lai!!!");
				break;
		}
	} while(choose != 6);
	
	return 0;
}

void showMenu() {
	printf("\n1.Nhap danh sach tranh");
	printf("\n2. Sap xep, thong ke, hien thi");
	printf("\n3. Tim buc tranh theo gia ban");
	printf("\n4. Ghi vao file tranhtheu.dat");
	printf("\n5. Doc du lieu tu file tranhtheu.dat");
	printf("\n6. Thoat");
	printf("\nChoose: ");
}

void input(tranhtheu *p) {
	//Nhap thong tin tranh theu
	int i;//bien su dung cho loop >> for
	for(i=0;i<3;i++) {
		printf("\nNhap thong tin buc tranh so : %d", i + 1);
		printf("\nTen: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ten);
		
		printf("\nTac gia: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].tacgia);
		
		printf("\nChieu dai: ");
		fflush(stdin);fflush(stdout);
		scanf("%d", &p[i].chieudai);
		
		printf("\nChieu rong: ");
		fflush(stdin);fflush(stdout);
		scanf("%d", &p[i].chieurong);
		
		printf("\nGia ban: ");
		fflush(stdin);fflush(stdout);
		scanf("%d", &p[i].giaban);
	}
}

void sort(tranhtheu *p) {
	int i, j;//su dung trong vong lap >> for
	int s1, s2;
	for(i=0;i<2;i++) {
		//so sanh dien tich tai vi tri i vs cac vi tri j 
			//=> hoan doi vi tri dien tich max ve vi tri i
		//dien tich i
		s1 = p[i].chieudai * p[i].chieurong;
		for(j=i+1;j<3;j++) {
			//tinh dien tich vi tri j
			s2 = p[j].chieudai * p[j].chieurong;
			//so sanh dien tich tai vi tri i & j
			//do sap xep giam dan
			if(s1 < s2) {
				//doi cho vi tri cua i & j
				tranhtheu tmp = p[i];
				p[i] = p[j];
				p[j] = tmp;
			}
		}
	}
}

void statistic(tranhtheu *p) {
	//Tai moi vi tri cua mang p => 1 kho LON, TRUNG BINH, NHO
	//Y tuong: Su dung 1 mang count[3] => khoi tao gia tri bang 1
		//Y nghia: Tai moi vi tri se la 1 kho.
	int count[3];
	//khoi tao du lieu
	int i;
	for(i=0;i<3;i++) {
		count[i] = 1;
	}
	//Bai toan: Dem so lan xuat hien cua kho LON, TRUNG BINH, NHO trong mang p
	//Giai thuat nhu sau:
		//Don mang du lieu cua count => vi tri dau tien se luu tong so kho LON, TRUNG BINH, NHO
		//Vi tri sau => khi kiem tra trung => reset ve 0
	int j;
	int s1, s2, size1, size2;
	for(i=0;i<2;i++) {
		//Kiem tra neu count[i] = 0 => khong can kiem tra vi tri nay nua
		//Da dc su dung cho lan truoc roi
		if(count[i] == 0) continue;
		//Lay dc ten kho tai vi tri i.
		//Su dung 1 function => kiem tra ten kho.
		s1 = p[i].chieudai * p[i].chieurong;
		//size i
		size1 = checkSize(s1);
		for(j=i+1;j<3;j++) {
			//kiem tra count[j] == 0 => ko can kiem tra nua
			if(count[j] == 0) continue;
			s2 = p[j].chieudai * p[j].chieurong;
			size2 = checkSize(s2);
			if(size1 == size2) {
				count[i]++;
				count[j]--;
			}
		}
	}
	
	//Hien thi du lieu thong ke
	for(i=0;i<3;i++) {
		if(count[i] > 0) {
			//Hien thi du lieu
			s1 = p[i].chieudai * p[i].chieurong;
			size1 = checkSize(s1);
			
			switch(size1) {
				case 0:
					printf("\n+ Kho nho co %d buc tranh", count[i]);
					break;
				case 1:
					printf("\n+ Kho trung binh co %d buc tranh", count[i]);
					break;
				case 2:
					printf("\n+ Kho lon co %d buc tranh", count[i]);
					break;
			}
		}
	}
}

int checkSize(int dt) {
	if(dt >= 10000) {
		return 2;
	}
	if(dt >= 2000) {
		return 1;
	}
	return 0;
}

void display(tranhtheu *p) {
	int i, s, size;
	showHeader();
	
	for(i=0;i<3;i++) {
		s = p[i].chieudai * p[i].chieurong;
		size = checkSize(s);
		
		switch(size) {
			case 0:
				printf("\n%5d||%15s||%10s||%5d||%5d||%5d||%10s", 
					i+1, p[i].ten, p[i].tacgia, p[i].chieudai, p[i].chieurong,p[i].giaban, "Nho");
				break;
			case 1:
				printf("\n%5d||%15s||%10s||%5d||%5d||%5d||%10s", 
					i+1, p[i].ten, p[i].tacgia, p[i].chieudai, p[i].chieurong,p[i].giaban, "Trung Binh");
				break;
			case 2:
				printf("\n%5d||%15s||%10s||%5d||%5d||%5d||%10s", 
					i+1, p[i].ten, p[i].tacgia, p[i].chieudai, p[i].chieurong,p[i].giaban, "Lon");
				break;
		}
	}
	showFooter();
}

void showHeader() {
	int i;
	printf("\n");
	for(i=0;i<67;i++) {
		printf("-");
	}
	printf("\nDanh sach tranh");
	printf("\n");
	for(i=0;i<67;i++) {
		printf("-");
	}
	printf("\n%5s||%15s||%10s||%5s||%5s||%5s||%10s", "STT", "Ten", "Tac Gia", "Dai", "Rong","Gia Tien", "Kho");
}
void showFooter() {
	int i;
	printf("\n");
	for(i=0;i<67;i++) {
		printf("-");
	}
}

void search(tranhtheu *p) {
	int i, s, size;
	int price, count = 0;//deu so phan tu tim dc
	printf("\nNhap gia ban toi da: ");
	scanf("%d", &price);
	
	for(i=0;i<3;i++) {
		if(price >= p[i].giaban) {
			//Tim thay
			if(count == 0) {
				//Hien thi header
				showHeader();
			}
			count++;
			s = p[i].chieudai * p[i].chieurong;
			size = checkSize(s);
			
			switch(size) {
				case 0:
					printf("\n%5d||%15s||%10s||%5d||%5d||%5d||%10s", 
						i+1, p[i].ten, p[i].tacgia, p[i].chieudai, p[i].chieurong,p[i].giaban, "Nho");
					break;
				case 1:
					printf("\n%5d||%15s||%10s||%5d||%5d||%5d||%10s", 
						i+1, p[i].ten, p[i].tacgia, p[i].chieudai, p[i].chieurong,p[i].giaban, "Trung Binh");
					break;
				case 2:
					printf("\n%5d||%15s||%10s||%5d||%5d||%5d||%10s", 
						i+1, p[i].ten, p[i].tacgia, p[i].chieudai, p[i].chieurong,p[i].giaban, "Lon");
					break;
			}
		}
	}
	
	if(count > 0) {
		showFooter();
	} else {
		printf("\nKhong co buc tranh nao ban voi gia nhu vay");
	}
}

void saveFile(tranhtheu *p) {
	//Mo ket noi toi file => chuan bi ghi du lieu
	FILE *fp = fopen("tranhtheu.dat", "wb");
	//Ghi du lieu
	fwrite(p, sizeof(tranhtheu), 3, fp);
	//Dong ket noi
	fclose(fp);
}

void readFile(tranhtheu *p) {
	//Mo ket noi toi file => chuan bi ghi du lieu
	FILE *fp = fopen("tranhtheu.dat", "rb");
	//Doc du lieu
	fread(p, sizeof(tranhtheu), 3, fp);
	//Dong ket noi
	fclose(fp);
}





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


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

Đã sao chép!!!