问题遇到的现象和发生背景
这是我今年暑假关于图书管理系统,,但是我不知道为什么会运行失败,可能代码里的问题比较多,希望大家帮我看看,我一开始会在c盘建立一个book.txt文件,里面会放10本书的相关资料,
麻烦大家帮我修改修改
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct stu
{
int id;
char bookname[30];
float money;
char year[12];
char press[30];
int strock;
}books[20],books1[20],books2[20],books3[20],books4[20];
void page_title(char *menu_item)
{
printf("\n图书管理系统\n-%s-\n",menu_item);
}
int main()
{
int book_add();
int book_show();
int book_modify();
int book_delete();
int book_search();
page_title("操作选单");
printf("用数字选择操作\n");
printf("\t1图书信息录入\t2显示图书\n");
printf("\t3修改图书信息\t4图书信息删除\n");
printf("\t5图书信息查询\t6退出\n");
switch(getchar())
{
case 1:book_add();
break;
case 2:book_show();
break;
case 3:book_modify();
break;
case 4:book_delete();
break;
case 5:book_search();
break;
case 6:exit(0);
}
return 0;
}
//图书信息录入
int book_add()
{
FILE *fp;
int i,n;
page_title("图书信息录入");
printf("需要录入几本书\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("id:");
scanf("%d",&books[i].id);
printf("bookname:");
scanf("%s",books[i].bookname);
printf("money:");
scanf("%f",&books[i].money);
printf("year:");
scanf("%s",books[i].year);
printf("press:");
scanf("%s",books[i].press);
printf("strock:");
scanf("%d",&books[i].strock);
}
if((fp=fopen("c:\\book.txt","r"))==NULL)
{
printf("\n文件打开失败\n");
exit(0);
}
fwrite(books,sizeof(struct stu),1,fp);
fclose(fp);
return 0;
}
//图书显示
int book_show()
{
FILE *fp;
int i;
page_title("图书显示");
if((fp=fopen("c:\\book.txt","r"))==NULL)
{
printf("\n文件打开失败\n");
exit(0);
}
printf("编号 书名 价格 出版日期 出版社 库存\n");
for(i=0;i<20;i++)
{
fread(&books1[i],sizeof(struct stu),1,fp);
printf("\n%2d %s %.2f %s %s %4d\n",books1[i].id,books1[i].bookname,books1[i].money,books1[i].year,books1[i].press,books1[i].strock);
}
fclose(fp);
return 0;
}
//图书修改
int book_modify()
{
FILE *fp;
int i,id_change;
page_title("图书修改");
if((fp=fopen("c:\\book.txt","r"))==NULL)
{
printf("\n文件打开失败\n");
exit(0);
}
for(i=0;i<20;i++)
fread(&books2[i],sizeof(struct stu),1,fp);
printf("输入要修改的图书的id:");
scanf("%d",&id_change);
for(i=0;i<20;i++)
{
if(books2[i].id==id_change)
{
printf("修改书名:");
scanf("%s",books2[i].bookname);
printf("修改价钱:");
scanf("%f",books2[i].money);
printf("修改出版日期:");
scanf("%s",books2[i].year);
printf("修改出版社:");
scanf("%s",books2[i].press);
printf("修改库存:");
scanf("%d",books2[i].strock);
}
}
fwrite(books2,sizeof(struct stu),1,fp);
fclose(fp);
return 0;
}
//图书删除
int books_delete()
{
FILE *fp;
int i,id_delete,j;
page_title("图书删除");
if((fp=fopen("c:\\book.txt","r"))==NULL)
{
printf("\n文件打开失败\n");
exit(0);
}
for(i=0;i<20;i++)
fread(&books3[i],sizeof(struct stu),1,fp);
printf("输入要删除的图书的编号:");
scanf("%d",&id_delete);
for(i=0;i<20;i++)
{
if(books3[i].id==id_delete)
{
for(j=i;j<20;j++)
{
books3[j].id=books3[j+1].id;
strcpy(books3[j].bookname,books3[j+1].bookname);
books3[j].money=books3[j+1].money;
strcpy(books3[j].year,books3[j].year);
strcpy(books3[j].press,books3[j].press);
books3[j].strock=books3[j+1].strock;
}
}
}
printf("此书已删除\n");
fwrite(books3,sizeof(struct stu),1,fp);
return 0;
}
//图书搜索
int book_search()
{
FILE *fp;
int i,flag=0;
char num[30];
page_title("图书搜索");
printf("请输入书名:\n");
scanf("%s",num);
if((fp=fopen("c:\\book.txt","r"))==NULL)
{
printf("\n文件打开失败\n");
exit(0);
}
for(i=0;i<20;i++)
fread(&books4[i],sizeof(struct stu),1,fp);
for(i=0;i<20&&flag==0;i++)
{
if(strcmp(books4[i].bookname,num)==0)
{
printf("图书编号:%d\t",books4[i].id);
printf("书名:%s\t",books4[i].bookname);
printf("价格:%.2f\t",books4[i].money);
printf("出版日期:%s\t",books4[i].year);
printf("出版社:%s\t",books4[i].press);
printf("库存:%d\t",books4[i].strock);
flag=1;
}
}
return 0;
}