#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define LEN sizeof(struct commdity)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA comm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total
struct commdity
{
int num;
char name[15];
double price;
double count;
double total;
};
struct commdity comm[50];
void in();
void show();
void order();
void del();
void modify();
void menu();
void insert();
void total();
void search();
void textcolor(int color);
void menu()
{
system("cls");
void textcolor(int color);
printf("\n\n\n\n\n");
printf("\t\t-----------欢迎光临小王的自选超市-----------\n");
printf("\t\t|\t 0.退出 |\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t|\t 1.录入商品信息 *\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t|\t 2.查找商品信息 *\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t|\t 3.修改商品信息 *\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t|\t 4.插入商品信息 *\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t|\t 5.排序商品信息 *\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t|\t 6.统计商品信息 *\n");
printf("\t\t------------------------------------------------|\n\n");
printf("\t\t\t选择(0-6):");
}
int main()
{
int n;
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case 1:
in();break;
case 2:
search();break;
case 3:
modify();break;
case 4:
insert();break;
case 5:
order();break;
case 6:
total();break;
default:break;
}
getch();
menu();
scanf("%d",&n);
}
}
void textcolor(int color)
{
char text[10];
sprintf(text, "color %x", color);
system(text);
}
void in()
{
int i,m=0;
char ch[2];
FILE *fp;
if((fp=fopen("data.txt","ab+"))==NULL)
{
printf("can not open\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
m++;
}
fclose(fp);
if(m==0)
printf("没有发现!\n");
else
{
}
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("不能运行\n");
return;
}
for (i=0;i<m;i++)
fwrite(&comm[i],LEN,1,fp);
printf("输入?(y/n):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("编号:");
scanf("%d",&comm[m].num);
for(i=0;i<m;i++)
if(comm[i].num==comm[m].num)
{
printf("该记录已存在,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("商品名:");
scanf("%s",comm[m].name);
printf("单价:");
scanf("%lf",&comm[m].price);
printf("数量:");
scanf("%lf",&comm[m].count);
comm[m].total=comm[m].price*comm[m].count;
if(fwrite(&comm[m],LEN,1,fp)!=1)
{
printf("无法保存!");
getch();
}
else
{
printf("%s保存成功!\n",comm[m].name);
m++;
}
printf("继续?(y/n)");
scanf("%s",ch);
}
fclose(fp);
printf("成功!\n");
}
void search()
{
FILE *fp;
int snum,i,m=0;
char ch[2];
if((fp=fopen("data.txt","rb"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!feof(fp))
if(fread(&comm[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
printf("输入编号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm[i].num)
{
printf("已经找到记录,显示?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")
==0)
{
printf("编号 商品名称 单价 数量 总金额 \t\n");
printf(FORMAT,DATA);
break;
}
else
return;
}
if(i==m)
printf("没有记录!\n");
}
void modify()
{
FILE *fp;
int i,j,m=0,snum;
if((fp=fopen("data.txt","r++"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("请输入要修改的记录信息的编号!\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm[i].num)
break;
printf("已经找到该记录,可以进行修改!\n");
printf("商品名:");
scanf("%s",comm[i].name);
printf("单价:");
scanf("%lf",&comm[i].price);
printf("数量:");
scanf("%lf",&comm[i].count);
printf("成功!");
comm[i].total=comm[i].price*comm[i].count;
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("不能打开文件\n");
return;
}
for(j=0;j<m;j++)
if(fwrite(&comm[j],LEN,1,fp)!=1)
{
printf("不能保存~!");
getch();
}
fclose(fp);
}
void insert()
{
FILE *fp;
int i,j,k,m=0,snum;
if((fp=fopen("data.txt","r+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("请输入要插入记录位置!\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm[i].num)
break;
for(j=m-1;j>i;j--)
comm[j+1]=comm[j];
printf("输入新信息!\n");
printf("编号:");
scanf("%d",&comm[i+1].num);
for(k=0;k<m;k++)
if(comm[k].num==comm[i+1].num)
{
printf("该编号已存在,任意键继续!");
getch();
fclose(fp);
return;
}
printf("商品名:");
scanf("%s",comm[i+1].name);
printf("单价:");
scanf("%lf",comm[i+1].price);
printf("数量:");
scanf("%lf",comm[i+1].count);
comm[i+1].total=comm[i+1].price*comm[i+1].count;
printf("插入成功~!");
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
for(k=0;k<=m;k++)
if(fwrite(&comm[k],LEN,1,fp)!=1)
{
printf("不能保存!");
getch();
}
fclose(fp);
}
void order()
{
FILE *fp;
struct commdity t;
int i=0,j=0,m=0;
if((fp=fopen("data.txt","r+"))==NULL)
{
printf("can not open!\n");
return;
}
while(!feof(fp))
if(fread(&comm[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("no record!\n");
return;
}
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("can not open\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(comm[i].total<comm[j].total)
{
t=comm[i];
comm[i]=comm[j];
comm[j]=t;
}
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
for(i=0;i<m;i++)
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存!");
getch();
}
fclose(fp);
printf("成功~!\n");
}
void total()
{
FILE *fp;
int m=0;
if((fp=fopen("data.txt","r+"))==NULL)
{
printf("不能打开记录!\n");
return;
}
while(!feof(fp))
if(fread(&comm[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("一共有%d条记录!\n",m);
fclose(fp);
}
具体是哪个函数的代码不清楚呢?不会每行都要解释吧。
这就是一些普通的增删改查 谢谢。
跟菜单显示一样,这是商品管理系统,先由主函数显示出主菜单,然后通过用户输入功能编号进入相应功能,此时主函数调用自定义函数完成相应功能
如有帮助请在我的回答上点击【采纳】
商品系统的增删改查和排序操作