广义表的应用

发布时间 : 星期日 文章广义表的应用更新完毕开始阅读

cout<<\==========\ switch(n) {

case 1:MemberAdd(L); break; //增加会员 case 2:MemberSearch(L); break; //查询会员

case 3:MemberDel(L);

fpb2=fopen(\

for(p2=H->next;p2!=NULL;p2=p2->next)

fwrite(p2,sizeof(Book),1,fpb2); fclose(fpb2);

break; //删除会员

case 4:BorrowInfo(L); break; //借书信息

case 0:break; //退出会员管理,返回上一层菜单 } }

else if(m==0) {

cout<

2. 图书管理 (1)增加图书

int BookAdd(BookList &H) //建立一个带头结点的链表用来存储图书信息 {

int i=0; //统计要增加的图书量 Book *p,*q;

p=(Book *)malloc(sizeof(Book)); if(!p) exit(1); if(H->next==NULL) {

cout<<\输入图书编号:\ cin>>p->num;

if(p->num==0) //退出\增加图书\

{

cout<<\共计\本图书入库!\

cout<<\==========\ return 1; }

fpm2=fopen(\

for(q2=L->next;q2!=NULL;q2=q2->next)

fwrite(q2,sizeof(Member),1,fpm2); fclose(fpm2); exit(0); } }

}

cout<<\输入书名:\ cin>>p->name;

p->yes=1; //1表示没有借出 p->next=NULL; H->next=p; q=p; ++i;

cout<

q=H;

while(q->next!=NULL) q=q->next;

p->num=1; //进入循环的条件

p->next=NULL; }

while(p->num!=0) //以图书编号作为判断链表是否结束 {

11

p=(Book

*)malloc(sizeof(Book)); if(!p) exit(1);

cout<<\输入图书编号:\ cin>>p->num; if(p->num==0) //退出\增加图书\ break; }

cout<<\输入书名:\ cin>>p->name;

p->yes=1; //1表示没有借出 p->next=NULL; {

cout<<\共计\本图书入库!\

cout<<\==========\

(2)查询图书 ①按书名查询

int Search_BookName(BookList &H) //按书名查询 {

Book *p; p=H->next; char n[80]; int flag=0;

cout<<\输入要查询的书名:\ cin>>n;

for(;p!=NULL;p=p->next) {

if(strcmp(p->name,n)==0) {

if(flag==0) cout<

cout<num<name<

if(p->yes==1)

cout<

else

cout<

②按编号查询

int Search_BookNum(BookList &H) //按编号查询 {

q->next=p; q=p; ++i;

cout<

return 1;

\

flag=1; continue; } }

cout<<\==========\

if(p==NULL&&flag==0) {

cout<<\没有相关信息!\

cout<<\==========\ }

return 1; }

Book *Init_B() //初试化图书链表 {

Book *H;

H=(Book *)malloc(sizeof(Book)); if(!H) exit(1); H->next=NULL; return H; } Book *p; p=H->next;

long n;

12

int flag=0;

cout<<\输入要查询的书的编号:\ cin>>n;

for(;p!=NULL;p=p->next) {

if(n==p->num) {

if(flag==0) cout<

cout<num<name<

if(p->yes==1)

cout<

else

③查询所有图书信息

int Search_AllB(BookList &H) //查询所有图书信息 {

Book *p; p=H->next;

int i=0,flag=0;

for(;p!=NULL;p=p->next) {

if(flag==0)

cout<

cout<num<name<

(3)删除图书

int BookDel(BookList &H) //以图书编号作为主键进行删除 {

Book *p; long n; int flag=0; p=H;

cout<<\输入要删除的书的编号:\

cout<

flag=1; continue; } }

cout<<\==========\

if(p==NULL&&flag==0) {

cout<<\没有相关信息\

cout<<\==========\ }

return 1; }

if(p->yes==1)

cout<

cout<

flag=1; i++; }

cout<<\共计\本书。\ cout<<\==========\ return 1; }

cin>>n;

for(;p!=NULL;p=p->next) {

if(p->next!=NULL&&p->next->num==n) {

if(p->next->yes==0)

13

{

cout<<\当前图书被借出,不能删除!\

cout<<\==========\

return 1; }

p->next=p->next->next; //删除语句

cout<<\成功删除!\

cout<<\==========\

(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(;q!=NULL;q=q->next) if(q->num==num) break; while(m) {

if(t==0)

cout<<\输入要借阅的书的相关信息:\ t=1;

cout<<\编号:\ cin>>m;

for(s=H->next;s!=NULL;s=s->next) if(s->num==m) break; if(s==NULL) {

cout<<\ERROR!没有这本

flag=1; //成功删除标记 break; } }

if(p==NULL&&flag==0) {

cout<<\删除不成功!\//已经被删除或没有这本书

cout<<\==========\ }

return 1; }

书!\

cout<<\==========\

continue; }

for(p=H->next;p!=NULL;p=p->next) {

if(p->num==m) {

if(p->yes==0) {

cout<<\ERROR!当前图书被借出,不能借阅!\

cout<<\==========\

break; }

q->max++; p->yes=0;

p->membernum=q->num;

q->yes=1; for(int i=1;i<=max;i++)

14

联系合同范文客服:xxxxx#qq.com(#替换为@)