标题:不知道为什么程序用不了 找不到那里出错了 ,求解
取消只看楼主
qq150408109
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-11-7
结帖率:0
已结贴  问题点数:20 回复次数:2 
不知道为什么程序用不了 找不到那里出错了 ,求解
#include<stdio.h>
#include <stdlib.h>
#include<conio.h>                /*getch函数使用的头文件*/
#include<string.h>               /*strcmp函数使用的头文件*/
#define LEN_BOOK sizeof(struct book)
#define LEN_READER sizeof(struct reader)
#define BOOK_NUM 200
#define book_data book[i].num,book[i].num,book[i].name,book[i].author,book[i].press,book[i].amount
struct book
 {
     int  num;            /*图书编码*/
     char name[10];       /*图书名称*/
     char author[10];     /*图书作者*/
     char press[20];      /*图书出版社*/
     int amount;          /*图书存货量*/
 };
 struct book  book[BOOK_NUM];

/*函数声明*/
int login();                 /*用户登录函数*/
void showmainmenu();         /*显示主菜单函数*/
void managebook();          /*图书馆管理子系统*/
void showbook();            /*显示图书信息*/
void addbook();             /*增加图书信息*/
int  searchbook();          /*查找图书信息*/
void deletebook();          /*删除图书信息*/
void modifybook();          /*修改图书信息*/

int readbookfile(char *pcMode);         /*从图书文件中读取图书记录*/
void savebookfile(int iBookId);        /*将记录号为   的图书存入文件*/

int login()    /*用户登录函数*/
{   char username[10];   /*用户名*/
    char password[20];   /*密码*/
    int n=1;    /*登录次数*/
    int ok=0;  /*登录成功标志*/
    while(n<=3)
    {
        system("cls");
        printf("\t\t------------------用户登录------------------\n\n\n");
        printf("\t\t\t\t用户名:");        scanf("%s",username);
        printf("\t\t\t\t密  码:");        scanf("%s",password);
        if(strcmp(username,"1")==0 && strcmp(password,"1")==0)
        {   ok=1;
            break;    }
        else
        {   printf("\n用户名或密码不正确,你还有%d次机会,请按任意键重新登录!\n",3-n);
            n++;
            system("pause");    }
     }
    return ok;
}

void init()      /*系统初始化函数*/
{
    FILE *fp1;
    char ch;
    int n=0;
    printf("\n初始化操作将删除原来的所有数据,继续吗?(Y/N)\n");
    scanf(" %c",&ch);
    if(ch!='Y' && ch!='y')
       return;
    else
    {
       if((fp1=fopen("book.dat","wb"))==NULL)/*二进制写方式打开文件*/
       {  printf("\n文件打开失败,请按任意键返回!\n");
          system("pause");/*getch();*/
          return ;    }
       fclose(fp1);      
    }
     printf("初始化完毕,请按任意键返回\n");
     system("pause");             /*等待按键,返回主菜单*/
     return;
}

void main()
{
  if(login())
  {init();
      managebook();
  }
}
   void managebook()         /*图书馆管理系统*/
  {
      int choice;
    while(1)
    {
    system("cls");
    printf("\t\t*************图书馆管理系统****************\n");
    printf("\t\t*                 主菜单                    *\n");
    printf("\t\t*             1.显示图书信息                *\n");
    printf("\t\t*             2.增加图书信息                *\n");
    printf("\t\t*             3.图书信息查询                *\n");
    printf("\t\t*             4.图书信息删除                *\n");
    printf("\t\t*             5.图书信息修改                *\n");
    printf("\t\t*             6.初 始 化                    *\n");
    printf("\t\t*             0.退    出                    *\n");
    printf("\t\t*********************************************\n");
    printf("\t\t请选择 0-5\n");
    scanf("%d",&choice);
    switch(choice)
    {
        case 1:
            showbook();               /*显示图书信息*/
            break;
        case 2:
            addbook();                /*增加图书信息*/
            break;
        case 3:
            searchbook();             /*查找图书信息*/
            break;
        case 4:
             deletebook();        /*删除图书信息*/
            break;
        case 5:
            modifybook();        /*修改图书信息*/
            break;
        case 6:
            init();
            break;
        case 0:
            
            return;
        default:
            printf("请输入0-6的数字");
            managebook();
            return;
    }
    }
  }
