#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可以不写,这些是保存到文件里面的,如果要保存到文件里面去,文件名需要自己命名,实际情况可能会有些许不同