当前位置:首页 > 广义表的应用
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< 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< 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
共分享92篇相关文档