回 帖 发 新 帖 刷新版面

主题:可以帮我看看哪有问题吗,运行出来一直不对

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void save();       //函数声明
void load();
void input();
void search();
void search_shuming();
void search_author();
void search_ISBN();
void search_Publisher();
void search_year();
int search_num();
void xiugai();
void add();
void shuchu();
void revise(int z);
void delete1(int k);
unsigned long suiji();
int M=0;      //图书实际数量
struct book   //一个图书的结构体 
{
char shuming[20];
char author[20];
char ISBN[60];
char Publisher[30];
char year[60];
int price;
unsigned long num;    //图书编号 
};
struct book book[1000];
int main()
{
int a;
while(1)   //无限循环,除非你置break等类似的跳出循环语句循环才会中止
{
printf("================图书信息管理系统================\n");
printf(" \t1.录入图书信息    2.图书信息浏览 \n\n");           //\t换行 
printf(" \t3.查询图书    4.图书信息修改和删除 \n\n");
printf(" \t5.添加图书    6.退出系统 \n\n");
printf("================================================\n");
printf("               请选择,输入1-6键:");
scanf("%d",&a);
switch(a)
{
case 1:input();break;
case 2:shuchu();break;
case 3:search();break;
case 4:xiugai();break;
case 5:add();break;
case 6:exit(0);break;
default:printf("\n非法操作!\n");      //当其他不满足是执行default 
}
system("pause");   //防止闪屏,程序暂定一下 
system("cls");     //清屏 
}
 } 
 void input()     //首次录入图书信息 
{
int i,j;
printf("\n         欢迎进入录入图书信息\n");
printf("==================================================\n");
printf("\n输入要添加的图书的数量:");
for(i=0;i<10;i++)
{
scanf("%d",&j);
if(j<1000)
{
break;     //跳出if循环 
}
printf("该系统只能存放1000本以内的信息,请重新输入\n");
}
if(i==10)
{
printf("输入书的数量超过范围\n");
exit(0);
}
for(i=0;i<j;i++)
{
printf("输入第%d本图书的书名:",i+1);
scanf("%s",book[i].shuming);
printf("输入第%d本图书的作者名:",i+1);
scanf("%s",book[i].author);
printf("输入第%d本图书的ISBN:",i+1);
scanf("%s",book[i].ISBN);
printf("输入第%d本图书的出版单位:",i+1);
scanf("%s",book[i].Publisher);
printf("输入第%d本图书的出版年限:",i+1);
scanf("%d",book[i].year);
printf("输入第%d本图书的价格:",i+1);
scanf("%d",book[i].price);
book[i].num=suiji();
printf("该图书的编号被系统定义为:%lu\n",book[i].num);
}
M=j;
save();   //保存文件 
}void save()
{
FILE * fp;   //文件指针 
int i;
if((fp=fopen("book.txt","wb"))==NULL)    //已写入的方式打开文件,文件指针fp在调用fopen打开文件book.txt如果失败,则会成为一个空指针 
{
printf("无法打开文件!\n");
exit(0);    //正常状态退出
}
for(i=0;i<M;i++)    //M是录入图书的数量 
   fwrite(&book[i],sizeof(struct book),1,fp);   //在book文件中写入内容,sizeof计算什么的大小,1是要写入的内容个数 
   fclose(fp);    //关闭文件 
   printf("============操作成功!============\n");
 } 
 void load()
 {
  FILE * fp;
  int i;
  if((fp=fopen("book.txt","rb"))==NULL)    //用读入的方式来打开book文件,文件指针fp在调用fopen打开文件book.txt如果失败,则会成为一个空指针 
  {
  printf("无法打开文件!\n");
  exit(0);
 
}
for(i=0;!feof(fp);i++)    //feof检查是否读到了结尾 
    fread(&book[i],sizeof(struct book),1,fp);   //读book.txt的内容, sizeof计算什么的大小,1是要写入的内容个数
fclose(fp);
M=i-1;
 }
 unsigned long suiji()     //一个函数来编写图书编号 
{
unsigned long h;
srand(time(NULL));
h=rand()%1000+1;     //生成随机编号,从1到1001 
return h;
}
void search()    //查询的主菜单 
{
int choice;
printf("\t\t欢迎进入图书查询模版\n");
printf("-------------------------------------------------\n");
printf(" 1.书名查询   2.作者名查询   3.ISBN查询   4.出版社查询   5.出版年限查询   6.图书编号查询\n");
printf("输入你需要的查询方式:");
scanf("%d",&choice);
switch(choice)    //用Switch进行选择 
{
case 1:search_shuming();break;
case 2:search_author();break;
case 3:search_ISBN();break;
case 4:search_Publisher();break;
case 5:search_year();break;
case 6:search_num();break;
default:printf("\n非法操作!\n");

}
void search_shuming()  //按书名查询
{
int i,j=0;
char c1[20];
load();
printf("输入您需要查找的书名:");
getchar();
gets(c1);
for(i=0;i<M;i++)
if(strcmp(c1,book[i].shuming)==0)
{
if(j==0)
{
printf("=============图书相关信息===============\n"); 
    printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
}
printf("%2d",j+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("     %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
j++;
}
if(j==0)
   printf("没有查找到此书名的图书!!!\n");
}
void search_author()   //按作者名查询
{
int i,j=0;
char c1[20];
load();
printf("输入您需要查找的作者名");
getchar();
gets(c1);
for(i=0;i<M;i++)
if(strcmp(c1,book[i].author)==0)
{
if(j==0)
{
printf("=============图书相关信息===============\n");
    printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
}
printf("%2d",j+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("     %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
j++;
}
if(j==0)
   printf("输入的作者名有误!!!\n");
}
void __cdecl search_ISBN(void)   //按ISBN查询
{
int i,j=0;
char c1[20];
load();
printf("输入您需要查找的ISBN:");
getchar();
gets(c1);
for(i=0;i<M;i++)
if(strcmp(c1,book[i].ISBN)==0)
{
if(j==0)
{
printf("=============图书相关信息===============\n");
    printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
printf("%2d",j+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("     %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
j++;
}
if(j==0)
   printf("输入的ISBN是错误的!!!\n");
}
}
void search_Publisher()    //按出版社查询
{
int i,j=0;
char c1[20];
load();
printf("输入您需要查找的出版社:");
getchar();
gets(c1);
for(i=0;i<M;i++)
if(strcmp(c1,book[i].Publisher)==0)
{
if(j==0)
{
printf("=============图书相关信息===============\n");
    printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
printf("%2d",j+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("     %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
j++;
}
if(j==0)
   printf("输入的出版社有误!!!\n");
}
}
void __cdecl search_year(void)   //按出版年限查询
{
int i,j=0;
char
c1[20];
load();
printf("输入您需要查找的出版年限:");
getchar();
gets(c1); 
for(i=0;i<M;i++)
if(strcmp(c1,book[i].year)==0)
{
if(j==0)
{
printf("=============图书相关信息===============\n");
    printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
printf("%2d",j+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("     %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
j++;
}
if(j==0)
   printf("输入的出版年限有误!!!\n");
}
}
int search_num()   //按图书编号查询
{
load();   //载入 
int i,j=0,k;
unsigned long num;
printf("输入您需要查找的图书编号:");
scanf("%lu",&num);    //lu无符号长整型 
for(i=0;i<M;i++)
   if(num==book[i].num)
   {
        printf("=============图书相关信息===============\n");
    printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
k=i;
printf("%2d",j+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("     %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
j++;
break;
   }
   if(j==0)
   {
        printf("该图书不存在\n");
   k=-1; 
   }
   return k;
 } 
 void xiugai()
{
int choice;
printf("===========欢迎进入信息修改模块=============\n");
load();
int k=search_num();   //K是图书编号 
if(k!=-1)
{
printf("1.删除信息          2.修改信息\n");
printf("请输入您的选择\n");
scanf("%d",&choice);
switch(choice)
{
case 1:delete1(k);break;
case 2:revise(k);break;
}
}
else
{
printf("没有查找到您要修改的图书信息\n");
}
}

void __cdecl delete1(int k)
{
char c1;
int i;
printf("确定删除?是输入y或Y,退出程序请按其他键\n");
getchar();
scanf("%c",&c1);
if(c1=='y'||c1=='Y')
{
for(i=k;i<M-1;i++)
   book[i]=book[i+1];
M=M-1;
save();
printf("删除成功\n");   
}
else
    exit(0);
}

void revise(int z)
{
char c2;
int i=z;
printf("输入图书的书名:\n");
scanf("%s",book[i].shuming);
printf("输入第%d本图书的作者名:\n");
scanf("%s",book[i].author);
printf("输入第%d本图书的ISBN:\n");
scanf("%s",book[i].ISBN);
printf("输入第%d本图书的出版单位:\n");
scanf("%s",book[i].Publisher);
printf("输入第%d本图书的出版年限:\n");
scanf("%d",book[i].year);
printf("输入第%d本图书的价格:\n");
scanf("%d",book[i].price);
printf("确定修改?是输入y或Y,退出程序请按其他任意键\n");
getchar();
scanf("%c",&c2);
if(c2=='y'||c2=='Y')
   save();
else
   exit(0); 
}
void add()
{
load();
int m,i,j;
printf("==========进入添加信息模板===========\n");
for(i=0;i<10;i++)
{
printf("请输入您需要添加的图书数量\n");
scanf("%d",&j);
if(j<1000-M)
{
m=j;
break; 
}
printf("该系统只能存放1000本以内的信息,剩余%d本书的空间,请重新输入\n",1000-M);
}
if(i==10)
{
printf("输入的图书数量超过范围\n");
exit(0);
}
M=M+m;
for(i=0;i<m;i++)
{
printf("输入第%d本图书的书名:",i+1);
scanf("%s",book[M+i-m].shuming);
printf("输入第%d本图书的作者名:",i+1);
scanf("%s",book[M+i-m].author);
printf("输入第%d本图书的ISBN:",i+1);
scanf("%s",book[M+i-m].ISBN);
printf("输入第%d本图书的出版单位:",i+1);
scanf("%s",book[M+i-m].Publisher);
printf("输入第%d本图书的出版年限:",i+1);
scanf("%d",book[M+i-m].year);
printf("输入第%d本图书的价格:",i+1);
scanf("%d",book[M+i-m].price);
book[M+i-m].num=suiji();
printf("该图书的编号被系统定义为:%lu\n",book[M+i-m].num);
}
save();
}
void shuchu()
{
int i,j;
load();
printf("-------------------------------------------------------\n");
   printf("                图书相关信息\n");
printf("-------------------------------------------------------\n");
   printf("序列  图书编号  书名  作者名  ISBN  出版年限  价格  出版社\n");
   for(i=0;i<M;i++)
   {
    printf("%2d",i+1);
printf("      %2u",book[i].num);   //因为前面printf有空格,所以这空格 
printf("     %2s",book[i].shuming);
printf("     %2s",book[i].author);
printf("   %2s",book[i].ISBN);
printf("    %2d",book[i].year);
printf("     %2d",book[i].price);
printf("      %2s",book[i].Publisher);
    printf("\n");
   }
}

回复列表 (共1个回复)

沙发

1.录入图书信息    2.图书信息浏览 \n\n");           //\t换行 
printf(" \t3.查询图书 

双色球走势图
澳洲幸运20


开奖网开奖结果

   4.图书信息修改和删除 \n\n");

printf(" \t5.添加图书    6.退出系统 \n\n");

我来回复

您尚未登录,请登录后再回复。点此登录或注册