




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、軟件綜合課程設計 廣義表的應用圖書借閱管理系統(tǒng) 二一四 年 六 月廣義表的應用一、問題陳述由于廣義表在結構上較線性表復雜得多,因此,廣義表的運算也不如線性表簡單。本設計要求實現(xiàn)的廣義表的建立、查找、輸出、取表頭和取表尾以及求深度、求逆表等。本設計用一個主控菜單程序控制,共分為6個子系統(tǒng)。(1)建立廣義表(2)輸出廣義表(3)結點的查找(4)求廣義表表頭(5)求廣義表表尾(6)求廣義表的深度二、需求分析1.菜單函數(shù) 使用數(shù)字0-6來選擇菜單項,超出此范圍時,提示輸入錯誤,并重新輸入。運行程序時,先輸入一個廣義表,回車后,調(diào)用各功能函數(shù),則出現(xiàn)功能菜單,輸入的一個數(shù)字,該數(shù)字用sn存儲,使用cho
2、ose()接受數(shù)字輸入,該函數(shù)的返回值提供給主函數(shù);則主函數(shù)使用while循環(huán)實現(xiàn)重復選擇,以實現(xiàn)不同的廣義表菜單功能。2.主函數(shù) 包含的功能函數(shù)有:輸出廣義表、廣義表深度、廣義表表頭、廣義表表尾、廣義表查找、廣義表逆置6個函數(shù)。運行程序時,首先執(zhí)行主函數(shù),根據(jù)提示,建立廣義表,廣義表中的元素應單獨輸入,每輸入一個字符,回車,廣義表輸入完成時,應再次輸入“)”,表示輸入結束,這是由于CreateGList函數(shù)遞歸的原因,回車,此時調(diào)用choose()函數(shù),出現(xiàn)功能菜單,提示用戶進行相關操作,進入任一操作,通過switch(choose()對用戶所輸入的信息進行匹配,匹配后調(diào)用相關的子函數(shù),從而
3、實現(xiàn)各項函數(shù)的功能。3.創(chuàng)建廣義表函數(shù)函數(shù)中,先定義一個整型數(shù)據(jù)i=0和一個數(shù)組a10,構建時,先輸入一個字符,如果輸入字符的是#,則廣義表為空,否則輸出第一個左括號。接下來的元素項如果是子表,則遞歸調(diào)用CreateGList(),若是原子,則直接輸出,并將輸入的數(shù)據(jù)保存在數(shù)組ai中,同時i+,然后繼續(xù)輸入保存用戶所輸入的數(shù)據(jù),若是,則遞歸調(diào)用CreateGList()函數(shù),繼續(xù)執(zhí)行第一步,當遇到)時,結束。4. 廣義表的輸出此函數(shù)實現(xiàn)的是輸出功能,它直接關聯(lián)到后面的取表頭、表尾運算。函數(shù)中,分為原子和子表,若是子表,則利用頭結點指針,遞歸輸出子表。若是原子,則直接輸出該原子的數(shù)值。然后判斷下
4、一結點是否為空,不為空則輸出“,”,繼續(xù)遞歸輸出,執(zhí)行上一步的操作。5. 結點的查找運行時,輸入要查找的元素,將該元素與數(shù)組中的元素進行比較,若相等,則查找成功,輸出此元素的位置信息,當查找超出范圍時,輸出查找失敗信息。6求廣義表的表頭表頭分為子表和原子。當表頭為子表時,先輸出左括號,再通過遞歸調(diào)用依次輸出表頭,最后輸出右括號。當表頭為原子時,直接輸出原子數(shù)值。7. 求廣義表的表尾若廣義表非空,則廣義表中除去表頭后其余元素構成的子表為表尾。函數(shù)中,定義指針p、q,q用于指向廣義表表頭,q->next為廣義表表尾,并賦值給p,因p也是廣義表,則可調(diào)用廣義表輸出函數(shù)PrintGList(),
5、輸出表尾。8. 廣義表的逆置逆置即將表頭和表尾倒置,因此算法中,先后調(diào)用取表尾函數(shù)和取表頭函數(shù),先輸出表尾,再輸出表頭,以此實現(xiàn)逆置功能。9. 廣義表的深度廣義表深度的遞歸定義式:它等于所有子表中表的最大深度加1。若一個表為空,則深度為1。定義dep表示任一子表的深度,max為所有子表中的最大深度,則廣義表的深度為max+1。函數(shù)中,當廣義表L為空表或由單元素組成時,不進行遞歸調(diào)用,返回1;否則,當廣義表含有子表時,利用頭結點指針,遞歸求出深度,將最大深度的子表的dep賦值給max,返回max+1即為廣義表深度。三、概要設計程序的開始,先定義廣義表的結點類型,采用枚舉類型區(qū)分原子ATOM和子表
6、LIST。采用聯(lián)合體定義原子結點的值域atom和表頭指針域hp。再輸入一個廣義表,在程序中可以定義一個數(shù)組用來存放廣義表中的關鍵字。編寫各個功能函數(shù)時,先了解算法的思想,繪出流程圖,根據(jù)流程圖進一步編寫。之后編寫一個功能選擇函數(shù)choose(),并在此函數(shù)中打印運行界面,通過輸入代碼,來進行不同功能的操作。在運行界面中,通過一個while循環(huán),能讓用戶進行循環(huán)操作,直至退出系統(tǒng)。mainCreateGList choosePrintGListLocateGListHeadGListTailTraverselistGListDepth四、詳細設計1.菜單函數(shù)4int choose() int s
7、n;cout<<"-"<<endl;cout<<" 廣義表的應用 "<<endl;cout<<" 1.廣義表輸出 2.結點的查找 "<<endl;cout<<" 3.廣義表表頭 4.廣義表表尾 "<<endl;cout<<" 5.廣義表逆置 6.廣義表深度 "<<endl;cout<<" 0.退出系統(tǒng) "<<endl;cout<
8、<"-"<<endl; cout<<"請輸入代碼06:"<<endl; for( ; ; ) cin>>sn;if( sn <0|sn>6)cout<<endl<<"輸入錯誤,重選06:"<<endl;elsebreak;return sn;2.主函數(shù)int main()GList *L; char ch;printf("建立廣義表,結束請多輸一個右括號!n");CreateGList(&L); /創(chuàng)建廣義
9、表while(1) switch(choose()case 1:cout<<"輸出廣義表:"PrintGList(L);cout<<endl;break;case 2:cout<<"請輸入要查找的結點:"cin>>ch;Locate(L, ch);cout<<endl;break;case 3:cout<<"廣義表取表頭:"GListHead(L);cout<<endl;break;case 4:cout<<"廣義表取表尾:&qu
10、ot;cout<<"("GListTail(L);cout<<")"<<endl;break;case 5:printf("廣義表的逆表:");TraverseList(L);cout<<endl;break;case 6:cout<<"廣義表的深度為:"cout<<GListDepth(L->hp)<<endl;break;case 0:cout<<"退出!"<<endl;exit
11、(0);break;return 0;3.創(chuàng)建廣義表函數(shù):CreateGList()void CreateGList(GList *L)/創(chuàng)建廣義表函數(shù) char ch;cin>>ch;/輸入數(shù)據(jù)if(ch = '#') /如果輸入的是#表示為空*L = NULL;else if(ch = '(') /如果是左括號就遞歸構建子表*L = (GList *)malloc(sizeof(GList);(*L)->tag =1; /廣義表的標志量為LISTCreateGList(&(*L)->hp); /建立此廣義表的表頭指針所指的元素
12、else/只有原子的情況下*L = (GList *)malloc(sizeof(GList);(*L)->tag = 0; /廣義表標志量為ATOM(*L)->atom = ch; /元素為所輸入數(shù)值ai=ch; /不能寫成ai=(*L)->atom;i+;cin>>ch; /此處輸入的必為逗號或者右括if(ch = ',') /如果是逗號就遞歸構建下一個子表CreateGList(&(*L)->next); else if(ch = ')') /如果是右括號就結束 (*L)->next =NULL;4.廣義表
13、輸出函數(shù)PrintGList()void PrintGList(GList *L) /輸出廣義表if(L->tag = 1) /廣義表標志量為LIST cout<<"(" /先輸出左括號if(L->hp = NULL) /表頭指針為空cout<<"#"elsePrintGList(L->hp); /遞歸打印子表 cout<<")" /結束打印右括號else /標志量為ATOMcout<<L->atom; /輸出此元素 if(L->next !=NULL) c
14、out<<", "PrintGList(L->next); /調(diào)用此函數(shù),輸出廣義表下一個元素5. 廣義表查找函數(shù)Locate()void Locate(GList *L,char ch) /廣義表查找int j;cin>>ch; /輸入要查找關鍵字for (j=0;j<=i;j+)/用for循環(huán)查找if(aj=ch) /如果找到cout<<"查找成功,位置為:"<<j+1<<endl;break;if(j>i)cout<<"查找失敗,元素不存在此廣義表中
15、!"<<endl;6.廣義表取表頭函數(shù):void GListHead(GList *L) /廣義表取表頭GList *p;p=L->hp; /p指向廣義表表頭PrintGListHead(p); /調(diào)用表頭輸出函數(shù)7.廣義表取表尾函數(shù)void GListTail(GList *L)/廣義表取表尾GList *p,*q;q=L->hp;/q指向廣義表表頭p=q->next;/p指向廣義表表尾PrintGList(p); 8.廣義表逆置函數(shù)TraverseList()void TraverseList(GList *L) /廣義表逆置 cout<<
16、;"(" GListTail(L); /調(diào)用取表尾函數(shù) cout<<"," GListHead(L); /調(diào)用取表頭函數(shù)cout<<")"9. 廣義表求深度函數(shù)int GListDepth(GList *L) /求廣義表深度int max, dep;if(!L)/廣義表存在return 1;for(max =0; L; L=L->next) /max初值為0,元素地址不為空if(L->tag = 1) /元素標志量為LISTdep = GListDepth(L->hp); /求以L->h
17、p的子表深度if(dep > max)max = dep; return max + 1; /各元素的深度的最大值加一五、程序代碼#include <iostream>using namespace std;typedef enumATOM, LISTElemTag; /ATOM=0:原子,LIST=1:子表typedef struct GLNode /廣義表結構類型int tag; /標志域,區(qū)分原子和表結點union /原子結點和表結點的聯(lián)合部分char atom; /原子結點的值域 struct GLNode *hp; /表結點表頭指針;struct GLNode *n
18、ext;/下一個元素結點GList;int i=0; /定義變量i,用來作數(shù)組下標 int a10; /定義數(shù)組用來存儲廣義表中的關鍵字void CreateGList(GList *L)/創(chuàng)建廣義表函數(shù) char ch;cin>>ch; /輸入數(shù)據(jù)if(ch = '#') /如果輸入的是#表示為空*L = NULL;else if(ch = '(') /如果是左括號就遞歸構建子表*L= (GList *)malloc(sizeof(GList); (*L)->tag=1; /廣義表的標志量為LISTCreateGList(&(*L)-
19、>hp); /建立此廣義表的表頭指針所指的元素else/只有原子的情況下*L = (GList *)malloc(sizeof(GList);(*L)->tag = 0; /廣義表標志量為ATOM(*L)->atom = ch; /元素為所輸入數(shù)值ai=ch; /不能寫成ai=(*L)->atom;i+;cin>>ch; /此處輸入的必為逗號或者右括if(ch = ',') /如果是逗號就遞歸構建下一個子表CreateGList(&(*L)->next); elseif(ch=')') /如果是右括號就結束 (*
20、L)->next =NULL;void PrintGList(GList *L) /輸出廣義表if(L->tag=1) /廣義表標志量為LIST cout<<"(" /先輸出左括號if(L->hp = NULL) /表頭指針為空cout<<"#"elsePrintGList(L->hp); /遞歸打印子表 cout<<")" /結束打印右括號else /標志量為ATOMcout<<L->atom; /輸出此元素 if(L->next !=NULL) c
21、out<<", "PrintGList(L->next); /調(diào)用此函數(shù),輸出廣義表下一個元素int GListDepth(GList *L) /求廣義表深度int max, dep;if(!L)/廣義表存在return 1;for(max = 0; L; L = L->next) /max初值為0,元素地址不為空if(L->tag = 1) /元素標志量為LISTdep = GListDepth(L->hp); /求以L->hp的子表深度if(dep > max)max = dep; return max + 1; /各元素
22、的深度的最大值加一void PrintGListHead(GList *L) /打印廣義表表頭函數(shù) if(L->tag = 1 ) /子表 cout<<"(" /先輸出左括號if(L->hp = NULL) /如果表頭為空cout<<"#" elsePrintGListHead(L->hp); /遞歸打印子表cout<<")" /結束打印右括號else /原子cout<<L->atom;void GListHead(GList *L) /廣義表取表頭GList *
23、p;p=L->hp; /p指向廣義表表頭PrintGListHead(p); /調(diào)用表頭輸出函數(shù)void GListTail(GList *L)/廣義表取表尾GList *p,*q;q=L->hp;/q指向廣義表表頭p=q->next;/p指向廣義表表尾PrintGList(p); void TraverseList(GList *L) /廣義表逆置 cout<<"(" GListTail(L);/調(diào)用取表尾函數(shù) cout<<"," GListHead(L); /調(diào)用取表頭函數(shù)cout<<"
24、)"void Locate(GList *L,char ch) /廣義表查找int j;for (j=0;j<=i;j+)/用for循環(huán)查找if(aj=ch) /如果找到cout<<"查找成功,位置為:"<<j+1<<endl;break;if(j>i)cout<<"查找失敗,元素不存在此廣義表中!"<<endl;int choose() int sn;cout<<"-"<<endl;cout<<" 廣義表的
25、應用 "<<endl;cout<<" 1.廣義表輸出 2.結點的查找 "<<endl;cout<<" 3.廣義表表頭 4.廣義表表尾 "<<endl;cout<<" 5.廣義表逆置 6.廣義表深度 "<<endl;cout<<" 0.退出系統(tǒng) "<<endl;cout<<"-"<<endl; cout<<"請輸入代碼06:"
26、<<endl; for( ; ; ) cin>>sn;if( sn <0|sn>6)cout<<endl<<"輸入錯誤,重選06:"<<endl;elsebreak;return sn; int main()GList *L; char ch;printf("建立廣義表,結束請多輸一個右括號!n");CreateGList(&L); /創(chuàng)建廣義表while(1) switch(choose()case 1:cout<<"輸出廣義表:"Print
27、GList(L);cout<<endl;break;case 2:cout<<"請輸入要查找的結點:"cin>>ch;Locate(L, ch);cout<<endl;break;case 3:cout<<"廣義表取表頭:"GListHead(L);cout<<endl;break;case 4:cout<<"廣義表取表尾:"cout<<"("GListTail(L);cout<<")"&
28、lt;<endl;break;case 5:printf("廣義表的逆表:");TraverseList(L);cout<<endl;break;case 6:cout<<"廣義表的深度為:"cout<<GListDepth(L->hp)<<endl;break;case 0:cout<<"退出!"<<endl;exit(0);break;return 0;六、運行結果與測試1.建立廣義表2.輸出廣義表3.結點的查找4.求廣義表表頭5. 求廣義表表尾6
29、. 求廣義表的逆表7. 求廣義表的深度8.退出七、設計體會與總結此次課程設計我被分配到的題目是廣義表的應用,這對我來說是個熟悉的陌生人,因為前不久才復習過,可是沒記住,只能回頭再去看,經(jīng)過多方面參考,總算是勉強執(zhí)行出來了,不過這中間也遇到了一些問題:1.建立廣義表時,把表一次性全部輸完再回車,無限循環(huán);經(jīng)檢查,是源程序中輸入算法編寫的錯誤。2. 輸入代碼1,即輸出廣義表,顯示調(diào)試錯誤,經(jīng)檢查,是源程序中輸出算法編寫的錯誤。3.查找結點的時候要輸入兩個結點才會顯示第二個結點位置;經(jīng)檢查,是調(diào)用的程序中多寫了一句輸入語句。圖書借閱管理系統(tǒng)一、問題陳述 主要分為兩大功能:1)圖書管理(增
30、加圖書、查詢圖書、刪除圖書、圖書借閱、還書);2)會員管理(增加會員、查詢會員、刪除會員、借書信息);二、需求分析1.主函數(shù)分為兩個模塊:圖書信息和會員信息,并顯示兩個模塊的主界面,可將圖書信息和會員信息寫入和讀出。2.圖書管理(1)增加圖書:只需添加書的編號和書名即可,考慮到圖書的信息較多,所以用結構體對其定義,又考慮到圖書量大,所以添加后要保存到文件中去。(2)查詢圖書:可按書名查詢、按書的編號查詢,也可查詢所有圖書信息,主要是通過順序查找法來實現(xiàn)的。(3)刪除圖書:輸入要刪除的書的編號即可,主要是把保存到文件中的內(nèi)容寫到鏈表中去,用鏈表刪除結點的方法來刪除,刪除時以記錄為單位,能一次刪除
31、一條記錄。(4)圖書借閱:輸入會員編號和圖書編號即可借閱,能對借出的圖書作記錄信息,能一次借出一本圖書。(5)還書:輸入要還的書的編號即可還,能將被借出的圖書信息還原,能一次借出一本圖書。3.會員管理(方法與圖書管理類似)(1)增加會員:輸入會員編號、姓名、性別即可添加。(2)查詢會員:可按姓名查詢,也可查詢所有會員信息。(3)刪除會員:輸入會員編號即可刪除,主要是通過把保存到文件中的內(nèi)容寫到鏈表中去,用鏈表刪除結點的方法來刪除圖書。(4)借書信息:選擇“借書信息”即可顯示所有讀者是否借書三、概要設計圖書和會員的信息的存儲是建立兩個帶頭結點的單鏈表,分別用于存儲圖書和會員。建立這兩個鏈表的聯(lián)系
32、是在圖書結點中設一個借書人編號,在會員結點中設一個數(shù)組用于存會員借的書,剩下的只需按鏈表的操作就可以了。四、詳細設計1.主函數(shù)35void main()FILE *fpb1,*fpb2,*fpm1,*fpm2; /文件指針Book *p1,*p2,*s1;Member *q1,*q2,*s2;H=Init_B();L=Init_M();fpb1=fopen("book.txt","rb"); /讀方式打開圖書文件if(fpb1!=NULL)p1=(Book *)malloc(sizeof(Book);if(!p1) exit(1);p1->next
33、=NULL;while(fread(p1,sizeof(Book),1,fpb1)=1)if(H->next=NULL)H->next=p1;s1=p1;elses1->next=p1;s1=p1;p1=(Book *)malloc(sizeof(Book);if(!p1) exit(1);p1->next=NULL;fpm1=fopen("member.txt","rb"); /讀方式打開會員文件if(fpm1!=NULL)q1=(Member *)malloc(sizeof(Member);if(!q1) exit(1);q1
34、->next=NULL;while(fread(q1,sizeof(Member),1,fpm1)=1)if(L->next=NULL)L->next=q1;s2=q1;elses2->next=q1;s2=q1;q1=(Member *)malloc(sizeof(Member);if(!q1) exit(1);q1->next=NULL;int m,n;while(m!=0)cout<<" 歡迎進入圖書借閱管理系統(tǒng) "<<endl;cout<<" *"<<endl;cout
35、<<" 1.圖書管理 "<<endl;cout<<" 2.會員管理 "<<endl;cout<<" 0.退出系統(tǒng) "<<endl;cout<<"*"<<endl;cout<<" 請在此輸入您的選擇:"cin>>m;cout<<"="<<endl;cout<<endl;if(m=1)cout<<" 圖書
36、管理 "<<endl;cout<<"*"<<endl;cout<<" 1.增加圖書 3.刪除圖書 "<<endl;cout<<" 2.查詢圖書 4.圖書借閱 "<<endl;cout<<" 0.退 出 "<<endl;cout<<" *"<<endl;cout<<"請輸入您的選擇:"cin>>n;cout<
37、<"="<<endl;switch(n)case 1:BookAdd(H); break; /增加圖書case 2:BookSearch(H); break; /查詢圖書case 3:BookDel(H); break; /刪除圖書case 4:BookBorrow(H,L); break; /圖書借閱case 0:break; /退出圖書管理,返回上一層菜單else if(m=2)cout<<" 會員管理 "<<endl;cout<<" *"<<endl;cout&l
38、t;<" 1.增加會員 3.刪除會員 "<<endl;cout<<" 2.查詢會員 4.借書信息 "<<endl;cout<<" 0.退 出 "<<endl;cout<<" *"<<endl;cout<<" 請輸入您的選擇:"cin>>n;cout<<"="<<endl;switch(n)case 1:MemberAdd(L); break
39、; /增加會員case 2:MemberSearch(L); break; /查詢會員case 3:MemberDel(L); break; /刪除會員case 4:BorrowInfo(L); break; /借書信息case 0:break; /退出會員管理,返回上一層菜單else if(m=0)cout<<endl<<"退出系統(tǒng)"<<endl;fpb2=fopen("book.txt","wb");for(p2=H->next;p2!=NULL;p2=p2->next)fwrite
40、(p2,sizeof(Book),1,fpb2);fclose(fpb2);fpm2=fopen("member.txt","wb");for(q2=L->next;q2!=NULL;q2=q2->next)fwrite(q2,sizeof(Member),1,fpm2);fclose(fpm2);exit(0);2. 圖書管理(1)增加圖書int BookAdd(BookList &H)/建立一個帶頭結點的鏈表用來存儲圖書信息int i=0;/統(tǒng)計要增加的圖書量Book *p,*q;p=(Book *)malloc(sizeof(B
41、ook);if(!p) exit(1);if(H->next=NULL)cout<<" 輸入圖書編號:"cin>>p->num;if(p->num=0)/退出"增加圖書"cout<<" 共計"<<i<<"本圖書入庫!"<<endl;cout<<"="<<endl;return 1;cout<<" 輸入書名:"cin>>p->name;
42、p->yes=1;/1表示沒有借出p->next=NULL;H->next=p;q=p;+i;cout<<endl;elseq=H;while(q->next!=NULL)q=q->next;p->num=1; /進入循環(huán)的條件p->next=NULL;while(p->num!=0)/以圖書編號作為判斷鏈表是否結束p=(Book *)malloc(sizeof(Book);if(!p) exit(1);cout<<" 輸入圖書編號:"cin>>p->num;if(p->num=
43、0) /退出"增加圖書"cout<<" 共計"<<i<<"本圖書入庫!"<<endl;cout<<"="<<endl;break;cout<<" 輸入書名:"cin>>p->name;p->yes=1; /1表示沒有借出p->next=NULL;q->next=p;q=p;+i;cout<<endl;return 1;(2)查詢圖書按書名查詢int Search_B
44、ookName(BookList &H) /按書名查詢Book *p;p=H->next;char n80;int flag=0;cout<<" 輸入要查詢的書名:"cin>>n;for(;p!=NULL;p=p->next)if(strcmp(p->name,n)=0)if(flag=0)cout<<endl<<"編號"<<setw(12)<<" 書名 "<<setw(15)<<"是否借出"&
45、lt;<endl;cout<<p->num<<setw(15)<<p->name<<setw(15);if(p->yes=1)cout<<setw(15)<<"未借"<<endl;elsecout<<setw(15)<<"已借"<<endl;flag=1;continue;cout<<"="<<endl;if(p=NULL&&flag=0)cout<
46、;<" 沒有相關信息!"<<endl;cout<<"="<<endl;return 1;Book *Init_B()/初試化圖書鏈表Book *H;H=(Book *)malloc(sizeof(Book);if(!H) exit(1);H->next=NULL;return H;按編號查詢int Search_BookNum(BookList &H) /按編號查詢Book *p;p=H->next;long n;int flag=0;cout<<" 輸入要查詢的書的編號
47、:"cin>>n;for(;p!=NULL;p=p->next)if(n=p->num)if(flag=0)cout<<endl<<"編號"<<setw(12)<<" 書名 "<<setw(15)<<"是否借出"<<endl;cout<<p->num<<setw(15)<<p->name<<setw(15);if(p->yes=1)cout<<
48、;setw(15)<<"未借"<<endl;elsecout<<setw(15)<<"已借"<<endl;flag=1;continue;cout<<"="<<endl;if(p=NULL&&flag=0)cout<<" 沒有相關信息"<<endl;cout<<"="<<endl;return 1;查詢所有圖書信息int Search_AllB(Bo
49、okList &H) /查詢所有圖書信息Book *p;p=H->next;int i=0,flag=0;for(;p!=NULL;p=p->next)if(flag=0)cout<<endl<<"編號"<<setw(12)<<" 書名 "<<setw(15)<<"是否借出"<<endl;cout<<p->num<<setw(15)<<p->name<<setw(15);i
50、f(p->yes=1)cout<<setw(15)<<"未借"<<endl;elsecout<<setw(15)<<"已借"<<endl;flag=1;i+;cout<<" 共計"<<i<<"本書。"<<endl;cout<<"="<<endl;return 1;(3)刪除圖書int BookDel(BookList &H) /以圖書編號作
51、為主鍵進行刪除Book *p;long n;int flag=0;p=H;cout<<" 輸入要刪除的書的編號:"cin>>n;for(;p!=NULL;p=p->next)if(p->next!=NULL&&p->next->num=n)if(p->next->yes=0)cout<<"ERROR!當前圖書被借出,不能刪除!"<<endl;cout<<"="<<endl;return 1;p->next=
52、p->next->next; /刪除語句cout<<" 成功刪除!"<<endl;cout<<"="<<endl;flag=1; /成功刪除標記break;if(p=NULL&&flag=0)cout<<" 刪除不成功!"<<endl; /已經(jīng)被刪除或沒有這本書cout<<"="<<endl;return 1;(4)圖書借閱int BookBorrow(BookList &H,MemberList &L) /借閱時以編號作為主鍵Book *p,*s;Member *q;long m=1,num;int t=0,flag=0,max;cout<<" 輸入會員編號:"cin>>num;if(Member_Y(L,num)=1)q=L;for(;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年信息技術教學考試試卷及答案
- 2025年國際貿(mào)易實務職業(yè)考題及答案
- 2025年可持續(xù)發(fā)展與環(huán)境教育考試試題及答案
- 萬達安全考試題庫及答案
- 一級語文通知試題及答案
- 裝修拆墻施工合同協(xié)議書
- 廣東省東莞市翰林實驗學校2024-2025學年高一下學期期中考試數(shù)學試題(解析)
- 傳染病預防與健康管理宣講
- 患者的護理管理
- 城市應急供電系統(tǒng)升級補充協(xié)議
- 2025年4月自考00242民法學試題及答案含評分標準
- 2025年氫化丁晴橡膠發(fā)展現(xiàn)狀及市場前景趨勢分析
- DB65-T 4623-2022 分散式風電接入電力系統(tǒng)管理規(guī)范
- 退休終止勞動合同協(xié)議書
- 2024譯林版七年級英語下冊期中復習:Unit1-Unit4詞組講義
- 護士助教面試題及答案
- 第18課《井岡翠竹》課件-2024-2025學年統(tǒng)編版語文七年級下冊
- 第16課《有為有不為》公開課一等獎創(chuàng)新教學設計
- 【MOOC】《思想道德與法治》(東南大學)章節(jié)中國大學慕課答案
- 【MOOC】以案說法-中南財經(jīng)政法大學 中國大學慕課MOOC答案
- 卜算子-送鮑浩然之浙東課件
評論
0/150
提交評論