进入借书模块,开始 输出提示信息 输入读者编号和借阅的图书编号 读者是否存在 Y N 提示错误信息 图书是否存在 Y 图书是否全部借出 N Y 保存借书信息 提示错误信息 提示错误信息 提示成功信息 退出借书模块,结束 图2-5 借书模块流程图
2.2源程序代码
#include
#include
const int Maxr=100;//最多的读者 const int Maxb=100;//最多的图书
const int Maxbor=5;//每位读者最多借五本书 //读者类,实现对读者的信息的描述 class Reader {
private:
int tag; //删除标记 1:已删 0:未删 int no; //读者编号
char name[10]; //读者姓名
int borbook[Maxbor];//所借图书 public:
Reader() {}
char *getname() {return name;} //获取姓名 int gettag() {return tag;} //获取删除标记 int getno() {return no;} //获取读者编号 void setname(char na[]) //设置姓名 { strcpy(name,na); }
void delbook(){ tag=1; }//设置删除标记 1:已删 0:未删 void addreader(int n,char *na)//增加读者 { tag=0; no=n;
strcpy(name,na);
for(int i=0;i void borrowbook(int bookid)//借书操作 { for(int i=0;i } } } int retbook(int bookid)//还书操作 { for(int i=0;i void disp()//读出读者信息 { cout << setw(5) << no < //读者类库,实现建立读者的个人资料 class RDatabase { private: int top; //读者记录指针 Reader read[Maxr];//读者记录 public: RDatabase() //构造函数,将reader.txt读到read[]中 { Reader s; top=-1; fstream file(\打开一个输入文件 while (1) { file.read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s; } file.close(); //关闭 reader.txt } void clear()//删除所有读者信息 { top=-1; } int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); return 1; } return 0; } Reader *query(int readerid)//按编号查找 { for (int i=0;i<=top;i++) if (read[i].getno()==readerid && read[i].gettag()==0) { return &read[i]; } return NULL; } void disp() //输出所有读者信息 { for (int i=0;i<=top;i++) read[i].disp(); } void readerdata();//读者库维护 ~RDatabase() //析构函数,将read[]写到reader.txt文件中 { fstream file(\ for (int i=0;i<=top;i++) if (read[i].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); file.close(); } }; void RDatabase::readerdata() { char choice; char rname[20]; int readerid; Reader *r; while (choice!='0') { cout <<\读 者 维 护\\n\\n\\n\\t\\t 1 新 增\\n\\n\\t\\t 2 更 改\\n\\n\\t\\t 3 删 除\\n\\n\\t\\t 4 查 找\\n\\n\\t\\t 5 显 示\\n\\n\\t\\t 6 全 删\\n\\n\\t\\t 0 退 出\ cin >> choice; switch (choice) { case '1': cout << \输入读者编号:\ cin >> readerid; cout << \输入读者姓名:\ cin >> rname; addreader (readerid,rname); break; case '2': cout << \输入读者编号:\ cin >> readerid; r=query(readerid); if (r==NULL) { cout << \该读者不存在 \ break; } cout << \输入新的姓名:\ cin >> rname; r->setname(rname); break; case '3': cout << \输入读者编号:\ cin >> readerid; r=query(readerid); if (r==NULL) { cout <<\该读者不存在\ break; } r->delbook(); break; case '4': cout << \读入读者编号:\ cin >> readerid; r=query(readerid); if (r==NULL)