
(精)图书管理系统(改后).doc
28页include
//删除读者,管理员有强制删除权限void find//查找读者,管理员权限,有密码显示功能,用于找回密码void showReader//显示所有读者void saveReader//保存读者数据void getReader//读取读者数据bool check(char[]);//S找比对void format//格式化void boirow(Rnode*,Biiode*);〃借阅书籍bool identify(char*,char*,char*,Rnode*&);//^份验证;void backBook(Rnode*,Bnode*);//jE书void rewrite(Rnode*);〃修改个人信息void readerCheck(Rnode*);〃读者查询,无密码显示功,且只能查阅自己借书情况 private:Rnode *Rhead;};Reader: :Reader()〃读者类构造函数定义(Rhead=new Rnode;strcpy(Rhead・>r_name,"administrator");〃设置为循环指针,将管理员信息放在表头中 strcpy(Rhead->r_num,,-r,);Rhead->num=O;Rhead->next=Rhead;}void Reader::readerCheck(Rnode*p)//^者自己查询{if(p・>num==0)//借书为空(coutn无借书记录nendl;}else(for(int i=0;iv5;i++)〃显示借阅书籍情况(if(strcmp((p->r_borrow[i]).b_name,MM)!=0)//当书籍名中为空的情况下不输 出,即该记录为无借书记录{coutM 书名:H(p->r_borrovv[i]).b_namen\t\t 编号U(p->r_borrow[i]).b_numendl;//$fe 出)}}system(,pause,);//M统命令,等待用户}bool Reader::check(char mim[])〃对比{Rnode *h=Rhead;while(h->next!=Rhead)//^E读者库中比对编号,确保编号的唯一性(if(strcmp(num,h->next->r_num)==O){coutvv”该读者编号已存在,申请失败!!!Hendl;system(MpauseM);return 1;}h=h->next;}return 0;void Reader::addReader。
//添加读者定义{char flag9flagl9code[30]9flag2= 1;Rnode *temp,*tail=Rhead;while(tail・>next!=Rhead)〃使得每一次添加都放在末尾,即表头前一位(tail=tail->next;}do(temp=new Rnode;coutn请输入姓名:”;//ignore(lOO);cin.ignore( 1);//清除缓冲区,只清除一个字节//cin.getline(temp->r_name,2);cin.getline(temp->r_naine,30);coutvv”请输入读者编号:“;cintemp->r_num;//system (*1 pause M);do{ Hag2=T;cout "请输入密码”;cintemp->r_code;cout ”请重复输入密码”;cincode;if(strcmp(temp->r_code,code)==0)//W 次密码比对{flag2=,0,;temp->num=0;if(check(temp->r_num)==O)// 检查(temp->next=Rhead;tail->next=temp;tail=temp;for(int i=0;iv5;i++)〃读者个人书库初始化strcpy((temp->r_borrow[i])eb_name/fM);strcpy((temp->r_borrow[i]).b_num/,lf);coutvv”添加成功 nendl;coutn继续添加请按1,结束添加请按Ouendl;do{cinflag;flagl=T;if(flag!=,l*&&flag!=,O,)(coutvv”输入的字符有误,请重新输入:”vvendl;)}while(flagl==*O,);} else{coutvv”请重新输入所有信息:” vvendl;flag=T;)}else(coutvv”密码重复有误,请重新输入两次密码nendl;}} while(flag2==* 1 *);}while(flag==,l,);bool Reader: :deleReader()〃删除读者{int flag;char flagl,flag3;char num[30];Rnode *p=Rhead;cout ”请输入读者编号:”;cinnum;if(Rhead->next==Rhead)// 当读者库为空时(cout读者库空!!Mendl;system。
pause");return false;)while(p・>next!=Rhead)〃扫 描编号if(strcmp(p->next->r_nuin,num)==O)(flag=l;break;)p=p->next;if(p->next==Rhead)//ja描完毕,但未发现标号匹配(coutn不存在该读者"endl;system(n pause*);return false;}}if(flag==1 &&p->next->num==O)//匹配且借书记录为空,顺利删除{coutvv”您确定要删除?vy/n>”;cinflag3;if(flag3==y)(Rnode *h=p・>next;p->next=p->next->next;delete h;cout删除成功!!! endl;systempause");return true;}else(return false;)}if(flag==l&&p->next->num!=O)//匹配,但有书籍未还(coutn该读者有1 p->next->num1本书未还,暂时无法删除!!!"vvendl; if(adflag==l)//管理员权限,强制删除(coutvv”是否强制删除?
