By GokiSoft.com| 20:21 02/10/2023|
Lập Trình C

Quản lý đồ điện tử - Lập trình C

1. Dữ liệu[1]

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

-struct spdientu_st: char ten[20], char ma[15], long int gia,char nhasx[20]

-     Trong hàm main() khai báo một mảng bao gồm 3 sản phẩm điện tử với cấu trúc ở trên có tên là "danhsachsp".

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

  1. Nhap du lieu cua tung san pham.

  2. Sap xep va hien thi thong tin chi tiet cua tung san pham theo ten (Z->A), thong ke theo nha san xuat.

  3. Tim  san pham theo nha san xuat

  4. Ghi vao tap tin nhi phan spdientu.dat.

  5. Thoat.

3.  Nhập dữ liệu của từng sản phẩm[ 4 ]

Khi chọn 1 từ Menu, thực hiện nhập dữ liệu của từng sản phẩm như yêu cầu dưới đây:

Ví dụ: (chữ in đậm là dữ liệu được nhập vào từ người chạy chương trình)

Nhap san pham 1:

Ten: Tivi LCD

Ma: KDL 40Ex520

Nha san xuat: Sony

Gia: 18000000

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 spdientu_st. 

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

4. Sắp xếp, và hiển thị thông tin chi tiết của từng sản phẩm theo tên(Z->A), thống kê theo nhà sản xuất.[ 6.5]

Khi chọn 2 từ Menu, sắp xếp các sản phẩm theo tên nhà sản xuất từ Z-> A sau đó hiển thị thông tin chi tiết của các sản phẩm như dưới đây:

STT||Ten||Ma||Nha San xuat||Gia

 001||Tivi LCD||KDL 40Ex520||Sony||18000000

 002||Iphone 5||IP5||Apple||15000000

 003||Camera||DSC-S3000|| Sony||4200000

Hiển thị thống kê số sản phẩm theo nhà sản xuất như dưới đây:

Nha san xuat Sony co 2  san pham

Nha san xuat Apple co 1  san pham

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à con trỏ cấu trúc spdientu_st.

5. Tìm  sản phẩm theo nhà sản xuất[4]

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

  • Hiển thị  “Nhap nha san xuat: ” 

  • Tìm và hiển thị thông tin chi tiết của tất cả các sản phẩm của nhà sản xuất này theo định dạng như trên câu hỏi 4. Trong trường hợp không tìm thấy sản phẩm nào, hiển thị thông báo  “Khong co san pham của nha san xuat nay”

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à con trỏ cấu trúc spdientu_st.

6. Ghi vào tập tin nhị phân spdientu.dat.[3]

Khi chọn 4 từ Menu, ghi tất cả thông tin của từng sản phẩm vào file nhị phân  “spdientu.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 spdientu_st. 

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

  • Lưu trữ tất cả thông tin của từng sản phẩm vào trong file này.  

  • Đóng file. 

7. Exit[ 0.5 ]

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

Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

TRẦN VĂN ĐIỆP [Teacher]
TRẦN VĂN ĐIỆP

2020-10-27 12:26:02



#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 SPDienTu_ST {
	char ten[20];
	char ma[15];
	long int gia;
	char nhasx[20];
} SPDienTu;

void showMenu();
void nhapDuLieu(SPDienTu *p);
void sapXep(SPDienTu *p);
void hienThi(SPDienTu *p);
void thongKe(SPDienTu *p);
void timKiem(SPDienTu *p);

int main(int argc, char *argv[]) {
	SPDienTu danhsachsp[3];
	int select, i;
	
	do {
		showMenu();
		fflush(stdin);fflush(stdout);
		scanf("%d", &select);
		
		switch(select) {
			case 1: {
				nhapDuLieu(danhsachsp);
				break;
			}
			case 2:{
				//Sap xep mang
				sapXep(danhsachsp);
				//Hien thi thong tin ra nguoi dung
				hienThi(danhsachsp);
				//thong ke
				thongKe(danhsachsp);
				break;
			}
			break;
			case 3:
				timKiem(danhsachsp);
			break;
			case 4:
			
			break;
			case 5:
				printf("\nThoat chuong trinh!!!");
			break;
			default:
				printf("\nNhap sai!!!");
			break;	
		}
	}while(select != 5);
	
	return 0;
}


