电脑报价系统C++

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
#define MAX_STYLE_SIZE 100 //电脑类型最大数量

class COMPUTER
{
public:
	char pc_style[30];//电脑型号
	char cpu_style[30];//cpu型号
	char mem_style[30];//内存型号
	char card_style[30];//显卡型号
	float price;//报价
};

int menu()
{
	int chioce;//记录选择
	system("cls");//清屏
	cout<<"1:增加报价"<<endl;
	cout<<"2:删除报价"<<endl;
	cout<<"3:修改报价"<<endl;
	cout<<"4:查找报价"<<endl;
	cout<<"5:显示报价"<<endl;
	cout<<"0:退出"<<endl;
	cin>>chioce;
	while(chioce<0||chioce>5)//确保选择范围正确
	{
		cout<<"输入错误,重新输入!"<<endl;
		cin>>chioce;
	}
	return chioce;//选择结果返回给主函数
}


int Input_New_Computer(COMPUTER computer[],int NUM)
{
	char temp[20];//记录选择
	system("cls");//清屏
	cout<<"请输入新增电脑型号"<<endl;
	cin>>computer[NUM].pc_style;
	cout<<"请输入新增电脑CPU型号"<<endl;
	cin>>computer[NUM].cpu_style;
	cout<<"请输入新增电脑内存型号"<<endl;
	cin>>computer[NUM].mem_style;
	cout<<"请输入新增电脑显卡型号"<<endl;
	cin>>computer[NUM].card_style;
	cout<<"请输入该型号电脑价格"<<endl;
	cin>>computer[NUM].price;//获取电脑信息

	cout<<"确认添加(Y/N)?\n"<<endl;
	scanf("%s",temp);
	if(!strcmp(temp,"Y")||!strcmp(temp,"y"))//判断是否按Y
	{
		cout<<"添加成功"<<endl;
		system("pause");
		return NUM+1;
	}
	cout<<"已取消添加"<<endl;//其它键取消添加
	system("pause");
	return NUM;
}



//显示信息  NUM代表显示个数  computer代表开始显示位置
void Display_Computer_Info(COMPUTER computer[],int NUM)
{
	int i;
	if(NUM==0)//如果为0则不显示信息
	{
		cout<<"无电脑信息!"<<endl;
		return ;
	}
	cout<<"电脑";cout.width(20);
	cout<<"CPU";cout.width(20);
	cout<<"内存";cout.width(20);
	cout<<"显卡";cout.width(20);
	cout<<"价格";cout<<endl;
	for(i=0;i<NUM;i++)
	{
		cout<<computer[i].pc_style;cout.width(20);
		cout<<computer[i].cpu_style;cout.width(20);
		cout<<computer[i].mem_style;cout.width(20);
		cout<<computer[i].card_style;cout.width(20);
		cout<<computer[i].price;cout<<endl;
	}
}

int Del_Computer_Info(COMPUTER computer[],int NUM)
{
	int i,j;
	char temp[20],name[30];//记录选择
	system("cls");//清屏
	cout<<"请输入电脑型号:";
	cin>>name;
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(name,computer[i].pc_style))//如果找到  则跳出循环
		{
			break;
		}
	}
	if(i==NUM)//如果一直没有跳出 说明没有找到
	{
		cout<<"无该型号电脑!"<<endl;
		system("pause");
		return NUM;
	}

	Display_Computer_Info(computer+i,1);//显示1条信息
	cout<<"确认删除(Y/N)?"<<endl;
	cin>>temp;
	if(!strcmp(temp,"Y")||!strcmp(temp,"y"))//判断是否按Y
	{
		for(j=i;j<NUM;j++)
		{
			computer[j]=computer[j+1];
		}//用后一个数据覆盖前一个 达到删除

		cout<<"删除成功"<<endl;
		system("pause");
		return NUM-1;
	}
	cout<<"已取消删除"<<endl;//其它键取消删除
	system("pause");
	return NUM;
}

