




免費預覽已結束,剩余3頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
#include#include#include#include#define NULL 0#define LEN sizeof(Book)struct A char Name20; int all,left,borrow; struct A *next; ;typedef struct A Book;int Display_Main_Menu(); /*主菜單顯示*/Book *Create(); /*功能函數聲明*/ void Display(Book *head);Book *Insert(Book *head,Book *s);Book *Insert_a_record(Book *head);Book *Delete(Book *head,char *name);Book *Delete_a_record(Book *head);Book *Borrow(Book *head,char *name,int sum);Book *Borrow_a_Book(Book *head);Book *Return(Book *head,char *name,int sum);Book *Return_a_Book(Book *head);Book *Query(Book *head,char *name); void Query_a_record(Book *head);Book *AddfromText(Book *head,char *filename);Book *WritetoText(Book *head,char *filename); void Quit(Book *head);void main() /*主函數部分*/Book *head; /*定義變量*/ char filename20; int keyword=111,a; printf(Please input keyword:); scanf(%d,&a); if(a!=keyword) exit(0); else printf(Welcome!); head=NULL; /*置首指針為空*/ for(;) switch(Display_MainMenu() case 1:printf(1.Create BookListn); /*調用Create函數創建鏈表*/ head=Create(); system(pause); break; case 2:printf(Display All Booksn); Display(head); /*調用Display函數顯示所有*/ system(pause);break; case 3:printf(Insert a Recordn); head=Insert_a_record(head);/*調用Insert_a_record函數插入*/ system(pause);break; case 4:printf(Delete a Bookn); head=Delete_a_record(head);/*調用Delete_a_record函數刪除*/ system(pause);break; case 5:printf(Borrow a BooknInput BookName and sum you borrow:); head=Borrow_a_Book(head); system(pause);break; case 6:printf(Return a BooknInput BookName and sum you return:); head=Return_a_Book(head); system(pause);break; case 7:printf(QuerynInput the BookName you want:); Query_a_record(head);/*調用查詢函數*/ system(pause);break; case 8:printf(Input the name of Text Filen); scanf(%s,filename);/*輸入文件名*/ head=AddfromText(head,filename); system(pause);break; case 9:printf(Input the name of the NewText Filen); scanf(%s,filename);/*輸入要寫入的文件名*/ head=WritetoText(head,filename); system(pause);break; case 0:printf(Goodbyen); Quit(head); exit(0); int Display_MainMenu() /*顯示菜單的函數*/char x; do system(cls); printf(*n); printf(1.Create BookListn); printf(2.Display All Booksn); printf(3.Insert a BookInformationn); printf(4.Delete a Bookn); printf(5.Borrow a Bookn); printf(6.Return a Bookn); printf(7.Queryn); printf(8.Add Records From a Filen); printf(9.Write to a Filen); printf(0.Goodbyen); printf(*n); printf(Please choose from 0-9:); printf(n); x=getchar(); while(x9); return(x-0);Book *Create() /*創建鏈表的函數,返回首指針*/Book *head,*newrecord; char ch; printf(Input a Bookn); head=NULL;/*首指針置空*/ do newrecord=(Book *)malloc(LEN); /*動態分配存儲空間*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-left=newrecord-all; newrecord-borrow=0; head=Insert(head,newrecord); /*調用Insert函數判斷位置插入*/ getchar(); / *接收最后輸入的回車符*/ printf(Add another Book Y/N?n); ch=getchar(); getchar(); /*接收回車符*/while(ch!=n&ch!=N); /*判斷是否繼續*/ return(head);Book *Insert(Book *head,Book *s)/*插入結點的函數*/ Book *p0,*p1,*p2; p1=head;p0=s; if(head=NULL) head=p0;p0-next=NULL; while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL) p2=p p1=p1-next; if(strcmp(p0-Name,p1-Name)next=p1; if(head=p1) head=p0; else p2-next=p0; elsep1-next=p0;p0-next=NULL; return(head);Book *Insert_a_record(Book *head) Book *newrecord; newrecord=(Book *)malloc(LEN); /*動態分配存儲空間*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-borrow=0; newrecord-left=newrecord-all; head=Insert(head,newrecord); printf(Insert successfullyn);/*輸出插入成功的信息*/ return(head);Book *Delete(Book *head,char *name) /*刪除功能函數*/ Book *p1,*p2; if(head=NULL) printf(Sorry No record!n); p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) / p2=p1;p1=p1-next; if(strcmp(p1-Name,name)=0) if(p1=head)head=p1-next; else p2-next=p1-next; printf(delete %s successfullyn,name); return(head);Book *Delete_a_record(Book *head) char name20,ch; Book *p; scanf(%s,name); getchar(); p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); else printf(Delete %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) while(p!=NULL) head=Delete(head,name); p=Query(head,name); return(head);Book *Borrow_a_Book(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); / p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); else printf(Are you sure to borrow? %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Borrow(head,name,n); return(head);Book *Borrow(Book *head,char *name,int sum) Book *p1; p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) p1=p1-next; if(strcmp(p1-Name,name)=0) p1-borrow=sum; p1-left=p1-all-sum; return(head);Book *Return_a_Book(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); /*接收回車*/ p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); /*找不到結點*/ else printf(Are you sure to return? %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Return(head,name,n); return(head);Book *Return(Book *head,char *name,int sum) Book *p1; p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) /*p1不是要找的結點,且后面還有結點*/ p1=p1-next; /*p1后移一個結點*/ if(strcmp(p1-Name,name)=0) /*找到了*/ p1-borrow=p1-borrow-sum; p1-left=p1-left+sum; return(head);void Display(Book *head) Book *p; int i; p=head; printf(Num BookName Total Left Borrown); for(i=1;p!=NULL;i+) printf(%-5d%-14s%-10d%-10d%-5dn, i,p-Name,p-all,p-left,p-borrow); p=p-next; if(i%10=0) system(pause); /*按回車繼續顯示*/ printf(Num BookName total left borrown); Book *Query(Book *head,char *name) Book *p; p=head; while(strcmp(name,p-Name)!=0&p-next!=NULL) p=p-next; if(strcmp(name,p-Name)=0) /*找到了,返回結點地址*/ return(p); else /*找不到返回空指針*/ return(NULL);void Query_a_record(Book *head) char name20; Book *p; scanf(%s,name); p=Query(head,name); if(p!=NULL) /*找到了*/ printf(Find successfullyn%s total:%d left:%d borrow:%dn, p-Name,p-all,p-left,p-borrow); else printf(Cant find the records of %sn,name); /*找不到*/Book *AddfromText(Book *head,char *filename) FILE *fp; int n,i; if(fp=fopen(filename,r)=NULL) printf(Cannot find file:%sn,filename); /*打不開所指定文件*/ return(head); fscanf(fp,%d,&n); /*待插入記錄個數*/ for(i=0;iName,&p-all,&p-left,&p-borrow); head=Insert(head,p); /*插入結點*/ printf(Add from %s successfullyn,filename); fclose(fp);return(head);Book *WritetoText(Book *head,char
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯網短視頻剪輯合同(2篇)
- 基坑施工中水位控制的安全措施
- 社會活動合同
- 企業員工培訓的感想與心得體會
- 職業技能培訓講師培養計劃
- 定制家具許可證申請合同
- 希沃電子白板與傳統教學方式的對比心得體會
- 用字母表示數(例2)(教學設計)-2024-2025學年五年級上冊數學人教版
- 室友搬出協議
- 青少年心理健康教育工作流程
- 新風系統的施工組織方案
- 義務教育英語課程標準(2022年版) (1)
- 工程項目內部控制流程圖表
- 百家姓全文帶拼音打印版本
- 強夯試夯報告(共12頁)
- 關于電商平臺對入駐經營者的審核要求或規范文件
- 骨優導介紹PPT
- 道場迎請亡魂開五方科儀
- 畢業設計(論文)-四自由度工業機械手的設計
- 八下數學19.1.1-第1課時-常量與變量ppt課件
- 用Polyphen2和SIFT進行突變預測
評論
0/150
提交評論