void showbook()           /*显示图书信息*/
{
    int i,flag;
    system("cls");
    flag=readbookfile("rb");
    if(flag==-1)
        printf("文件打开失败!请先增加图书信息");
    else if(flag==0)
        printf("文件中没有图书信息");
    else
    {
        printf("\t|-------------------------------------------------|");
        printf("\t编号\t书名\t作者\t出版社\t库存\n");
        for(i=0;i<flag;i++)
            printf("\t%d\t%s\t%s\t%s\t%d\n",book[i].num,book[i].num,book[i].name,book[i].author,book[i].press,book[i].amount);
           printf("\t|-------------------------------------------------|");
    }

}
void addbook()             /*增加图书信息*/
{
    FILE *pfbook;
    int flag,iFlagExist,i;
    char ch;
     system("cls");
     flag=readbookfile("ab+");
     if(flag==-1)
     {
         printf("文件打开失败!\n");
         return;
     }
     else if(flag==0)
         printf("没有图书记录!\n");
     else
         showbook();

      //以下代码为循环录入图书信息
     printf("请选择是否输入信息(y/n):");
     getchar();
     ch=getchar();
     if(ch=='n'||ch=='N')
          return;   
     pfbook=fopen("book.dat","ab+");
     if(pfbook==NULL)
     {
         printf("文件打开失败!\n");
         return;
     }
     while(ch=='y'||ch=='Y')
     {
     printf("请输入图书编号:");
     do{
         iFlagExist=0;
         scanf("%d",&book[flag].num);
         getchar();
         for(i=0;i<flag;i++)
         {
             if(book[i].num==book[flag].num)
             {
                 iFlagExist=1;
                 printf("该图书编号已存在,请重新输入:");
                 break;
             }
         }
     }while(iFlagExist==1);
    /*新增图书的基本信息*/
    printf("请输入图书名称:");
    gets(book[flag].name);
    printf("请输入图书作者:");
    gets(book[flag].author);
    printf("请输入图书出版社:");
    gets(book[flag].press);
    printf("请输入图书库存量:");
    scanf("%d",&book[flag].amount);
    getchar();
    /*将新增的图书信息写入文件中*/
   if(fwrite(&book[flag],LEN_BOOK,1,pfbook)!=1)
   {
      printf("无法保存该信息!\n");
       return;
   }
      else
   {    printf("*d号图书信息已保存\n",book[flag].num);
        flag++;
   }
       printf("继续输入信息吗(y/n)");
       ch=getchar();
       getchar();
     }
   fclose(pfbook);
   printf("添加图书执行完毕!\n");
}
int  searchbook()          /*查找图书信息*/
{
    int iBookNum,flag,iBookId,i;
    system("cls");

    flag=readbookfile("rb");
    if(flag==-1)
    {
      printf("文件打开失败!\n");
      printf("I按任意键返回子菜单|");
      getch();
      return -2; //文件打开失败,返回-2
    }
   else if(flag==0)
   {
     printf("没有图书记录!\n");
     printf("|按任意键返回子菜单|");
     getch();
     return  -3;
   }
   /*以下进入查找程序*/

   printf("请输入图书编号:");
   scanf("%d",&iBookNum);
   getchar();
   for(i=0;i<flag;i++)
   {
     if(iBookNum==book[i].num)
     {
       iBookId=i;/*找到记录,返回记录号*/
       printf("*d号图书信息如下:\n",iBookNum);
       printf("\t|-------------------------------------------------|");  /////////////////
       printf("\t编号\t书名\t作者\t出版社\t库存\n");
       printf("\t\t%d\t%s\t%s\t%s\t%d\n",book[i].num,book[i].num,book[i].name,book[i].author,book[i].press,book[i].amount);
       printf("\t|-------------------------------------------------|");
       break;
     }
   }
     if(i==flag)/*遍历循环,没有找到记录,提示用户*/
     {
       printf("找不到%d号图书信息!\n",iBookNum);      
       iBookId=-1;  /*找不到记录,返回-1*/
     }
     return iBookId;
}
void deletebook()         /*删除图书信息*/
{
   FILE *pfBook;
   int iBookId,flag,i;/*文件指件*/
   char cFlag; /*字符型变量,用于选择*/
      
   system("cls");
   iBookId=searchbook();
   if(iBookId==-1)
   return;

   flag=readbookfile("rb");
   printf("已找到该图书,是否删除?(y/n)");
   cFlag=getchar();
   getchar();
   if(cFlag=='n'||cFlag=='N')
   return;
   else if(cFlag=='y'||cFlag=='Y')
   {
    for(i=iBookId;i<flag-1;i++)
    book[i]=book[i+1];/*数组依次前移*/
    flag--;
   }
   pfBook=fopen("book.dat","wb");
   if(pfBook!=NULL)
   {
    for(i=0;i<flag;i++)/*将修改过的图书信息写人文件*/
    {
      if(fwrite(&book[i],LEN_BOOK,1,pfBook)!=1)
      {
         printf("无法保存该信息!\n");
         return;
      }
    }
     fclose(pfBook);
     printf("%d号图书信息已删除!\n",book[iBookId].num);
   }
}

