[c++]代码库
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define max 3
typedef struct Books{
char book_name[15];
int total_num;
int borrow_num;
char book_num[15];
Books *next;
}books_node;
typedef struct Readers{
char reader_name[15];
char reader_no[15];
int reader_borrow_num;
struct Reader_borrow_books{
char borrow_books_name[15];
char borrow_books_no[15];
}reader_borrow_book[max];
Readers *next;
}readers_node;
class books {
protected:
books_node *broot;
public:
books();
savebooks();
search_book();
print_books();
virtual add_book()=0;
virtual delet_book()=0;
};
class manager:public books
{
protected:
readers_node *rroot;
public:
manager(readers_node*);
savereaders();
add_book();
delet_book();
search_reader();
add_reader();
delet_reader();
print_readers();
};
class reader:public books{
private:readers_node* personnel;
public:
reader(readers_node*);
add_book();
reader_borrow();
delet_book();
reader_return();
print_me();
save_readers(readers_node*);
};
books::books()
{
books_node *r;
broot=new books_node;
r=new books_node;
r->next=NULL;
broot=r;
ifstream inFile;
inFile.open("c:\\books.dat",ios::binary);
if(inFile.is_open()==-1)cout<<"con't open books.dat"<<endl;
else
{
int i=0;
while(1)
{
i++;
books_node *node;
node=new books_node;
inFile.read( (char*)node,sizeof(books_node));
if(inFile.eof()) break;
node->next=r->next;
r->next=node;
}
inFile.close();
if(i<2)cout<<"暂时没有图书数据"<<endl;
}
}
books::savebooks()
{
books_node *L;
L=new books_node;
L=broot->next;
ofstream outFile;
outFile.open("c:\\books.dat",ios::binary);
while(L)
{
outFile.write((char*)L,sizeof(books_node));
L=L->next;
}
outFile.close();
}
books::search_book()
{
char searchedbook[15];
cout<<"输入要查找的书的名子:";
cin>>searchedbook;
books_node *r;
r=new books_node;
r=broot->next;
while(r)
{
if((strcmp(searchedbook,r->book_name))==0)
{
cout<<"书名:"<<r->book_name<<" 书的总量:"<<r->total_num<<" 借出:"<<r->borrow_num<<" 书的编号:"<<r->book_num<<endl;break;
}
r=r->next;
}
if(r==NULL)cout<<"对不起,没有此书"<<endl;
}
books::print_books()
{
books_node *r;
r=new books_node;
r=broot->next;
while(r)
{
cout<<"书名:" <<r->book_name<<" 书的总量:"<<r->total_num<<" 借出:"<< r->borrow_num <<" 书的编号:"<<r->book_num<<endl;
r=r->next;
}
delete r;
}
manager::add_book()
{
books_node *L;
L=new books_node;
L=broot;
while(1)
{
books_node *r;
r=new books_node;
r->next=NULL;
cout<<"输入书名:";
cin>>r->book_name;
cout<<"输入书的编号:";
cin>>r->book_num;
r->borrow_num=0;
cout<<"输入总数:";
cin>>r->total_num;
r->next=L->next;
L->next=r;
cout<<"add more?(n终止,其它键继续)";
char sign;
cin>>sign;
if(sign=='n'||sign=='N')
break;
}
broot=L;
savebooks();
}
manager::delet_book()
{
char deleted[15];
cout<<"输入要删除的图书名字:";
cin>>deleted;
books_node *node,*L;
node=new books_node;
L=new books_node;
node=broot;
while(node->next)
{
if((strcmp(deleted,node->next->book_name))==0)break;
node=node->next;
}
if(node->next==NULL)
{
cout<<"sorry!There is no the book!"<<endl;
}
else
{
if(node->next->borrow_num==0)
{
node->next=node->next->next;
savebooks();
}
else
cout<<"对不起,暂时不能删除,因为还有没有归还的书"<<endl;
}
}
manager::manager(readers_node*node)
{
rroot=new readers_node;
rroot=node;
}
manager::savereaders()
{
readers_node *L;
L=new readers_node;
L=rroot->next;
ofstream outFile;
outFile.open("c:\\Readers.dat",ios::binary);
while(L)
{
outFile.write((char*)L,sizeof(readers_node));
L=L->next;
}
outFile.close();
}
manager::add_reader()
{
readers_node *L;
L=new readers_node;
L=rroot;
int sign=0;
while(1)
{
readers_node *r;
r=new readers_node;
r->next=NULL;
cout<<"输入姓名:";
cin>>r->reader_name;
cout<<"输入读者的编号:";
cin>>r->reader_no;
r->reader_borrow_num=0;
r->next=L->next;
L->next=r;
cout<<"add more?(n终止,其它键继续)";
char sign;
cin>>sign;
if(sign=='n'||sign=='N')
break;
}
rroot=L;
savereaders();
}
manager::delet_reader()
{
char deleted[15];
cout<<"输入要删除读者的名字:";
cin>>deleted;
readers_node *node,*L;
node=new readers_node;
L=new readers_node;
node=rroot;
while(node->next)
{
if((strcmp(deleted,node->next->reader_name))==0)break;
node=node->next;
}
if(node->next==NULL)
{
cout<<"sorry!There is no the reader!"<<endl;
}
else
{
node->next=node->next->next;
savereaders();
}
}
manager::search_reader()
{
readers_node *r;
r=new readers_node;
r=rroot->next;
char reader[15];
cout<<"输入要查找读者的姓名:";
cin>>reader;
while(r)
{
if((strcmp(reader,r->reader_name))==0)
{
cout<<"姓名:"<<r->reader_name<<" 编号:"<<r->reader_no<<" 借书总数:"<<r->reader_borrow_num<<endl;
for(int i=0;i<r->reader_borrow_num;i++)
{
cout<<"书名:"<<r->reader_borrow_book[i].borrow_books_name<<" "<<"书的编号:"<<r->reader_borrow_book[i].borrow_books_no;
}
break;
}
else r=r->next;
}
if(!r)cout<<"没有此人"<<endl;
}
manager::print_readers()
{
readers_node *printL;
printL=new readers_node;
printL=rroot->next;
while(printL)
{
cout<<"姓名 编号 借书总数"<<endl;
cout<<printL->reader_name<<" "<<printL->reader_no<<" "<<printL->reader_borrow_num<<endl;
for(int i=0;i<printL->reader_borrow_num;i++)
{
cout<<"书名:"<<printL->reader_borrow_book[i].borrow_books_name<<" "<<"书的编号:"<<printL->reader_borrow_book[i].borrow_books_no;
}
printL=printL->next;
}
delete printL;
}
reader::reader(readers_node*node)
{
(personnel)=new readers_node;
personnel=node;
}
reader::add_book()
{
books_node*node;
node=new books_node;
node=broot->next;
char returned[15];
cout<<"输入要还书的名子:";
cin>>returned;
for(int i=0;i<personnel->reader_borrow_num;i++)
{
if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))==0)break;
}
if(i==personnel->reader_borrow_num+1)
{
printf("不好意思,你没有此书");system("pause");
}
else{
while(node)
{
if((strcmp(node->book_name,returned)==0))break;
else node=node->next;
}
if(node)
{
personnel->reader_borrow_num--;
node->borrow_num--;
savebooks();
}
else cout<<"对不起,没有你要还的书或者所还书被删除"<<endl;
}
}
reader::delet_book()
{
if(personnel->reader_borrow_num<max)
{
books_node*node;
node=new books_node;
node=broot->next;
char borrowed[15];
cout<<"输入要借书的名子:";
cin>>borrowed;
while(node)
{
if((strcmp(node->book_name,borrowed)==0))break;
else node=node->next;
}
if(node&&(node->total_num-node->borrow_num)>0)
{
strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_books_name,node->book_name);
strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num++].borrow_books_no,node->book_num);
node->borrow_num++;
savebooks();
}
else cout<<"对不起,没有你要借的书或者所要借的书已经借完!"<<endl;
}
else cout<<"对不起,你借书的数量已经超过最大借数量"<<endl;
}
reader::print_me()
{
cout<<"姓名"<<personnel->reader_name<<" 编号:"<<personnel->reader_no<<" 借书总数:"<<personnel->reader_borrow_num<<endl;
for(int i=0;i<personnel->reader_borrow_num;i++)
{
printf("书名:%s,书的编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no);
}
}
void Pause()
{
getch();
fflush(stdin);
}
reader::reader_borrow()
{
delet_book();
}
reader::reader_return()
{
add_book();
}
reader::save_readers(readers_node *L)
{
readers_node *root;
root=new readers_node;
root=L->next;
ofstream outFile;
outFile.open("c:\\Readers.dat",ios::binary);
while(root)
{
outFile.write((char*)root,sizeof(readers_node));
root=root->next;
}
outFile.close();
}
readers_node* read_readers()
{
readers_node *r;
r=new readers_node;
r->next=NULL;
int flag=0;
ifstream inFile;
inFile.open("c:\\Readers.dat",ios::binary);
if(inFile.is_open()==-1)
{
cout<<"con't open readers.dat"<<endl;return r;
}
else
{
while(1)
{
flag++;
readers_node *node;
node=new readers_node;
inFile.read((char*)node,sizeof(readers_node));
if(inFile.eof()) break;
node->next=r->next;
r->next=node;
}
inFile.close();
if(flag<2)
{
cout<<"暂无读者 "<<endl; return r;
}
else
return r;
}
}
password()
{
system("cls");
char a[]="111111",b[10],c;int n=0,k;
cerr<<"\n\n\n\n\t\t\t请输入密码,你将拥有3次机会:\n";
while(1)
{
n++;
k=0;
cerr<<"\t\t\t输入密码:";
while(1)
{
c=getch();
if(c==13)break;
b[k]=c;k++;
cerr<<"*";
}
b[k]='\0';
cout<<"\n";
if(n>2)
{
printf("你已经超过输入次数,系统将退出\n");
getch();
}
if(strcmp(a,b)==0)break;
else cout<<"密码错误,请重新输入\n";
cerr<<"\n";
}
}
void manager_menu_1(manager M)
{
int N;
while(1)
{
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┃ 图书管图书管理系统 ┃\n";
cout<<"┃ 菜单 ┃\n";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";
cout<<"┃①增加图书 ┃\n";
cout<<"┃ ②.删除图书 ┃\n";
cout<<"┃ ③.查找图书 ┃\n";
cout<<"┃ ④.输出所有 ┃\n";
cout<<"┃ 退出请按0 ┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"请输入您的选择(0--4):( )\b\b";
cin>>N;
switch (N)
{
case 1: M.add_book();getch();break;
case 2: M.delet_book();getch();break;
case 3: M.search_book();getch();break;
case 4: M.print_books();getch();break;
case 0: return;
}
system("cls");
}
}
void manager_menu_2(manager M)
{
int N;
while(1)
{
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┃ 图书管图书管理系统 ┃\n";
cout<<"┃ 菜单 ┃\n";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";
cout<<"┃①增加读者 ┃\n";
cout<<"┃ ②删除读者 ┃\n";
cout<<"┃③查找读者 ┃\n";
cout<<"┃④输出所有 ┃\n";
cout<<"┃ 退出请按0 ┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"请输入您的选择(0--4):( )\b\b";
cin>>N;
switch (N)
{
case 1: M.add_reader();getch();break;
case 2: M.delet_reader();getch();break;
case 3: M.search_reader();getch();break;
case 4: M.print_readers();getch();break;
case 0: return;
}
system("cls");
}
}
void manager_menu(readers_node*L)
{
system("cls");
password();
manager Manager(L);
int N;
while(1)
{
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┃ 图书管图书管理系统 ┃\n";
cout<<"┃ 菜单 ┃\n";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";
cout<<"┃①图书维护 ┃\n";
cout<<"┃②读者维护 ┃\n";
cout<<"┃退出请按0 ┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"请输入您的选择(0--2):( )\b\b";
cin>>N;
switch (N)
{
case 1: system("cls"); manager_menu_1(Manager); break;
case 2: system("cls"); manager_menu_2(Manager);break;
case 0: return;
}
system("cls");
}
}
reader_menu(readers_node*L)
{
char name[15];
cout<<"输入用户名:";
cin>>name;
readers_node* node;
node=new readers_node;
node=L->next;
while(node)
{
if((strcmp(name,node->reader_name))==0)
break;
else
node=node->next;
}
if(node)
{
reader Reader(node);
int N;
while(1)
{
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┃图书管图书管理系统 ┃\n";
cout<<"┃ 菜单 ┃\n";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";
cout<<"┃①借书 ┃\n";
cout<<"┃ ②还书 ┃\n";
cout<<"┃③查找书 ┃\n";
cout<<"┃ ④.输出所有 ┃\n";
cout<<"┃ ⑤自身信息 ┃\n";
cout<<"┃退出请按0 ┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"请输入您的选择(0--5):( )\b\b";
cin>>N;
switch (N)
{
case 1: system("cls") ;Reader.reader_borrow();Reader.save_readers(L);break;
case 2: system("cls"); Reader.reader_return();Reader.save_readers(L);break;
case 3: system("cls");Reader.search_book();system("pls");break;
case 4: system("cls");Reader.print_books();getch();break;
case 5: system("cls");Reader.print_me(); Pause();break;
case 0: return;
}
system("cls");
}
}
else
{
printf("没有这个用户!按任意键继续");
getch();
return;
}
}
main()
{
readers_node* Reader_root;
Reader_root=new readers_node;
Reader_root=read_readers();
int N;
while(1)
{ system("cls");
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┃ 图书管图书管理系统 ┃\n";
cout<<"┃ 菜单 ┃\n";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";
cout<<"┃①图书管理员 ┃\n";
cout<<"┃ ②.读 者 ┃\n";
cout<<"┃推出请按0 ┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"请输入您的选择(0--2):( )\b\b";
cin>>N;
switch (N)
{
case 1: manager_menu(Reader_root);break;
case 2: reader_menu(Reader_root);break;
case 0:exit(0);break;
}
}
}
初级程序员
by: wangliyu 发表于:2019-07-08 10:36:49 顶(0) | 踩(0) 回复
密码是啥
回复评论