标题:一个C语言图书管理系统的一部分代码
只看楼主
实力派演员
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-5-16
结帖率:50%
已结贴  问题点数:20 回复次数:8 
一个C语言图书管理系统的一部分代码
为什么运行程序,在添加多条的信息时候,删除其中一条的时候,在去查看的时候,会显示代码。是什么问题?
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

#define error 0
#define ok 1
#define N 100
#define M 100


 struct b
{
  char bid[10];
  char bname[10];
};

void badd()
{
  system("cls");
  struct b book, books[N];
  FILE *fp;
  int count=0,i=0;
  printf("\n\n\t  ********************呵呵图书管理系统*******************   \n\n");
  printf("\t\t\t 请您输入要增加的书编号:");
  scanf("%s",book.bid);
  printf("\n\t\t\t 请您输入要增加的书名:");
  scanf("%s",book.bname);

  if((fp=fopen("b.txt","r"))!=NULL)
  {
    while(!feof(fp))
    {
      fread(&books[count],sizeof(struct b),1,fp);
      count++;
    }
      fclose(fp);
    for(i=0;i<count-1;i++)
    {
        if(strcmp(books[i].bid,book.bid)==0)
        {
          printf("\n\t\t\t 对不起,您添加的用户账号已经存在,不能添加。\n");
          break;
        }
    }

    if(i>=count-1)
    {
       fp=fopen("b.txt","a");
       fwrite(&book,sizeof(struct b),1,fp);
          fclose(fp);
       printf("\n\t\t\t 您的信息添加成功。\n");
    }
  }
  else
  {
    fp=fopen("b.txt","w");
    fwrite(&book,sizeof(struct b),1,fp);
    fclose(fp);
    printf("\n\t\t\t 您的信息添加成功。\n");
  }
  system("pause");
}

void bdelete()
{
  system("cls");
  FILE *fp;
  struct b books[N];
  int count=0,mark=0,i=0,j=0,flag=0;
  char id[10];
  int num[N];
  printf("\n\n\t  ********************呵呵图书管理系统*******************   \n\n");
   if((fp=fopen("b.txt","r"))!=NULL)
  {
    while(!feof(fp))
    {
      fread(&books[count],sizeof(struct b),1,fp);
      count++;
    }
    fclose(fp);
    printf("\n\n\t\t 请输入您要删除的图书编号:");
    scanf("%s",id);
    printf("\n\t\t 图书编号     书名");
    for(i=0;i<count-1;i++)
    {
      if(strcmp(books[i].bid,id)==0)
      {
         printf("\n\t\t %-12s %-12s",books[i].bid,books[i].bname);
         num[mark]=i;
         mark++;
      }
    }
    if(mark<=0)
    {
      printf("\n\n\t\t 对不起,没有找到您要删除的数据。\n");
    }
    else
    {
      flag=MessageBox(NULL,"数据一旦删除,将不能恢复,您确定要删除此数据吗?","警告",MB_YESNO|MB_ICONWARNING);
      if(flag==6)
      {
          fp=fopen("b.txt","w");
          for(i=0;i<count-1;i++)
          {
              for(j=0;j<mark;j++)
              {
                  if(i==num[j])
                      break;
              }
          }
          if(j>=mark)
          {
             fwrite(&books[i],sizeof(struct b),1,fp);
          }
          fclose(fp);
          printf("\n\n\t 数据删除成功。\n");
      }
    }
   }
   else
   {
     printf("\n\n\t 账号数据不存在。\n\n\t");
   }
   system("pause");
}

