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<<"	*     designer:赵锦堃          from:自动化1122    *"<<endl;
	cout<<"	*                                                 *"<<endl;
	cout<<"	***************************************************"<<endl;

	return 0;
}


菜单首页


进入界面要首先为书库添加书籍,否则其它操作无法完成例如


添加书籍在管理板块,但是我设定了只有管理员才有权限添加,这样加强了系统的安全性


选择相应编号添加书籍,输入书籍的相关信息,输入结束后会显示出所有书籍信息


如果删除书籍只需输入对应的编码便可以删除(前提也是要有管理员权限并且书籍的编码正确)


查询模块有按书名查找和按编号查找

按编号查找

按书名查找


当要找的书书库没有


借书模块是输入书名查找(因为我们借书通常都只知道书名,总不可能还没借到书就知道书的编号了吧!)


当借了书之后该书籍总量就会少一本,


当总量只剩下0本,系统就会提示借不了了


同样,还书的话如果书库有这本书,那它的总量就会+1了


还书后书库显示


最后是退出界面



  • 67
    点赞
  • 486
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
具体功能要求 1、图书维护 (1)设置管理员账号和密码; (2)图书信息录入:图书编号、书名、作者名、分类、图书数量; (3)图书信息更改; (4)图书信息删除; (5)图书信息查询:按图书编号查询、按书名查询、按作者名查询; (6)图书信息全部显示; (7)图书信息全部删除; (8)退出图书维护界面。 2、读者维护 (1)设置管理员账号和密码; (2)读者信息录入:读者姓名、学号; (3)读者信息更改; (4)读者信息删除; (5)读者信息查询:按读者编号查询、按读者姓名查询; (6)读者信息全部显示; (7)读者信息全部删除; (8)退出读者维护界面。 3、借书 (1)设置借书的范围(如5本); (2)图书数量随着借书的数量减少; (3)输入读者编号与图书编号后借书成功。 4、还书 (1)图书数量随着还书的数量增加; (2)输入读者编号与图书编号后还书成功。 5、添加功能 (1)添加一本图书的基本信息,包括书名、图书编号、作者名、类别、图书数量。 (2)添加读者信息: 添加图书借阅的基本信息,包括书名、学号。 6、更改功能 对图书和读者的信息进行修改。 7、查找功能 (1)图书信息查找; (2)读者信息查找。 8、显示功能 (1)显示所有图书信息; (2)显示所有借阅信息。 9、删除功能 (1)删除图书的基本信息; (2)删除读者的基本信息; (3)删除图书借阅基本信息。
C语言超市库存管理系统是一个用于管理超市商品库存的软件系统。该系统可以实现对商品入库、出库、盘点、查询等功能的管理。 首先,超市库存管理系统需要有一个商品信息的数据库,包含商品的名称、编号、价格、库存数量等信息。系统可以提供一个界面,供用户输入商品信息,并将这些信息保存在数据库中。 其次,系统还需要提供入库功能。当有新货物到达超市时,系统可以让用户输入商品编号和数量,并将这些新货物的信息更新到数据库中的库存数量字段。这样,在商品被销售或者库存不足时,系统就能够提醒用户进行补货。 除了入库,系统还需要提供出库功能。当有顾客购买商品时,系统可以根据顾客的需求,查询数据库中的库存数量,并进行相应的减少。系统同时会更新数据库中的库存数量信息,并提醒用户库存不足的情况。 此外,系统还可以提供盘点功能。盘点可以对库存进行实际数量和系统记录的数量进行比对,以确保库存信息的准确性。用户可以选择开始盘点,系统会通过查询数据库来获取商品的库存数量,并与实际数量进行比对,同时将结果保存下来。 最后,系统还可以提供查询功能。用户可以通过商品编号或名称进行查询,系统会根据用户的输入,从数据库中检索相应的商品信息,并显示给用户。这样,用户可以方便地查找和了解商品的相关信息。 综上所述,C语言超市库存管理系统是一个实现了商品入库、出库、盘点和查询等功能的软件系统,能够提高超市商品库存的管理效率,增加库存信息的准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值