广义表的应用

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

if(q->t[i].num==0) break;

q->t[i].num=p->num;

cout<<\成功借出! cout<<\==========\ } } \

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

flag=1; //成功借出标记

break; } }

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

cout<<\借书不成功!\没有这本书

(5)还书

int BookReturn(BookList &H,MemberList &L) //还书时以编号作为主键 {

Book *p,*s; Member *q; long m=1;

int flag=0,max;

cout<<\输入要归还的书的相关信息:\

while(m) {

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

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

cout<<\没有这本书!\

cout<<\==========\ continue;

} else {

cout<<\您不是会员,借书失败!请先申请!\

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

return 1; }

}

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

if(p->num==m) {

if(p->yes==1) {

cout<<\这本书没有借出,还书失败!\

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

break; }

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

if(q->num==p->membernum) break; p->yes=1; for(int k=1;k<=max;k++) //从借的书的数组中删除这本书

if(q->t[k].num==p->num)

15

{

q->t[k].num=0; q->max--; break; }

cout<<\还书成功!\

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

if(q->max==0) q->yes=0; flag=1; //成功还书标记 break;

3.会员管理 (1)增加会员

int MemberAdd(MemberList &L) //建立一个带头结点的链表用来存储会员信息 {

int i=0,k=0,max; //统计要增加的会员人数

Member *p,*q,*s; p=(Member

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

cout<<\输入编号:\ cin>>p->num; if(p->num==0) //退出\增加会员\ {

cout<<\共计\名会员入会!\

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

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

for(s=L->next;s!=NULL;s=s->next) if(s->num==p->num)

} }

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

cout<<\还书不成功!\没有借这本书

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

return 1; }

{

cout<<\您已经是会员!\

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

cout<<\输入性别:(男:M,女:F)\男m,女f

cin>>p->sex;

for(int i=0;i<=max;i++) p->t[i].num=0;

p->max=0; //借阅数目,初始为0 p->yes=0; //0表示没有借书 p->next=NULL; L->next=p; q=p; ++k;

cout<

q=L;

while(q->next!=NULL) q=q->next; p->num=1; p->next=NULL;

16

}

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

p=(Member

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

cout<<\输入编号:\ cin>>p->num; if(p->num==0) //退出\增加会员\ {

cout<<\共计有\名会员!\

cout<<\==========\ break; }

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

for(s=L->next;s!=NULL;s=s->next) (2)查询会员 ①按姓名查询

int Search_MemberName(MemberList &L) //按姓名查询 {

Member *p; p=L->next; char n[20]; 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->sex=='M')

if(s->num==p->num) {

cout<<\您已经是会员!\ return 1; }

cout<<\输入性别:(男:M,女:F)\男m,女f cin>>p->sex;

for(i=0;i<=max;i++) p->t[i].num=0;

p->max=0; //借阅数目,初始为0 p->yes=0; //0表示没有借书 p->next=NULL; q->next=p; q=p; ++k;

cout<

return 1;

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

cout<

else if(p->sex=='F')

cout<

if(p->yes==1)

cout<

else

cout<

flag=1; continue; } }

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

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

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

17

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

②查询所有会员

int Search_AllM(MemberList &L) //查询所有会员信息 {

Member *p;

int i=0,flag=0; p=L->next;

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

if(flag==0)

cout<

cout<num<name; if(p->sex=='M')

cout<

else if(p->sex=='F')

(3)删除会员

int MemberDel(MemberList &L) //以会员编号作为主键进行删除 {

Member *p; long n; int flag=0; p=L;

cout<<\输入要删除的会员的编号:\ cin>>n;

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

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

{

if(p->next->yes==1) {

cout<<\当前会员借了书,不能删除!\

}

return 1; }

cout<

if(p->yes==1)

cout<

cout<

flag=1; i++; }

cout<<\共计\名会员。\

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

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

return 1; }

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

cout<<\成功删除!\

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

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

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

cout<<\该会员不存在。删除不成功!\已被删除或没有这个会员

18

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