C #流水帐号问题

876456fyb 2011-12-19 09:54:59
用控制台写一个管理系统,需要自动生成流水帐号,请问需要怎么生成,Random是生成随机数的,有别的办法吗?
懂的人教我下,不甚感激···
...全文
142 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
流水帐号跟数据库内部等环境才使用的所谓的“唯一id”其实有着天壤之别。比如税务局发票的流水号,你就不能用技术的眼光而应该用业务的角度去理解。类似的号码有也有多,这些大都说成是“流水帐号”。所以当你看到“流水帐号”这个词,多从用户的角度去理解,不要太技术化。

比如说企业从税务局买了一本发票,他不可能胡乱撕掉几张发票当作废纸,这是违法的。因为人家税务局是靠流水帐号来管理企业的一些重大行为的!

如果你没有必要,不要随便把自己的唯一id号叫做什么“流水帐号”。

如果用户真的需要流水帐号,例如销售凭单就需要流水帐号,这样当有人冒充别人的签字作假时管理人员可以拿出当初每一本(比如说每200张凭单为一个号段)凭单的经办人、领用人等环节的签字、领用时间、使用时间、使用的地点等出来追查,如果业务上真的需要,你才应该使用流水帐号这种概念,而且要设计好这个功能。
876456fyb 2011-12-19
  • 打赏
  • 举报
回复
多谢各位指出我的错误,谢谢啊,感谢各位的解答。我明白了。谢谢啊谢谢啊
mizuho_2006 2011-12-19
  • 打赏
  • 举报
回复
假设要生成的数字前面的时分秒是当前时间,后面5位是随机数字

Random rnd = new Random();
string str = DateTime.Now.ToString("yyyyMMddhhmmss") + rnd.Next(10000,99999).ToString();
  • 打赏
  • 举报
回复
在很多大系统中都会有独立的“号段管理系统”模块。比如QQ以前放出了6位号,用过一段之后放出了7位号、8位号、9位号......


一个号段管理功能基本上是这样的:

首先要定义出每一种业务类。
然后要为每一种业务定义一个号段,它包括:1. 前缀;2.起始号;3.结束号;4.下一个待分配的号码
然后每当产生一个新的业务记录,都要从号段管理系统中申请一个号码。当然,当多线程访问时,号码也是互斥和顺序的。


比如说对于某一个业务,就假设是“领取门禁卡(编号)”好了,管理员可能定一个前缀是“hz2011a”,起始号是1,截止号是9999,于是系统就会自动产生类似hz2011a0001、hz2011a0002一直到hz2011a9999的编号,当所有的编号使用过后,系统就出现异常了。实际使用中其实用掉了80%的号码资源之后,管理员就会赶紧重新放号了。

有的时候前缀一样,但是号段不同,例如“门禁”业务是hz2011a前缀而号段是1到3999,同时“合同”业务的号段则是hz2011a前缀而号段是5000到5999号段。或者不同分公司的号段不同。这都是有可能的。

总之好的系统总是有步骤一点一点地放号,因为对于人家有想法的系统设计来说,将来这些号码都会是一种值钱的商品,可不能一开始就胡乱放号。
DENQH 2011-12-19
  • 打赏
  • 举报
回复
银行号太长,不要用数字,用数字字串,上面的就是数字字串
876456fyb 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sp1234 的回复:]

“后面的要生成随机数的”也叫做什么“有一定的顺序的”?

你这是自己毁自己啊。
[/Quote]

想错了,多谢你的指责,谢谢
876456fyb 2011-12-19
  • 打赏
  • 举报
回复
如果我要生成的是银行帐号,有什么办法吗?纯数字的,谢谢····
DENQH 2011-12-19
  • 打赏
  • 举报
回复
string sid=DateTime.Now.ToString("yyyyMMddhhmmss");
876456fyb 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mr__white 的回复:]

引用 3 楼 sp1234 的回复:

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


我的意思是你做一个学生管理系统来登记新生的话你肯定的生成很多学号,而且学号又要是有一定的顺序的。比如20110202333和20111234567,前面的2011是相同的,后面的要生成随机数的。谢谢
[/Quote]

多谢你的指责,我会改正的。谢谢
  • 打赏
  • 举报
回复
什么叫做“流水帐号”?什么叫做“有一定顺序的”?难道你都是从来不想?
  • 打赏
  • 举报
回复
“后面的要生成随机数的”也叫做什么“有一定的顺序的”?

你这是自己毁自己啊。
876456fyb 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]

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

我的意思是你做一个学生管理系统来登记新生的话你肯定的生成很多学号,而且学号又要是有一定的顺序的。比如20110202333和20111234567,前面的2011是相同的,后面的要生成随机数的。谢谢
mizuho_2006 2011-12-19
  • 打赏
  • 举报
回复
不太明白,流水帐号是随机的字母吗?也可以用RANDOM生成,随机字母和数字的组合也可以用RANDOM生成。
  • 打赏
  • 举报
回复
基本上你能保存“NextNumber”这样一个信息,并且保证每一次递增它的时候都只有一个线程操作,这就行了。
快溜 2011-12-19
  • 打赏
  • 举报
回复
Guid最方便
q107770540 2011-12-19
  • 打赏
  • 举报
回复
Guid.NewGuid().Replace("-","")

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