用c语言写一个简单的商品管理系统

#include <stdio.h>
#include <stdlib.h>
#define  LEN sizeof(Product)
typedef struct {
    int id;
    char name[50];
    float price;
} Product;

// 假设商品存储在一个全局数组中
#define MAX_PRODUCTS 100
Product products[MAX_PRODUCTS];
int totalProducts=0;
int count;
// 新增商品
void addproduct() {
    if (totalProducts>=MAX_PRODUCTS) {
        printf("商品数量已满,无法添加更多商品.\n");
        return;
    }
    read();
    totalProducts=count;
    Product newProduct;
    printf("请输入商品ID:\n");
    scanf("%d", &newProduct.id);
    printf("请输入商品名称:\n");
    scanf("%s", &newProduct.name);
    printf("请输入商品价格:\n");
    scanf("%f", &newProduct.price);
    products[totalProducts++]=newProduct;
    printf("商品添加成功!\n");
    count++;
    write();
} 

// 删除商品
void deleteproduct() {
    int id;
    read();
    totalProducts=count;
    printf("请输入要删除的商品ID:\n");
    scanf("%d", &id);
    int i;
    for (i=0; i<totalProducts;++i) {
        if (products[i].id==id) {
            while (i<totalProducts-1) {
                products[i]=products[i+1]; 
                ++i;
            }
            --totalProducts;//总数减少一个 
            count++;
            write();
            printf("商品删除成功!\n");
            return;
        }
    }
    printf("未找到ID为%d的商品\n", id);
}

// 修改商品
void modifyproduct() {
    int id;
    read();
    totalProducts=count;
    printf("请输入要修改的商品ID:\n");
    scanf("%d", &id);
    int i;
    for (i=0;i<totalProducts;++i) {
        if (products[i].id==id) {
            printf("请输入新的商品名称:\n");
            scanf("%s", products[i].name);
            printf("请输入新的商品价格:\n");
            scanf("%f", products[i].price);
            printf("商品修改成功!\n");
            write();
            return;
        }
    }
    printf("未找到ID为%d的商品。\n", id);
}

// 查询商品
void searchproduct() {
    int id;
    read();
    totalProducts=count;
    printf("请输入要查询的商品ID:\n");
    scanf("%d", &id);
    int i;
    for (i=0;i<totalProducts;++i) {
        if (products[i].id==id) {
            printf("商品名称:%s\n", products[i].name);
            printf("商品价格:%.2f\n", products[i].price);
            return;
        }
    }
    printf("未找到ID为%d的商品.\n", id);
}
void exitproduct(){
	
		printf("感谢你的使用\n");
		
}
void read(){
	FILE *fp;
	int i,m=0;
	fp=fopen("product.txt","rb");
	while(!feof(fp)){                                                
		if(fread(&products[m],LEN,1,fp)==1){
			m++;
		}
	}
	fclose(fp);
	count=m;
	return;
}
void write(){
	FILE *fp;
	int i,m=0;
	m=count;
	fp=fopen("product.txt","wb");
	for(i=0;i<m;i++){
		fwrite(&products[i],LEN,1,fp);
	}
	fclose(fp);
	return;
}
int main() {
    while(1) {
        printf("请选择操作:\n 1.添加商品\n 2.删除商品\n 3.修改商品\n 4.查询商品\n 5.退出系统\n");
        int choice;
        scanf("%d", &choice);
        switch(choice) {
            case 1: addproduct(); break;
            case 2: deleteproduct(); break;
            case 3: modifyproduct(); break;
            case 4: searchproduct(); break;
            case 5: exitproduct();return;
            default: printf("无效的选择,请重新输入!\n"); break;
        }
    }

    return 0;
}

这里面的read还有white可以不写,这些是保存到文件里面的,如果要保存到文件里面去,文件名需要自己命名,实际情况可能会有些许不同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值