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

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

📁 C++ 图书管理系统 数据结构 图书的建立/删除/借出/归还==,用户的建立/删除
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<iostream>
#include<stdlib.h>
#include<string>
#include<fstream>
#include<conio.h>
#include<math.h>
#define OK 1
#define TURE 1

typedef struct{
	char *ch;//若非空串,刚按串长分配存储区,否刚ch为NULL
	int length;//串长度
}sstring;

int strassign(sstring &t,char *chars){//生成一个其值等于串常量chars的串t
	int i,a;char *c;
	t.ch=NULL;
    for(i=0,c=chars;*c;++i,++c)
		if(!i){t.ch=NULL;t.length=0;}
	else{
	if(!(t.ch=(char*)realloc(t.ch,(i+1)*sizeof(char))))
			exit(OVERFLOW);
		t.length=i+1;}
	for(a=0;a<t.length;a++){  
			t.ch[a]=chars[a];
		}
	return OK;
}

using namespace std;
typedef struct Book     //图书类
{
 int num;
 int lent;              //借出
 char name[20];
 char author[20];
 char kind[20];
 int exist;             //库存
 struct Book *next;
}Books;

typedef struct admin    //管理员类
{
 
 char adminsname[20];
 char password[20];
 struct admin *next;
}admins;

typedef struct user    //用户类
{
	char usersname[20];
	char ppassword[20];
	struct user *next;
}users;
users *creatusers()            //新建用户
{
 users *p,*husers,*tail;
 char usersname[20],ppassword[20];
 int size=sizeof(users);
 int end=1;
 husers=tail=NULL;
 cout<<"请输入用户名ENTER密码ENTER"<<endl;
 while(end)
 {   cin>>usersname>>ppassword;
  p=(users*)malloc(size);
  strcpy(p->usersname,usersname);
  strcpy(p->ppassword,ppassword);
    
  if(husers==NULL)
   husers=p;
  else
   tail->next=p;
  tail=p;
  cout<<"继续添加用户?Y=1,N=0"<<endl;
  cin>>end;
 }
 tail->next=NULL;
 return husers;
}


void showusers(users *husers) 
{
 users *p;
 if(husers!=NULL)
  p=husers;
 else {exit(0);}
 for(p=husers;p;p=p->next)
 {cout<<"用户名:"<<p->usersname<<"   密码:"<<p->ppassword<<'\n';}
}
void showpp(users *husers)  
{users *p;char usersname[20];int i=0;
if(husers!=NULL)
p=husers;
else{exit(0);}
cout<<"输入要查看的用户的用户名!"<<endl;
cin>>usersname;
for(p=husers;p;p=p->next)
{if(strcmp(p->usersname,usersname)==0)
{cout<<"用户名:"<<p->usersname<<"   密码:"<<p->ppassword<<'\n';i++;}
}
if(i==0) cout<<"要查找的帐号不存在!"<<endl;
}


users *loadusers(users *husers) //加载用户信息
{
 users *p,*tail;
 char usersname[20],ppassword[20];
 int size=sizeof(users);
 husers=tail=NULL;
 fstream fp;
 fp.open("c:\\users.txt",ios::in);
 if(!fp)
 {cout<<"文件读取失败!"<<endl;
 exit(0);
 }
 while(fp>>usersname>>ppassword)
 {p=(users*)malloc(size);
 strcpy(p->usersname,usersname);
 strcpy(p->ppassword,ppassword);
 if(husers==NULL)
  husers=p;
 else
  tail->next=p;
 tail=p;
 }
 tail->next=NULL;
 fp.close();
  return husers;
}



users *addusers(users *husers)  //增加用户
{
 users *ptr,*ptr2,*Book;
 int size=sizeof(users);
 char ch='a';
 while(ch!=' ')
 {
  Book=(users *)malloc(size);
  ptr=Book;
  cout<<"输入要添加的帐号名ENTER密码ENTER:"<<endl;
  cin>>Book->usersname>>Book->ppassword;
  if(husers==NULL)
  {
   husers=ptr;
   husers->next=NULL;
  }
  else {
   for(ptr2=husers;ptr2;ptr2=ptr2->next)
    if(ptr2->next==NULL)
    {
     ptr2->next=Book;
     Book->next=NULL;
     break;
    }
  }
  cout<<"继续添加请按回车,结束请按空格!"<<endl;
  cin.get();
  ch=cin.get();
 }
 return husers;
}


users *delusers(users *husers)  //删除用户
{
 users *p1,*p2;
 char ch='a';
 char usersname[20];
 while(ch!=' ') 
 {cout<<"请输入要删除的帐号名称!"<<endl;
 cin>>usersname;
 if(strcmp(husers->usersname,usersname)==0)
 {p2=husers;
 husers=husers->next;
 free(p2);
 }
 if(husers==NULL)
  return NULL;
 p1=husers;
 p2=husers->next;
 while(p2)
 {
  if(strcmp(p2->usersname,usersname)==0) 
  {p1->next=p2->next;
  free(p2);
  }
  else p1=p2;
  p2=p1->next;
 }
 cout<<"继续删除请按回车,结束请按空格"<<endl;
 cin.get();
 ch=cin.get();
 }
 return husers;
}


void saveusers(users *husers)    //保存用户信息
{
 users *p;
 fstream op;
 op.open("c:\\users.txt",ios::out);
 if(!op)
 {
  cout<<"文件读取失败!"<<endl;
  exit(0);
 }
 for(p=husers;p;p=p->next)
  op<<p->usersname<<" "<<p->ppassword<<'\n';
 op.close();
 cout<<"信息保存成功!"<<endl;
}



int checkusers(users *husers) //用户登陆
{
int i=0;
while(i==0){
 users *p;
 string pname,pstr1,ppwd,usersname;
 char ch;
    cout<<"输入用户名:"<<endl;
 cin>>pname;
 cout<<"输入用户密码:"<<endl;
 while((ch=getch())!=13)
 {pstr1+=ch;
 cout<<"*";
 }
 cout<<endl;
 if(NULL==husers)
 {cout<<"密码表为空!"<<endl;
 exit(0);
 }
 
 for(p=husers;p;p=p->next)
 {usersname=p->usersname;
 ppwd=p->ppassword;
 if(ppwd.compare(pstr1)==0 && usersname.compare(pname)==0)
 {
  cout<<"成功登录!"<<endl;
 i++;
 }
 }
 if(i==0)
 {cout<<"密码或者用户名错误请重新输入!"<<endl;}
}
 return OK;
}




Books *creatBook()      //新建图书
{
 Books *p,*hBook,*tail;
 int num=1;int exist,a=1,lent=0;               
 char name[20],kind[20],author[20];
 int size=sizeof(Books);
 hBook=tail=NULL;
 cout<<"输入图书信息:书名ENTER作者ENTER类型ENTER数量ENTER"<<endl;
 
 while(a)
 {cin>>name>>author>>kind>>exist;
  p=(Books*)malloc(size);
  p->num=num;
  p->lent=lent;
  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;
  cout<<"继续输入?Y=1;N=0"<<endl;
  cin>>a;
 }
 tail->next=NULL;
 return hBook;
}


void saveBook(Books *hBook)    //图书信息保存
{Books *p;
fstream fp;
fp.open("c:\\book.txt",ios::out);
if(!fp)
{cout<<"文件读取失败!"<<endl;
 exit(0);
}
for(p=hBook;p;p=p->next)
fp<<p->name<<" "<<p->author<<" "<<p->kind<<" "<<p->exist<<" "<<p->num<<" "<<p->lent<<'\n';
fp.close();
cout<<"信息保存成功!"<<endl;
}
 


void IndexBook(Books *hBook)   //查找
{
 char c='a';
 int a,t=1;
 char name[20],author[20];
 Books *p=hBook;
 while(c!=' ')
 {
  cout<<"按书名查找请输入1,按作者查找请输入2:"<<endl;
  cin>>a;
  switch(a)
  {case 1:cout<<"输入要查找的书名!"<<endl;
  cin>>name;
  for(p=hBook;p;p=p->next)
   if(strcmp(name,p->name)==0)
   {cout<<"书名:"<<p->name<<"作者:"<<p->author<<"类型:"<<p->kind<<"库存:"<<p->exist<<"编号:"<<p->num<<"借出:"<<p->lent<<endl;
   t=0;
   }
   if(t) cout<<"未找到!"<<endl;
   t=1;
   break;
  case 2:cout<<"输入要查找的书的作者!"<<endl;
  cin>>author;
  for(p=hBook;p;p=p->next)
   if(strcmp(author,p->author)==0)
   {cout<<"书名:"<<p->name<<"作者:"<<p->author<<"类型:"<<p->kind<<"库存:"<<p->exist<<"编号:"<<p->num<<"借出:"<<p->lent<<endl;
   t=0;
   }
   if(t) cout<<"未找到!"<<endl;
   t=1;
  }
  cout<<"继续查找请按回车,结束请按空格"<<endl;
  cin.get();
  c=cin.get();
 }
}


Books *addBook(Books *hBook)   //新增图书
{
 Books *ptr,*ptr2,*Book,*q=hBook;
 int x;
 for(;q->next;q=q->next);
 int size=sizeof(Books);
 char ch='a';
 while(ch!=' ')
 {
  Book=(Books *)malloc(size);
  ptr=Book;
  cout<<"输入要增加图书信息:书名ENTER作者ENTER类型ENTER库存ENTER"<<endl;
  cin>>Book->name>>Book->author>>Book->kind>>Book->exist;
  Book->lent=0;
  x=q->num;
  Book->num=(x+1);
  if(hBook==NULL)
  {
   hBook=ptr;
   hBook->next=NULL;
  }
  else {
   for(ptr2=hBook;ptr2;ptr2=ptr2->next)
    if(ptr2->next==NULL)
    {
     ptr2->next=Book;
     Book->next=NULL;
     break;
    }
  }
  cout<<"继续添加请按回车,结束请按空格!"<<endl;
  cin.get();
  ch=cin.get();
 }
 return hBook;
}

Books *delBook(Books *hBook)  //删除图书
{
 Books *p1,*p2;
 char ch='a';
 int num;
 while(ch!=' ') 
 {cout<<"请输入要删除的图书编号!"<<endl;
 cin>>num;
 if(hBook->num==num)
 {p2=hBook;
 hBook=hBook->next;
 free(p2);
 }
 if(hBook==NULL)
  return NULL;
 p1=hBook;
 p2=hBook->next;
 while(p2)
 {
  if(p2->num==num) 
  {p1->next=p2->next;
  free(p2);
  }
  else p1=p2;
  p2=p1->next;
 }
 cout<<"继续删除请按回车,结束请按空格"<<endl;
 cin.get();
 ch=cin.get();
 }
 return hBook;
}


Books *correctBook(Books *hBook)  //修改图书信息
{
 Books *p;
 int t=1;int num;
 char c='a';
 while(c!=' ')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -