解释代码意思,请告知

 

#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);

}

具体是哪个函数的代码不清楚呢?不会每行都要解释吧。

这就是一些普通的增删改查 谢谢。

跟菜单显示一样,这是商品管理系统,先由主函数显示出主菜单,然后通过用户输入功能编号进入相应功能,此时主函数调用自定义函数完成相应功能

 

如有帮助请在我的回答上点击【采纳】

商品系统的增删改查和排序操作