C語言圖書基礎(chǔ)管理系統(tǒng)代碼_第1頁
C語言圖書基礎(chǔ)管理系統(tǒng)代碼_第2頁
C語言圖書基礎(chǔ)管理系統(tǒng)代碼_第3頁
C語言圖書基礎(chǔ)管理系統(tǒng)代碼_第4頁
C語言圖書基礎(chǔ)管理系統(tǒng)代碼_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

#include<stdio.h>#include<stdlib.h>#include<string.h>structbook{ intnum; charbname[50]; charwname[20]; charpress[50]; charsort[50]; inttime; floatprice;structbook*next;};structbook*creatbook();//創(chuàng)立鏈表structbook*addbook(structbook*head);//添加圖書intyanzheng(structbook*head,intm);//驗(yàn)證新添加旳圖書編碼與否已存在voiddeletebook(structbook*head);//刪除圖書voidfprint(structbook*head);//將鏈表寫入文獻(xiàn)structbook*load();//從文獻(xiàn)中讀取信息并建成鏈表voidprint_book(structbook*head);//將鏈表信息輸出voidchaxun(structbook*head);//查詢圖書信息voidnum_chaxun(structbook*head);//按圖書編號查詢圖書voidwname_chaxun(structbook*head);//按作者名查詢圖書voidsort_chaxun(structbook*head);//按類別查詢圖書voidtime_chaxun(structbook*head);//按出版時(shí)間查詢圖書voidbname_chaxun(structbook*head);//按圖書名查詢圖書voidxiugai(structbook*head);//修改圖書信息voidpaixu(structbook*head);//對圖書進(jìn)行排序voidnum_paixu(structbook*head);//按圖書編號排序voidtime_paixu(structbook*head);//按圖書出版時(shí)間排序voidprice_paixu(structbook*head);//按圖書價(jià)格排序voidbname_paixu(structbook*head);//按圖書名排序voidwname_paixu(structbook*head);//按作者名排序intmain(){ intchoice,n,x,y=1,c,c1=1234; chara,d,b[10],b1[10]="yjk"; structbook*head=NULL; while(y){ system("cls");printf("\n\n\n\n\n\n\n"); printf("**********歡迎光顧**********\n\n"); printf("**********************圖書信息管理系統(tǒng)************************\n\n\n"); printf("\n\n"); printf("============1-顧客登錄===========\n"); printf("============0-退出系統(tǒng)===========\n"); printf("請輸入您旳選擇:"); scanf("%d",&n); printf("\n"); getchar(); switch(n){ case0: y=0; break; case1: printf("請輸入您旳顧客名:");gets(b); printf("\n"); printf("請輸入您旳密碼:"); scanf("%d",&c); printf("\n"); if(strcmp(b,b1)!=0||c!=c1){ printf("驗(yàn)證失敗,請重新輸入!\n"); scanf("%c",&d); getchar(); system("cls"); } else{ printf("驗(yàn)證通過!請按Enter鍵進(jìn)入!\n"); scanf("%c",&d); getchar(); x=1; while(x){ system("cls"); printf("------------------\n"); printf("*圖書信息管理系統(tǒng)*\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-錄入數(shù)據(jù)0-退出系統(tǒng)||\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n"); printf("請輸入所選擇旳序號:"); scanf("%d",&choice); getchar(); system("cls"); switch(choice) { case0: x=0;break; case1: head=load(); if(head==NULL){ printf("文獻(xiàn)為空,請先錄入數(shù)據(jù)!\n"); getchar(); break; } else{ head=addbook(head); printf("添加成功!\n");printf("與否將新信息保存到文獻(xiàn)?(y/n)\n");scanf("%c",&a); getchar(); switch(a){ case'n': break; case'y': fprint(head); printf("保存成功!\n"); getchar(); break; } break; } case2: head=load();if(head==NULL){ printf("文獻(xiàn)為空,請先錄入數(shù)據(jù)!\n"); getchar(); break; } else{ deletebook(head);getchar(); break; } break; case3:head=load(); if(head==NULL){ printf("文獻(xiàn)為空,請先錄入數(shù)據(jù)!\n"); getchar(); break; } else{ print_book(head); getchar(); break; } case4:head=load(); if(head==NULL){ printf("文獻(xiàn)為空,請先錄入數(shù)據(jù)!\n"); getchar(); break; } else{ paixu(head); getchar(); } break;case5:head=load(); if(head==NULL){ printf("文獻(xiàn)為空,請先錄入數(shù)據(jù)!\n"); getchar(); break; } else{ chaxun(head); getchar(); } break; case6:head=load(); if(head==NULL){ printf("文獻(xiàn)為空,請先錄入數(shù)據(jù)!\n"); getchar(); break; } else{ xiugai(head); getchar();break; } break;case7: printf("注意:輸入圖書編碼為0時(shí)結(jié)束!\n");head=creatbook();printf("與否將輸入旳信息保存到文獻(xiàn)以覆蓋文獻(xiàn)中已存在旳信息?(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; } }} //錄入數(shù)據(jù)并形成鏈表structbook*creatbook(){ structbook*head,*tail,*p; intnum,time,n; charbname[50],wname[20],press[50],sort[50]; floatprice; intsize=sizeof(structbook); 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("請輸入出版時(shí)間:");scanf("%d",&time); getchar();printf("請輸入價(jià)格:");scanf("%f",&price); getchar(); while(1){ p=(structbook*)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("請輸入出版時(shí)間:"); scanf("%d",&time); getchar(); printf("請輸入價(jià)格:"); scanf("%f",&price); getchar(); } } returnhead;}//插入結(jié)點(diǎn),并且插入后仍按一定順序structbook*addbook(structbook*head){ structbook*ptr,*p1,*p2,*p;charbname[50],wname[20],press[50],sort[50]; intsize=sizeof(structbook);intnum,time,n=1; floatprice; 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("請輸入出版時(shí)間:");scanf("%d",&time); getchar();printf("請輸入價(jià)格:");scanf("%f",&price); getchar(); p=(structbook*)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; } returnhead;}//驗(yàn)證添加旳圖書編號與否已存在intyanzheng(structbook*head,intm){ structbook*p; p=head; while(p!=NULL){ if(p->num==m) break; p=p->next; } if(p==NULL) return0; else return1;}//將新鏈表寫入文獻(xiàn)中voidfprint(structbook*head){ FILE*fp; charch='1'; structbook*p1; if((fp=fopen("f1.txt","w"))==NULL){ printf("Fileopenerror!\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);}//從文獻(xiàn)中讀取圖書信息structbook*load(){ FILE*fp; charch; structbook*head,*tail,*p1; head=tail=NULL; if((fp=fopen("f1.txt","r"))==NULL){ printf("Fileopenerror!\n"); exit(0); } ch=fgetc(fp); if(ch=='1'){ while(!feof(fp)){ p1=(structbook*)malloc(sizeof(structbook)); 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);returnhead; } else returnNULL; }//將整個(gè)鏈表旳信息輸出voidprint_book(structbook*head){ structbook*ptr; if(head==NULL){ printf("\n沒有信息!\n"); return; } printf("圖書信息列表如下\n"); printf("==========================================================\n"); printf("編號圖書名作者名出版社類別出版時(shí)間價(jià)格\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");}//刪除圖書信息voiddeletebook(structbook*head){ inta; charb,ch='1'; structbook*p1,*p2; FILE*fp; printf("請輸入要?jiǎng)h除旳圖書編號:"); scanf("%d",&a);p1=head;if(p1->num==a&&p1->next==NULL){//對于文獻(xiàn)中只有一組數(shù)據(jù) printf("與否清空文獻(xiàn)!(y/n)\n"); getchar(); scanf("%c",&b); getchar(); switch(b){ case'n': break; case'y':if((fp=fopen("f1.txt","w"))==NULL){ printf("Fileopenerror!\n"); exit(0); }fclose(fp); printf("文獻(xiàn)已清空!\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("與否擬定從文獻(xiàn)中徹底刪除該圖書?(y/n)\n"); getchar();scanf("%c",&b);switch(b){ case'n': break; case'y': fprint(head); printf("刪除成功!\n"); getchar(); break; } } else{ printf("沒有找到要?jiǎng)h除旳數(shù)據(jù)!\n"); getchar(); } }elseif(p1==head){ head=p1->next;printf("與否擬定從文獻(xiàn)中徹底刪除該圖書?(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("與否擬定從文獻(xiàn)中徹底刪除該圖書?(y/n)\n"); getchar();scanf("%c",&b); switch(b){ case'n': break; case'y': fprint(head); printf("刪除成功!\n");getchar(); break; } } } }//圖書查詢voidchaxun(structbook*head){ inta; printf("==========================================================\n"); printf("**1-按圖書編號查詢2-按圖書名查詢**\n"); printf("**3-按圖書類別查詢4-按作者名查詢**\n"); printf("**5-按出版時(shí)間查詢0-退出查詢**\n"); printf("==========================================================\n"); printf("請輸入所選擇旳編號:"); scanf("%d",&a); getchar(); switch(a){ case0: break; case1: num_chaxun(head); break; case2: bname_chaxun(head); break; case3: sort_chaxun(head); break; case4: wname_chaxun(head); break; case5: time_chaxun(head); break; default: printf("您旳輸入有誤!\n"); break; }}//按編號查詢圖書信息voidnum_chaxun(structbook*head){ inta; structbook*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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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"); }}//按圖書名查詢圖書信息voidbname_chaxun(structbook*head){ chara[50]; intflag=0; structbook*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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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"); } }//按作者名查詢圖書信息voidwname_chaxun(structbook*head){ chara[50]; intflag=0; structbook*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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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"); } }//按圖書類別查詢圖書信息voidsort_chaxun(structbook*head){ chara[50]; intflag=0; structbook*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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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"); }}//按圖書出版時(shí)間查詢圖書信息voidtime_chaxun(structbook*head){ inta,flag=0; structbook*p; printf("請選擇您要查詢旳圖書出版時(shí)間:"); 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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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"); }}//修改圖書信息voidxiugai(structbook*head){ inta,b; charc; structbook*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-出版時(shí)間**\n"); printf("**7-價(jià)格8-修改所有0-放棄修改**\n"); printf("============================================================\n"); printf("請選擇你要修改旳信息編號:"); scanf("%d",&b); getchar(); switch(b){ case1: printf("請輸入新編號:"); scanf("%d",&p->num); printf("修改成功!\n"); getchar(); break; case2: printf("請輸入新圖書名:"); gets(p->bname); printf("修改成功!\n"); break; case3: printf("請輸入新作者名:"); gets(p->wname); printf("修改成功!\n"); break; case4: printf("請輸入新出版社:"); gets(p->press); printf("修改成功!\n"); break; case5: printf("請輸入新類別:"); gets(p->sort); printf("修改成功!\n"); break; case6: printf("請輸入新出版時(shí)間:"); scanf("%d",&p->time); printf("修改成功!\n"); getchar(); break; case7: printf("請輸入新價(jià)格:"); scanf("%f",&p->price); printf("修改成功!\n"); getchar(); break; case8: 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("請輸入新出版時(shí)間:");scanf("%d",&p->time); getchar();printf("請輸入新價(jià)格:");scanf("%f",&p->price); getchar(); printf("修改成功!\n"); getchar(); break; case0: break; default: printf("您旳輸入有誤!\n"); break; }printf("與否將修改后旳信息保存到文獻(xiàn)中?(y/n)\n");scanf("%c",&c);getchar(); switch(c){ case'n': break; case'y': fprint(head); printf("保存成功!\n"); getchar(); break; } }}//圖書排序voidpaixu(structbook*head){ inta;printf("================================================================\n"); printf("**1-按圖書編號排序2-按出版時(shí)間排序**\n"); printf("**3-按圖書價(jià)格排序4-按圖書名排序**\n"); printf("**5-按作者名排序0-取消排序操作**\n"); printf("================================================================\n"); printf("請輸入您選擇旳編號:"); scanf("%d",&a); getchar(); switch(a){ case0: break; case1: num_paixu(head); break; case2: time_paixu(head); break; case3: price_paixu(head); break; case4: bname_paixu(head); break; case5: wname_paixu(head); break; default: printf("您旳輸入有誤!\n"); break; }}//按圖書編號排序voidnum_paixu(structbook*head){ structbook*a[1000],*p,*p1,*temp; inti,k,index,n=0; charb; 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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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; }}//按出版時(shí)間排序 voidtime_paixu(structbook*head){ structbook*a[1000],*p,*p1,*temp; inti,k,index,n=0; charb; 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("**編號圖書名作者名出版社類別出版時(shí)間價(jià)格**\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; }}//按圖書價(jià)格排序voidprice_paixu(structbook*head){ structbook*a[1000],*p,*p1,*temp; inti,k,index,n=0; charb; 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("================================================

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論