急需用C++编写的图书管理系统设计

这是要求   

课设用的求大佬帮忙! ! !

 

如有帮助,望采纳。点击我回答右上角【采纳】按钮。

​
 

#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
#define N 20
 
struct book   //一本书所应该包含的内容(名字,书籍编码,作者,出版社,库存)
{
	char name[N];	//名字
	int num;	//书籍编码
	char author[N];//作者
	char pub[N];	//出版社
	int total;		//这本书总共数量
	book *next;
}*head=NULL,*p1,*p2;
 
int n=0;  
  
 
/********************增加书籍**********************/
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->total;
            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;
	do  
    {  
		cout<<p->num<<"      "<<p->name<<setw(10)
			<<p->author<<"    "<<p->pub<<setw(10)
			<<p->total<<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->total<<endl;
    }  
    else  
        cout<<"找不到该书籍!"<<endl<<endl;  
 
}
/****************通过书名查询书籍**************************/
void find_name(book *head)         //删除结点  
{  
    book *p1;
	char name[N];
	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->total<<endl;
    }  
    else  
        cout<<"找不到该书籍!"<<endl<<endl;  
 
}
/*********************借阅书籍*******************/ 
book *borrow(book *head)
{
	
	if(head==NULL)          //如果原先链表为空  
    {  
        cout<<"书库里没有书籍!"<<endl;
		return head;
    }  
	cout<<"请输入要借阅书籍的名称:"<<endl;
	char name[N];
	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->total<<endl;
		if(p1->total!=0)
		{
			cout<<"确定要借阅该书籍吗?"<<endl
				<<"1.确定"<<'\t'<<"2.取消"<<endl;
			int num; cin>>num;
			switch(num)
			{
				case 1:
						cout<<"借阅成功!"<<endl;
						(p1->total)--;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[N];
	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->total)++;break;
				case 2: break;
				default:cout<<"输入有误!"<<endl;break;
			}
		
    }  
    else  
        cout<<"不存在该书籍!"<<endl<<endl;  
 
 
	return head;
 
}  
/***********************查询菜单***********************/
void find()
{
	int num;
	cout<<"	***************************************************"<<endl;
	cout<<"	*           请输入对应功能的数字完成操作          *"<<endl;
	cout<<"	*                 1.通过编号查找                  *"<<endl;
	cout<<"	*                 2.通过书名查找                  *"<<endl;
	cout<<"	***************************************************"<<endl;
	cin>>num;
	switch(num)
	{
	case 1:find_num(head);break;
	case 2:find_name(head);break;
	default:cout<<"输入有误!"<<endl;break;
	}
}
    
/***********************管理菜单***********************/
void manage()
{
	int num1;
	cout<<"请输入管理员密码(123456):"<<endl;		//规定只有管理员才有权限增减图书
	cin>>num1;
	if(num1==123456)
	{
		int num;
		cout<<"	***************************************************"<<endl;
		cout<<"	*           请输入对应功能的数字完成操作          *"<<endl;
		cout<<"	*                     1.增加书籍                  *"<<endl;
		cout<<"	*                     2.删除书籍                  *"<<endl;
		cout<<"	***************************************************"<<endl;
		cin>>num;
		switch(num)
		{
		case 1:head=creat();
				print(head);
				break;
		case 2:head=del(head);break;
		default:cout<<"输入有误!"<<endl;break;
		}
	}
	else
		cout<<"输入错误,你没有权限修改图书管理系统!"<<endl;
}
 
 
void displaymain()
{
	cout<<"	***************************************************"<<endl;
	cout<<"	*           请输入对应功能的数字完成操作          *"<<endl;
	cout<<"	*                     1.查询                      *"<<endl;
	cout<<"	*                     2.借书                      *"<<endl;
	cout<<"	*                     3.还书                      *"<<endl;
	cout<<"	*                     4.管理                      *"<<endl;
	cout<<"	*                     5.书库                      *"<<endl;
	cout<<"	*                     6.退出                      *"<<endl;
	cout<<"	***************************************************"<<endl;
} 
 
int main()
{
	cout<<endl<<"                        欢迎使用图书管理系统"<<endl<<endl;
	int choice=1;
	while(choice!=0)
	{
		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 6:	choice=0;break;
			default:cout<<"输入有误,请重新输入!"<<endl;break;	
 
		}
	}
	cout<<"	***************************************************"<<endl;
	cout<<"	*                                                 *"<<endl;
	cout<<"	*                  感谢您的使用!                  *"<<endl;
	cout<<"	*                                                 *"<<endl;
	cout<<"	*                                                 *"<<endl;
	cout<<"	***************************************************"<<endl;
 
	return 0;
}

 

​

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632