在C中创建唯一的订单ID

时间:2013-11-17 12:53:14

标签: c unique

我想在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;
}

2 个答案:

答案 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或类似的东西,但我希望它对于这项任务来说,这将是一种过度杀伤。