void Modify_Computer_Info(COMPUTER computer[],int NUM)
{
	int i;
	char temp[20],name[30];//记录选择
	float p;
	system("cls");//清屏
	cout<<"请输入电脑型号:";
	cin>>name;
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(name,computer[i].pc_style))//如果找到  则跳出循环
		{
			break;
		}
	}
	if(i==NUM)//如果一直没有跳出 说明没有找到
	{
		cout<<"无该型号电脑:"<<endl;
		system("pause");
		return ;
	}
	Display_Computer_Info(computer+i,1);//显示1条信息
	cout<<"请输入新报价:"<<endl;
	cin>>p;//获取电脑信息
	
	cout<<"确认修改(Y/N)?"<<endl;
	cin>>temp;
	if(!strcmp(temp,"Y")||!strcmp(temp,"y"))//判断是否按Y
	{
		computer[i].price=p;
		cout<<"修改成功"<<endl;
		system("pause");
	}
	cout<<"已取消修改"<<endl;//其它键取消删除
	system("pause");
}

void Serach_Computer_Info(COMPUTER computer[],int NUM)
{
	int i,chioce;
	char name[30];//记录选择
	system("cls");//清屏

	cout<<"1:按电脑型号查找"<<endl;
	cout<<"2:按CPU型号查找"<<endl;
	cout<<"3:按内存型号查找"<<endl;
	cout<<"4:按显卡型号查找"<<endl;
	cin>>chioce;
	while(chioce<1||chioce>4)//确保选择范围正确
	{
		cout<<"输入错误,重新输入!";
		cin>>chioce;
	}
	cout<<"请输入型号"<<endl;
	cin>>name;
	switch(chioce)
	{
	case 1:
		for(i=0;i<NUM;i++)
		{
			if(!strcmp(name,computer[i].pc_style))
			{
				break;
			}
		}
	break;
	case 2:
		for(i=0;i<NUM;i++)
		{
			if(!strcmp(name,computer[i].cpu_style))
			{
				break;
			}
		}
	break;
	case 3:
		for(i=0;i<NUM;i++)
		{
			if(!strcmp(name,computer[i].mem_style))
			{
				break;
			}
		}
	break;
	case 4:
		for(i=0;i<NUM;i++)
		{
			if(!strcmp(name,computer[i].card_style))
			{
				break;
			}
		}
	break;
	}
	if(i==NUM)
	{
		cout<<"无该型号!"<<endl;
		system("pause");
		return ;
	}
	Display_Computer_Info(computer+i,1);//显示1条信息
	system("pause");
}

//保存文件
void Save_Computer_Info(COMPUTER computer[],int NUM)
{
	int i;
	ofstream fp;
	fp.open("Computer_Info.dat");
	if(fp==NULL)
	{return ;}
	for(i=0;i<NUM;i++)//依次写入
	{
		fp.write((char*)&computer[i],sizeof(COMPUTER));
	}
	fp.close();
}

int Load_Computer_Info(COMPUTER computer[])
{
	int i=0;
	ifstream fp;
	fp.open("Computer_Info.dat");
	if(fp==NULL)
	{return 0;}
	while(fp.read((char*)&computer[i],sizeof(COMPUTER)))
	{
		i++;//直到读取到文件结尾
	}
	fp.close();
	if(i>1)//结尾会多读取一个换行
	{
		return i-1;
	}
	return i;
}


int main()
{
	COMPUTER computer[MAX_STYLE_SIZE];//定义结构体数组
	int NUM=0,chioce;//记录选择以及数量
	system("mode con: cols=100 lines=35");//改变控制台大小
	NUM=Load_Computer_Info(computer);//读取文件
	do
	{
		chioce=menu();//获取选择
		switch(chioce)
		{
		case 1:
			NUM=Input_New_Computer(computer,NUM);//添加
			Save_Computer_Info(computer,NUM);//保存
			break;
		case 2:
			NUM=Del_Computer_Info(computer,NUM);//删除
			Save_Computer_Info(computer,NUM);//保存
			break;
		case 3:
			Modify_Computer_Info(computer,NUM);//修改
			Save_Computer_Info(computer,NUM);//保存
			break;
		case 4:
			Serach_Computer_Info(computer,NUM);//查找
			break;
		case 5:
			system("cls");
			Display_Computer_Info(computer,NUM);//显示
			system("pause");//暂停
			break;
		}
	}while(chioce!=0);

	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值