C++程序设计

#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;
} 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值