用控制台写一个管理系统,需要自动生成流水帐号,请问需要怎么生成,Random是生成随机数的,有别的办法吗?
懂的人教我下,不甚感激···

解决方案 »

  1.   

    基本上你能保存“NextNumber”这样一个信息,并且保证每一次递增它的时候都只有一个线程操作,这就行了。
      

  2.   

    不太明白,流水帐号是随机的字母吗?也可以用RANDOM生成,随机字母和数字的组合也可以用RANDOM生成。
      

  3.   

    string sid=DateTime.Now.ToString("yyyyMMddhhmmss");
      

  4.   

    在很多大系统中都会有独立的“号段管理系统”模块。比如QQ以前放出了6位号,用过一段之后放出了7位号、8位号、9位号......
    一个号段管理功能基本上是这样的:首先要定义出每一种业务类。
    然后要为每一种业务定义一个号段,它包括:1. 前缀;2.起始号;3.结束号;4.下一个待分配的号码
    然后每当产生一个新的业务记录,都要从号段管理系统中申请一个号码。当然,当多线程访问时,号码也是互斥和顺序的。
    比如说对于某一个业务,就假设是“领取门禁卡(编号)”好了,管理员可能定一个前缀是“hz2011a”,起始号是1,截止号是9999,于是系统就会自动产生类似hz2011a0001、hz2011a0002一直到hz2011a9999的编号,当所有的编号使用过后,系统就出现异常了。实际使用中其实用掉了80%的号码资源之后,管理员就会赶紧重新放号了。有的时候前缀一样,但是号段不同,例如“门禁”业务是hz2011a前缀而号段是1到3999,同时“合同”业务的号段则是hz2011a前缀而号段是5000到5999号段。或者不同分公司的号段不同。这都是有可能的。总之好的系统总是有步骤一点一点地放号,因为对于人家有想法的系统设计来说,将来这些号码都会是一种值钱的商品,可不能一开始就胡乱放号。
      

  5.   

    假设要生成的数字前面的时分秒是当前时间,后面5位是随机数字Random rnd = new Random();
    string str = DateTime.Now.ToString("yyyyMMddhhmmss") + rnd.Next(10000,99999).ToString();
      

  6.   

    流水帐号跟数据库内部等环境才使用的所谓的“唯一id”其实有着天壤之别。比如税务局发票的流水号,你就不能用技术的眼光而应该用业务的角度去理解。类似的号码有也有多,这些大都说成是“流水帐号”。所以当你看到“流水帐号”这个词,多从用户的角度去理解,不要太技术化。比如说企业从税务局买了一本发票,他不可能胡乱撕掉几张发票当作废纸,这是违法的。因为人家税务局是靠流水帐号来管理企业的一些重大行为的!如果你没有必要,不要随便把自己的唯一id号叫做什么“流水帐号”。如果用户真的需要流水帐号,例如销售凭单就需要流水帐号,这样当有人冒充别人的签字作假时管理人员可以拿出当初每一本(比如说每200张凭单为一个号段)凭单的经办人、领用人等环节的签字、领用时间、使用时间、使用的地点等出来追查,如果业务上真的需要,你才应该使用流水帐号这种概念,而且要设计好这个功能。