自动生成用于填写青铜器的“工作日报”(VB.NET改进版)

自动生成用于填写青铜器的“工作日报”(VB.NET改进版),第1张

概述之前写过一篇 C#自动生成用于填写青铜器的“工作日报”。由于后来重装了几次系统,每次重新编译都要拉界面,感觉很不方便 :-(好吧这和我比较懒也有关系,所以这回加强了一下程序的功能。重写后的程序,生成条目的数量和生成条目的内容都放到了XML配置文件里。方便编译,缺点是控制台没有TopMost属性,每轮“复制+粘贴”后都要把控制台呼唤出来。 配置文件LogConfig.xml,要求与本程序的可执行文件

之前写过一篇 C#自动生成用于填写青铜器的“工作日报”。由于后来重装了几次系统,每次重新编译都要拉界面,感觉很不方便 :-(好吧这和我比较懒也有关系,所以这回加强了一下程序的功能。重写后的程序,生成条目的数量和生成条目的内容都放到了XML配置文件里。方便编译,缺点是控制台没有topMost属性,每轮“复制+粘贴”后都要把控制台呼唤出来。

配置文件LogConfig.xml,要求与本程序的可执行文件在同一个目录下:

<?xml version="1.0" enCoding="utf-8" ?><Root LogNeed="4">  <Log Text="维护监控客户端,优化代码" />  <Log Text="与研发中心协调解决监控客户端的内存泄漏问题" />  <Log Text="学习C++编程" />  <Log Text="熟悉linux环境" />  <Log Text="修复程序BUG,发布版本" />  <Log Text="搭建环境,测试程序运行" />  <Log Text="对程序进行新一轮的自测,优化代码" />  <Log Text="阅读项目文档,学习项目相关知识" />  <Log Text="研究监控数据脚本,熟悉linux上的Oracle数据库相关知识" />  <Log Text="修订详细设计文档" />  <Log Text="维护监控系统,为NEEQ提供技术支持" />  <Log Text="探讨新需求的实现,评估新需求的可行性" />  <Log Text="制定了新需求的实现时间表" />  <Log Text="程序编码" />  <Log Text="程序新功能实现,发布新版本" />  <Log Text="参加业务相关的集中培训" />  <Log Text="总结程序运行环境,完善程序相关文档" />  <Log Text="为程序部署提供技术支持" />  <Log Text="完善监控客户端使用手册" /></Root>

程序代码:

imports System.XmlModule MainModule    Sub Main()        '读取XML文档中的内容        Dim xmlDoc = New Xmldocument        xmlDoc.Load("LogConfig.xml")        Dim xmlRoot As XmlNode = xmlDoc.SelectSingleNode("Root")        '统计一共需要随机选出多少项        Dim iLogNeed As Integer =            DirectCast(xmlRoot,XmlElement).GetAttribute("LogNeed")        '统计有多少个XmlElement        Dim counter As Integer = 0        For Each xmlObj In xmlRoot.ChildNodes            If xmlObj.GetType().ToString() = "System.Xml.XmlElement" Then                counter = counter + 1            End If        Next        '生成数组        Dim sGoingText() As String = New String(counter - 1) {}        counter = 0        For Each xmlObj In xmlRoot.ChildNodes            If xmlObj.GetType().ToString() = "System.Xml.XmlElement" Then                sGoingText(counter) =                    DirectCast(xmlObj,XmlElement).GetAttribute("Text")                counter = counter + 1            End If        Next        'For Each x In sGoingText        '   Console.Writeline(x)        'Next        '如果要选出的条目数大于总共的条目数,则报警并退出        If iLogNeed > sGoingText.Length Then            Console.Writeline("配置错误:条目数不够")            PrintAChar()            Environment.Exit(exitCode:=1)        End If        '循环生成日志条目        While True            Try                '生成一组日志信息                Generate(iLogNeed,sGoingText)                PrintAChar()            Catch ex As Exception                Console.Writeline(ex.Message)            End Try        End While    End Sub    ''' <summary>    ''' 生成n个不重复的有序随机数,并将s中的内容按生成的随机数打印出来    ''' </summary>    ''' <param name="n">生成条目数</param>    ''' <param name="s">源条目内容</param>    ''' <remarks></remarks>    Private Sub Generate(n As Integer,s() As String)        '随机生成4个不重复的数字由小到大排列        Dim rd As Random = New Random(DateTime.Now.Millisecond)        Dim rdnum(n - 1) As Integer '生成数组,下标从0到n-1        For i As Integer = 0 To n - 1            '生成不重复的四个随机数            rdnum(i) = rd.Next(s.Length)            Dim bNeedRdAgain As Boolean = False            Do                bNeedRdAgain = False                For j As Integer = 0 To i - 1                    If rdnum(j) = rdnum(i) Then                        '随机数重复则重新生成一个随机数,重新判定                        bNeedRdAgain = True                        rdnum(i) = rd.Next(s.Length)                        Exit For                    End If                Next            Loop Until Not bNeedRdAgain        Next        Dim a = 1        '为生成的n个随机数排序        Array.sort(rdnum)        Dim sb As Text.StringBuilder = New Text.StringBuilder        For i As Integer = 1 To n            sb.Append(i.ToString + "." + s(rdnum(i - 1)) + vbCrLf)        Next        Console.Writeline(sb.ToString)        '复制生成的内容到剪贴板        '需要手动添加引用 System.windows.Forms        System.windows.Forms.Clipboard.Clear()        System.windows.Forms.Clipboard.SetText(sb.ToString()) '复制到剪贴板()        Console.Writeline("内容已被复制到剪贴板")    End Sub    ''' <summary>    ''' 实现按任意键继续    ''' </summary>    ''' <remarks></remarks>    Private Sub PrintAChar()        Console.Write("按任意键继续")        Console.ReadKey()        Console.Writeline(vbBack + vbCrLf)    End SubEnd Module

程序运行效果:

END

总结

以上是内存溢出为你收集整理的自动生成用于填写青铜器的“工作日报”(VB.NET改进版)全部内容,希望文章能够帮你解决自动生成用于填写青铜器的“工作日报”(VB.NET改进版)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1271979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存