#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) 回复
密码是啥
回复评论