void bupdata()
{
  system("cls");
  FILE *fp;
  int count=0,i=0,flag=0;
  char id[10];
  struct b books[N];
  printf("\n\n\t  ********************呵呵图书管理系统*******************   \n\n");
  if((fp=fopen("b.txt","r"))!=NULL)
  {
    while(!feof(fp))
    {
      fread(&books[count],sizeof(struct b),1,fp);
      count++;
    }
    fclose(fp);
    printf("\t 请您输入要更改的图书编号:");
    scanf("%s",id);
    for(i=0;i<count-1;i++)
    {
      if(strcmp(books[i].bid,id)==0)
      {
        printf("\n\t 您要更改的信息如下:");
        printf("\t\t 图书编号     书名  ");
        printf("\n\t\t %-12s %-12s",books[i].bid,books[i].bname);

        printf("\n\t 请输入更改后的图书编号:");
        scanf("%s",books[i].bid);
        printf("\n\t 请您输入更改后的图书名:");
        scanf("%s",books[i].bname );
        break;
      }
    }
    if(i>=count-1)
    {
      printf("\n\t 对不起,没有您要更改的信息。\n");
    }
    else
    {
      flag=MessageBox(NULL,"数据一旦更改,将不能恢复,您确定要更改此数据吗?","警告",MB_YESNO|MB_ICONWARNING);
      if(flag==6)
      {
        fp=fopen("b.txt","w");
        for(i=0;i<count-1;i++)
        {
            fwrite(&books[i],sizeof(struct b),1,fp);
        }
        fclose(fp);
        printf("\n\t 图书信息修改成功。\n");
      }
    }
  }
  else
  {
    printf("\n\t 系统中暂无信息可以更改。");
  }
  system("pause");
}

void blocate()
{
  system("cls");
  FILE *fp;
  int count=0,i=0;
  char id[10];
  struct b books[N];
  printf("\n\n\t  ********************呵呵图书管理系统*******************   \n\n");
  if((fp=fopen("b.txt","r"))!=NULL)
  {
    while(!feof(fp))
    {
      fread(&books[count],sizeof(struct b),1,fp);
          count++;
    }
    fclose(fp);
     printf("\t 请输入您需要查询的图书编号:");
  scanf("%s",id);
    for(i=0;i<count-1;i++)
    {
      if(strcmp(books[i].bid,id)==0)
      {
        printf("\n\n\t 您查询的图书信息为:");
        printf(" 图书编号      书名");
        printf("\n\t\t\t\t %-10s %-10s \n",books[i].bid,books[i].bname);
        break;
      }
    }
    if(i>=count-1)
        {
           printf("\n\n\t 对不起,没有查询到您需要查询的信息。\n");
        }
  }
  else
  {
    printf("\n\n\t 对不起,没有信息可以查询。\n");
  }
  system("pause");
}

void prt(struct b books[],int count)
{
  int i=0;
  printf("\n\t\t    **********共有%d条记录**********",count);
    printf("\n\n\t\t 图书编号      书名");
    for(i=0;i<count;i++)
    {
      printf("\n\t\t %-12s %-12s \n",books[i].bid,books[i].bname);
    }
}

void bview()
{
  system("cls");
  FILE *fp;
  int count=0;
  /*int i=0;  */
  struct b books[N];
  printf("\n\n\t  ********************呵呵图书管理系统*******************   \n\n");
  if((fp=fopen("b.txt","rb"))!=NULL)
  {
    while(!feof(fp))
    {
      fread(&books[count],sizeof(struct b),1,fp);
      count++;
    }
    fclose(fp);
      prt( books, count-1);
  }
  else
  {
    printf("\n\t\t 系统暂无信息。\n");
  }
  printf("\n");
  system("pause");

 }

void book()
{
  system("cls");
  int chioce;
  printf("\n\n\t  ********************呵呵图书管理系统*******************   ");
  printf("\n\n\t      ********************图书管理********************** \n\n");
  printf("\t\t\t     1.增加图书信息 \n\n");
  printf("\t\t\t     2.删除图书信息 \n\n");
  printf("\t\t\t     3.更改图书信息 \n\n");
  printf("\t\t\t     4.查询图书信息 \n\n");
  printf("\t\t\t     5.显示图书信息 \n\n");
  printf("\t\t\t     0.   退  出 \n\n");
  printf("\t请选择您需要的操作:");
  scanf("%d",&chioce);
  switch(chioce)
  {
    case 1: badd();book();break;
    case 2: bdelete(); book();break;
    case 3: bupdata(); book();break;
    case 4: blocate(); book();break;
    case 5: bview(); book();break;
    case 0: break;
    default: printf("您的操作错误。"); break;
  }

}

