C++ 实验四 NO. 3 书店的前台收银销售类, 请完成该类定义,实验并且要满足: 1)向购物车中添加书籍;2):查看购物车;3):结算

//*********************************************************************************************************************
//*程序作者:冰糖
//*完成日期:2019年03月23日
//*章    节:实验四
//*题    号:3 
//*题    目:假设有一书店的前台收银销售类如下定义:
//*         Class Sale :		//前台销售类
//*         {
//*         private:
//*             int buycount;		//购买书的数量
//*             double total;		//总价
//*             BookData book[1000],buy[100]; //book数组用于存储图书信息,buy数组用于存储客户购买的图书的信息
//*         public:
//*             Sale();		//构造函数
//*             void addBook();		//向购物车中增加书籍
//*             void getBuy();		//查看购物车
//*             void getCash();		//结算
//*             void getData();		//打开书库文件并将文件中的图书信息读取到内存中
//*             void putData();		//在实验结束前,将图书信息写入书库文件中
//*         };
//*         请完成该类定义,实验并且要满足:
//*         1)向购物车中添加书籍:用户先输入书名查找要购买的书籍,
//*            系统会查找相关书籍并询问购买数量,用户输入数量后即可添加至购物车
//*         2)查看购物车:系统显示用户购物车中的书籍以及价格、数量等信息
//*         3)结算:系统计算出用户需要支付的价格
//********************************************************************************************** 
#include<iostream> 
using namespace std;
#include<iomanip>
#include<fstream>
#include<string>
#include<string.h>
int b=0;//记录购买的次数 
void menu();
struct BookData
{
	char bookName[100];//书名 
	int buyNum; //用户购买的数量 
	float bookPrice;//图书单价
};
class Sale 		//前台销售类
{
	private:
	    int buycount;		//购买书的数量
	    double total;		//总价 
	    BookData book[1000],buy[100]; //book数组用于存储图书信息,buy数组用于存储客户购买的图书的信息
	public:
	    Sale()		//构造函数   初始化购买的价格以及图书数量为零 
	    {
	    	buycount=0;
			total=0; 
		}
	    void addBook();		//向购物车中增加书籍
	    void getBuy();		//查看购物车
	    void getCash();		//结算
	    void getData(fstream &file);		//打开书库文件并将文件中的图书信息读取到内存中
		void putData(fstream &file);		//在实验结束前,将图书信息写入书库文件中
		~Sale()	{cout<<"销售管理结束!"<<endl;};
};
//向购物车中添加书籍************************************************************************************************************** 
void Sale::addBook()   
{   char name[100];
	int i,num;
	float price;                              
	cout<<"请输入您想要购买的图书进行查找:"<<endl;
	cin>>name;
	for(i=0;i<8;i++)
	{
		if(strcmp(book[i].bookName,name)==0)
		{
			cout<<"该图书剩余"<<book[i].buyNum<<"本"<<endl
				<<"单价为"<<book[i].bookPrice<<"元一本"<<endl
				<<"请输入您想要购买的数量:"<<endl;
			cin>>num;
			if(num<=book[i].buyNum)
			{
				strcpy(buy[b].bookName,name);
				buy[b].buyNum=num;
				buy[b].bookPrice=book[i].bookPrice;
				b++;
				book[i].buyNum=book[i].buyNum-num;
				cout<<"添加购物车成功!祝您生活愉快!~~~"<<endl;
				break;
			} 
			else
			{
				cout<<"抱歉,图书库存不足,请减少购买数量......QAQ"<<endl;
				break; 
			}
		}
	}
	if(i>=8)
	{
		cout<<"抱歉,本店未找到该图书......QAQ"<<endl;
	}
}
//查看购物车************************************************************************************************************* 
void Sale::getBuy()
{
	int i;
	if(b==0)
		cout<<"您的购物车为空,无法查看......"<<endl; 
	for(i=0;i<b;i++)
	{
		cout<<"书名:"<<buy[i].bookName<<endl
			<<"数量:"<<buy[i].buyNum<<endl
			<<"单价:"<<buy[i].bookPrice<<endl;
	}	
} 
//结算金额*************************************************************************************************************************
void Sale::getCash()
{
	float moneyAll=0;
	int i;
	cout<<"购物车中有:"<<endl;
	for(i=0;i<b;i++)
	{
		cout<<buy[i].buyNum<<"本"
			<<"《"<<buy[i].bookName<<"》"<<endl;
		moneyAll=moneyAll+(buy[i].buyNum*buy[i].bookPrice);
	}	
	cout<<"您一共需要支付"<<moneyAll<<"元。"<<endl;
} 
//打开书库文件并将文件中的图书信息读取到内存中***********************************************************************************
void Sale::getData(fstream& file)	
{
	file.open("bookfile.txt",ios::in|ios::out);
	if(!file)
	{
		cout<<"文件bookfile.txt打开失败!"<<endl;
		exit(0);
	}
	for(int i=0;i<8;i++)
	{
		file>>book[i].bookName
			>>book[i].bookPrice
			>>book[i].buyNum;
	}
	file.close(); 
} 
//在实验结束前,将图书信息写入书库文件中***********************************************************************************************
void Sale::putData(fstream& file)
{
	file.open("bookfile.txt",ios::out);
	if(!file)
	{
		cout<<"文件bookfile.txt打开失败!"<<endl;
		exit(0);
	}
	for(int i=0;i<8;i++)
	{
		file<<book[i].bookName<<" "
			<<book[i].bookPrice<<" "
			<<book[i].buyNum<<endl;
	}
	file.close();
} 
//主函数**************************************************************************************************************		
int main()
{
	cout<<"欢迎使用前台销售系统,请输入您想要进行的操作:"<<endl;
	while(1)
	{
		menu();
	}
}
void menu()
{
	char name1[100];
	int command; 
	Sale sale;
	fstream file;
	sale.getData(file);//获取图书库信息//打开书库文件并将文件中的图书信息读取到内存中
	while(1)
	{
		cout<<"*****************************************************************************************"<<endl;
		cout<<"1:向购物车中增加书籍"<<endl
			<<"2:查看购物车"<<endl
			<<"3:结算"<<endl
			<<"4:在实验结束前,将图书信息写入书库文件中"<<endl  	//在实验结束前,将图书信息写入书库文件中
			<<"5:退出系统"<<endl;	
		cin>>command;
		switch(command)
		{
			case 1: 
				sale.addBook();
				break;
			case 2: 
				sale.getBuy();
				break;
			case 3:
				sale.getCash();
				break;
			case 4:
				sale.putData(file);
				break;
			case 5:
				exit(0);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值