

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book{
int num;
char bname[50];
char wname[20];
char press[50];
char sort[50];
int time;
float price;
struct book *next;
};
struct book *creatbook(); //創建鏈表
struct book *addbook(struct book *head); //添加圖書
int yanzheng(struct book *head,int m); //驗證新添加的圖書編碼是否已存在
void deletebook(struct book *head); //刪除圖書
void fprint(struct book *head); //將鏈表寫入文件
struct book *load(); //從文件中讀取信息并建成鏈表
void print_book(struct book *head); //將鏈表信息輸出
void chaxun(struct book *head); //查詢圖書信息
void num_chaxun(struct book *head); //按圖書編號查詢圖書
void wname_chaxun(struct book *head); //按作者名查詢圖書
void sort_chaxun(struct book *head); //按類別查詢圖書
void time_chaxun(struct book *head); //按出版時間查詢圖書
void bname_chaxun(struct book *head); //按圖書名查詢圖書
void xiugai(struct book *head); //修改圖書信息
void paixu(struct book *head); //對圖書進行排序
void num_paixu(struct book *head); //按圖書編號排序
void time_paixu(struct book *head); //按圖書出版時間排序
void price_paixu(struct book *head); //按圖書價格排序
void bname_paixu(struct book *head); //按圖書名排序
void wname_paixu(struct book *head); //按作者名排序
int main()
{
int choice,n,x,y=1,c,c1=1234;
char a,d,b[10],b1[10]="admin";
struct book *head=NULL;
while(y){
system("cls");
printf("\n\n\n\n\n\n\n");
printf(" ********** 歡迎光臨 **********\n\n");
printf(" ********************** 圖書信息管理系統 ************************\n\n\n");
printf("\n\n");
printf(" ============1-用戶登錄===========\n");
printf(" ============0-退出系統===========\n");
printf(" 請輸入您的選擇:");
scanf("%d",&n);
printf("\n");
getchar();
switch(n){
case 0:
y=0;
break;
case 1:
printf(" 請輸入您的用戶名:");
gets(b);
printf("\n");
printf(" 請輸入您的密碼:");
scanf("%d",&c);
printf("\n");
if(strcmp(b,b1)!=0||c!=c1){
printf(" 驗證失敗,請重新輸入!\n");
scanf("%c",&d);
getchar();
system("cls");
}
else{
printf(" 驗證通過!請按Enter鍵進入!\n");
scanf("%c",&d);
getchar();
x=1;
while(x){
system("cls");
printf(" ------------------\n");
printf(" *圖書信息管理系統*\n");
printf(" ------------------\n\n");
printf(" **********************************************\n\n");
printf(" **********************************************\n\n");
printf(" || 1-添加圖書 2-刪除圖書 ||\n\n");
printf(" || 3-圖書列表 4-圖書排序 ||\n\n");
printf(" || 5-查詢圖書 6-修改圖書 ||\n\n");
printf(" || 7-錄入數據 0-退出系統 ||\n\n");
printf(" **********************************************\n\n");
printf(" **********************************************\n\n");
printf("請輸入所選擇的序號:");
scanf("%d",&choice);
getchar();
system("cls");
switch(choice)
{
case 0:
x=0;break;
case 1:
head=load();
if(head==NULL){
printf("文件為空,請先錄入數據!\n");
getchar();
break;
}
else{
head=addbook(head);
printf("添加成功!\n");
printf("是否將新信息保存到文件?(y/n)\n");
scanf("%c",&a);
getchar();
switch(a){
case 'n':
break;
case 'y':
fprint(head);
printf("保存成功!\n");
getchar();
break;
}
break;
}
case 2:
head=load();
if(head==NULL){
printf("文件為空,請先錄入數據!\n");
getchar();
break;
}
else{
deletebook(head);
getchar();
break;
}
break;
case 3:
head=load();
if(head==NULL){
printf("文件為空,請先錄入數據!\n");
getchar();
break;
}
else{
print_book(head);
getchar();
break;
}
case 4:
head=load();
if(head==NULL){
printf("文件為空,請先錄入數據!\n");
getchar();
break;
}
else{
paixu(head);
getchar();
}
break;
case 5:
head=load();
if(head==NULL){
printf("文件為空,請先錄入數據!\n");
getchar();
break;
}
else{
chaxun(head);
getchar();
}
break;
case 6:
head=load();
if(head==NULL){
printf("文件為空,請先錄入數據!\n");
getchar();
break;
}
else{
xiugai(head);
getchar();
break;
}
break;
case 7:
printf("注意:輸入圖書編碼為0時結束!\n");
head=creatbook();
printf("是否將輸入的信息保存到文件以覆蓋文件中已存在的信息?(y/n)\n");
getchar();
scanf("%c",&a);
getchar();
switch(a){
case 'n':
break;
case 'y':
fprint(head);
printf("保存成功!\n");
getchar();
break;
}
break;
default:
printf("您的輸入有誤,請重新輸入!\n");
getchar();
break;
}
}
}
break;
default:
printf(" 您的輸入有誤! 請重新輸入!\n");
getchar();
break;
}
}
}
//錄入數據并形成鏈表
struct book *creatbook()
{
struct book *head,*tail,*p;
int num,time,n;
char bname[50],wname[20],press[50],sort[50];
float price;
int size=sizeof(struct book);
head=tail=NULL;
printf("請輸入圖書編號:");
scanf("%d",&num);
printf("請輸入圖書名:");
scanf("%s",bname);
getchar();
printf("請輸入作者名:");
scanf("%s",wname);
getchar();
printf("請輸入出版社:");
scanf("%s",press);
getchar();
printf("請輸入類別:");
scanf("%s",sort);
getchar();
printf("請輸入出版時間:");
scanf("%d",&time);
getchar();
printf("請輸入價格:");
scanf("%f",&price);
getchar();
while(1){
p=(struct book *)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->press,press);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
do{
printf("請輸入圖書編號:");
scanf("%d",&num);
n=yanzheng(head,num);
if(n==0)
break;
else
printf("您輸入的編號已存在,請重新輸入!\n");
}while(1);
if(num==0)
break;
else
{
printf("請輸入圖書名:");
scanf("%s",bname);
getchar();
printf("請輸入作者名:");
scanf("%s",wname);
getchar();
printf("請輸入出版社:");
scanf("%s",press);
getchar();
printf("請輸入類別:");
scanf("%s",sort);
getchar();
printf("請輸入出版時間:");
scanf("%d",&time);
getchar();
printf("請輸入價格:");
scanf("%f",&price);
getchar();
}
}
return head;
}
//插入結點,并且插入后仍按一定順序
struct book *addbook(struct book *head)
{
struct book *ptr,*p1,*p2,*p;
char bname[50],wname[20],press[50],sort[50];
int size=sizeof(struct book);
int num,time,n=1;
float price;
do{
printf("請輸入圖書編號:");
scanf("%d",&num);
n=yanzheng(head,num);
if(n==0)
break;
else
printf("您輸入的編號已存在,請重新輸入!\n");
}while(1);
printf("請輸入圖書名:");
scanf("%s",bname);
getchar();
printf("請輸入作者名:");
scanf("%s",wname);
getchar();
printf("請輸入出版社:");
scanf("%s",press);
getchar();
printf("請輸入類別:");
scanf("%s",sort);
getchar();
printf("請輸入出版時間:");
scanf("%d",&time);
getchar();
printf("請輸入價格:");
scanf("%f",&price);
getchar();
p=(struct book *)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->press,press);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p2=head;
ptr=p;
while((ptr->num>p2->num)&&(p2->next!=NULL)){
p1=p2;
p2=p2->next;
}
if(ptr->num<=p2->num){
if(head==p2)
head=ptr;
else{
p1->next=ptr;
p->next=p2;
}
}
else{
p2->next=ptr;
p->next=NULL;
}
return head;
}
//驗證添加的圖書編號是否已存在
int yanzheng(struct book *head,int m)
{
struct book *p;
p=head;
while(p!=NULL){
if(p->num==m)
break;
p=p->next;
}
if(p==NULL)
return 0;
else
return 1;
}
//將新鏈表寫入文件中
void fprint(struct book *head)
{
FILE *fp;
char ch='1';
struct book *p1;
if((fp=fopen("f1.txt","w"))==NULL){
printf("File open error!\n");
exit(0);
}
fputc(ch,fp);
for(p1=head;p1;p1=p1->next){
fprintf(fp,"%d %s %s %s %s %d %f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);
}
fclose(fp);
}
//從文件中讀取圖書信息
struct book *load()
{
FILE *fp;
char ch;
struct book *head,*tail,*p1;
head=tail=NULL;
if((fp=fopen("f1.txt","r"))==NULL){
printf("File open error!\n");
exit(0);
}
ch=fgetc(fp);
if(ch=='1'){
while(!feof(fp)){
p1=(struct book *)malloc(sizeof(struct book));
fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->price);
if(head==NULL)
head=p1;
else
tail->next=p1;
tail=p1;
}
tail->next=NULL;
fclose(fp);
return head;
}
else
return NULL;
}
//將整個鏈表的信息輸出
void print_book(struct book *head)
{
struct book *ptr;
if(head==NULL){
printf("\n沒有信息!\n");
return;
}
printf(" 圖書信息列表如下\n");
printf(" ==========================================================\n");
printf(" 編號 圖書名 作者名 出版社 類別 出版時間 價格\n");
for(ptr=head;ptr;ptr=ptr->next)
printf(" %d %s %s %s %s %d %.2f\n",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);
printf(" ==========================================================\n");
}
//刪除圖書信息
void deletebook(struct book *head)
{
int a;
char b,ch='1';
struct book *p1,*p2;
FILE *fp;
printf("請輸入要刪除的圖書編號:");
scanf("%d",&a);
p1=head;
if(p1->num==a&&p1->next==NULL){ //對于文件中只有一組數據
printf("是否清空文件!(y/n)\n");
getchar();
scanf("%c",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
if((fp=fopen("f1.txt","w"))==NULL){
printf("File open error!\n");
exit(0);
}
fclose(fp);
printf("文件已清空!\n");
}
}
else{
while(p1->num!=a&&p1->next!=NULL){
p2=p1;
p1=p1->next;
}
if(p1->next==NULL){
if(p1->num==a){
p2->next=NULL;
printf("是否確定從文件中徹底刪除該圖書?(y/n)\n");
getchar();
scanf("%c",&b);
switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf("刪除成功!\n");
getchar();
break;
}
}
else{
printf("沒有找到要刪除的數據!\n");
getchar();
}
}
else if(p1==head){
head=p1->next;
printf("是否確定從文件中徹底刪除該圖書?(y/n)\n");
getchar();
scanf("%c",&b);
switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf("刪除成功!\n");
getchar();
break;
}
}
else{
p2->next=p1->next;
printf("是否確定從文件中徹底刪除該圖書?(y/n)\n");
getchar();
scanf("%c",&b);
switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf("刪除成功!\n");
getchar();
break;
}
}
}
}
//圖書查詢
void chaxun(struct book *head)
{
int a;
printf(" ==========================================================\n");
printf(" ** 1-按圖書編號查詢 2-按圖書名查詢 **\n");
printf(" ** 3-按圖書類別查詢 4-按作者名查詢 **\n");
printf(" ** 5-按出版時間查詢 0-退出查詢 **\n");
printf(" ==========================================================\n");
printf("請輸入所選擇的編號:");
scanf("%d",&a);
getchar();
switch(a){
case 0:
break;
case 1:
num_chaxun(head);
break;
case 2:
bname_chaxun(head);
break;
case 3:
sort_chaxun(head);
break;
case 4:
wname_chaxun(head);
break;
case 5:
time_chaxun(head);
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
//按編號查詢圖書信息
void num_chaxun(struct book *head)
{
int a;
struct book *p;
printf("請選擇您要查詢的圖書編號:");
scanf("%d",&a);
getchar();
p=head;
while(p!=NULL){
if(p->num==a)
break;
p=p->next;
}
if(p==NULL){
printf("沒有找到該編號的圖書!\n");
}
else{
printf(" 你所查詢的圖書信息如下\n");
printf(" =========================================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
printf(" =========================================================================\n");
}
}
//按圖書名查詢圖書信息
void bname_chaxun(struct book *head)
{
char a[50];
int flag=0;
struct book *p;
printf("請選擇您要查詢的圖書名:");
gets(a);
p=head;
while(p!=NULL){
if(strcmp(p->bname,a)==0){
flag=1;
break;
}
p=p->next;
}
if(flag==0){
printf("沒有找到該圖書名的圖書!\n");
}
else{
printf(" 你所查詢的圖書信息如下\n");
printf(" =========================================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
while(p!=NULL){
if(strcmp(p->bname,a)==0){
printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
}
p=p->next;
}
printf(" =========================================================================\n");
}
}
//按作者名查詢圖書信息
void wname_chaxun(struct book *head)
{
char a[50];
int flag=0;
struct book *p;
printf("請選擇您要查詢的圖書作者名:");
gets(a);
p=head;
while(p!=NULL){
if(strcmp(p->wname,a)==0){
flag=1;
break;
}
p=p->next;
}
if(flag==0){
printf("沒有找到該圖書名的圖書!\n");
}
else{
printf(" 你所查詢的圖書信息如下\n");
printf(" =========================================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
while(p!=NULL){
if(strcmp(p->wname,a)==0){
printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
flag=1;
}
p=p->next;
}
printf(" =========================================================================\n");
}
}
//按圖書類別查詢圖書信息
void sort_chaxun(struct book *head)
{
char a[50];
int flag=0;
struct book *p;
printf("請選擇您要查詢的圖書類別:");
gets(a);
p=head;
while(p!=NULL){
if(strcmp(p->sort,a)==0){
flag=1;
break;
}
p=p->next;
}
if(flag==0){
printf("沒有找到該圖書名的圖書!\n");
}
else{
printf(" 你所查詢的圖書信息如下\n");
printf(" =========================================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
while(p!=NULL){
if(strcmp(p->sort,a)==0){
printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
flag=1;
}
p=p->next;
}
printf(" =========================================================================\n");
}
}
//按圖書出版時間查詢圖書信息
void time_chaxun(struct book *head)
{
int a,flag=0;
struct book *p;
printf("請選擇您要查詢的圖書出版時間:");
scanf("%d",&a);
getchar();
p=head;
while(p!=NULL){
if(p->time==a){
flag=1;
break;
}
p=p->next;
}
if(flag==0){
printf("沒有找到該圖書名的圖書!\n");
}
else{
printf(" 你所查詢的圖書信息如下\n");
printf(" =========================================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
while(p!=NULL){
if(p->time==a){
printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
flag=1;
}
p=p->next;
}
printf(" =========================================================================\n");
}
}
//修改圖書信息
void xiugai(struct book *head)
{
int a,b;
char c;
struct book *p;
printf("請輸入要修改的圖書編號:");
scanf("%d",&a);
p=head;
while(p!=NULL){
if(p->num==a)
break;
p=p->next;
}
if(p==NULL){
printf("沒有找到該編號的圖書!\n");
getchar();
}
else{
printf(" ============================================================\n");
printf(" ** 1-編號 2-圖書名 3-作者名 **\n");
printf(" ** 4-出版社 5-類別 6-出版時間 **\n");
printf(" ** 7-價格 8-修改全部 0-放棄修改 **\n");
printf(" ============================================================\n");
printf("請選擇你要修改的信息編號:");
scanf("%d",&b);
getchar();
switch(b){
case 1:
printf("請輸入新編號:");
scanf("%d",&p->num);
printf("修改成功!\n");
getchar();
break;
case 2:
printf("請輸入新圖書名:");
gets(p->bname);
printf("修改成功!\n");
break;
case 3:
printf("請輸入新作者名:");
gets(p->wname);
printf("修改成功!\n");
break;
case 4:
printf("請輸入新出版社:");
gets(p->press);
printf("修改成功!\n");
break;
case 5:
printf("請輸入新類別:");
gets(p->sort);
printf("修改成功!\n");
break;
case 6:
printf("請輸入新出版時間:");
scanf("%d",&p->time);
printf("修改成功!\n");
getchar();
break;
case 7:
printf("請輸入新價格:");
scanf("%f",&p->price);
printf("修改成功!\n");
getchar();
break;
case 8:
printf("請輸入新圖書編號:");
scanf("%d",&p->num);
printf("請輸入新圖書名:");
scanf("%s",p->bname);
getchar();
printf("請輸入新作者名:");
scanf("%s",p->wname);
getchar();
printf("請輸入新出版社:");
scanf("%s",p->press);
getchar();
printf("請輸入新類別:");
scanf("%s",p->sort);
getchar();
printf("請輸入新出版時間:");
scanf("%d",&p->time);
getchar();
printf("請輸入新價格:");
scanf("%f",&p->price);
getchar();
printf("修改成功!\n");
getchar();
break;
case 0:
break;
default :
printf("您的輸入有誤!\n");
break;
}
printf("是否將修改后的信息保存到文件中?(y/n)\n");
scanf("%c",&c);
getchar();
switch(c){
case 'n':
break;
case 'y':
fprint(head);
printf("保存成功!\n");
getchar();
break;
}
}
}
//圖書排序
void paixu(struct book *head)
{
int a;
printf(" ================================================================\n");
printf(" ** 1-按圖書編號排序 2-按出版時間排序 **\n");
printf(" ** 3-按圖書價格排序 4-按圖書名排序 **\n");
printf(" ** 5-按作者名排序 0-取消排序操作 **\n");
printf(" ================================================================\n");
printf("請輸入您選擇的編號:");
scanf("%d",&a);
getchar();
switch(a){
case 0:
break;
case 1:
num_paixu(head);
break;
case 2:
time_paixu(head);
break;
case 3:
price_paixu(head);
break;
case 4:
bname_paixu(head);
break;
case 5:
wname_paixu(head);
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
//按圖書編號排序
void num_paixu(struct book *head)
{
struct book *a[1000],*p,*p1,*temp;
int i,k,index,n=0;
char b;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]=p1;
p1=p1->next;
}
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(a[i]->num<a[index]->num)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序成功!\n");
printf("是否顯示排序結果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
printf(" ================================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
for(i=0;i<n;i++){
printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
}
printf(" ================================================================\n");
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
//按出版時間排序
void time_paixu(struct book *head)
{
struct book *a[1000],*p,*p1,*temp;
int i,k,index,n=0;
char b;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]=p1;
p1=p1->next;
}
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(a[i]->time<a[index]->time)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序成功!\n");
printf("是否顯示排序結果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
printf(" ===============================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
for(i=0;i<n;i++){
printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
}
printf(" ===============================================================\n");
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
//按圖書價格排序
void price_paixu(struct book *head)
{
struct book *a[1000],*p,*p1,*temp;
int i,k,index,n=0;
char b;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]=p1;
p1=p1->next;
}
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(a[i]->price<a[index]->price)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序成功!\n");
printf("是否顯示排序結果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
printf(" ===============================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
for(i=0;i<n;i++){
printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
}
printf(" ===============================================================\n");
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
//按圖書名排序
void bname_paixu(struct book *head)
{
struct book *a[1000],*p,*p1,*temp;
int i,k,index,n=0;
char b;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]=p1;
p1=p1->next;
}
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(strcmp(a[index]->bname,a[i]->bname)>0)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序成功!\n");
printf("是否顯示排序結果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
printf(" ===============================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
for(i=0;i<n;i++){
printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
}
printf(" ===============================================================\n");
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
//按作者名排序
void wname_paixu(struct book *head)
{
struct book *a[1000],*p,*p1,*temp;
int i,k,index,n=0;
char b;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]=p1;
p1=p1->next;
}
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++){
if(strcmp(a[index]->wname,a[i]->wname)>0)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序成功!\n");
printf("是否顯示排序結果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case 'n':
break;
case 'y':
printf(" ===============================================================\n");
printf(" ** 編號 圖書名 作者名 出版社 類別 出版時間 價格 **\n");
for(i=0;i<n;i++){
printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
}
printf(" ===============================================================\n");
break;
default:
printf("您的輸入有誤!\n");
break;
}
}
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:【C語言】圖書管理系統-創新互聯
網站路徑:http://www.yijiale78.com/article38/dodjsp.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、微信公眾號、全網營銷推廣、網站制作、品牌網站設計、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