void menu()
{
    system("cls");
  int chioce;
  printf("\n\n\t  ********************呵呵图书管理系统*******************   \n\n");
  printf("\t\t\t     1.图书管理\n\n");
  printf("\t\t\t     2.读者管理\n\n");
  printf("\t\t\t     0.退出\n\n");
  printf("\t请选择您需要的操作:");
  scanf("%d",&chioce);
  switch(chioce)
  {
    case 1: book();break;
    case 2: read();break;
    case 0: break;
    default : printf("您的操作错误。");break;
  }
}

void login()
{
    system("cls");
  char name[10],pwd[10];
  int a,b;
  static int count=0;
  printf("\n\n\t    ********************欢迎登陆图书管理系统******************  \n\n");
  printf("\t\t\t  请输入您的用户名:");
  scanf("%s",&name);
  printf("\n");
  printf("\t\t\t  请输入您的用户密码:");
  scanf("%s",&pwd);
  printf("\n");
  a=strcmp(name,"123");
  b=strcmp(pwd,"123");
  if(a==0&&b==0)
      menu();
  else
  {
       count++;
      if(count>=3)
      {
        printf("\t\t对不起,您不能进入该系统。\n");
        exit(0);
      }
      else
      {
        printf("\t\t对不起,您输入的用户名或密码错误,请您重新输入。\n");
        printf("\t\t您还有%d次输入的机会。\n",3-count);
        system("pause");
        login();
      }
  }
}

int main()
{
  login();
  menu();
  return ok;
}
搜索更多相关主题的帖子: 运行程序 管理系统 C语言 color 
2016-05-27 22:37
实力派演员
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-5-16
得分:0 
就是显示的时候,显示的是乱码,并且txt里面没有信息的时候,也不会显示,第一次发帖,求大神指导
2016-05-27 22:39
tang1994
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:19
专家分:30
注 册:2016-5-25
得分:10 
可以的啊,就是添加几条信息以后不能删除任何一个信息,不然再去查询的时候所有的都没有了,我用的是C-free5.0
我刚接触这些几天,也不是太懂

能耐得寂寞的人,肯定是有思想的人。
能忍受孤独的人,肯定是有理想的人。



2016-05-27 23:50
实力派演员
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-5-16
得分:0 
回复 3楼 tang1994
对,就是添加了几条信息的时候,为什么就不能删除了,如果不能删除,那这个系统就存在一定的问题,你知不知道怎么改?
2016-05-29 00:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
看看删除过程的代码
2016-05-29 08:34
实力派演员
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-5-16
得分:0 
回复 5楼 吹水佬
就是看了,不知道怎么去解决,求指导。
2016-05-29 17:36
tang1994
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:19
专家分:30
注 册:2016-5-25
得分:0 
可以试试更改存入数据的方式还有调用数据的方式,分开存储,分开调取这样。

能耐得寂寞的人,肯定是有思想的人。
能忍受孤独的人,肯定是有理想的人。



2016-05-29 19:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 6楼 实力派演员
删除模块改改这里:
将:
            flag=MessageBox(NULL,"数据一旦删除,将不能恢复,您确定要删除此数据吗?","警告",MB_YESNO|MB_ICONWARNING);
            if(flag==6)
            {
                fp=fopen("b.txt","w");
                for(i=0; i<count-1; i++)
                {
                    for(j=0; j<mark; j++)
                    {
                        if(i==num[j])
                            break;
                    }
                }
                if(j>=mark)
                {
                    fwrite(&books[i],sizeof(struct b),1,fp);
                }
                fclose(fp);
                printf("\n\n\t 数据删除成功。\n");
            }
改为:
            flag=MessageBox(NULL,"数据一旦删除,将不能恢复,您确定要删除此数据吗?","警告",MB_YESNO|MB_ICONWARNING);
            if(flag==6)
            {
                fp=fopen("b.txt","w");
                for(i=0; i<count-1; i++)
                {
                    for(j=0; j<mark; j++)
                    {
                        if(i==num[j])
                            break;
                    }
                    if(j>=mark)
                    {
                        fwrite(&books[i],sizeof(struct b),1,fp);
                    }
                }
                fclose(fp);
                printf("\n\n\t 数据删除成功。\n");
            }
2016-05-29 21:31
zq1786310979
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-5-30
得分:0 
请问一楼有完整的图书管理系统代码吗
2017-05-30 16:38



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




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

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