课程设计
图书管理系统
姓名:严永林
班级:测控1301班 学号:201304729
#include #include #include #include using namespace std; const int Maxr=100; const int Maxb=100; const int Maxbor=5; cla Reader
{
private: int tag;
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; } void addreader(int n,char *na)
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i
borbook[i]=0; }
{
}; void borrowbook(int bookid) {
} int retbook(int bookid) {
} void disp() {
} cout
if(borbook[i]!=0)
cout
} return 0;
if(borbook[i]==bookid) {
borbook[i]=0; return 1; } for(int i=0;i
}
if (borbook[i]==0) {
}
borbook[i]=bookid; return;
cout
cla RDatabase {
private:
int top;
/
Reader read[Maxr]; public:
{ } int addreader(int n,char *na) {
Reader *p=query(n); if (p==NULL) {
top++;
read[top].addreader(n,na);
return 1; } return 0; top=-1; RDatabase() {
} Reader s; top=-1; fstream file(\"reader.txt\",ios::in); while (1) {
} file.close();
//关闭 reader.txt
file.read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s;
}; void RDatabase::readerdata() {
char choice;
char rname[20]; int readerid; Reader *r; while (choice!=\'0\') } } Reader *query(int readerid)//按编号查找 {
} void disp() } void readerdata(); ~RDatabase() //析构函数,将read[]写到reader.txt文件中 {
fstream file(\"reader.txt\",ios::out);
if (read[i].gettag()==0)
file.write((char *)&read[i],sizeof(read[i]));
file.close();
{
read[i].disp(); for (int i=0;i
if (read[i].getno()==readerid && read[i].gettag()==0) { }
return NULL;
return &read[i];
for (int i=0;i
for (int i=0;i
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) {
cout > readerid; cout > rname;
addreader (readerid,rname); break;
cout > readerid; r=query(readerid); if (r==NULL) { }
cout > rname; r->setname(rname); break;
cout
cout
break; }
cout
\"
break;
case \'1\':
case \'2\':
case \'3\':
cin >> readerid;
}
}
}
case \'4\':
case \'5\':
case \'6\':
r->delbook(); break;
cout > readerid; r=query(readerid); if (r==NULL) {
} r->disp(); break; disp(); break; clear(); break;
cout
default:cout
int tag;//删除标记 1:已删 0:未删
public:
Book(){} char *getname() { return name; }//获取姓名 int getno(){ return no; }//获取图书编号 int no;//图书编号 char name[20];//书名
int onshelf;//是否再架 1:再架 2:已借
}; int gettag(){ return tag; }//获取删除标记 void setname(char na[])//设置书名 { } void delbook(){ tag=1;}//删除图书 void addbook(int n,char *na)//增加图书 {
} int borrowbook()//借书操作 {
} void retbook()//还书操作 { } void disp()//输出图书 {
} cout
} return 0;
onshelf=0; return 1; tag=0; no=n; strcpy(name,na); onshelf=1; strcpy(name,na); //图书库类,实现对图书的维护,查找,删除等 cla BDatabase { private:
int top;
//图书记录指针
public:
BDatabase()//构造函数,将book.txt读到book[]中 {
} { } {
} Book *query(int bookid)//查找图书 { for (int i=0;i
} return 0;
top++;
book[top].addbook(n,na); return 1; top=-1;
Book b; top=-1;
fstream file(\"book.txt\",ios::in); while (1) {
}
file.close();
file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; Book book[Maxb]; //图书记录
void clear()//全删
int addbook(int n,char *na)//增加图书
};
}
if (book[i].getno()==bookid &&book[i].gettag()==0) { }
return NULL;
return &book[i]; void bookdata();//图书库维护 void disp() {
for (int i=0;i
} ~BDatabase()//析构函数,将book[]写到book.txt文件中 {
} fstream file(\"book.txt\",ios::out);
if (book[i].gettag()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
if (book[i].gettag()==0)
book[i].disp();
for (int i=0;i
char choice;
char bname[40]; int bookid; Book *b; while (choice!=\'0\') {
cout
书
维
护 \"
新
增\\n \\t\\t2
更
改\\n\\t\\t3
删
除\\n\\t\\t4
cin >> choice; switch (choice) { 查
找\\n\\t\\t5
显
示\\n\\t\\t6
全
删\\n\\t\\t0
退
出\"
case \'1\':
case \'4\':
cout > bookid; b=query(bookid); if (b==NULL)
cout > bookid; cin >> bname;
addbook(bookid,bname); break;
cout > bookid; b=query(bookid); if (b==NULL) { }
cout > bname; b->setname(bname); break;
cout
cout
break; }
b->delbook(); break;
cout
\"
break;
cout
case \'2\':
case \'3\':
cin >> bookid;
}
}
}
case \'5\':
case \'6\':
{
} b->disp(); break; disp(); break; clear(); break;
cout
default:cout
int main(void) {
cout
借
书\\n\\n\\t\\t\\t2
还
书 \\n\\n\\t\\t\\t3
图 书 维 护\\n\\n\\t\\t\\t4
读 者 维 护\\n\\n\\t\\t\\t0
离
开\"
cin >> choice; switch (choice) { char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!=\'0\') {
cout
图
书
管
理
系
统\\n\\n\\n\";
case \'1\':
case \'2\':
cout>readerid; cout
图书编号:\"; cin >>bookid;
r=ReaderDB.query(readerid); if (r==NULL) {
}
b=BookDB.query(bookid);
cout
cout >readerid;
cout >bookid;
r=ReaderDB.query(readerid);//按编号查找 if (NULL==r) {
}
b=BookDB.query(bookid); if (b==NULL) {
}
if (b->borrowbook()==0) {
}
r->borrowbook(b->getno()); break;
cout
cout
cout
if (b==NULL) {
}
b->retbook();
r->retbook(b->getno()); cout
} return 0;}
break; case \'3\':
BookDB.bookdata();
break;
case \'4\':
ReaderDB.readerdata();
break;
default:cout