#include
#include
#include
#define MAX 1000
typedef struct
{ int num;
char name[20];
char author[20];
char press[20];
float price;
int quantity;
}book;
typedef struct{
book *data;
int length;
}linklist;
void init(linklist &L)
{
L.data=(book*)malloc(MAX*sizeof(book));
L.length=0;
}
int read_file(linklist &L)
{ FILE *fp;
int i=0;
while(feof(fp)==0)
{
fread(&L.data[i],sizeof(book),1,fp);
if(L.length==0)
break;
else
i++;
}
fclose(fp);
return i;
}
void save_file(linklist &L,int sum)
{FILE*fp;
int i;
if((fp=fopen("L.txt","wb"))==NULL)
{printf("写文件错误!n");
return;
}
for(i=0;i
printf("写文件错误!n");
fclose(fp);
}
int input(linklist &L)
{ int i,x;
if(L.length>MAX)
{
printf("库存已满!");
return 1000;
}
else{
for(i=0;i<1000;i++)
{
system("cls");
printf("nn 录入图书信息 (最多1000本)n");
printf(" ----------------------------n");
printf("n 第%d本图书",L.length+1);
printf("n 请输入图书的ISBN:");
scanf("%d",&L.data[i].num);
printf("n 请输入图书的书名:");
scanf("%s",L.data[i].name);
printf("n 请输入图书的作者:");
scanf("%s",L.data[i].author);
printf("n 请输入图书的出版社:");
scanf("%s",L.data[i].press);
printf("n 请输入图书的价格:");
scanf("%f",&L.data[i].price);
printf("n 请输入图书的数量:");
scanf("%d",&L.data[i].quantity);
L.data[L.length].num=L.length+1;
L.length++;
printf("n 请按1键返回菜单或按0键继续创建");
scanf("%d",&x);
if(x==1)
break;
}
}
return L.length;
}
void deletel(linklist &L)
{ system("cls");
char Stuname2[20];
int i,j;
printf("请输入图书书名:");
scanf("%s",Stuname2);
printf("n");
for(i=0;i
{
L.data[i]=L.data[i+1];
}
L.length--;
printf("删除成功n");
printf("按任意键加回车返回主菜单!");
scanf("%d",&i);
getchar();
}
void output(linklist &L)
{ system("cls");
int i;
for(i=0;i
L.data[i].author,L.data[i].press,L.data[i].price,L.data[i].quantity);
printf("按任意键加回车返回主菜单!");
scanf("%d",&i);
getchar();
}
void inquire(linklist &L)
{ int i;
char name[20];
system("cls");
printf(" nn请输入您要查找的图书的书名:");
scanf("%s",&name);
for(i=0;i
printf("nnnISBN号:%d,书名:%s,作者:%s,出版社:%s,价格: %.2f,数量:%dn",L.data[i].num,L.data[i].name,
L.data[i].author,L.data[i].press,L.data[i].price,L.data[i].quantity);
printf("按任意键加回车返回主菜单!");
scanf("%d",&i);
getchar();
}
void change(linklist &L)
{ int i,choice;
char name[20];
system("cls");
printf("nnn 请输入您要修改的图书的书名");
scanf("%s",&name);
for(i=0;i
{
printf("nnnISBN号:%d,书名:%s,作者:%s,出版社:%s,价格: %.2f,数量:%dn",L.data[i].num,L.data[i].name,
L.data[i].author,L.data[i].press,L.data[i].price,L.data[i].quantity);
printf("nnn ********请输入您想要修改的数据********nn");
printf(" 1. ISBN号nn");
printf(" 2. 书名nn");
printf(" 3. 作者nn");
printf(" 4. 出版社nn");
printf(" 5. 价格nn");
printf(" 6. 数量nn");
printf(" 请选择(1-6):");
scanf("%d",&choice);
switch(choice)
{case 1:{
printf("n 请输入你改的新ISBN号");
scanf("%d",&L.data[i].num);
break;
}
case 2:{
printf("n 请输入你改的新书名");
scanf("%s",L.data[i].name);
break;
}
case 3:{
printf("n 请输入你改的新作者");
scanf("%s",L.data[i].author);
break;
}
case 4:{
printf("n 请输入你改的新出版社");
scanf("%s",L.data[i].press);
break;
}
case 5:{
printf("n 请输入你改的新价格");
scanf("%f",&L.data[i].price);
break;
case 6:{
printf("n 请输入你改的新数量");
scanf("%d",&L.data[i].quantity);
break;
}
}
}
printf("修改后:n");
printf("nnnISBN号:%d,书名:%s,作者:%s,出版社:%s,价格: %.2f,数量:%dn",L.data[i].num,L.data[i].name,
L.data[i].author,L.data[i].press,L.data[i].price,L.data[i].quantity);}
printf("按任意键加回车返回主菜单!");
scanf("%d",&i);
break;
}
}
void menu()
{
linklist L;
book e;
init(L);
int choice,sum;
sum=read_file(L);
do
{ system("cls");
printf("nnn ********图书信息管理系统********nn");
printf(" 1. 创建图书信息nn");
printf(" 2. 查询图书信息nn");
printf(" 3. 修改图书信息nn");
printf(" 4. 删除图书信息nn");
printf(" 5. 全部图书信息nn");
printf(" 0. 退出系统nn");
printf(" 请选择(0-5):");
scanf("%d",&choice);
switch(choice)
{
case 1: input(L); break;
case 2: inquire(L); break;
case 3: change(L); break;
case 4: deletel(L); break;
case 5: output(L);break;
case 0: break;
}
}while(choice!=0);
}
int main()
{
int i,sum;
menu();
}