void showMenu() {
	printf("\n1. Nhap du lieu cua tung san pham");
	printf("\n2. Sap xep va hien thi thong tin chi tiet");
	printf("\n3. Tim san pham theo nha san xuat");
	printf("\n4. Ghi vao tap tin nhi phan");
	printf("\n5. Thoat");
	printf("\nnhap lua chon: ");
}

void nhapDuLieu(SPDienTu *p) {
	int i;
	printf("\nNhap du lieu cho tung san pham: ");	
	for(i = 0; i < 3; i++) {
		printf("\nNhap San Pham Thu %d:",i+1);
		printf("\nNhap ten: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ten);
//				scanf("%s", p[i].ten);
		printf("\nNhap Ma: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ma);
		printf("\nNhap Nha san xuat: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].nhasx);
		printf("\nNhap Gia: ");
		scanf("%ld", &p[i].gia);
	}
}

void sapXep(SPDienTu *p) {
	int i, j;
	for(i=0;i<2;i++) {
		for(j=i+1;j<3;j++) {
			int cmp = strcmp(p[i].ten, p[j].ten);
			if(cmp < 0) {
				//doi vi tri 2 phan tu i, j
				SPDienTu tmp = p[i];
				p[i] = p[j];
				p[j] = tmp;
			}
		}
	}
}

void hienThi(SPDienTu *p) {
	printf("\n%5s||%15s||%5s||%20s||%5s", "STT", "Ten", "Ma", "Nha San Xuat", "Gia");
	int i;
	for(i=0;i<3;i++) {
		printf("\n%5d||%15s||%5s||%20s||%5d", i+1, p[i].ten, p[i].ma, p[i].nhasx, p[i].gia);
	}
}

void thongKe(SPDienTu *p) {
	int count[3];
	int i, j;
	
	for(i=0;i<3;i++){
		count[i] = 1;
	}
	for(i=0;i<2;i++){
		if(count[i] == 0) continue;
		for(j=i+1;j<3;j++) {
			if(count[j] == 0) continue;
			
			int cmp = strcmp(p[i].nhasx, p[j].nhasx);
			if(cmp==0) {
				count[i]++;
				count[j]--;
			}
		}
	}
	for(i=0;i<3;i++){
		if(count[i] > 0) {
			printf("\nNha san xuat %s co %d san pham", p[i].nhasx, count[i]);
		}
	}

}

void timKiem(SPDienTu *p) {
	printf("\nNhap ten nha san xuat: ");
	char search[30];
	fflush(stdin);fflush(stdout);
	gets(search);
	
	int i, count = 0;
	for(i=0;i<3;i++) {
		int cmp = strcmp(p[i].nhasx, search);
		if(cmp == 0) {
			if(count == 0) {
				printf("\n%5s||%15s||%5s||%20s||%5s", "STT", "Ten", "Ma", "Nha San Xuat", "Gia");
			}
			count++;
			printf("\n%5d||%15s||%5s||%20s||%5d", i+1, p[i].ten, p[i].ma, p[i].nhasx, p[i].gia);
		}
	}
	
	if(count == 0) {
		printf("\nKhong tim thay nha san xuat nao tuong ung");
	}
}



TRẦN VĂN ĐIỆP [Teacher]
TRẦN VĂN ĐIỆP

2020-10-24 13:10:44



#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 SPDienTu_ST {
	char ten[20];
	char ma[15];
	long int gia;
	char nhasx[20];
} SPDienTu;

void showMenu();
void nhapDuLieu(SPDienTu *p);

int main(int argc, char *argv[]) {
	SPDienTu danhsachsp[3];
	int select, i;
	
	do {
		showMenu();
		scanf("%d", &select);
		
		switch(select) {
			case 1: {
				nhapDuLieu(danhsachsp);
				break;
			}
			case 2:
				//Sap xep mang
				//Hien thi thong tin ra nguoi dung
			break;
			case 3:
			
			break;
			case 4:
			
			break;
			case 5:
				printf("\nThoat chuong trinh!!!");
			break;
			default:
				printf("\nNhap sai!!!");
			break;	
		}
	}while(select != 5);
	
	return 0;
}


void showMenu() {
	printf("\n1. Nhap du lieu cua tung san pham");
	printf("\n2. Sap xep va hien thi thong tin chi tiet");
	printf("\n3. Tim san pham theo nha san xuat");
	printf("\n4. Ghi vao tap tin nhi phan");
	printf("\n5. Thoat");
	printf("\nnhap lua chon: ");
}

void nhapDuLieu(SPDienTu *p) {
	int i;
	printf("\nNhap du lieu cho tung san pham: ");	
	for(i = 0; i < 3; i++) {
		printf("\nNhap San Pham Thu %d:",i+1);
		printf("\nNhap ten: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ten);
//				scanf("%s", p[i].ten);
		printf("\nNhap Ma: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ma);
		printf("\nNhap Nha san xuat: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].nhasx);
		printf("\nNhap Gia: ");
		scanf("%ld", &p[i].gia);
	}
}



Triệu Văn Lăng [T2008A]
Triệu Văn Lăng

2020-10-12 08:27:53



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void showMenu() {
	printf("\n1. Nhap du lieu tung sp");
	printf("\n2. Hien thi thong tin, thong ke theo nha san xuat");
	printf("\n3. Tim sp theo nsx");
	printf("\n4. Luu sp");
	printf("\n5. Thoat");
	printf("\nMoi chon");
}

typedef struct spdientu_ST{
	char ten[20], ma[15], nhasx[20];
	long int gia;
} spdientu;
int length=3;
void inputspList(spdientu *p){
	int i;
	for(i=0;i<length;i++) {
	printf("\nSan pham thu %d", i+1);
	printf("\nten sp ");
	fflush(stdin);fflush(stdout);
	gets(p[i].ten);
	printf("\nMa ");
	fflush(stdin);fflush(stdout);
	gets(p[i].ma);
	printf("\nNha sx ");
	fflush(stdin);fflush(stdout);
    gets(p[i].nhasx);
    printf("\nGia ");
    scanf("%d",&p[i].gia);
    }
}

void sxsp(spdientu *p) {
	int i, j;
	
	for(i=0;i<length-1;i++) {
		for(j=i+1;j<length;j++) {
			int cmp=strcmp(p[i].ten, p[j].ten);
			if(cmp>0) {
				spdientu tmp=p[i];
				p[i]=p[j];
				p[j]=tmp;
			}
		}
	}
}

void displaysp(spdientu *p) {
	int i, stt;
	
	printf("\n||%20s||%15s||%20s||%20d", "ten", "ma", "nhasx", "gia");
	for(i=0;i<length;i++) {
			printf("\n||%20s||%15s||%20s||%20d", p[i].ten, p[i].ma, p[i].nhasx, p[i].gia );
		
	}
	
}

void searchsp(spdientu *p) {
	int i;
	char j;
	printf("\nNhap nsx ");
	fflush(stdin);fflush(stdout);
	gets(p[j].nhasx);
	for(i=0;i<length;i++) {
		if(p[j].nhasx == p[i].nhasx) {
			printf("\n%10d||%20s||%15s||%20s||%20d", p[i].ten, p[i].ma, p[i].nhasx, p[i].gia );

		} else {
			printf("\nKhong co nsx nay");
		}
	}
}

void savespdientuList(spdientu *p) {
	FILE *fp;
	fp=fopen("spdientu.dat","wb");
	fwrite(p, sizeof(spdientu), length, fp);
	fclose(fp);
}
int main(int argc, char *argv[]) {
	spdientu danhsachspList[length];
	int choose;
	do {
		showMenu();
		scanf("%d",&choose);
		switch(choose) {
			case 1:
				inputspList(danhsachspList);
				break;
			case 2:
				sxsp(danhsachspList);
				displaysp(danhsachspList);
				break;
			case 3:
				searchsp(danhsachspList);
				break;
			case 4:
				savespdientuList(danhsachspList);
				break;
			case 5:
				printf("\nThoat");
				break;
			default:
				printf("\nBan nhap sai roi!!!nhap lai");
				break;
		} 
	} while(choose!=5);
	return 0;
}



Nguyễn Hữu Hiếu [T2008A]
Nguyễn Hữu Hiếu

2020-10-03 13:00:51



#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 spdientu_st {
	char ten[20], ma[15], nhasx[20];
	int gia;
} spdientu;
void showMenu();
void input(spdientu *p);
void sapxep(spdientu *p);
void hienthi(spdientu *p);
void thongke(spdientu *p);
void save(spdientu *p);
void tim(spdientu *p);

int main(int argc, char *argv[]) {
	int choose;
	spdientu spdientuList[3];
	do {
		showMenu();
		scanf("%d", &choose);
		switch(choose) {
			case 1:
				input(spdientuList);
				break;
			case 2:
				sapxep(spdientuList);
				hienthi(spdientuList);
				thongke(spdientuList);
				break;
			case 3:
				tim(spdientuList);
				break;
			case 4:
				save(spdientuList);
				printf("\nDa luu file!!!");
				break;
			case 5: 
				printf("\nThoat!!!");
				break;	
			default:
				printf("Nhap sai!!!");
				break;
				
		}
		
		
	} while (choose != 5);

	return 0;
}

void showMenu() {
	printf("\n1. Nhap du lieu: ");
	printf("\n2. Sap xep, hien thi: ");
	printf("\n3. Tim san pham theo nha SX: ");
	printf("\n4. Luu tap tin dang .dat: ");
	printf("\n5. Thoat:");
	printf("==============================");
	printf("\nChon choose: ");
}

void input(spdientu *p) {
	int i;
	for(i=0;i<3;i++) {
		printf("\nNhap san pham thu %d", i+1);
		printf("\nNhap ten: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ten);
		printf("\nNhap ma: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].ma);
		printf("\nNhap nha SX: ");
		fflush(stdin);fflush(stdout);
		gets(p[i].nhasx);
		printf("\nNhap gia:");
		fflush(stdin);fflush(stdout);
		scanf("%d", &p[i].gia);
	}
}

void sapxep(spdientu *p) {
	int i,j;
	spdientu temp;
	for(i=0;i<2;i++) {
		for(j=i+1;j<3;j++) {
			if(strcmp(p[i].nhasx, p[j].nhasx) == -1) {
				temp = p[i];
				p[i] = p[j];
				p[j] = temp;
			}
		}
	}
}

void hienthi(spdientu *p) {
	printf("\nDanh sach san pham:");
	int i;
	for(i=0;i<70;i++) {
		printf("=");
	}
	printf("\n%3s||%10s||%10s||%10s||%10s", 
		"STT", "Ten", "Ma", "Nha SX", "Gia");
	for(i=0;i<3;i++) {
		printf("\n%3d||%10s||%10s||%10s||%10d", 
			i+1, p[i].ten, p[i].ma, p[i].nhasx, p[i].gia);
	}
}

void thongke(spdientu *p) {
	int i,j,count[3] = {1,1,1};
	for(i=0;i<2;i++) {
		for(j=i+1;j<3;j++) {
			if (strcmp(p[i].nhasx, p[j].nhasx) == 0) {
				count[i]++;
				count[j]--;
			}
		}
	}
	for(i=0;i<3;i++){
		if(count[i] != 0) {
			printf("\nNha SX %s co %d san pham", p[i].nhasx, count[i]);
		}
	}
}

void save(spdientu *p) {
	FILE *fp;
	fp = fopen("D:\\Quanlydodientu.dat", "w");
	fwrite(p,sizeof(spdientu),3,fp);
	fclose(fp);
	
}

void tim(spdientu *p) {
	int i, j, count = 0, m;
	char k[30];
	printf("\nNhap nha san xuat can tim: ");
	fflush(stdin); fflush(stdout);
	gets(k);
	for(i=0;i<3;i++) {
		m = strcmp(p[i].nhasx, k);
		if (m == 0) {
			printf("\nSan pham cua nha san xuat %s", p[i].nhasx);
			printf("\n%3d||%10s||%10s||%10s||%10d", 
				i+1, p[i].ten, p[i].ma, p[i].nhasx, p[i].gia);
			count++;
		}
	}
	if (count == 0) {
			printf("\nKhong co san pham.");
		}
	
	
}




Nguyễn Tiến Đạt [T2008A]
Nguyễn Tiến Đạt

2020-10-03 01:48:35



//Assignment Quan li do dien tu(checked)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct spdientu_st{
	 char ten[20],ma[15],nhasx[20];
	 long int gia;
}App;

void Menu(){
	printf("\n1.Nhap du lieu cua tung san pham.");
	printf("\n2.Sap xep va hien thi thong tin chi tiet cua tung san pham theo ten(Z->A), thong ke theo nha san xuat.");
	printf("\n3.Tim san pham theo nha san xuat.");
	printf("\n4.Ghi vao tap tin nhi phan spdientu.dat.");
	printf("\n5.Thoat.");
}

void nhapsanpham(App *p){
	int i;
	for(i=0;i<3;i++){
		fflush(stdin);fflush(stdout);
		printf("\nNhap san pham %d:",i+1);
		fflush(stdin);fflush(stdout);
		printf("\nTen: ");
		gets(p[i].ten);
		fflush(stdin);fflush(stdout);
		printf("\nMa: ");
		gets(p[i].ma);
	    fflush(stdin);fflush(stdout);
		printf("\nNha san xuat: ");
		gets(p[i].nhasx);
		fflush(stdin);fflush(stdout);
		printf("\nGia: ");
		scanf("%ld",&p[i].gia);
		fflush(stdin);fflush(stdout);		
	}
}

void hiensanpham(App *p){
	int i,j;
	for(i=0;i<2;i++){
		for(j=i+1;j<3;j++){
			int cmp=strcmp(p[i].ten,p[j].ten);
			if(cmp<0){
				App temp=p[i];
				p[i]=p[j];
				p[j]=temp;
			}
		}
	}
	printf("\n%-5s||%-30s||%-20s||%-30s||%-12s","STT","Ten","Ma","Nha san xuat","Gia");
	for(i=0;i<3;i++){
		printf("\n00%d  ||%-30s||%-20s||%-30s||%-12ld",i+1,p[i].ten,p[i].ma,p[i].nhasx,p[i].gia);
	}
	printf("\n");
	int count[3]={1,1,1};
	for(i=0;i<2;i++){
		if(count[i]==0){
			continue;
		}
		for(j=i+1;j<3;j++){
			if(count[j]==0){
				continue;
			}
			int a=strcmp(p[i].nhasx,p[j].nhasx);
			if(a==0){
				count[i]++;
				count[j]--;
			}
		}
	}
	for(i=0;i<3;i++){
		if(count[i]!=0){
			printf("\nNha san xuat %s co %d san pham",p[i].nhasx,count[i]);
		}
	}
	printf("\n");
}

void timnhasanxuat(App *p){
	int i;
	int count=0;
	char nsx[50];
	fflush(stdin);fflush(stdout);
	printf("\nNhap nha san xuat can tim: ");
	gets(nsx);
	fflush(stdin);fflush(stdout);
	for(i=0;i<3;i++){
		int cmp=strcmp(nsx,p[i].nhasx);
		if(cmp==0){
			count++;
	    }
	}
	if(count!=0){
		printf("\n%-5s||%-30s||%-20s||%-30s||%-12s","STT","Ten","Ma","Nha san xuat","Gia");
	}
	count=0;
	for(i=0;i<3;i++){
		int cmp=strcmp(nsx,p[i].nhasx);
		if(cmp==0){
			count++;
			printf("\n00%d  ||%-30s||%-20s||%-30s||%-12ld",i+1,p[i].ten,p[i].ma,p[i].nhasx,p[i].gia);
		}
	}
	if(count==0){
		printf("\nKhong co san pham cua nha san xuat nay");
	}
	printf("\n");
}

void ghithongtin(App *p){
	FILE *fp;
	fp=fopen("spdientu.dat","wb");
	fread(p, sizeof(App), 3, fp);
	fclose(fp);
}

int main(){
	App danhsachsp[3];
	int choose;
	while(1){
		Menu();
		printf("\nLua chon chuong trinh: ");
		scanf("%d",&choose);
		switch(choose){
			case 1:
				nhapsanpham(danhsachsp);
			break;	
			case 2:
				hiensanpham(danhsachsp);
			break;	
			case 3:
				timnhasanxuat(danhsachsp);
			break;	
			case 4:
				ghithongtin(danhsachsp);
				printf("\nDa luu thanh cong!!\n");
			break;	
			case 5:
				printf("\nTam biet!!\n");
				exit(0);
			break;	
			default:
				printf("\nLoi cu phap, moi chon lai!!\n");
			break;	
		}
	}
}



Do Trung Duc [T2008A]
Do Trung Duc

2020-10-01 13:49:54



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

typedef struct spdientu_st{
	char ten[20], ma[15], nhasx[20];
	long int gia;	
} spdientu;

void menu();

void nhapdulieu(spdientu *t);

void sapxep(spdientu *t);

void hienthisapxep(spdientu *t);

void thongkesoluong(spdientu *t);

void timnhasanxuat(spdientu *t);

void ghidulieu(spdientu *t);

int main(int argc, char *argv[]) {
	int choose;
	spdientu danhsachsp[3];
	
	do{
		menu();
		
		printf("\nChon choose: ");
		scanf("%d", &choose);
		
		switch(choose){
			case 1:
				nhapdulieu(danhsachsp);
				break;
			
			case 2:
				sapxep (danhsachsp);
				hienthisapxep (danhsachsp);
				thongkesoluong(danhsachsp);
				break;
				
			case 3:
				timnhasanxuat (danhsachsp);
				break;
				
			case 4:
				ghidulieu(danhsachsp);
				break;
				
			case 5:
				printf("Ket thuc chuong trinh!!!");
				break;
			
			default:
				printf("Nhap sai choose!!!!");
				break;
			
		}
		
	}while(choose!=5);
	
	return 0;	
}


void menu(){
	printf("\n1.Nhap du lieu tung san pham");
	printf("\n2.Sap xep va hien thi thong tin chi tiet cua tung san pham theo ten (Z->A), thong ke theo nha san xuat");
	printf("\n3.Tim  san pham theo nha san xuat");
	printf("\n4.Ghi vao tap tin nhi phan spdientu.dat");
	printf("\n5.Thoat");
}

void nhapdulieu(spdientu *t){
	int a = 0;
	int i;
	for(i=0;i<3;i++){
		printf("\nNhap thong tin san pham thu %d", i+1);
		fflush(stdin), fflush(stdout);
		printf("\nTen: ");
		gets(t[i].ten);
		
		fflush(stdin), fflush(stdout);
		printf("\nMa: ");
		gets(t[i].ma);
		
		fflush(stdin), fflush(stdout);
		printf("\nNha san xuat: ");
		gets(t[i].nhasx);
		
		fflush(stdin), fflush(stdout);
		printf("\nGia: ");
		scanf("%d", &t[i].gia);	
		
		
		}		
	}
	
	void sapxep(spdientu *t){
		int i,j;
		for(i=0;i<2;i++){
			for(j=i+1;j<3;j++){
				int cmp = strcmp (t[i].ten, t[j].ten);
				if(cmp>0){
					spdientu tmp = t[i];
					t[i] = t[j];
					t[j] = tmp;	
				}			
			}
		}	
	}
	
	
	void hienthisapxep(spdientu *t){
		printf("\n|%10s|%20s|%15s|%20s|%15s|","STT","Ten", "Ma", "Nhasanxuat", "Gia");
		
		int i;
		for(i=0;i<3;i++){
		printf("\n|%10d|%20s|%15s|%20s|%15d|", i+1, t[i].ten, t[i].ma, t[i].nhasx,t[i].gia);
		}		
	}
	
	void thongkesoluong(spdientu *t){
		int i,j;
		int count[3] = {1,1,1};
			for(i=0;i<2;i++){
				if(count[i]==0){
					continue;
				}
				for(j=i+1;j<3;j++){
				if(count[j]==0){
					continue;
				}
				int cmp = strcmp(t[i].nhasx, t[j].nhasx);
				if(cmp==0){
					count[i]++;
					count[j]--;	
				}
				}
				
			}
				for(i=0;i<3;i++){
					if(count[i]!=0){
						printf("\nSo san pham cua nha san suat %s la: %d", t[i].nhasx, count[i] );
					}
				}
		}
	
	void timnhasanxuat(spdientu *t){
		char tennhasx[50];
		printf("\nNhap ten nha san xuat: ");
		fflush(stdin), fflush(stdout);
		gets(tennhasx);
		
		printf("\n|%10s|%20s|%15s|%20s|%15s|","STT","Ten", "Ma", "Nhasanxuat", "Gia");
		
		int i,cmp;
		int count = 0;
		for(i=0;i<3;i++){
			cmp = strcmp(tennhasx, t[i].nhasx);
			if(cmp==0){
				count++;
			printf("\n|%10d|%20s|%15s|%20s|%15d|", i+1, t[i].ten, t[i].ma, t[i].nhasx,t[i].gia);	
			}	
		}

		if(count==0){
			printf("\nKhong co san pham nao cua nha san xuat nay");
		}
		
	}
	
	
	void ghidulieu(spdientu *t){
		FILE *fp;
		fp = fopen("spdientu.dat","wb");
		fwrite(t, sizeof (spdientu), 3,fp);
		fclose(fp);
		
	}
	
	
	



An Văn Minh [T2008A]
An Văn Minh

2020-09-30 06:45:53



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct spdientu_st{	
	char ten[20];char ma[15];long int gia;char nhasx[20];
}SP;

void nhapdulieu(SP *p);
void sapxepdulieu(SP *p);
void hienthidulieu(SP *p);
void timkiemdulieu(SP *p);
void ghiteptin(SP *p);

int main(){
	SP danhsachsp[3];
	int a;
	while(a!=5){
	printf("\n===================MENU=====================");
	printf("\n1.Nhap du lieu tung san pham");
	printf("\n2.Sap xep va hien thi chi tiet tung san pham");
	printf("\n3.Tim san pham theo nha sx");
	printf("\n4.Ghi vao tap tin nhi phan spdientu.dat");
	printf("\n5.Thoat");
	printf("\nChon:");
	scanf("%d", &a);
	switch(a){
		case 1:
			nhapdulieu(danhsachsp);
	    	break;
		case 2:
			sapxepdulieu(danhsachsp);
			hienthidulieu(danhsachsp);
			break;
		case 3:
			timkiemdulieu(danhsachsp);
			break;
		case 4:
			ghiteptin(danhsachsp);
			break;
		case 5:
			printf("\nGoodbye!!!");
			break;
		default:
			printf("\nNhap sai!!!!!!");
			break;
	}
}
return 0;
}
void nhapdulieu(SP *p){
	int i;
	for(i=0;i<3;i++){
		printf("\nNhap du lieu san pham %d", i+1);
		printf("\nTen san pham: ");
		fflush(stdin);
		gets(p[i].ten);
		printf("\nMa san pham: ");
		fflush(stdin);
		gets(p[i].ma);
		printf("\nNha san xuat: ");
		fflush(stdin);
		gets(p[i].nhasx);
		printf("\nGia san pham: ");
		fflush(stdin);
		scanf("%d", &p[i].gia);
		
	}
}
void sapxepdulieu(SP *p){
	int i,j;
	for(i=0;i<2;i++){
		for(j=i+1;j<3;j++){
			int cmp = strcmp(p[i].nhasx,p[j].nhasx);
			if(cmp<0){
				SP temp=p[i];
				p[i]=p[j];
				p[j]=temp;
			}
		}
	}
}
void hienthidulieu(SP *p){
	int i;
	printf("\n%-3s||%-20s||%-15s||%-20s||%-15s||","STT","Ten","Ma","Nhasx","Gia");
	for(i=0;i<3;i++){
		printf("\n00%d||%-20s||%-15s||%-20s||%-15ld||", i+1,p[i].ten,p[i].ma,p[i].nhasx,p[i].gia);
	}
	printf("\n");
	int count[3]={1,1,1};
	for(i=0;i<2;i++){
		if(count[i]==0){
			continue;
		}
		for(int j=i+1;j<3;j++){
			if(count[j]==0){
				continue;
			}
			int a=strcmp(p[i].nhasx,p[j].nhasx);
			if(a==0){
				count[i]++;
				count[j]--;
			}
		}
	}
	for(i=0;i<3;i++){
		if(count[i]!=0){
			printf("\nNha san xuat %s co %d san pham",p[i].nhasx,count[i]);
		}
	}
}
void timkiemdulieu(SP *p){
	int found=0;
	int i;
	char nsx[50];
	fflush(stdin);fflush(stdout);
	printf("\nNhap nha san xuat can tim: ");
	gets(nsx);
	fflush(stdin);fflush(stdout);
	for(i=0;i<3;i++){
		int cmp=strcmp(nsx,p[i].nhasx);
		if(cmp==0){
			found++;
		}
	}
	if(found!=0){
		printf("\n%-3s||%-20s||%-15s||%-20s||%-15s||","STT","Ten","Ma","Nhasx","Gia");
	}
	found=0;
	for(i=0;i<3;i++){
		int cmp=strcmp(nsx,p[i].nhasx);
		if(cmp==0){
			printf("\n00%d||%-20s||%-15s||%-20s||%-15ld||", i+1,p[i].ten,p[i].ma,p[i].nhasx,p[i].gia);
			found++;
		}
	}
	if(found==0){
		printf("\nKhong co san pham nay.!");
	}
}	

void ghiteptin(SP *p){
	FILE *fp;
	fp=fopen("spdientu.dat","wb");
	fread(p, sizeof(SP), 3, fp);
	fclose(fp);
}