C #流水帐号问题

876456fyb 2011-12-19 09:54:59
用控制台写一个管理系统,需要自动生成流水帐号,请问需要怎么生成,Random是生成随机数的,有别的办法吗?
懂的人教我下,不甚感激···
...全文
110 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("-","")
初学者 很浅的代码 系统说明: 银行前台处理系统包含开户、销户、存取业务。1)、开户功能中银行可以创建新用户,用户名可以重名,但是银行账必须唯一。银行用户基本信息包括:用户名、账、密码(初始密码都为000000)、身份证、创建时间、销户时间、销户标记、余额。开户后将开户信息存储到文件”user.dat”中。2)销户处理只需要更改用户销户标记即可。3)账务处理稍微复杂:a)账务处理菜单设计:(账、姓名、身份证、发生额、存取标记、日期、余额)。b)工作流程:银行工作人员输入账后,系统根据用户信息自动输出姓名、身份证、银行工作人员输入发生额(正数代表存,负数代表取,取钱时应检查用户是否透支,如透支给于提示。)存取标记根据发生额自动生成(1表示存,-1表示取)、日期(包含年月日时分)自动生成、余额自动更改, 输入完毕后,系统询问是否确定?是(1)否(0)。输入1,系统将此信息存入到文件”bankrecord.dat”中,bankrecord.dat记录发生的流水账信息。同时将用户信息中的余额进行更改。系统继续提问:是否继续记账?(1:继续0:退出记账系统) 银行客户自助系统包含:首先用户根据账与初始密码进入自助系统。可以选择1)更改密码(密码应进行加密后,存储到“user.dat“文件中。2)查询余额。3)浏览对账单。浏览对账单稍显复杂:用户输入起始日期,和结束日期。系统在”bankrecord.dat”文件中进行查询,将符合条件的记录显示出来。显示项为:发生额、日期、余额。 功能扩展:银行主管子系统,用于管理普通工作人员的基本信息、银行存款总额、银行流水的发生等内容。自己扩展思路。客户查询功能可以扩展:只查取款业务、存款业务、某一天业务等。银行前台业务可以自己对账。

110,532

社区成员

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

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

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