#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_STYLE_SIZE 100 //电脑类型最大数量
typedef struct
{
char pc_style[30];//电脑型号
char cpu_style[30];//cpu型号
char mem_style[30];//内存型号
char card_style[30];//显卡型号
float price;//报价
}COMPUTER;
int menu()
{
int chioce;//记录选择
system("cls");//清屏
printf("1:增加报价\n");
printf("2:删除报价\n");
printf("3:修改报价\n");
printf("4:查找报价\n");
printf("5:显示报价\n");
printf("0:退出\n");
scanf("%d",&chioce);
while(chioce<0||chioce>5)//确保选择范围正确
{
printf("输入错误,重新输入!\n");
scanf("%d",&chioce);
}
return chioce;//选择结果返回给主函数
}
int Input_New_Computer(COMPUTER computer[],int NUM)
{
char temp[20];//记录选择
system("cls");//清屏
printf("请输入新增电脑型号\n");
scanf("%s",&computer[NUM].pc_style);
printf("请输入新增电脑CPU型号\n");
scanf("%s",&computer[NUM].cpu_style);
printf("请输入新增电脑内存型号\n");
scanf("%s",&computer[NUM].mem_style);
printf("请输入新增电脑显卡型号\n");
scanf("%s",&computer[NUM].card_style);
printf("请输入该型号电脑价格\n");
scanf("%f",&computer[NUM].price);//获取电脑信息
printf("确认添加(Y/N)?\n");
scanf("%s",temp);
if(!strcmp(temp,"Y")||!strcmp(temp,"y"))//判断是否按Y
{
printf("添加成功\n");
system("pause");
return NUM+1;
}
printf("已取消添加\n");//其它键取消添加
system("pause");
return NUM;
}
//显示信息 NUM代表显示个数 computer代表开始显示位置
void Display_Computer_Info(COMPUTER computer[],int NUM)
{
int i;
if(NUM==0)//如果为0则不显示信息
{
printf("无电脑信息!\n");
return ;
}
printf("%-20s%-20s%-20s%-20s%-10s\n","电脑","CPU","内存","显卡","价格");
for(i=0;i<NUM;i++)
{
printf("%-20s%-20s%-20s%-20s%-.2f\n",computer[i].pc_style,computer[i].cpu_style,computer[i].mem_style,computer[i].card_style,computer[i].price);
}
}
int Del_Computer_Info(COMPUTER computer[],int NUM)
{
int i,j;
char temp[20],name[30];//记录选择
system("cls");//清屏
printf("请输入电脑型号:\n");
scanf("%s",name);
for(i=0;i<NUM;i++)
{
if(!strcmp(name,computer[i].pc_style))//如果找到 则跳出循环
{
break;
}
}
if(i==NUM)//如果一直没有跳出 说明没有找到
{
printf("无该型号电脑!\n");
system("pause");
return NUM;
}
Display_Computer_Info(computer+i,1);//显示1条信息
printf("确认删除(Y/N)?\n");
scanf("%s",temp);
if(!strcmp(temp,"Y")||!strcmp(temp,"y"))//判断是否按Y
{
for(j=i;j<NUM;j++)
{
computer[j]=computer[j+1];
}//用后一个数据覆盖前一个 达到删除
printf("删除成功\n");
system("pause");
return NUM-1;
}
printf("已取消删除\n");//其它键取消删除
system("pause");
return NUM;
}
void Modify_Computer_Info(COMPUTER computer[],int NUM)
{
int i;
char temp[20],name[30];//记录选择
float p;
system("cls");//清屏
printf("请输入电脑型号:\n");
scanf("%s",name);
for(i=0;i<NUM;i++)
{
if(!strcmp(name,computer[i].pc_style))//如果找到 则跳出循环
{
break;
}
}
if(i==NUM)//如果一直没有跳出 说明没有找到
{
printf("无该型号电脑!\n");
system("pause");
return ;
}
Display_Computer_Info(computer+i,1);//显示1条信息
printf("请输入新报价\n");
scanf("%f",&p);//获取电脑信息
printf("确认修改(Y/N)?\n");
scanf("%s",temp);
if(!strcmp(temp,"Y")||!strcmp(temp,"y"))//判断是否按Y
{
computer[i].price=p;
printf("修改成功\n");
system("pause");
}
printf("已取消修改\n");//其它键取消删除
system("pause");
}
void Serach_Computer_Info(COMPUTER computer[],int NUM)
{
int i,chioce;
char name[30];//记录选择
system("cls");//清屏
printf("1:按电脑型号查找\n");
printf("2:按CPU型号查找\n");
printf("3:按内存型号查找\n");
printf("4:按显卡型号查找\n");
scanf("%d",&chioce);
while(chioce<1||chioce>4)//确保选择范围正确
{
printf("输入错误,重新输入!\n");
scanf("%d",&chioce);
}
printf("请输入型号\n");
scanf("%s",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)
{
printf("无该型号!\n");
system("pause");
return ;
}
Display_Computer_Info(computer+i,1);//显示1条信息
system("pause");
}
//保存文件
void Save_Computer_Info(COMPUTER computer[],int NUM)
{
int i;
FILE* fp=fopen("Computer_Info.dat","w");
if(fp==NULL)
{return ;}
for(i=0;i<NUM;i++)//依次写入
{
fwrite(&computer[i],1,sizeof(COMPUTER),fp);
}
}
int Load_Computer_Info(COMPUTER computer[])
{
int i=0;
FILE* fp=fopen("Computer_Info.dat","r");
if(fp==NULL)
{return 0;}
while(fread(&computer[i],1,sizeof(COMPUTER),fp))
{
i++;//直到读取到文件结尾
}
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;
}
电脑报价系统
最新推荐文章于 2021-05-27 23:07:07 发布