广义表的应用

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

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

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

return 1; }

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

cout<<\成功删除!\

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

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

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

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

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

return 1; }

//图书借阅

int Member_Y(MemberList &L,long num) //判断是否是会员,1是,0否。只有会员才有权限借书 {

Member *p; p=L;

for(;p!=NULL;p=p->next) if(p->num==num) return 1; return 0; }

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!没有这本书!\

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

continue; }

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

if(p->num==m) {

if(p->yes==0) {

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

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

break;

23

}

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

p->membernum=q->num;

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

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

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

cout<<\成功借出!\

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

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

break; } }

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

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

cout<<\==========\ } } } else {

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

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

return 1; }

//还书 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; }

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;

24

for(int k=1;k<=max;k++) {

//从借的书的数组中删除这本书

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

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

cout<<\还书成功!\

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

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

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

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

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

return 1; }

//增加会员

Member *Init_M() //初试化会员链表 {

Member *L; L=(Member

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

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) {

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<

25

} else {

q=L;

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

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) 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<<\==========\}

//查询会员 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')

cout<

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

cout<

if(p->yes==1)

cout<

else

cout<

flag=1; continue; } }

26

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