int readbookfile(char *pcMode)    /*从图书文件中读取图书记录*/
{                        
     int flag=0;
     FILE *pfBook;/*文件指针*/
     pfBook=fopen("book.txt",pcMode);
    if(pfBook==NULL)
        return -1;
    while(!feof(pfBook))
    {
       if(fread(&book[flag],LEN_BOOK,1,pfBook))
         flag++;
    }
    fclose(pfBook);
    return flag;
}
void savebookfile(int iBookId)       /*将记录号为   的图书存入文件*/
{
    FILE *pfBook;
    pfBook=fopen("book.dat","rb+");
    if(pfBook!=NULL)
    {
          fseek(pfBook,LEN_BOOK *iBookId,SEEK_SET);
          if(fwrite(&book[iBookId],LEN_BOOK,1,pfBook)!=1)
          printf("无法保存该信息!\n");
    }
    fclose(pfBook);
}

void modifybook()          /*修改图书信息*/
{int iBookId,iBookRecord,iFlagExist,iItem,num,i;
      system("cls");
     iBookId=searchbook();               /*调用查找图书函数获得图书记录*/

     if(iBookId==-1)                         /*未找到该序号的图书,直接返回*/
         return;
     /*找到该序号的图书,可以进行修改操作*/
     iBookRecord=readbookfile("rb");
    printf("\t\t*******************修改******************\n");
    printf("\t\t*                 子菜单                *\n");
    printf("\t\t*                 1.编码                *\n");
    printf("\t\t*                 2.书名                *\n");
    printf("\t\t*                 3.作者                *\n");
    printf("\t\t*                 4.出版社              *\n");
    printf("\t\t*                 5.库存                *\n");
    printf("请输入想输入的信息\n");
    scanf("%d",&iItem);
    getchar();
    switch(iItem)
    {  case 1:
    printf("请输入图书编号:");
do{
   iFlagExist=0;
   scanf("%d",&num);
   getchar();
   for(i=0;i<iBookRecord;i++)
   {
       if(num==book[i].num &&i!=iBookId)
       {    iFlagExist=1;
          printf("错误,该图书编号已存在,请重新输入:");
         break;
       }
   }
}   while(iFlagExist==1);
         book[iBookId].num=num;
         break;
    case 2:
         printf("请输入图书名称:");
         gets(book[iBookId].name);
         break;
    case 3:
         gets(book[iBookId].author);
         break;
         printf("请输入图书作者:");
    case 4:
         printf("请输入图书出版社:");
         gets(book[iBookId].press);
         break;
    case 5:
         printf("请输入图书库存量:");
         scanf("%d",&book[iBookId].amount);
         getchar();
         break;
}
    /*调用SaveBookFile函数将修改记录存人文件*/
    savebookfile(iBookId);
    printf("图书信息修改成功!\n");
}
搜索更多相关主题的帖子: int 图书 信息 printf flag 
2017-12-06 19:24
qq150408109
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-11-7
得分:0 
看着书写的
2017-12-06 19:26
qq150408109
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-11-7
得分:0 
我就说嘛 我们老师有病  都没教数据库  好烦
说个作业也不说清楚  谢谢啦 我问问他去
2017-12-06 19:45



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




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

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