| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 302 人关注过本帖
标题:如何让程序提示该编号已经存在
只看楼主 加入收藏
唯爱丹
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-24
收藏
 问题点数:0 回复次数:6 
如何让程序提示该编号已经存在
在网上找的程序  看了一个星期了 才算看明白点 就是发现这个程序在录入信息的时候  如果货物的编号存在 你再次输入那个编号的时候它不能提示该编号已经存在 应该怎么修改才能实现
程序代码:
#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
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
这个。。。。。楼主我没发现你的能录入信息啊,只能在有你在文件存在的情况下才能打开。很纠结啊,这个代码有问题啊,在哪找的,上个网址

菜鸟一名,准备起飞
2011-06-12 20:21
唯爱丹
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-24
收藏
得分:0 
在百度文库找的啊  在f盘下建个文档就能用的啊  就是录入信息的时候 编号可以重复
2011-06-13 10:55
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 3楼 唯爱丹
编号这个问题很好解决,当你输入编号后,先不要输入另一个,先判断该字符串是否与之前的有相等的,或者是数字,也就是说,把前面输过的再遍历一遍,有相同的了就提示错误,重新输入,否则就输入下一项

菜鸟一名,准备起飞
2011-06-13 23:20
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:0 
我原来编过一个学生成绩管理系统,就处理过你说的这种编号重复的问题,我的方法就是在每次输入编号的时候将已经存在的编号检查一遍看看是否有相同的,有的话就重新输入,没有的话就直接插入了。

--------将学到的东西为我所用,这才是学习的目的 --------
2011-06-13 23:26
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
回复 4楼 小菜小C
写一个查询的函数
每一次输入一个货号就调用一次。
2011-06-13 23:33
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 6楼 bccn_2012
不需要那么麻烦,不需要那个,只需要在输入时判断下就行

菜鸟一名,准备起飞
2011-06-13 23:52
快速回复:如何让程序提示该编号已经存在
数据加载中...
 
   



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

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