# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
結構書{
人物姓名[20],作者[20],出版社[20];
int數,價格;
struct book * next
};
添加()
{
FILE * fp
結構書*頭,*新,*當前;
int i,n,k=0,j;
clr SCR();
head=new=(結構書*)malloc(sizeof(結構書));
printf("妳想加幾本書?\ n ");
scanf("%d ",& ampn);
getchar();
for(I = 1;我& lt= n;i++)
{
printf("請輸入%dst '圖書的名稱!\n”,I);
fgets(新-& gt;姓名,20,stdin);
printf("輸入作者姓名!\ n ");
fgets(新-& gt;作者,20,stdin);
printf("出版社的名字!\ n ");
fgets(新-& gt;press,20,stdin);
printf("書的價格!註意價格的類型必須是' int ' \ n ");
scanf("%d ",& amp新建-& gt;價格);
printf("書的數量!註意數字不能是'-1 ' \ n ");
scanf("%d ",& amp新建-& gt;號);
getchar();
strlwr(新-& gt;姓名);
strlwr(新-& gt;作者);
strlwr(新-& gt;按);
clr SCR();
如果(我!=n)
new = new-& gt;next=(結構書*)malloc(sizeof(結構書));
}
新建-& gt;next = NULL
if((fp=fopen("E:\\book "," r "))!=空)
{
而(!feof(fp))
{
k++;
如果(k==1)
current=new=(結構書*)malloc(sizeof(結構書));
其他
new = new-& gt;next=(結構書*)malloc(sizeof(結構書));
fgets(新-& gt;名字,20,FP);
fgets(新-& gt;作者,20,FP);
fgets(新-& gt;press,20,FP);
fscanf(fp," %d,%d\n ",& amp新建-& gt;價格& amp新建-& gt;號);
}
n = n+k;
新建-& gt;下壹個=頭;
水頭=電流;
}
reapt:new = head;
for(I = 1;我& lt= n-1;i++)
{
k =新-& gt;號碼;
當前=新-& gt;接下來;
for(j = 1;j & lt= n-I;j++)
{
if(k = = current-& gt;編號)
{
printf("抱歉!妳放了同樣的號碼!\ n ");
printf("所以您應該再次輸入\"%s\ "數字\n ",current-& gt;姓名);
scanf("%d ",t-& gt;號);
goto reapt
}
電流=電流-& gt;接下來;
}
new = new-& gt;接下來;
}
fclose(FP);
fp=fopen("E:\\book "," w ");
新=頭;
for(I = 1;我& lt= n;i++)
{
fprintf(fp," %s%s%s ",new-& gt;名字,新-& gt;作者,新-& gt;按);
fprintf(fp," %d,%d\n ",new-& gt;價格,新-& gt;號);
new = new-& gt;接下來;
免費(頭);
頭=新;
}
fclose(FP);
}
正確()
{
FILE * fp
結構書*頭,*新,*廟;
int i=0,j=0,n,m=-1,k = 0;
char c[20];
clr SCR();
head=new=(結構書*)malloc(sizeof(結構書));
printf("您想更正哪個bood?\ n ");
printf("如果您想輸入數字,請按' 1 ',如果您想輸入出版社、作者、姓名,請按' 2 '!\ n ");
scanf("%d ",& ampn);
getchar();
如果(n==1)
{
printf("請輸入數字!\ n ");
scanf("%d ",& ampm);
getchar();
}
其他
{
printf("請輸入姓名或作者或出版社\ n ");
fgets(c,20,stdin);
strl wr(c);
}
clr SCR();
fp=fopen("E:\\book "," r ");
而(!feof(fp))
{
i++;
fgets(新-& gt;名字,20,FP);
fgets(新-& gt;作者,20,FP);
fgets(新-& gt;press,20,FP);
fscanf(fp," %d,%d\n ",& amp新建-& gt;價格& amp新建-& gt;號);
if((new-& gt;number = = m)| |(strcmp(new-& gt;name,c)= = 0)| |(strcmp(new-& gt;author,c)= = 0)| |(strcmp(new-& gt;按下,c)==0))
k++;
temple = new
new = new-& gt;next=(結構書*)malloc(sizeof(結構書));
}
fclose(FP);
免費(新);
坦普爾->;next = NULL
新=頭;
如果(k==0)
{
printf("沒有這本書!\ n ");
for(j = 1;j & lt= I;j++)
{
new = new-& gt;接下來;
免費(頭);
頭=新;
}
}
if(k & gt;1)
{
printf("有%d本書滿足您的需求,您需要輸入書號!\n”,k);
scanf("%d ",& ampm);
getchar();
for(j = 0;j & lt=19;j++)
c[j]= ' A ';
}
如果(k!=0)
{
fp=fopen("E:\\book "," w ");
for(j = 1;j & lt= I;j++)
{
if((new-& gt;number = = m)| |(strcmp(new-& gt;name,c)= = 0)| |(strcmp(new-& gt;author,c)= = 0)| |(strcmp(new-& gt;按下,c)==0))
{
printf("請輸入圖書名稱!\ n ");
fgets(新-& gt;姓名,20,stdin);
printf("輸入作者姓名!\ n ");
fgets(新-& gt;作者,20,stdin);
printf("出版社的名字!\ n ");
fgets(新-& gt;press,20,stdin);
printf("書的價格!註意價格的類型必須是' int ' \ n ");
scanf("%d ",& amp新建-& gt;價格);
getchar();
clr SCR();
strlwr(新-& gt;姓名);
strlwr(新-& gt;作者);
strlwr(新-& gt;按);
}
fprintf(fp," %s%s%s ",new-& gt;名字,新-& gt;作者,新-& gt;按);
fprintf(fp," %d,%d\n ",new-& gt;價格,新-& gt;號);
new = new-& gt;接下來;
免費(頭);
頭=新;
}
fclose(FP);
}
}
刪除()
{
FILE * fp
結構書*頭,*新,*廟;
int i=0,j=0,n,k=0,m =-1;
char c[20];
clr SCR();
printf("妳想搜索哪本書?如果您想輸入數字,請按' 1 ',如果您想輸入出版社,作者,姓名,請按' 2 '!\ n ");
scanf("%d ",& ampn);
getchar();
如果(n==1)
{
printf("請輸入數字!\ n ");
scanf("%d ",& ampm);
}
其他
{
printf("請輸入姓名或作者或出版社\ n ");
fgets(c,20,stdin);
strl wr(c);
}
clr SCR();
fp=fopen("E:\\book "," r ");
而(!feof(fp))
{
i++;
if(i==1)
head=new=(結構書*)malloc(sizeof(結構書));
其他
new = new-& gt;next=(結構書*)malloc(sizeof(結構書));
fgets(新-& gt;名字,20,FP);
fgets(新-& gt;作者,20,FP);
fgets(新-& gt;press,20,FP);
fscanf(fp," %d,%d\n ",& amp新建-& gt;價格& amp新建-& gt;號);
if((new-& gt;number = = m)| |(strcmp(new-& gt;name,c)= = 0)| |(strcmp(new-& gt;author,c)= = 0)| |(strcmp(new-& gt;按下,c)==0))
k++;
}
fclose(FP);
新建-& gt;next = NULL
新=頭;
if(k & gt;1)
{
printf("因為有%d本書滿足妳的需求,所以妳必須輸入數量\n ",k);
scanf("%d ",& ampm);
}
如果(k!=0)
{
fp=fopen("E:\\book "," w ");
for(j = 1;j & lt= I;j++)
{
if((m = =-1)& amp;& amp((strcmp(new-& gt;name,c)= = 0)| |(strcmp(new-& gt;author,c)= = 0)| |(strcmp(head-& gt;按下,c)==0)))
{
temple = new-& gt;接下來;
免費(新);
new = temple
繼續;
}
if(新建-& gt;數量==m)
{
temple = new-& gt;接下來;
免費(新);
new = temple
繼續;
}
fprintf(fp," %s%s%s ",new-& gt;名字,新-& gt;作者,新-& gt;按);
fprintf(fp," %d,%d\n ",new-& gt;價格,新-& gt;號);
temple = new-& gt;接下來;
免費(新);
new = temple
}
fclose(FP);
}
}
搜索()
{
FILE * fp
int i=0,n,m=-1,k = 0;
struct book * head =(struct book *)malloc(size of(struct book));
char c[20];
head->;next = NULL
printf("妳想搜索哪本書?如果您想輸入數字,請按' 1 ',如果您想輸入出版社,作者,姓名,請按' 2 '!\ n ");
scanf("%d ",& ampn);
getchar();
如果(n==1)
{
printf("請輸入數字!\ n ");
scanf("%d ",& ampm);
}
其他
{
printf("請輸入姓名或作者或按\ n ");
fgets(c,20,stdin);
strl wr(c);
}
clr SCR();
fp=fopen("E:\\book "," r ");
而(!feof(fp))
{
fgets(head-& gt;名字,20,FP);
fgets(head-& gt;作者,20,FP);
fgets(head-& gt;press,20,FP);
fscanf(fp," %d,%d\n ",& amphead->;價格& amphead->;號);
如果((head-& gt;number = = m)| |(strcmp(head-& gt;name,c)= = 0)| |(strcmp(head-& gt;author,c)= = 0)| |(strcmp(head-& gt;按下,c)==0))
{
printf("書的名稱:% s作者:% s出版社:%d,編號:%d\n ",head-& gt;姓名,頭像-& gt;作者,負責人-& gt;按下,head-& gt;price,head->;號);
k++;
}
免費(頭);
head=(結構書*)malloc(sizeof(結構書));
head->;next = NULL
}
免費(頭);
fclose(FP);
如果(k==0)
printf("無!\ n ");
}
訂單()
{
FILE * fp
結構書*頭,*新,*廟,*當前;
int i=0,j=0,k=0,n;
printf("如果要訂書,在名字上按1,或者在號碼上按2 \ n ");
scanf("%d ",& ampn);
clr SCR();
fp=fopen("E:\\book "," r ");
而(!feof(fp))
{
k++;
如果(k==1)
head=new=(結構書*)malloc(sizeof(結構書));
其他
new = new-& gt;next=(結構書*)malloc(sizeof(結構書));
fgets(新-& gt;名字,20,FP);
fgets(新-& gt;作者,20,FP);
fgets(新-& gt;press,20,FP);
fscanf(fp," %d,%d\n ",& amp新建-& gt;價格& amp新建-& gt;號);
}
fclose(FP);
新建-& gt;next = NULL
temple=(結構書*)malloc(sizeof(結構書));
for(I = 1;我& lt= k-1;i++)
{
電流=水頭;
new = head-& gt;接下來;
for(j = 1;j & lt= k-I;j++)
{
如果(n==1)
if(strcmp(當前-& gt;名字,新-& gt;姓名)>0)
{
* temple = * new
* new = * current
* current = * temple
坦普爾->;next = new-& gt;接下來;
新建-& gt;下壹個=當前-& gt;接下來;
當前->;next = temple-& gt;接下來;
}
如果(n==2)
如果(當前-& gt;編號& gt新建-& gt;編號)
{
* temple = * new
* new = * current
* current = * temple
坦普爾->;next = new-& gt;接下來;
新建-& gt;下壹個=當前-& gt;接下來;
當前->;next = temple-& gt;接下來;
}
當前=新;
new = new-& gt;接下來;
}
}
新=頭;
fp=fopen("E:\\book "," w ");
for(I = 1;我& lt= k;i++)
{
fprintf(fp," %s%s%s ",new-& gt;名字,新-& gt;作者,新-& gt;按);
fprintf(fp," %d,%d\n ",new-& gt;價格,新-& gt;號);
printf(" Book:% sAuthor:% s ",new-& gt;名字,新-& gt;作者,新-& gt;按);
printf("價格:%d,數量:%d\n ",new-& gt;價格,新-& gt;號);
new = new-& gt;接下來;
免費(頭);
頭=新;
}
fclose(FP);
}
主()
{
int n;
while(1)
{
printf(" \ n ");
printf("如果要補充!請按“1”\ n”);
printf("如要更正!請按‘2’\ n”);
printf("如果要刪除!請按‘3’\ n”);
printf("如果要搜索!請按‘4’\ n”);
printf("如果妳想訂購!請按‘5’\ n”);
printf("如果妳什麽都不想做!請按‘0’\ n”);
scanf("%d ",& ampn);
clr SCR();
開關(n){
案例1:add();
打破;
案例二:正確();
打破;
情況三:delete();
打破;
案例四:搜索();
打破;
案例五:order();
打破;
案例0:破;
}
如果(n==0)
打破;
}
}