⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modnum.c.txt

📁 小商品库存的小软件
💻 TXT
字号:
/*********************************************************************/
  /* monnum.c : 修改商品信息记录                                              */
  /********************************************************************/
#include "stdio.h"
void ModifyByNumber( )
  {
      int i,j,k;
      long modnum;          /*存储客户输入的要修改的商品序号*/
      /*输入各项修改后的信息*/
      long Number;
      char Name[20];
      float price;
      float discount;
      float memberprice;
      product TmpS;    /*定义进行操作时的临时结构体变量*/
      product s[SIZE];/*SIZE,在shead.h头文件中定义的常量,值为100    */
      int recNumber;
      char DataFile[40] = "",next;
      /*DataFile存储商品信息的文件名,next为是否进行下一次删除操作的选项*/
      FILE *fp;/*====fp指针指向存储数据的文件名====*/
      /*提示客户输入要进行修改记录的文件名*/
      printf("\nplease input the name of file where data is stored,
end with enter key.\n");
      gets(DataFile);
      /*提示客户输入要进行修改记录的文件名*/
      while(*DataFile == ('\0'))
      {
      
      printf("\nplease input the name of file where data is stored,
end with enter key.\n");
      gets(DataFile);
      
      }
begin:
      /*以读的方式打开文件,如文件不存在,提示错误*/
      fp=fopen(DataFile,"rb");
      if    (fp == NULL)
      {
       printf("\nOpen file %s fail!End with any key\n",DataFile);
       perror("Open file fail");
       getch( );
       exit(1);
      }
printf("please input the Employee'seatnum which you will modify:");
scanf("%ld",&modnum);
printf("the product you will delete is:%ld\n,modnum");
/*输入要修改记录的各项内容值*/
Number=modnum;
printf("name=");
scanf("%s",Name);

printf("price=");
scanf("%f",&price);

printf("discount=");
scanf("%f",&discount);

/*用公式自动计算商品会员价*/
memberprice=peice*discount;
/*将文件中要修改的信息存入结构体数组*/
recNumber=0;
/*循环将文件数据读入结构体数组,
如文件中的数据商品号和要修改的商品号不符,则原样写入数组,
如文件中数据的商品号和要修改商品号匹配,
则根据顾客输入的各项修改内容重新赋值,即修改,并写入数组*/
while((fread(&TmpS,sizeof (product),1,fp)) != (int)NULL)
{
      if(TmpS.Number!=modnum)
             {
             s[recNumber].Number = TmpS.Number;
             strcpy(s[recNumber].Name,TmpS.Name);
             s[recNumber].price = TmpS.price;
             s[recNumber].discount = TmpS.discount;
             s[recNumber].memberprice = TmpS.memberprice;
             recNumber++;
             }
        else
             {
             s[recNumber].Number = Number;
             strcpy(s[recNumber].Name,Name);
             s[recNumber].price = price;
             s[recNumber].discount = discount;
             s[recNumber].memberprice = memberprice;
             recNumber++;
             }
}
fclose(fp);
/*====将修改后的结构体数组记录写入文件====*/
        fp=fopen(DataFile,"wb+");
        if    (fp == NULL)
        {
        printf("\nSet up file %sfail !end with anykey.\n",DataFile);
        perror("Set up fail");
        getch( );
        exit(1);
}


for(i=0; i<recNumber; i++)
{
    if(fwrite(&s[i],sizeof(product),1,fp)!=1)
    {
        printf("\nWrite file %s fail!end with anykey.\n",DataFile);
        perror("Write file fail!");
              getch( );
              exit(1);
   }
   }
   fclose(fp);
/*====显示修改后的文件====*/
fp=fopen(DataFile,"rb");
if    (fp == NULL)
{
      printf("\nOpen file%sfail!end with any key \n",DataFile);
      perror("Open file fail");
      getch( );
      exit(1);
}
printf("the file after modify is:\n");
printf("\nNumber\t\tName\tprice\tdiscount\tmemberprice\n");
while(fread(&TmpS,sizeof(produnt),1,fp) != (int)NULL)
{
      if(TmpS.Number!=0)
      printf("\n%ld\t%s\t%4.1f\t%4.1f\t%4.1f\n",TmpS.Number,
TmpS.Name,TmpS.price,TmpS.discount,TmpS.memberprice);
   }
   fclose(fp);
/*提示是否进行下一次修改*/
      printf("\nGo on ?(y/n)");
      next=getche( );
      putchar('\n');
      if( next =='y' || next =='y') goto begin;
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -