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

📄 function.cpp

📁 这是本人的课程设计,自动售货机,内容有文件的操作,向量与迭代器的使用,友元函数的使用
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	i=0;
	if(n=="2")
	{   cout<<"现有金额: "<<payment<<"元"<<endl;
		cout<<"请输入您要的金额: ";
		cin>>m;                                       //取出管理员想要的金额
        while(m>payment&&i<=2)
		{
			if(i==2)
			{
				cout<<"\n对不起,您连续3次输入错误,退出系统!\n"<<endl;
				exit_operate();
			}			
			cout<<"金额不足,请重新输入!  ";
			i++;
		cin>>m;		
		}

		payment-=m;
		save_payment();
		cout<<"系统正在处理,请等待..."<<endl;
		for(long l=0;l<=250000000;l++)
			;		
		cout<<"操作成功! 货款已取出!"<<endl;
        cout<<"余额: "<<payment<<endl;
	}

	if(n=="0")                                     	
	{;}
}
//*****************************************************************
void administrator()   //管理员操作函数   
{
	char n,m;
	int i=0;
	Product temp;
    cout<<"\t*********************************"<<endl;
	cout<<"\t        欢迎光临管理员登录"<<endl;
    cout<<"\t*********************************"<<endl;
	
	while(m)
	{                                                 
		
		cout<<endl;
		cout<<"1. 菜单初始化"<<endl;    
		cout<<"2. 自定义菜单"<<endl;
		cout<<"3. 修改菜单"<<endl;     //管理员的操作选项
		cout<<"4. 取出货款"<<endl;
		cout<<"5. 修改密码"<<endl;
		cout<<"0. 退出"<<endl;
		cout<<'\n'<<"请输入:  ";
		cin>>n;		
		while(n!='0'&&n!='1'&&n!='2'&&n!='3'&&n!='4'&&n!='5'&&i<=2)
		{	
			if(i==2)
			{
				cout<<"\n对不起,您连续3次输入错误,退出系统!\n"<<endl;
				exit_operate();
			}		
			cout<<"对不起,您输入错误,请重新输入!  ";
			i++;
			cin>>n;			
		}		
		switch(n)
		{
		case '0':exit_operate();break;
			
		case '1':{                             //1. 菜单初始化操作
			initialize_menu();
			cout<<'\n'<<"请等待..."<<endl;
			for(long m=0;m<=250000000;m++)
				;
			cout<<"\n菜单初始化完毕!"<<endl;
				 };break;			 
		case '2':{                            //2. 自定义菜单操作
			input_menu(temp);
			save_menu();
				 };break;			
		case '3':{   read_menu(temp);         //3. 修改菜单操作
			modify_menu(temp);
				 }break; 			
        case '4':take_payment();break;        //4. 取出货款操作
        case '5':modify_pin();break;          //5. 修改密码
		}		
		cout<<"\n继续操作请按 1 ,退出系统请按 0 :  ";
		
		{	cin>>m;
		    system("cls");
		if(m=='0')
			exit_operate() ;
		}
	}
}
/************************************************
               上面是管理员操作
*************************************************/
/*************************************************
               下面是顾客操作
*************************************************/
void con_save_menu()
{
	ofstream outfile("menu.txt",ios::out);
	
	if(!outfile)
	{
		cout<<"open error!"<<endl;
		exit(1);		
	}
	outfile<<num<<endl;
	for(int i=0;i<num;i++)
	{
		outfile<<books[i].get_name()<<"\t"<<books[i].get_cubage()<<"\t";
		outfile<<books[i].get_price()<<"\t"<<books[i].get_amount()<<endl;		
	}
		outfile.close();
}

//**********************************************
void Consumer::open_menu(Product & pp)
{
	int i;
	string n;
	int c;
	double p;
	int a;	
	
	ifstream infile("menu.txt",ios::in);
	if(!infile)
	{
		cout<<"open error!"<<endl;
		exit(1);
	}
	
	infile>>num;
   cout<<"\n"<<"\t商品种类有"<<num<<"种"<<endl;
	
	for(i=0;i<N;i++)
	{		
		infile>>n>>c>>p>>a;
		books.push_back(pp);
		books[i].set_menu2(n,c,p);
		books[i].set_amount(a);
	} 	
	cout<<endl;
	infile.close(); 
}

//*************************************************************
void in_coin(Coin & c)
{   cout<<"\n"<<"请选择0.1元,0.5元,1元投币,请以0结束,";
cout<<"如果投其他面值的硬币将不会被识别。"<<endl;
do
{
	c.set_coin_value();
	
	if(c.get_coin_value()==0.1||c.get_coin_value()==0.5||c.get_coin_value()==1)
	{
		c.add_value();
	}
}
while(c.get_coin_value()!=0);
cout<<"投币金额:"<<c.get_value()<<endl;
}

//***********************************************************
int buyed_amount[15];//定义一个数组
                     //用来保存可买商品的数量
void Consumer::select_merchdise(Product & pp,Coin & c)
{   
	int flag=1,n=0;
//if(c.get_coin_value()!=0)
{
	while(flag!=0)
	{
		if(n==3)
		{
			cout<<"\n对不起,您连续3次输入错误,退出系统!\n"<<endl;
			cout<<"\n退还余额:"<<c.get_value()<<"元"<<endl;
			exit_operate();
		}
		else
		{
			for(int i=0,m=0;i<num;i++)
				if(Coin::value<books[i].get_price())
					m++;
				n++;
				if(m==num)
				{
					cout<<"您的余额不足,请重新投币"<<endl;
					in_coin(c);
				}
				else
					flag=0;
		}	
	}
	cout<<endl;
cout<<"您可以够买的商品的名称以及数量:"<<endl;
cout<<"序号"<<'\t'<<"商品名称"<<'\t'<<"体积(ml)"<<'\t';
cout<<"价格(元)"<<'\t'<<"可买数量"<<endl;	
for(int i=0;i<num;i++)
{   
	buyed_amount[i]=Coin::value/books[i].get_price();	
	if(buyed_amount[i]<=0)
	    continue;
//{cout<<i+1<<"\t"<<books[i].get_name()<<"\t"<<books[i].get_cubage()<<"\t"<<'\t';
// cout<<books[i].get_price()<<'\t'<<"\t"<<"金额不足。"<<endl;	}

	else if(buyed_amount[i]>0&&buyed_amount[i]<=books[i].amount)		
	{cout<<i+1<<"\t"<<books[i].get_name()<<"\t"<<books[i].get_cubage()<<'\t'<<'\t';
	 cout<<books[i].get_price()<<"\t"<<'\t'<<buyed_amount[i]<<endl;}

    else 
	{cout<<i+1<<"\t"<<books[i].get_name()<<"\t"<<books[i].get_cubage()<<'\t'<<'\t';
   	 cout<<books[i].get_price()<<"\t"<<'\t'<<books[i].amount<<endl;}
}
}
}

//***********************************************************
void Consumer::buy_merchdise(Coin & cc)
{  	string n;
     //int j=1;
	cout<<endl;
    int number,am,other;//other是可买商品数量与
	                    //要购买的商品数量之差
	while(other<0)
	{  
	    int m=0;	
		cout<<"请输入您要的商品的序号:";	
		cin>>number;
		cout<<"请输入您要购买的数量:";
		cin>>am;
		if(number>num||number==0)
		{
			cout<<"输入错误!"<<endl;
			break;
		}
		else
		if(books[number-1].get_amount()==0)
		{
			cout<<"您所选的商品已售完!"<<endl;
			break;
		}
		else{
              system("cls"); 

cout<<"购买商品所需费用:"<<am<<"*"<<books[number-1].get_price();
cout<<"="<<am*books[number-1].get_price()<<"元"<<endl;

		if(buyed_amount[number-1]-am<0)
		{   cout<<"余额:"<<Coin::value<<"元"<<endl;
			cout<<"对不起,您的余额不足,无法购买此商品!"<<endl; 
			cout<<"继续投币请按 1 , 退出投币请按 0 :";
            cin>>n;
			m=0;
			while(n!="1"&&n!="0"&&m<=2)
			{
				if(m==2)
				{
					cout<<"\n对不起,您连续3次输入错误,退出系统!\n"<<endl;
					exit_operate();
				}				
				cout<<"对不起,您输入错误,请重新输入!  ";
				m++;
				cin>>n;	
			}
			if(n=="1"){in_coin(cc);break;}  //继续投币
			else  break;
		}
		}
			
		other=buyed_amount[number-1]-am;
		Coin::value=Coin::value-am*books[number-1].get_price(); 
		                                     //记录余额
        payment+=am*books[number-1].get_price();  
		                                    //增加货款并记录 
         save_payment();                    //保存货款      
         books[number-1].set_amount(books[number-1].get_amount()-am);
		                                //保存剩余商品的数量
		 cout<<"系统正在处理,请等待..."<<endl;
		 for(long l=0;l<=250000000;l++)
				;
		cout<<"操作成功!"<<endl;		
			con_save_menu();		
	}   
	cout<<"余额:"<<Coin::value<<"元"<<endl;
}

//***********************************************************
void consumer()       //顾客操作函数
{   int i;
	Coin c;           //生成各个类的对象
	Consumer con;
	Product temp;
//*****************************************************
	con.open_menu(temp);  //传递一个Product的对象给
	                      //Consumer类的成员函数open_menu();
	cout<<'\n'<<"序号"<<'\t'<<"商品名称"<<'\t'<<"体积(ml)"<<'\t';
	cout<<"价格(元)"<<'\t'<<"数量"<<endl;
	for(i=0,point=books.begin();i<num;point++,i++)
	{   cout<<i+1<<'\t';                
	    show_menu(*point); //用迭代器输出菜单
	}
     
	in_coin(c);           //传递一个Coin类的对象给函数in_coin()
                          //进行投币操作
	system("cls");
	con.select_merchdise(temp,c); //选择商品
	
	con.buy_merchdise(c);  //购买商品

	string n;
	while(c.get_value()!=0)
	{
		//system("cls");
		cout<<'\n'<<"序号"<<'\t'<<"商品名称"<<'\t'<<"体积(ml)"<<'\t';
		cout<<"价格(元)"<<'\t'<<"数量"<<endl;
		for(i=0,point=books.begin();i<num;point++,i++)
		{   cout<<i+1<<'\t';                
		show_menu(*point); //用迭代器输出菜单
		}
	cout<<"您还想购买其他商品吗?购买请按1,投币请按2,退出请0:  ";
	cin>>n;
	system("cls");
	int m=0;
	while(n!="1"&&n!="0"&&n!="2"&&m<=2)
	{
		if(m==2)
		{
			cout<<"\n对不起,您连续3次输入错误,退出系统!\n"<<endl;
			exit_operate();
		}
		
		cout<<"对不起,您输入错误,请重新输入!  ";
		m++;
	    cin>>n;	
	}
	if(n=="1")
	{	
			con.select_merchdise(temp,c);
			con.buy_merchdise(c);	
    } 
	if(n=="2")
	{
		in_coin(c);
		con.select_merchdise(temp,c); //选择商品
		system("cls");
		con.buy_merchdise(c);  //购买商品
	}
     if(n=="0") 
	{   cout<<"\n退还余额:"<<c.get_value()<<"元"<<endl;
		exit_operate();
	 }
	}
	
 }

⌨️ 快捷键说明

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