当前位置:   article > 正文

易语言编写一个账号密码生成器_易语言密码生成器

易语言密码生成器

目录

一.运行原理

二.软件界面&组件

三.代码

1.随机取字符生成类型

2.对应子程序的填充

2.1汉字

2.2英文

2.3数字&符号

3.强制插入

4.一些细节

4.1生成方式强制必选

4.2长度要求

四.整合代码

窗口程序集_启动窗口

常量表

五.写在最后


一.运行原理

比较简单的一个小玩意,之前就写过一个,还发到B站了,中途修bug的时候还捣鼓出来了一个新式的奇偶性判断的方法(具体可以看我发的文章),但现在看来纯纯的屎山,所以再写一个新版的

软件运行原理如下:

随机数0-3,根据不同数字决定数字、汉字、英文还是符号

根据对应数字,调用对应子程序,在常量中随机选取一个字符

上面的步骤无限循环,直至满足长度为止

在对应位置用强行插入的文本替换掉对应长度的文本

二.软件界面&组件

运行时的软件界面​​​​
编辑器中的软件界面

对应的名称在下面,大家按照顺序放组件(这样可以直接抄走代码)

按照从上而下,由左至右的叙述方式,分别是:

标签1,编辑框1

标签2,编辑框2

标签3,编辑框3

选择框1,选择框2,选择框3,选择框4,按钮1

标签4,编辑框4

三.代码

1.随机取字符生成类型

创建一个按钮1被单击的子程序(鼠标左键按下也行)

输入取随机数代码

  1. .版本 2
  2. .程序集 窗口程序集_启动窗口
  3. .子程序 _按钮1_被单击
  4. .局部变量 数字, 整数型
  5. 置随机数种子 ()
  6. 数字 = 取随机数 (0, 3)
  7. .如果真 (数字 = 0 且 选择框1.选中 = 真)
  8. 中文 ()
  9. .如果真结束
  10. .如果真 (数字 = 1 且 选择框2.选中 = 真)
  11. 英文 ()
  12. .如果真结束
  13. .如果真 (数字 = 2 且 选择框3.选中 = 真)
  14. 数字 ()
  15. .如果真结束
  16. .如果真 (数字 = 3 且 选择框4.选中 = 真)
  17. 符号 ()

对应的创建子程序:

  1. .版本 2
  2. .子程序 中文
  3. .子程序 英文
  4. .子程序 数字
  5. .子程序 符号

2.对应子程序的填充

2.1汉字

新建一个常量,叫做“汉字”,把准备好的汉字复制进去

这里使用的是这篇文章归纳的汉字

回到程序集,新建一个程序集变量“结果”和“生成次数”,类型为文本型和整数型

