#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char number[10];
char name[20];
char author[20];
char publish[50];
char time[20];
float price;
}mbook;
typedef struct {
int count;
mbook book[100];
}mlibrary;
mlibrary library;
void save()
{
FILE *fp;
if((fp=fopen("library.doc","w"))==NULL)
{
printf("\n 无法保存信息\n");
return;
}
fwrite(&library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
void putin() /定义录入函数/
{
int y=1;
system("cls");
while(y)
{
printf("\t请输入图书编码 :");
scanf("%s",library.book[library.count].number);
printf("\t请输入书名 :");
scanf("%s",library.book[library.count].name);
printf("\t请输入作者名 :");
scanf("%s",library.book[library.count].author);
printf("\t请输入出版商 :");
scanf("%s",library.book[library.count].publish);
printf("\t请输入录入时间 :");
scanf("%s",library.book[library.count].time);
printf("\t请输入书本价格 :");
fflush(stdin);
scanf("%f",&library.book[library.count].price);
library.count++;
printf("\n是否继续录入 (1是;0否 ) :");
fflush(stdin);
scanf("%d",&y);
if (y!=1)
{
y=0;
break;
}
}
save();
}
void lookup()
{
int i;
system("cls");
printf("编码\t书名\t作者名\t出版商\t录入时间\t价格\n");
for(i=0;i<library.count;i++)
{
printf("%s\t%s\t%s\t%s\t%s\t%-12.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
fflush(stdin);
getchar();
}
void search_by_name() /定义按书名查询/
{
int i;
char s2[20];
int flag=1;
printf("\n请输入你想要查找的书名: ");
fflush(stdin);
scanf("%s",s2);
printf("编码\t书名\t作者名\t出版商\t录入时间\t价格\n");
for(i=0;i<library.count;i++ )
if(strcmp(s2,library.book[i].name)==0)
{
flag=0;
printf("%s\t%s\t%s\t%s\t%s\t%-12.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if (flag)
{
printf("无法找到!");
}
fflush(stdin);
getchar();
}
void search_by_author() /定义按作者名查询/
{
int i;
char s3[20];
int flag=1;
printf("请输入你要查找的书籍作者名: ");
fflush(stdin);
scanf("%s",s3);
printf("编码\t书名\t作者名\t出版商\t录入时间\t价格\n");
for(i=0;i<library.count;i++ )
if(strcmp(s3,library.book[i].author)==0)
{
flag=0;
printf("%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if (flag)
{
printf("无法找到!");
}
fflush(stdin);
getchar();
}
void search() /定义查询函数/
{
int a;
system("cls"); /进行清屏/
printf("\t\t*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("开始查询\n");
printf("\t\t\t1---------------按照书名查询\n");
printf("\t\t\t2---------------按照作者名查询\n");
printf("\t\t\t0---------------退出\n");
printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n") ;
printf("\t\t您的选择是:");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case 1:
search_by_name();
break;
case 2:
search_by_author();
break;
case 0:
return;
}
}
void del() /定义删除函数/
{
int i;
char number[10];
system("cls"); /清屏/
printf("\n 请输入您想要删除的书籍的编码:");
fflush(stdin);
scanf("%s",number);
for (i=0;i<library.count;i++)
{
if(strcmp(number,library.book[i].number)==0)break;
}
if (i!=library.count)
{
for(;i<library.count-1;i++)
{
strcpy(library.book[i].name,library.book[i+1].name);
strcpy(library.book[i].number,library.book[i+1].number);
strcpy(library.book[i].publish,library.book[i+1].publish);
strcpy(library.book[i].author,library.book[i+1].author);
strcpy(library.book[i].time,library.book[i+1].time);
library.book[i].price=library.book[i+1].price;
}
library.count--;
}
else
printf("\n 找不到!\n");
save();
fflush(stdin);
getchar();
}
void update()
{
int i;
char number[10];
system("cls"); /清屏/
printf("\n 请输入您想要修改的书籍的编码:");
fflush(stdin);
scanf("%s",number);
for (i=0;i<library.count;i++)
{
if(strcmp(number,library.book[i].number)==0)
{
printf("编码\t书名\t作者名\t出版商\t录入时间\t价格\n");
printf("%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
break;
}
}
if (i!=library.count)
{
mbook book;
printf("\n请您输入修改后的信息 :\n");
printf("\t请输入您修改后的编码 :");
scanf("%s",book.number);
printf("\t请输入您修改后的书名 :");
scanf("%s",book.name);
printf("\t请输入您修改后的作者名 :");
scanf("%s",book.author);
printf("\t请输入您修改后的出版商 :");
scanf("%s",book.publish);
printf("\t请输入您修改后的录入时间 :");
scanf("%s",book.time);
printf("\t请输入您修改后的价格 :");
fflush(stdin);
scanf("%f",&book.price);
strcpy(library.book[i].name,book.name);
strcpy(library.book[i].number,book.number);
strcpy(library.book[i].publish,book.publish);
strcpy(library.book[i].author,book.author);
strcpy(library.book[i].time,book.time);
library.book[i].price=book.price;
save();
}
else
printf("\n 无法找到!\n");
fflush(stdin);
getchar();
}
int main()
{
int a;
FILE *fp;
if((fp=fopen("library.doc","r"))==NULL)
{
printf("\n无法打开图书信息!\n");
fp=fopen("library.doc","w+");
printf("\n开始阅读信息然后进入程序\n");
library.count=0;
fwrite(&library.count,sizeof(int),1,fp);
fclose(fp);
}
fread(&library.count,sizeof(int),1,fp);
fread(library.book,sizeof(library.book[0]),library.count,fp);
fclose(fp);
do
{
system("cls");
printf("\n\t\t\t\t图书信息管理系统\t\t\t\t\n");
printf("\t\t*********************************************\n");
printf("\t\t\t1 --------------------录入图书信息\n");
printf("\t\t\t2 --------------------浏览图书信息 \n");
printf("\t\t\t3 --------------------查询图书信息\n");
printf("\t\t\t4 --------------------删除图书信息\n");
printf("\t\t\t5 --------------------修改图书信息\n");
printf("\t\t\t0 --------------------退出程序\n");
printf("\t\t**********************************************\n");
printf("\t\t 请选择: ");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case 1:
putin();
break;
case 2:
lookup();
break;
case 3:
search();
break;
case 4:
del();
break;
case 5:
update();
break;
case 0:
printf("\n\n退出!\n\n");
break;
default:
printf("\n没有该选择!\n");
}
}while(a!=0);
save();
}
就是图书管理系统进行增删改查,
用结构体数组mbook[100]存储图书信息,保存时写到文件里
根据用户输入的数字选项进行操作
具体哪里不明白呢