#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;
}
电脑报价系统C++
最新推荐文章于 2022-08-27 15:13:27 发布