标题:如何让程序提示该编号已经存在
只看楼主
唯爱丹
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-24
 问题点数:0 回复次数:1 
如何让程序提示该编号已经存在
在网上找的程序  看了一个星期了 才算看明白点 就是发现这个程序在录入信息的时候  如果货物的编号存在 你再次输入那个编号的时候它不能提示该编号已经存在 应该怎么修改才能实现
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

struct Info
{
    char num[20];
    char name[20];
    int  price;
    int  amount;
};


char menu()                              /*菜单选择函数*/
{

 char n;                                 /*n记录选择的菜单*/


 system("cls");


 puts("\t\t             欢迎来到仓库货物管理系统               ");


 puts("\t\t***********************MENU***********************\n");


 puts("\t\t*                  1.录入货物信息                *\n");


 puts("\t\t*                  2.显示货物信息                *\n");


 puts("\t\t*                  3.查找货物信息                *\n");


 puts("\t\t*                  4.修改货物信息                *\n");


 puts("\t\t*                  5.删除货物信息                *\n");


 puts("\t\t*                  6.退出系统                    *\n");

 puts("\t\t**************************************************\n");


 puts("*********************************");


 printf("*  请选择你要输入数(1-6):       *\n");


 puts("*********************************");


 while(1)

 {
     n=getchar();
     getchar();
     if(n<'1'||n>'6')
     {
       puts("**********************************");

       printf("* 出错了!请再次输入(1-6):       *\n");

       puts("**********************************");
     }
     else
       break;

 }

 return n;
}

 void append()               /*货物信息输入函数*/
{
   struct Info info;
   FILE * fp;
   char ch;

if((fp=fopen("F:\\test\\filemolde\\123.txt","wb")) == NULL)
{
   printf("******************\n");

   printf("* 不能打开文件!  *\n");

   printf("******************\n");

   getch();

   exit(1);
}


 do

 {
  printf("\tnum:");
  gets(info.num);

  printf("\tname:");
  gets(info.name);

  printf("\tprice:");
  scanf("%d",&info.price);

  printf("\tamount:");
  scanf("%d",&info.amount);
  getchar();

  fwrite(&info,sizeof(info),1,fp);

printf("***************************\n");
  printf("*  还需要输入吗?(Y/N):    *\n");
  printf("***************************\n");

  ch=getchar();
  getchar();


 }while(ch=='Y'||ch=='y');

 fclose(fp);
}



 void printf1()

 {
    printf("*************************************************************************\n");
    printf("\t\t%-10s\t%-10s\t%-10s\t%-10s\n","num","name","price","amount\n");
    printf("*************************************************************************\n");


 }


 void printf2(struct Info info)

 {

    printf("-------------------------------------------------------------------------\n");
    printf("\t\t%-10s\t%-10s\t%-10d\t%-10d\n",info.num,info.name,info.price,info.amount );
    printf("-------------------------------------------------------------------------\n");
   

 }
void display()            /*货物信息显示函数*/

 {
   struct Info info;
   FILE * fp;
   int m=0;

   if((fp=fopen("F:\\test\\filemolde\\123.txt","rb"))==NULL)
   {
      printf("******************");

      printf("* 不能打开文件!  *");

      printf("******************");

       getch();

       exit(1);
   }

   while(fread(&info,sizeof(info),1,fp)==1)
   {
    m++;
    if(m==1)
        printf1();
        printf2(info);
    if((m!=0)&&(m%10==0))

    {
     printf("*****************************\n");

     printf("*      输入任何键继续       *");

     printf("*****************************\n");

     getch();
     puts("\n\n");
     printf1();

    }

   }

   fclose(fp);

   printf("************************************\n");
   printf("*       总共有%d条记录在其中!      *\n",m);
   printf("************************************\n");


   getch();

 }


