thien

 avatar
anhhackta
c_cpp
a year ago
3.5 kB
8
Indexable
#include <stdio.h>
#include <string.h>
#define max 100

struct item {
    char name[100];
    char id[100];
    float price;
};

typedef struct item ITEM;

struct queue {
    ITEM A[max];
    int front, rear;
};

typedef struct queue QUEUE;

void Init(QUEUE &q) {
    q.front = 0;
    q.rear = -1;
}

int IsEmpty(QUEUE q) {
    if(q.front > q.rear) {
        return 1;
    }
    return 0;
}

int IsFull(QUEUE q) {
    if(q.rear == max - 1) {
        return 1;
    }
    return 0;
}



void search(QUEUE q, char *namesearch) {
    for(int i = q.front; i <= q.rear; i++) {
        if(strcmp(q.A[i].name, namesearch) == 0) {
            printf("tim thay mat hang\n");
            return;
        }
    }
    printf("khong tim thay\n");
}

void add(QUEUE &q, ITEM x) {
    if(IsFull(q) == 0) {
        q.rear++;
        q.A[q.rear] = x;
    }
}

void output(QUEUE q) {
    for(int i = q.front; i <= q.rear; i++) {
        printf("san phan thu [%d]: \n", i+1);
        printf("ten san pham: %s \n", q.A[i].name);
        printf("ID san phan: %s \n", q.A[i].id);
        printf("gia san pham: %.2f \n", q.A[i].price);
        printf("--------------------\n");
    }
}


void change(QUEUE &q) {
    char changename[100];
    char nameNew[100];
    printf("nhap ten san pham muon sua: ");
    fflush(stdin);
    gets(changename);
    for(int i = q.front; i <= q.rear; i++) {
        if(strcmp(changename, q.A[i].name) == 0) {
            printf("nhap ten san pham muon thay doi lai: ");
            fflush(stdin);
            gets(nameNew);
            strcpy(q.A[i].name, nameNew);
            return;
        }
    }
    printf("khong tim thay san pham de thay doi\n");
}

void Input(QUEUE &q, int n) {
    for(int i = 0; i < n; i++) {
        printf("Moi ban nhap info hang hoa thu [%d]: \n", i+1);
        ITEM x;
        printf("nhap ten hang: ");
        fflush(stdin);
        gets(x.name);
        printf("nhap id: ");
        fflush(stdin);
        gets(x.id);
        printf("nhap gia: ");
        fflush(stdin);
        scanf("%f", &x.price);
        add(q, x);
    }
}
void bubble_sort(QUEUE &q){
    ITEM swap;     
    for(int i = 0; i <= q.rear - 1; i++) {  
        for (int j = 0; j < q.rear - i; j++) {  
            if(q.A[j].price > q.A[j+1].price) {
                swap = q.A[j];
                q.A[j] = q.A[j+1];
                q.A[j+1] = swap;
            }
        }  
    }  
}  
void menu(QUEUE &q, char namesearch[100]) {
 int choose;
 do
 {
 printf("1. Them hang hoa\n");
 printf("2. Tim hang hoa\n");
 printf("3. Chinh sua hang hoa\n");
 printf("4. Xuat thong tin hang hoa\n");
 printf("5. Sap xep\n");
 printf("6. Thoat\n");
 printf("NHAP VAO LUA CHON: ");
 int n;
 scanf("%d", &choose);
 
    switch(choose)
    {
	
    case 1:     
        printf("Nhap so luong hang hoa: ");
        scanf("%d", &n);
        Input(q, n);
        break;
    case 2:      
        printf("nhap ten hang hoa muon tim: ");
        fflush(stdin);
        gets(namesearch);
        search(q, namesearch);
       break;
    case 3:      
        change(q);
       break;
    case 4: 
        output(q);
        break;
    case 5: bubble_sort(q);output(q);break;
    case 6: printf("exit");break;
	}
 } while (choose != 5);
}
int main() {
    QUEUE q;
    char namesearch[100];
    Init(q);
    menu(q, namesearch);
}
Editor is loading...
Leave a Comment