⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c+++图书管理系统+数据结构.cpp

📁 C++ 图书管理系统 数据结构 图书的建立/删除/借出/归还==,用户的建立/删除
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 {
  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 + -