📄 c+++图书管理系统+数据结构.cpp
字号:
{
cout<<"输入想要修改的图书编号:"<<endl;
cin>>num;
for(p=hBook;p;p=p->next)
if(p->num==num){
cout<<"您要修改的图书的信息为:"<<endl;
cout<<"书名 作者 类型 库存 图书编号"<<endl;
cout<<p->name<<" "<<p->author<<" "<<p->kind<<" "<<p->exist<<" "<<p->num<<endl;
cout<<"请输入新信息:书名ENTER作者ENTER类型ENTER库存ENTER"<<endl;
cin>>p->name>>p->author>>p->kind>>p->exist;
t=0;
break;
}
if(t) cout<<"不存在该图书!"<<endl;
cout<<"继续修改请按回车,结束请按空格"<<endl;
cin.get();
c=cin.get();
}
return hBook;
}
Books *loadBook(Books *hBook) //加载图书信息
{
Books *p,*tail;
int exist; int num,lent;
char name[20],kind[20],author[20];
int size=sizeof(Books);
hBook=tail=NULL;
fstream fo;
fo.open("c:\\book.txt",ios::in);
if(!fo)
{
cout<<"文件读取失败!"<<endl;
exit(0);
}
while(fo>>name>>author>>kind>>exist>>num>>lent)
{p=(Books*)malloc(size);
p->lent=lent;
p->num=num;
p->exist=exist;
strcpy(p->name,name);
strcpy(p->author,author);
strcpy(p->kind,kind);
if(hBook==NULL)
hBook=p;
else
tail->next=p;
tail=p;
}
tail->next=NULL;
return hBook;
}
admins *creatadmins() //创建管理员
{
admins *p,*hadmins,*tail;
char adminsname[20],password[20];
int size=sizeof(admins);
int end=1;
hadmins=tail=NULL;
cout<<"第一次使用该系统,请设置管理员用户名ENTER密码ENTER"<<endl;
while(end)
{ cin>>adminsname>>password;
p=(admins*)malloc(size);
strcpy(p->adminsname,adminsname);
strcpy(p->password,password);
if(hadmins==NULL)
hadmins=p;
else
tail->next=p;
tail=p;
cout<<"继续添加管理帐号?Y=1,N=0"<<endl;
cin>>end;
}
tail->next=NULL;
return hadmins;
}
void show(admins *hadmins)
{
admins *p;
if(hadmins!=NULL)
p=hadmins;
else {exit(0);}
for(p=hadmins;p;p=p->next)
{cout<<"用户名:"<<p->adminsname<<" 密码:"<<p->password<<'\n';}
}
admins *loadadmins(admins *hadmins) //加载管理员信息
{
admins *p,*tail;
char adminsname[20],password[20];
int size=sizeof(admins);
hadmins=tail=NULL;
fstream fp;
fp.open("c:\\admins.txt",ios::in);
if(!fp)
{cout<<"文件读取失败!"<<endl;
exit(0);
}
while(fp>>adminsname>>password)
{p=(admins*)malloc(size);
strcpy(p->adminsname,adminsname);
strcpy(p->password,password);
if(hadmins==NULL)
hadmins=p;
else
tail->next=p;
tail=p;
}
tail->next=NULL;
fp.close();
return hadmins;
}
void saveadmins(admins *hadmins) //保存管理员信息
{
admins *p;
fstream op;
op.open("c:\\admins.txt",ios::out);
if(!op)
{
cout<<"open file error!"<<endl;
exit(0);
}
for(p=hadmins;p;p=p->next)
op<<p->adminsname<<" "<<p->password<<'\n';
op.close();
cout<<"信息保存成功!"<<endl;
}
int check(admins *hadmins) //管理员登陆验证
{
admins *p;
string name,str1,pwd,adminsname;
char ch;
int i=0;
while(i==0){
cout<<"输入用户名:"<<endl;
cin>>name;
cout<<"输入用户密码:"<<endl;
while((ch=getch())!=13)
{str1+=ch;
cout<<"*";
}
cout<<endl;
if(NULL==hadmins)
{cout<<"密码表为空!"<<endl;
exit(0);
}
for(p=hadmins;p;p=p->next)
{adminsname=p->adminsname;
pwd=p->password;
if(pwd.compare(str1)==0 && adminsname.compare(name)==0)
{
cout<<"成功登录!"<<endl;
i++;
}
}
if(i==0)
{cout<<"密码或者用户名错误请重新输入!"<<endl;}
}
return OK;
}
admins *addadmins(admins *hadmins) //增加管理员
{
admins *ptr,*ptr2,*Book;
int size=sizeof(admins);
char ch='a';
while(ch!=' ')
{
Book=(admins *)malloc(size);
ptr=Book;
cout<<"输入要添加的管理员帐号名ENTER密码ENTER"<<endl;
cin>>Book->adminsname>>Book->password;
if(hadmins==NULL)
{
hadmins=ptr;
hadmins->next=NULL;
}
else {
for(ptr2=hadmins;ptr2;ptr2=ptr2->next)
if(ptr2->next==NULL)
{
ptr2->next=Book;
Book->next=NULL;
break;
}
}
cout<<"继续添加请按回车,结束请按空格!"<<endl;
cin.get();
ch=cin.get();
}
return hadmins;
}
admins *correctadmins(admins *hadmins) //修改管理员信息
{
admins *p;
int t=1;char adminsname[20];
char c='a';
while(c!=' ')
{
cout<<"输入想要修改的管理员名称:"<<endl;
cin>>adminsname;
for(p=hadmins;p;p=p->next)
if(strcmp(p->adminsname,adminsname)==0){
cout<<"管理员:"<<p->adminsname<<"原密码:"<<p->password<<endl;
cout<<"请输入新信息:管理员ENTER密码ENTER"<<endl;
cin>>p->adminsname>>p->password;
t=0;
break;
}
if(t) cout<<"不存在该帐号!"<<endl;
cout<<"继续修改请按回车,结束请按空格"<<endl;
cin.get();
c=cin.get();
}
return hadmins;
}
users *correctusers(users *husers){ //修改用户密码
users *p;char ppassword1[20],ppassword2[20];
int a=1;
cout<<"请输入旧密码"<<endl;
while(a){
cin>>ppassword1;
for(p=husers;p;p=p->next)
if(strcmp(p->ppassword,ppassword1)==0){
cout<<"输入新密码:"<<endl;
cin>>ppassword2;strcpy(p->ppassword,ppassword2);
a=0;
saveusers(husers);
cout<<"修改成功,请记住新密码!"<<endl;
}
else cout<<"输入错误请重新输入!"<<endl;
}
return husers;
}
admins *deladmins(admins *hadmins) //删除用户
{
admins *p1,*p2;
char ch='a';
char adminsname[20];
while(ch!=' ')
{cout<<"请输入要删除的帐号名称!"<<endl;
cin>>adminsname;
if(strcmp(hadmins->adminsname,adminsname)==0)
{p2=hadmins;
hadmins=hadmins->next;
free(p2);
}
if(hadmins==NULL)
return NULL;
p1=hadmins;
p2=hadmins->next;
while(p2)
{
if(strcmp(p2->adminsname,adminsname)==0)
{p1->next=p2->next;
free(p2);
}
else p1=p2;
p2=p1->next;
}
cout<<"继续删除请按回车,结束请按空格"<<endl;
cin.get();
ch=cin.get();
}
return hadmins;
}
Books *lent(Books *hBook){//借书
Books *p;
int num;
int c='a';
while(c!=' ')
{
cout<<"输入要借图书编号:"<<endl;
cin>>num;
for(p=hBook;p;p=p->next)
if(p->num==num){
if(p->exist>p->lent)
p->lent++;
saveBook(hBook);
cout<<"成功借出."<<endl;
}
else cout<<"该图书没库存!"<<endl;
cout<<"继续借书请按ENTER,退出请按输入空格"<<endl;
cin.get();
c=cin.get();
}
return hBook;
}
Books *in(Books *hBook){//还书
Books *p;
int num;
int c='a';
while(c!=' ')
{
cout<<"输入要还图书编号:"<<endl;
cin>>num;
for(p=hBook;p;p=p->next)
if(p->num==num){
p->lent--;
saveBook(hBook);
cout<<"成功还书."<<endl;
}
cout<<"继续还书请按ENTER,退出请按输入空格"<<endl;
cin.get();
c=cin.get();
}
return hBook;
}
void main()
{
admins *hadmins=NULL;
users *husers=NULL;
Books *hBook=NULL;
int a,b,c,d,n;
fstream fp;
fp.open("c:\\users.txt",ios::in);
if(!fp)
{n=1;
}
if(1==n)
{hadmins=creatadmins();saveadmins(hadmins);
hBook=creatBook();saveBook(hBook);
husers=creatusers();saveusers(husers);
}
else
{
while(a!=0)
{ husers=loadusers(husers);hadmins=loadadmins(hadmins);hBook=loadBook(hBook);
cout<<"请选择所需服务:"<<endl;
cout<<"1:管理员登陆; 2.用户登陆上; 0.退出."<<endl;
cin>>a;
switch(a)
{case 0: a=0;break;
case 1: hadmins=loadadmins(hadmins);check(hadmins);
while(b!=9){
cout<<" 请选择所需服务:" <<'\n';
cout<<"1.管理员信息管; 2.用户帐户管理;"<<'\n';
cout<<"3.新增图书; 4.删除图书; "<<'\n';
cout<<"5.修改图书信息; 6.图书搜索 "<<'\n';
cout<<"7.借书; 8.还书; "<<'\n';
cout<<"9.返回登陆; "<<endl;
cin>>b;
switch(b)
{case 1: cout<<"1.查看管理员帐号信息! 2.添加管理员帐号!"<<'\n';
cout<<"3.删除管理员帐号! 4.修改帐号信息! "<<endl;
int c;
cin>>c;
switch(c)
{case 1: show(hadmins);break;
case 2: addadmins(hadmins);saveadmins(hadmins);break;
case 3: hadmins=deladmins(hadmins);saveadmins(hadmins);break;
case 4: hadmins=correctadmins(hadmins);saveadmins(hadmins);break;
default : cout<<"输入错误!请重新输入!"<<endl;
} break;
case 2: cout<<"1.添加用户! 2.删除用户! "<<endl;
cout<<"3.查看所有用户信息! 4.退出! "<<endl;
cin>>d;
switch(d)
{ case 1: addusers(husers);saveusers(husers);break;
case 2: delusers(husers);saveusers(husers);break;
case 3: showusers(husers);break;
case 4: break;
} break;
case 3: hBook=addBook(hBook);saveBook(hBook);break;
case 4: hBook=delBook(hBook);saveBook(hBook);break;
case 5: hBook=correctBook(hBook);saveBook(hBook);break;
case 6: IndexBook(hBook);break;
case 7: lent(hBook);break;
case 8: in(hBook);break;
case 9: saveBook(hBook);saveadmins(hadmins);
saveusers(husers);break;
default:cout<<"输入错误,请重新输入:"<<endl;
}
}
break;
case 2: if(checkusers(husers))
while(c!=3){
cout<<"请选择所需服务:"<<endl;
cout<<"1.图书搜索; 2.修改用户密码; "<<'\n';
cout<<"3.返回登陆; "<<endl;
cin>>c;
switch(c)
{case 1:IndexBook(hBook);break;
case 2:correctusers(husers);break;
case 3: saveBook(hBook);saveadmins(hadmins);
saveusers(husers);break;
default:cout<<"输入错误,请重新输入:"<<endl;
}
}
default: break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -