步骤
- 输入商品总价格是多少
- 输入你有几张1元,2元,5元,10元,20元,50元,100元
- 买完后显示你的消费情况
- 显示余额
- 解释:在客户端能够模拟实现在线购物。在客户端首先输入商品总价格是多少?然后输入你有几张1元,2元,5元,10元,20元,50元,100元的纸币,此时将这些数据通过定义一个结构体指针用套接字描述符发送到服务器中,在服务器端先声明一个购物函数consume(),当服务器接收到客户端传来的数据时,调用consume()函数进行扣费,最后,买完后显示你的购物信息和消费情况,并且显示余额。在此过程中服务器和客户端加入一个while循环,是为了能够多次购物,当客户端提示是否继续购物,如果客户端输入n则退出循环,结束购物。
- 代码如下:
#include <stdio.h>
#include<string.h>
void consume()
{
while (1)
{
int num = 0;
int money[] = { 1,2,5,10,20,50,100 };
int my_money_num[7];
int size = sizeof(money) / 4;
int my_size = sizeof(my_money_num) / 4;
int product_price = 0;
int i = 0;
int consume_num[] = { 0,0,0,0,0,0,0 };
char answer[2];
printf("你已经开始购物!!!\n");
printf("请输入商品价格:");
scanf_s("%d", &product_price);
printf("你的商品为:【%d】元\n", product_price);
printf("请输入1元的张数:");
scanf_s("%d", &my_money_num[i++]);
printf("请输入2元的张数:");
scanf_s("%d", &my_money_num[i++]);
printf("请输入5元的张数:");
scanf_s("%d", &my_money_num[i++]);
printf("请输入10元的张数:");
scanf_s("%d", &my_money_num[i++]);
printf("请输入20元的张数:");
scanf_s("%d", &my_money_num[i++]);
printf("请输入50元的张数:");
scanf_s("%d", &my_money_num[i++]);
printf("请输入100元的张数:");
scanf_s("%d", &my_money_num[i]);
int my_money = 100 * my_money_num[6] + 50 * my_money_num[5] + 20 * my_money_num[4] + 10 * my_money_num[3] + 5 * my_money_num[2] + 2 * my_money_num[1] + my_money_num[0];
printf("你有【%d】元\n", my_money);
if (my_money >= product_price)
{
printf("开始扣钱。。。\n");
while (1)
{
if ((product_price -= 100) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
product_price += 100;
break;
}
}
i--;
while (1)
{
if ((product_price -= 50) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
product_price += 50;
break;
}
}
i--;
while (1)
{
if ((product_price -= 20) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
product_price += 20;
break;
}
}
i--;
while (1)
{
if ((product_price -= 10) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
product_price += 10;
break;
}
}
i--;
while (1)
{
if ((product_price -= 5) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
product_price += 5;
break;
}
}
i--;
while (1)
{
if ((product_price -= 2) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
product_price += 2;
break;
}
}
i--;
while (1)
{
if ((product_price -= 1) >= 0 && (my_money_num[i]--) > 0)
{
consume_num[i]++;
continue;
}
else
{
break;
}
}
printf("你消耗了[%d]张100元!!!\n", consume_num[6]);
printf("你消耗了[%d]张50元!!!\n", consume_num[5]);
printf("你消耗了[%d]张20元!!!\n", consume_num[4]);
printf("你消耗了[%d]张10元!!!\n", consume_num[3]);
printf("你消耗了[%d]张5元!!!\n", consume_num[2]);
printf("你消耗了[%d]张2元!!!\n", consume_num[1]);
printf("你消耗了[%d]张1元!!!\n", consume_num[0]);
int consume_money = 100 * consume_num[6] + 50 * consume_num[5] + 20 * consume_num[4] + 10 * consume_num[3] + 5 * consume_num[2] + 2 * consume_num[1] + consume_num[0];
int surplus = my_money - consume_money;
printf("你还剩【%d】元\n", surplus);
printf("是否继续购物?(y/n)\n");
scanf_s("%s", answer, 2);
printf("answer = %s\n", answer);
if (strcmp(answer, "n") == 0)
{
break;
}
}
else
{
printf("你的钱不够!!!\n");
}
}
printf("欢迎下次光临\n");
}
int main(int argc, char** argv) {
consume();
return 0;
}
本人大部分代码开放免费,用于交流学习,有bug时还望指出,请勿直接抄袭,谢谢!