void search()           /*货物信息查询函数*/
{
  struct Info info;
  FILE * fp;             
  int flag;              /* flag为 1 按编号查询 ,flag为 2 按姓名查询*/
  int total=0;           /*记录符合条件的记录的个数*/
  char ch[10];
  char f;


  if((fp=fopen("F:\\test\\filemolde\\123.txt","rb")) == NULL)
  {
       printf("************************************\n");
       printf("*      \t 不能打开文件!            *\n");
       printf("************************************\n");
       getch();
       exit(1); 
  }
do
  {
    rewind(fp);
    printf("************************************\n");
    printf("*        查询通过(1:编号 2:姓名):  *\n");
    printf("************************************\n");

    while(1)
    {
      scanf("%d",&flag);
      getchar();
      if(flag<1||flag>2)
      {
          printf("*****************************************\n");
          printf("*  出错了!请再次输入[1:编号][2:姓名]  *\n");
          printf("*****************************************\n");
      }
      else
          break;
    }

       if(flag==1)    /*按编号进行查询*/
       {

         printf("************************************\n");
         printf("*      请输入你要查询的编号:      *\n");
         printf("************************************\n");

         gets(ch);
         total=0;          /*符合条件的记录数*/

          while(fread(&info,sizeof(info),1,fp)==1)
               if(strcmp(ch,info.num)==0)
               {
                 total++;
                 if(total==1)
                 printf1();
                 printf2(info);
               }
       }
       else                 /*按姓名进行查询*/
       {

         printf("************************************\n");
         printf("*       请输入你要查询的姓名:     *\n");
         printf("************************************\n");

         gets(ch);
         total=0;

 while(fread(&info,sizeof(info),1,fp)==1)
               if(strcmp(ch,info.name)==0)
               {
                 total++;
                 if(total==1)
                 printf1();
                 printf2(info);
               }

       }

       printf("************************************\n");
       printf("*          总共有%d记录在其中!     *\n",total);
       printf("************************************\n");

       printf("************************************\n");
       printf("*       还需要查询吗?(Y/N):        *\n");
       printf("************************************\n");
       f=getchar();
       getchar();
  }while(f=='Y'||f=='y');
  fclose(fp);
}


  void modify()    /*货物信息修改函数*/
  {
    struct Info info;
    FILE * fp1,* fp2;
    int flag;
    char ch[10];
    char f;


    do
    {

        if((fp1=fopen("F:\\test\\filemolde\\123.txt","rb")) == NULL)
        {

            printf("************************************\n");   
            printf(" *        不能打开文件!            *\n");
            printf("************************************\n");
            getch();
            exit(1); 
        }
        if((fp2=fopen("F:\\test\\filemolde\\456.txt","wb")) == NULL)
        {
            printf("************************************\n");   
            printf(" *        不能打开文件!            *\n");
            printf("************************************\n");
            getch();

 exit(1);
        }

        printf("************************************\n");
        printf("*     请输入你要修改的货物编号:   *\n");
        printf("************************************\n");

        gets(ch);

        flag=0;

         while(fread(&info,sizeof(info),1,fp1)==1)
         {
             if(strcmp(ch,info.num)==0)
             {
               printf1();
               printf2(info);

               printf("************************************\n");
               printf("*            请输入新的信息:      *\n");
               printf("************************************\n");


                printf("\tnum:");
                gets(info.num);

                printf("\tname:");
                gets(info.name);

                printf("\tprice:");
                scanf("%d",&info.price);

                printf("\tamount:");
                scanf("%d",&info.amount);
                getchar();
                flag=1;
                
                
             }
               fwrite(&info,sizeof(info),1,fp2);
         }
         fclose(fp1);
         fclose(fp2);
         if(flag==1)
         {

            printf("************************************\n");
            printf("*               修改成功!          *\n");
            printf("************************************\n");
            remove("F:\\test\\filemolde\\123.txt");
            rename("F:\\test\\filemolde\\456.txt","F:\\test\\filemolde\\123.txt");
         }
         else
         {
             printf("************************************\n");
             printf("*       不能找到这个记录!          *\n");
             printf("************************************\n");
         }


         printf("************************************\n");
         printf("*          还修改其他吗?(Y/N):     *\n");
         printf("************************************\n");

         f=getchar();
         getchar();
    }while(f=='y'||f=='Y');
  }
void Delete()          /*货物信息删除函数*/
  {
    struct Info info;
    FILE * fp1,* fp2;
    int flag;
    char ch[10];
    char f;

    

    do
    {
      if((fp1=fopen("F:\\test\\filemolde\\123.txt","rb")) == NULL)
        {
          printf("************************************\n");
          printf("*    \t 不能打开文件!              *\n");
          printf("************************************\n");
          getch();
          exit(1); 
        }

        if((fp2=fopen("F:\\test\\filemolde\\456.txt","wb")) == NULL)
        {
           printf("************************************\n");
           printf("*    \t 不能打开文件!              *\n");
           printf("************************************\n");
           getch();
           exit(1);
        }

         printf("************************************\n");
         printf("*     请输入你需要删除货物的编号:  *\n");
         printf("************************************\n");

         gets(ch);
         flag=0;
          while(fread(&info,sizeof(info),1,fp1)==1)
          {
             if(strcmp(ch,info.num)==0)
             {
               printf1();
               printf2(info);
               flag=1;
               break;
             }
             else
                fwrite(&info,sizeof(info),1,fp2);
          }
            fclose(fp1);
            fclose(fp2);
            if(flag==1)
            {

            printf("************************************\n");
            printf("*           删除成功!              *\n");
            printf("************************************\n");
            remove("F:\\test\\filemolde\\123.txt");
            rename("F:\\test\\filemolde\\456.txt","F:\\test\\filemolde\\123.txt");
            }
else
             {
              printf("************************************\n");
              printf("*         不能找到这个记录!        *\n");
              printf("************************************\n");
             }

              printf("************************************\n");
              printf("*       还删除其他吗?(Y/N):        *\n");
              printf("************************************\n");

              f=getchar();
              getchar();
    }while(f=='y'||f=='Y');
  } 


 void main()             /*主函数*/

 {
    
  while(1)
      switch(menu())
  {
     case'1':append();break;
     case'2':display();break;
     case'3':search();break;
     case'4':modify();break;
     case'5':Delete();break;
     case'6':exit(0);break;       
  }

 }
搜索更多相关主题的帖子: 货物 录入 如何 网上 
2011-06-12 18:24
pkwangxinjun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:170
注 册:2010-8-29
得分:0 
把这个          while(fread(&info,sizeof(info),1,fp)==1)
               if(strcmp(ch,info.num)==0)
               {
                 total++;
                 if(total==1)
                 printf1();
                 printf2(info);
               }
加在  录入编号后面加个判断就可以了  我现在没装软件  自己试着做下  不可以了联系我
2011-06-12 19:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342604-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.208199 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved