#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
void manage();//管理页面
void find();//查书
void displaymain();//菜单显示
void denglu()
{
cout<<endl<<endl<<endl<<endl<<endl;
cout<<endl<<endl<<endl<<endl<<endl;
cout<<" 欢 迎 来 到 图 书 馆 的 登 录 页 面"<<endl<<endl<<endl;
cout<<" 请输入您的登录密码:";
}
int n=0;
struct book //书本资料
{
char name[25]; //书名
int num; //编码
char author[25];//作者
char pub[25]; //出版社
int number; //数量
book *next;
}*head=NULL,*p1,*p2;
book *creat() //增加图书
{
p1=new(book);
cout<<"请输入要增加的书籍编号(编号为0时自动退出): ";
cin>>p1->num;
while((*p1).num!=0)
{
n++;
if(n==1)
head=p1;
else
(*p2).next=p1;
cout<<"请输入书籍的名字:";
cin>>(*p1).name;
cout<<"请输入书籍的作者:";
cin>>(*p1).author;
cout<<"请输入书籍出版社:";
cin>>(*p1).pub;
cout<<"请输入需要添加书籍的数目:";
cin>>(*p1).number;
p2=p1;
cout<<"请输入要增加的书籍编号,输入为0时停止输入: ";
p1=new(book);
cin>>(*p1).num;
}
cout<<endl<<endl;
delete p1;
(*p2).next=NULL;
return head;
}
void print(book *head)//显示图书详情
{
book *p;
p=head;
if(p==NULL)
{
cout<<"找不到图书!! "<<endl;
return;
}
cout<<endl<<"目前书库所含书籍信息为:"<<endl
<<"编号"<<" "<<"名字"<<" "
<<"作者"<<" "<<"出版社"<<" "
<<"数目"<<endl;
do
{
cout<<(*p).num<<" "<<(*p).name<<setw(10)<<" "
<<(*p).author<<" "<<(*p).pub<<setw(10)<<" "
<<(*p).number<<endl;
p=(*p).next;
}
while(p!=NULL);
}
book *del(book *head) //删除书籍
{
book *p1,*p2;
int num;
if(head==NULL)
{
cout<<"找不到图书!!"<<endl;
return head;
}
cout<<"请输入您要删除书籍的编码:"<<endl;
cin>>num;
p1=head;
while(num!=(*p1).num && (*p1).next!=NULL)
{
p2=p1;
p1=(*p1).next;
}
if(num==(*p1).num)
{
if(p1==head)
head=p1->next;
else
p2->next=(*p1).next;
cout<<"该书籍已成功删除"<<endl<<endl;
n--;
print(head);
}
else
cout<<"没有存在该书籍编号的图书"<<endl<<endl;
return head;
}
void find_num(book *head) //编号查询书籍
{
book *p1;
int num;
cout<<"请输入您要查询的书籍编号:"<<endl;
cin>>num;
if(head==NULL) //如果原先链表为空
{
cout<<"找不到图书!!"<<endl;
return;
}
p1=head;
while(num!=(*p1).num && (*p1).next!=NULL) //找不到相应的结点就往下继续搜索
{
p1=p1->next;
}
if(num==p1->num) //找到结点
{
cout<<"查找到的书籍信息为:"<<endl
<<"编号"<<" "<<"名字"<<" "
<<"作者"<<" "<<"出版社"<<" "
<<"数目"<<endl;
cout<<p1->num<<setw(10)<<p1->name<<setw(7)
<<p1->author<<setw(10)<<p1->pub<<setw(8)
<<p1->number<<endl;
}
else
cout<<"没有存在该书籍编号的图书"<<endl<<endl;
}
void find_name(book *head) //书名查询书籍
{
book *p1;
char name[25];
cout<<"请输入要查询的书籍名字:"<<endl;
cin>>name;
if(head==NULL)
{
cout<<"找不到图书!!"<<endl;
return;
}
p1=head;
while(strcmp(name,p1->name)!=0 && p1->next!=NULL)
{
p1=p1->next;
}
if(strcmp(name,p1->name)==0)
{
cout<<"查找到的书籍信息为:"<<endl
<<"编号"<<" "<<"名字"<<" "
<<"作者"<<" "<<"出版社"<<" "
<<"数目"<<endl;
cout<<p1->num<<setw(10)<<p1->name<<setw(7)
<<p1->author<<setw(10)<<p1->pub<<setw(8)
<<p1->number<<endl;
}
else
cout<<"找不到该书籍!"<<endl<<endl;
}
book *borrow(book *head)//借书
{
if(head==NULL)
{
cout<<"找不到图书!!"<<endl;
return head;
}
cout<<"请输入要借阅书籍的名称:"<<endl;
char name[25];
cin>>name;
book *p1;
p1=head;
while(strcmp(name,p1->name)!=0 && p1->next!=NULL)
{
p1=p1->next;
}
if(strcmp(name,p1->name)==0)
{
cout<<"查找到的书籍信息为:"<<endl
<<"编号"<<" "<<"名字"<<" "
<<"作者"<<" "<<"出版社"<<" "
<<"数目"<<endl;
cout<<p1->num<<setw(10)<<p1->name<<setw(7)
<<p1->author<<setw(10)<<p1->pub<<setw(8)
<<p1->number<<endl;
if(p1->number!=0)
{
cout<<"确定要借阅该书籍吗?"<<endl
<<"1.确定"<<'\t'<<"2.取消"<<endl;
int num; cin>>num;
switch(num)
{
case 1:
cout<<"借阅成功!"<<endl;
(p1->number)--;break;
case 2: break;
default:cout<<"输入有误!"<<endl;break;
}
}
else
cout<<"书籍已全被借阅!"<<endl;
}
else
cout<<"没有存在该书籍编号的图书"<<endl<<endl;
return head;
}
book *back(book *head)//还书
{
if(head==NULL)
{
cout<<"书库未借出过任何书籍! "<<endl;
return head;
}
cout<<"请输入您要归还书籍的名称:"<<endl;
char name[25];
cin>>name;
book *p1;
p1=head;
while(strcmp(name,p1->name)!=0 && p1->next!=NULL)
{
p1=p1->next;
}
if(strcmp(name,p1->name)==0)
{
cout<<"确定要归还该书籍吗?"<<endl
<<"1.确定"<<'\t'<<"2.取消"<<endl;
int num; cin>>num;
switch(num)
{
case 1:
cout<<"成功还书"<<endl;
(p1->number)++;break;
case 2: break;
default:cout<<"输入有误!"<<endl;break;
}
}
else
cout<<"没有存在该书籍编号的图书"<<endl<<endl;
return head;
}
int main()
{
denglu();
long m=111111,b;
cin>>b;
while(m!=b)
{
cout<<" 请重新输入密码:";
cin>>b;
}
cout<<endl;
cout<<endl;
cout<<"***************************** 欢 迎 来 到 图 书 馆 *****************************"<<endl;
cout<<" 图 书 管 理 系 统 "<<endl;
cout<<" "<<endl<<endl;
cout<<" 书中自有黄金屋 "<<endl<<endl;
cout<<" 读高雅书,做高尚人 "<<endl<<endl;
cout<<" 与书本为友,与大师对话 "<<endl<<endl;
cout<<" 悠悠书香,点点墨趣,与书为友,天长地久 "<<endl<<endl;
cout<<" 你在 "<<endl<<endl;
cout<<" 我在 "<<endl<<endl<<endl;
cout<<" "<<endl;
cout<<"请输入1进入首页:"<<endl;
cout<<endl;
int choice=1;
while(choice!=0)
{
int a;
cin>>a;
cout<<endl<<endl<<endl<<endl<<endl;
if(a==1)
displaymain();
cin>>choice;
switch(choice)
{
case 1: find();break;
case 2: head=borrow(head);break;
case 3: head=back(head);break;
case 4: manage();break;
case 5: print(head);break;
case 0: choice=0;break;
default:cout<<"输入有误,请重新输入!"<<endl;break;
}
}
return 0;
}
void find()//查书
{
int num;
cout <<" 请 输 入 对 应 功 能 的 数 字 完 成 操 作"<<endl<<endl<<endl<<endl<<endl<<endl;
cout<<"\t\t\t1 通 过 编 号 查 找 \n\n\t\t\t\n\n\t\t\t2 通 过 书 名 查 找 \n\n\t\t\t\n\n\t\t\t(操作结束后按1可回到首页)"<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
cin>>num;
switch(num)
{
case 1:find_num(head);break;
case 2:find_name(head);break;
default:cout<<"输入有误!"<<endl;break;
}
}
void manage()//管理页面
{
int num;
cout <<" 请 输 入 对 应 功 能 的 数 字 完 成 操 作"<<endl<<endl<<endl<<endl<<endl<<endl;
cout<<"\t\t\t1 增 加 书 籍 \n\n\t\t\t\n\n\t\t\t2 删 除 书 籍"<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
cin>>num;
switch(num)
{
case 1:head=creat();
print(head);
break;
case 2:head=del(head);break;
default:cout<<"输入有误!"<<endl;break;
}
}
void displaymain()//菜单显示
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";
cout <<"\t\t\t1 查 询\n\n\t\t\t2 借 书 \n\n\t\t\t3 还 书 \n\n\t\t\t4 管 理 \n\n\t\t\t5 书 库 \n\n\t\t\t0 退 出\n\n\t\t\t\n\n\t\t\t(操作结束后按1可回到首页)"<<endl;
cout<<endl<<endl<<endl<<endl;
}
C++程序设计
最新推荐文章于 2023-06-03 02:04:35 发布