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

📄 新建 文本文档.cpp

📁 图书管理系统 用 C++实现 能完成图书的查询 入库出库 增加图书等
💻 CPP
字号:

#include<fstream>
#include<iostream>
#include<string>
#include<sstream>

using namespace std;

enum query_form {BookName,press,author,ISBN};

template <class T>bool from_string(T& t, const string& s, ios_base& (*f)(ios_base&))//字符串类型转换
{  
	istringstream iss(s);  
	return !(iss >> f >> t).fail();
}

/*类型定义*/
struct LNode
{
	int  sequenceNum;    //图书序号
	string ISBN;         //ISBN编号
	string BookName;     //书名 
	string press;        //出版社
	string author;       //作者
	string date_of_in;   //入库时间
	string date_of_out;  //出库时间
	int  store_number;   //库存数
	double price;        //单价

	LNode * next;  //指向下一个图书
};
/*链表基本操作*/
LNode * CreateLink(LNode *L)    //创建一个链表
{
	L=new(LNode);
	L->next=NULL;
		return L;
}
LNode * CreateDefaultLink( )//创建以默认数据建立的链表
{
	 ifstream book("Bookmanagement.txt");
	 if(!book)
	 {
		 cerr<<"打开文件失败!"<<endl;
		 char * s="Bookmanagement.txt";
		 cout<<"请重新输入完整文件路径及文件名(盘符:\\路径\\文件名.txt):"<<endl;
		 cin>>s;
		 ifstream book(s);
	 }
	 LNode *p1,*p2,*head=NULL;
	 p1=p2=new LNode;
	 p1->next =NULL;
	 int i=0,j=1;
	 char ch;
	 string read,r[10]; //s用来保存当前正要提取的关键字,r[1]-r[9]依次用来保存每个结点的关键字
     getline(book,read);
	  while(j<10)
	  {   
		  string temp;
		  while(read[i++]!='\t')          
		  {
			  temp.append(1,read[i-1]);
		  }
		  r[j++]=temp;
		  cout<<r[j-1];
	 } 
	 from_string<int>(p1->sequenceNum, r[1], dec);
	 from_string<int>(p1->sequenceNum, r[2], dec);
	 p1->BookName=r[3];
     p1->author=r[4];
	 p1->press=r[5];
	 from_string<int>(p1->store_number, r[6], dec);
	 from_string<double>(p1->price, r[7], dec);
	 p1->date_of_in=r[8];
	 p1->date_of_out=r[9];
	  

	 book.get(ch);
	 while(book.eof())
	 {
		 if(head==NULL)head=p1;
		 else p2->next=p1;
		 p2=p1;
		 p1=new LNode;
		 p1->next=NULL;
		 getline(book,read);
	     while(j<10)
		 {   
	    	 string temp;
	    	 while(read[i++]!='\t')          
		  {
			   temp.append(1,read[i-1]);
		  }
		  r[j++]=temp;
		  		  cout<<r[j-1];
	 } 
    	/* while(ch !='\n')  //分离每行的关键字
		 {
	    	 while( ch !='\t')
			 {	  
				 s[i++]=ch;

				 book.get(ch);   //分离关键字
			 } 			
	    	 s[i]='\0';
             r[j++]=s;  
		 }
		 */
 
     	 from_string<int>(p1->sequenceNum, r[1], dec);
     	 from_string<int>(p1->sequenceNum, r[2], dec);
    	 p1->BookName=r[3];
         p1->author=r[4];
    	 p1->press=r[5];
    	 from_string<int>(p1->store_number, r[6], dec);
    	 from_string<double>(p1->price, r[7], dec);
    	 p1->date_of_in=r[8];
    	 p1->date_of_out=r[9];
	 }
	 return head;
}



/*函数声明*/
void menu();              //主 菜单
void sub_menu_ADD();      //增加记录 菜单
void sub_menu_Modify();   //修改记录 菜单
void sub_menu_Delete();   //删除记录 菜单
void sub_menu_Query();    //查询记录 菜单

void ADD();               //增加记录
void Modify();            //修改记录
void Delete();            //删除记录
LNode * query(int choice_of_query,string query_keyword);             //查询记录

 

void main()
{
	menu();

}



/*函数实现*/
void menu()
{
	cout<<"********************************************************************************"<<endl;

	cout<<"* "<<endl;
	cout<<"*	                    图书库存管理系统"<<endl;
	cout<<"*	 选择一个操作:"<<endl;
	cout<<"*		<1>增加一条图书记录			*"<<endl;
	cout<<"*		<2>修改一条图书记录			*"<<endl;
	cout<<"*		<3>删除一条图书记录			*"<<endl;
	cout<<"*		<4>查询一条图书记录			*"<<endl;
	cout<<"*		<5>保存到文件                           *"<<endl;
	cout<<"*		<6>退出系统			        *"<<endl;
	cout<<"********************************************************************************"<<endl;
	cout<<endl;

	char choice='6';
	cout<<"		请输入您的选择(1-6):"<<endl;
	cin>>choice;
	if (int(choice)<49 || int(choice)>54)
	{
		cout<<"			输入不正确!请重新再输入一个1至6之间的整数:"<<endl;
		cin>>choice;
	}
	else switch(choice)
	{
		case '1':sub_menu_ADD();break;
		case '2':sub_menu_Modify();break;
		case '3':sub_menu_Delete();break;
		case '4':sub_menu_Query();break;
		case '5':
		case '6':exit(0);
	}
	
}

void sub_menu_ADD()
{
}
void sub_menu_Modify()
{
}
void sub_menu_Delete()
{
}

void sub_menu_Query()
{

	cout<<"*	 选择一个查询方式:"<<endl;
	cout<<"*		<1>按 书名 查询				*"<<endl;
	cout<<"*		<2>按 ISBN 序列号查询			*"<<endl;
	cout<<"*		<3>按 作者 查询				*"<<endl;
	cout<<"*		<4>按 出版社 查询	     		*"<<endl;
	cout<<"*		<5>返回上级菜单			        *"<<endl;
	cout<<"********************************************************************************"<<endl;
	cout<<endl;

		char choice='5';
	cout<<"		请输入您的选择(1-5):"<<endl;
	cin>>choice;
	if (int(choice)<49 || int(choice)>53)
	{
		cout<<"			输入不正确!请重新再输入一个1至5之间的整数:"<<endl;
		cin>>choice;
	}
	else switch(choice)
	{
		case '1': 
			{
				cout<<"请输入要查询的 书名 :"<<endl;
				string name;
				cin>>name;
				query (1,name);
			}
		case '2': 
			{
				cout<<" 请输入要查询的 ISBN 编号:"<<endl;
				string ISBN;
				cin>>ISBN;
				query (2,ISBN);
			}
		case '3':			
			{
				cout<<" 请输入要查询的 作者:"<<endl;
				string author;
				cin>>author;
				query (3,author);
			}
		case '4':
			{				
				cout<<" 请输入要查询的 出版社:"<<endl;
				string press;
				cin>>press;
				query (4,press);
			} 

		case '5':menu();
	}

}
void ADD()
{

}
void Modify()
{
}
void Delete()
{
}
LNode * query(int choice_of_query,string query_keyword)
{
	/*
	ifstream book("Bookmanagement.txt");
		if(!book)
		{
			cerr<<"打开文件失败!"<<endl;
			char * s;
			cout<<"请重新输入完整文件路径及文件名(盘符:\\路径\\文件名.txt):"<<endl;
			cin>>s;
			ifstream book(s);
		}
	*/
		LNode * x=CreateDefaultLink();
		LNode *t=x;
		switch(choice_of_query)
		{
		case 1:
			{
			
				    t=t->next;
                 	while(t && t->store_number)
					{
	            	if(!query_keyword.compare(t->ISBN)) t=t->next;
             		return t;  
					} 
					break;
			}
		case 2:
			{
				 
				    t=t->next;
                 	while(t && t->store_number)
					{
	            	if(!query_keyword.compare(t->author)) t=t->next;
             		return t;  
					} 
					break;
			}
		case 3:
			{
			
				    t=t->next;
                 	while(t && t->store_number)
					{
	            	if(!query_keyword.compare(t->press)) t=t->next;
             		return t;  
					}
					break;
			}
		case 4:
			{
			 
				    t=t->next;
                 	while(t && t->store_number)
					{
	            	if(!query_keyword.compare(t->BookName)) t=t->next;
             		return t;  
					} 
					break;
			}
		}
        if(t)cout<<"您所查找的书目存在:"<<endl;
		cout<<t->BookName<<"	"<<t->author<<"	"<<t->press<<t->ISBN<<"	"<<endl;
}
/*
LNode * query_by_BookName(LNode *x,string keyword_BookName)
{
    x=x->next;
	while(x)
	{
		if(!keyword_BookName.compare(x->BookName)) x=x->next;

		return x;  
	}
 

}

/*
LNode * query_by_press(LNode *x,string keyword_press)
{
	x=x->next;
	while(x)
	{
		if(!keyword_press.compare(x->press))	x=x->next;

		return x;
	}
}
LNode * query_by_author(LNode *x,string keyword_author)
{
	x=x->next;
	while(x)
	{
		if(!keyword_author.compare(x->author)) x=x->next;

		 return x;
	}
}
LNode * query_by_ISBN(LNode *x,string keyword_ISBN)
{	
	x=x->next;
	while(x)
	{
		if(!keyword_ISBN.compare(x->ISBN))  x=x->next;

		return x;
	}
}
*/

⌨️ 快捷键说明

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