电脑报价系统

#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;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购买组装电脑仍然是DIY发烧友的首选,通过电脑报价可以使可以使报价更准确直观,增加购买者的信任感,商家可以自定义经济型、标准型和高档型六款电脑的配置,并有详细的客户配置记录以备查询和跟踪服务,方便的导入导出可以实现与其他合作伙伴的数据交换,甚至可以从网上下载数据。并连接有多个网上热门硬件报价网站以供实时查询!多用户版增加有权限管理,共分四类用户,管理员可以运行所有项目;维护员除了不能够设置用户的密码等信息外,可以运行其他所有项目,操作员仅能够运行电脑装机报价和客户查询。增加了含税计算,并可自己设置税率,增加了公司图标设置,使装机单打印出来更加美观,增加了配件的保修期设置和打印。使以买卖双方的权利和义务更加清楚。增加了客户的电脑维修管理,包括:维修登记,更换配件维修查询等内容。6.0 增加了配件的成本管理,可以算出每台电脑的利润,特别是增加了主板、CPU 内存这三个配件之间的接口匹配校验,当打开校验开关的时候,可以自动校验,不匹配的回弹出提示,对主版集成显卡、声卡、网卡也可通过设置显示在显卡、声卡、网卡栏,还可以对整机的利润率进行设置,低于这个利润率将无法成交,避免了因为疏忽造成的亏本销售。本软件是电脑商家的好帮手,也是需要攒机的发烧友不可多得的参考工具.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值