我想在c中制作一个打印出特定数量的比萨饼(由用户定义)的程序,这些比萨饼将从预定义的数组中随机调用。到目前为止一切都很好,但现在我想在订购时为比萨添加一个独特的订单ID。我有这个问题,似乎无法理解如何做到这一点(我对c很新)所以任何帮助都会非常感激。如果有办法然后列出这些"命令"对此的任何帮助也都很棒。
#include<stdio.h>
#include <stdlib.h> /* required for randomize() and random() */
#include <conio.h>
int main()
{
//Initialising array and variable
char* pizza[]={"Marinara","Prosciutto","Prosciutto e Funghi","La Napoletana","L Atomica","Quattro Stagioni","Capricciosa"};
int numberofpizza;
int clientID = 0;
//Request how many pizzas for that order.
printf("How many pizzas would you like? ");
scanf("%d", &numberofpizza);
//Loop for the ammount of pizzas made.
srand(time(NULL));
int i=0;
while (i<(numberofpizza))
{
int randompizza = rand()%7;
printf("%s\n", pizza[randompizza]);
i++;
}
getch();
return 0;
}
答案 0 :(得分:0)
我认为您需要生成guid
。为此,您可以使用winapi
中的函数CryptGenRandom(因为您使用getch()我假设是Windows平台)。有关如何生成guid
的详细信息,请查看this。
答案 1 :(得分:0)
您的订单ID有多独特?如果您的程序没有两次提供相同的订单ID就足够了,只需在每次获得新订单时将其添加到前一订单的ID(即++order_id
)。 id将只是顺序的:1,2,3,...(如果你想要更多的数字,从100或1000开始计数)。
如果订单ID需要难以猜测(例如,为了防止客户猜测其他人的订单ID),那么您可以在订单ID中添加一些随机数字(例如printf("order id: %u%03u\n", order_id, rand() % 1000)
)。
如果您希望id在程序的多次运行中是唯一的,则可以将先前的id存储在某处,或者将其基于当前时间(例如,time(NULL)
的返回值)。
如果订单ID需要全局唯一,即世界上没有其他比萨饼店可以合理地预期生成相同的订单ID,那么您可以生成UUID或类似的东西,但我希望它对于这项任务来说,这将是一种过度杀伤。