在子程序“中文”中写下面的代码:

  1. .版本 2
  2. .子程序 中文
  3. .局部变量 文字, 文本型
  4. 置随机数种子 ()
  5. 文字 = 取文本中间 (#汉字, 取随机数 (0, 6996), 2)
  6. 结果 = 结果 + 文字
  7. 生成次数 = 生成次数 + 1

其中,0-6996的取值范围应当适当调整,即0—#汉字的文本长度-2

子程序执行完毕,变量“结果”添加了一位字符,把变量给编辑框4.内容(按钮单击反馈事件的结尾)

编辑框4.内容 = 结果

运行软件,发现需要按一下或者多下按钮才能生成一个汉字

那么,就应当使得生成一直持续下去直到某个特定长度

那么就使用“判断循环首”命令

“_按钮1_被单击”子程序下的代码变成这样:

  1. .版本 2
  2. 置随机数种子 ()
  3. .判断循环首 (生成次数 ≠ 到数值 (编辑框3.内容)+1)
  4. 数字 = 取随机数 (0, 3)
  5. .如果真 (数字 = 0 且 选择框1.选中 = 真)
  6. 中文 ()
  7. .如果真结束
  8. .如果真 (数字 = 1 且 选择框2.选中 = 真)
  9. 英文 ()
  10. .如果真结束
  11. .如果真 (数字 = 2 且 选择框3.选中 = 真)
  12. 数字 ()
  13. .如果真结束
  14. .如果真 (数字 = 3 且 选择框4.选中 = 真)
  15. 符号 ()
  16. .如果真结束
  17. .判断循环尾 ()
  18. 编辑框4.内容 = 结果
  19. 结果 = “”

最后加上结果=“”,将内容清除,下一次就从0开始

下面运行一下,欸,出问题了——

可以看到,生成结果里混入了特殊字符和无法显示的字符

这个问题很好解释,每个中文都是两字节的,但我们取随机数就可能从某个汉字的一半去读取

如下图:

这个问题也很好解决,首先要新建一个程序集变量“随机数”,把取随机数单独拎出,如图:

下面就是最重要的一步,输入下面这段“魔咒”

这个方法之前的文章里也出现过,是用来判断奇偶性的

这行代码是一个变式,会把任何数值转换为奇数

这样一来就能稳定的生成汉字啦

2.2英文

英文挺好写的,把中文拿过来改一改就好了

要注意这里随机数取到51是因为我的英文常量里包含了大小写

  1. .版本 2
  2. .子程序 英文
  3. .局部变量 文字, 文本型
  4. .局部变量 随机数, 整数型
  5. 置随机数种子 ()
  6. 随机数 = 取随机数 (0, 51)
  7. 文字 = 取文本中间 (#英文, 随机数, 1)
  8. 结果 = 结果 + 文字
  9. 生成次数 = 生成次数 + 1

2.3数字&符号

数字符号就更好写了,直接ctrl+c上面的内容然后再ctrl+v并且修改修改:

  1. .版本 2
  2. .子程序 数字
  3. .局部变量 文字, 文本型
  4. .局部变量 随机数, 整数型
  5. 置随机数种子 ()
  6. 随机数 = 取随机数 (0, 9)
  7. 文字 = 取文本中间 (“1234567890”, 随机数, 1)
  8. 结果 = 结果 + 文字
  9. 生成次数 = 生成次数 + 1
  10. .子程序 符号
  11. .局部变量 文字, 文本型
  12. .局部变量 随机数, 整数型
  13. 置随机数种子 ()
  14. 随机数 = 取随机数 (0, 31)
  15. 文字 = 取文本中间 (#符号, 随机数, 1)
  16. 结果 = 结果 + 文字
  17. 生成次数 = 生成次数 + 1

符号常量如下:

~!@#$%^&*()_+=-`';":[]{}\|?><,./

写完这些就能跑啦

等等,怎么只能用一次

哈哈哈,是不是没看出来呢,上面的代码里缺少了一个关键的东西

加上箭头指的试试

结果清零了,次数怎么能不清零呢?

前面就看出来的同学在评论区发“不愧是我”

3.强制插入

强制插入在上一个版本中直接是子文本替换,所以当选择中文时会关闭这项功能,因为可能会出现乱码(之前你们也了解过了原理了)

但是这个版本,我要加入对中文的支持!

肯定不能简单的取文本长度()了

哼哼~看神器:

  1. .版本 2
  2. .子程序 取字符数, 整数型
  3. .参数 文本, 文本型
  4. .局部变量 长度, 整数型
  5. .局部变量 代码, 整数型
  6. .局部变量 字符位置, 整数型
  7. .局部变量 实际长度, 整数型
  8. 长度 = 取文本长度 (文本)
  9. 实际长度 = 长度
  10. 字符位置 = 1
  11. .判断循环首 (字符位置 ≤ 长度)
  12. .如果 (取代码 (取文本中间 (文本, 字符位置, 1), ) < 0)
  13. 字符位置 = 字符位置 + 2
  14. 实际长度 = 实际长度 - 1
  15. .否则
  16. 字符位置 = 字符位置 + 1
  17. .如果结束
  18. .判断循环尾 ()
  19. 返回 (实际长度)

这个绝妙的主意当然不是我想出来的啦

是在当时找资料的时候无意间在吾爱上发现的一篇文章

这样就好啦,再在按钮单击的事件处理子程序里改一改:

  1. .版本 2
  2. .支持库 spec
  3. .子程序 _按钮1_被单击
  4. .局部变量 数字, 整数型
  5. 置随机数种子 ()
  6. .判断循环首 (生成次数 ≠ 到数值 (编辑框3.内容) + 1)
  7. .如果真 (编辑框1.内容 ≠ “” 且 生成次数 = 到数值 (编辑框2.内容))
  8. 调试输出 (生成次数)
  9. 结果 = 结果 + 编辑框1.内容
  10. 生成次数 = 生成次数 + 取字符数 (编辑框1.内容) + 1
  11. 到循环尾 ()
  12. .如果真结束
  13. 数字 = 取随机数 (0, 3)
  14. .如果真 (数字 = 0 且 选择框1.选中 = 真)
  15. 中文 ()
  16. .如果真结束
  17. .如果真 (数字 = 1 且 选择框2.选中 = 真)
  18. 英文 ()
  19. .如果真结束
  20. .如果真 (数字 = 2 且 选择框3.选中 = 真)
  21. 数字 ()
  22. .如果真结束
  23. .如果真 (数字 = 3 且 选择框4.选中 = 真)
  24. 符号 ()
  25. .如果真结束
  26. .判断循环尾 ()
  27. 编辑框4.内容 = 结果
  28. 结果 = “”
  29. 生成次数 = 0

运行一下看看,是不是成功了

顺带提一嘴,为了防止用户输入特别大的数字导致软件不能移动,最好在判断循环尾()上方加 处理事件 ()

4.一些细节

写这个软件还是需要注意一些细节的,否则容易出bug

这个软件要注意的无非就两个:

1.一定需要一种生成方式

2.强制插入结尾位置不能超出文本范围

4.1生成方式强制必选

  1. .版本 2
  2. .如果真 (选择框1.选中 = 假 且 选择框2.选中 = 假 且 选择框3.选中 = 假 且 选择框4.选中 = 假)
  3. 信息框 (“请选择至少一种生成方式!”, 0, “错误:”, )
  4. 返回 ()

这个加到哪里你自己应该也清楚的

这里使用返回(),避免执行下面的内容

4.2长度要求

这个也挺简单的,给你们放出来看看吧

  1. .版本 2
  2. .如果真 (到数值 (编辑框2.内容) + 取字符数 (编辑框1.内容) > 到数值 (编辑框3.内容))
  3. 信息框 (“强制插入文本的范围超出了生成长度!”, 0, “错误:”, )
  4. 返回 ()

四.整合代码

软件代码(.e文件)会绑定资源,直接下载就好

不过还是想放出来

窗口程序集_启动窗口

  1. .版本 2
  2. .程序集 窗口程序集_启动窗口
  3. .程序集变量 结果, 文本型
  4. .程序集变量 生成次数, 整数型
  5. .子程序 _按钮1_被单击
  6. .局部变量 数字, 整数型
  7. .如果真 (选择框1.选中 = 假 且 选择框2.选中 = 假 且 选择框3.选中 = 假 且 选择框4.选中 = 假)
  8. 信息框 (“请选择至少一种生成方式!”, 0, “错误:”, )
  9. 返回 ()
  10. .如果真结束
  11. .如果真 (到数值 (编辑框2.内容) + 取字符数 (编辑框1.内容) > 到数值 (编辑框3.内容))
  12. 信息框 (“强制插入文本的范围超出了生成长度!”, 0, “错误:”, )
  13. 返回 ()
  14. .如果真结束
  15. 置随机数种子 ()
  16. .判断循环首 (生成次数 ≠ 到数值 (编辑框3.内容) + 1)
  17. .如果真 (编辑框1.内容 ≠ “” 且 生成次数 = 到数值 (编辑框2.内容))
  18. 结果 = 结果 + 编辑框1.内容
  19. 生成次数 = 生成次数 + 取字符数 (编辑框1.内容) + 1
  20. 到循环尾 ()
  21. .如果真结束
  22. 数字 = 取随机数 (0, 3)
  23. .如果真 (数字 = 0 且 选择框1.选中 = 真)
  24. 中文 ()
  25. .如果真结束
  26. .如果真 (数字 = 1 且 选择框2.选中 = 真)
  27. 英文 ()
  28. .如果真结束
  29. .如果真 (数字 = 2 且 选择框3.选中 = 真)
  30. 数字 ()
  31. .如果真结束
  32. .如果真 (数字 = 3 且 选择框4.选中 = 真)
  33. 符号 ()
  34. .如果真结束
  35. 处理事件 ()
  36. .判断循环尾 ()
  37. 编辑框4.内容 = 结果
  38. 结果 = “”
  39. 生成次数 = 0
  40. .子程序 中文
  41. .局部变量 文字, 文本型
  42. .局部变量 随机数, 整数型
  43. 置随机数种子 ()
  44. 随机数 = 取随机数 (0, 6995)
  45. 随机数 = 取整 (随机数 ÷ 2) × 21
  46. 文字 = 取文本中间 (#汉字, 随机数, 2)
  47. 结果 = 结果 + 文字
  48. 生成次数 = 生成次数 + 1
  49. .子程序 英文
  50. .局部变量 文字, 文本型
  51. .局部变量 随机数, 整数型
  52. 置随机数种子 ()
  53. 随机数 = 取随机数 (0, 51)
  54. 文字 = 取文本中间 (#英文, 随机数, 1)
  55. 结果 = 结果 + 文字
  56. 生成次数 = 生成次数 + 1
  57. .子程序 数字
  58. .局部变量 文字, 文本型
  59. .局部变量 随机数, 整数型
  60. 置随机数种子 ()
  61. 随机数 = 取随机数 (0, 9)
  62. 文字 = 取文本中间 (“1234567890”, 随机数, 1)
  63. 结果 = 结果 + 文字
  64. 生成次数 = 生成次数 + 1
  65. .子程序 符号
  66. .局部变量 文字, 文本型
  67. .局部变量 随机数, 整数型
  68. 置随机数种子 ()
  69. 随机数 = 取随机数 (0, 31)
  70. 文字 = 取文本中间 (#符号, 随机数, 1)
  71. 结果 = 结果 + 文字
  72. 生成次数 = 生成次数 + 1
  73. .子程序 取字符数, 整数型
  74. .参数 文本, 文本型
  75. .局部变量 长度, 整数型
  76. .局部变量 代码, 整数型
  77. .局部变量 字符位置, 整数型
  78. .局部变量 实际长度, 整数型
  79. 长度 = 取文本长度 (文本)
  80. 实际长度 = 长度
  81. 字符位置 = 1
  82. .判断循环首 (字符位置 ≤ 长度)
  83. .如果 (取代码 (取文本中间 (文本, 字符位置, 1), ) < 0)
  84. 字符位置 = 字符位置 + 2
  85. 实际长度 = 实际长度 - 1
  86. .否则
  87. 字符位置 = 字符位置 + 1
  88. .如果结束
  89. .判断循环尾 ()
  90. 返回 (实际长度)

常量表

  1. .版本 2
  2. .常量 汉字, "<文本长度: 6998>"
  3. .常量 英文, "<文本长度: 52>"
  4. .常量 符号, "<文本长度: 32>"

常量具体内容见上

五.写在最后

特别感谢下列文章(帖子)与作者:

易语言取字符个数 例子 非文本长度 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

3500个常用汉字列表_常用字符-CSDN博客

个人主页:

小狄同学呀_-CSDN博客

B站主页:

小狄同学呀的个人空间-小狄同学呀个人主页-哔哩哔哩视频 (bilibili.com)

另外通知:

我即将开展易语言系列课程的更新,计划是一条条代码的给大家讲明白

也请期待一下吧~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/897092
推荐阅读
相关标签
  

闽ICP备14008679号