vb.net小demo(计算器、文件处理等/C#也可看)

news2024/11/25 13:24:34

Demo1:使用窗体控件实现一个简易版计算器

在这里插入图片描述

Public Class Form1
    Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.Click
        CalSubBox.Text += Button_1.Text
    End Sub

    Private Sub Button_2_Click(sender As Object, e As EventArgs) Handles Button_2.Click
        CalSubBox.Text += Button_2.Text
    End Sub

    Private Sub Button_3_Click(sender As Object, e As EventArgs) Handles Button_3.Click
        CalSubBox.Text += Button_3.Text
    End Sub

    Private Sub Button_4_Click(sender As Object, e As EventArgs) Handles Button_4.Click
        CalSubBox.Text += Button_4.Text
    End Sub
    Private Sub Button_5_Click(sender As Object, e As EventArgs) Handles Button_5.Click
        CalSubBox.Text += Button_5.Text
    End Sub
    Private Sub Button_6_Click(sender As Object, e As EventArgs) Handles Button_6.Click
        CalSubBox.Text += Button_6.Text
    End Sub
    Private Sub Button_7_Click(sender As Object, e As EventArgs) Handles Button_7.Click
        CalSubBox.Text += Button_7.Text
    End Sub
    Private Sub Button_8_Click(sender As Object, e As EventArgs) Handles Button_8.Click
        CalSubBox.Text += Button_8.Text
    End Sub
    Private Sub Button_9_Click(sender As Object, e As EventArgs) Handles Button_9.Click
        CalSubBox.Text += Button_9.Text
    End Sub
    Private Sub Button_0_Click(sender As Object, e As EventArgs) Handles Button_0.Click
        CalSubBox.Text += Button_0.Text
    End Sub


    Private Sub Button_Add_Click(sender As Object, e As EventArgs) Handles Button_Add.Click
        CalSubBox.Text += Button_Add.Text

    End Sub

    Private Sub Button_Sub_Click(sender As Object, e As EventArgs) Handles Button_Sub.Click
        CalSubBox.Text += Button_Sub.Text
    End Sub

    Private Sub Button_Mul_Click(sender As Object, e As EventArgs) Handles Button_Mul.Click
        CalSubBox.Text += Button_Mul.Text
    End Sub

    Private Sub Button_Exc_Click(sender As Object, e As EventArgs) Handles Button_Exc.Click
        CalSubBox.Text += Button_Exc.Text
    End Sub
    Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
        CalSubBox.Text += "."
    End Sub

    Private Sub Button_CE_Click(sender As Object, e As EventArgs) Handles Button_CE.Click
        ResultBox.Text = vbNullString
        CalSubBox.Text = ""
        N_S = ""
    End Sub

    Private Sub Button_C_Click(sender As Object, e As EventArgs) Handles Button_C.Click
        ResultBox.Text = vbNullString
        CalSubBox.Text = ""
        N_S = ""
    End Sub


    Public Result As Double
    Public ErrMsg As String = "正无穷大"
    Private Sub Button_Equal_Click(sender As Object, e As EventArgs) Handles Button_Equal.Click
        Try
            Dim result = New DataTable().Compute(CalSubBox.Text, Nothing) '将一个表达式进行运算
            ResultBox.Text = result '将结果显示出来

            If (ErrMsg = ResultBox.Text) Then
                ResultBox.Text = "除数不能为0"
            End If
        Catch ex As Exception
            MsgBox("无法计算:" & ex.Message)
        End Try

        Dim Split_Str As String() = CalSubBox.Text.Split({"+"c, "-"c, "/"c, "*"c}) 'Split_Str是分割后的单个字符串
        DelZero(Split_Str)
        Console.WriteLine("新字符串:" & N_S)
        CalSubBox.Text = DelLastChar(N_S) '去掉最后一个字符,展示到文本框中


    End Sub

    Function DelLastChar(s As String)
        Return s.Substring(0, s.Length - 1)
    End Function


    Function DelZero(ByVal StrArr As String())

        Dim Op_StrArr As String = GetOperateStr(CalSubBox.Text) '[+,-] 先获取整个字符串列表
        Dim Op_Str As String
        For i = 0 To StrArr.Length - 1  ' strArr实质上是分割后的单个字符串
            Console.WriteLine("第" & i + 1 & "次" & vbNewLine)
            Dim DelZero_S As String = StrArr(i).TrimStart({"0"c}) 'DelZero_S是抹零后的单个字符串、
            Console.WriteLine("抹零后:" & DelZero_S)
            If Not i = Op_StrArr.Length Then '最后一次不需要获取
                Op_Str = Op_StrArr(i) '获取当前的单个操作数,从字符串数组中获取
            End If

            Console.WriteLine("操作数:" + Op_Str)
            N_S += DelZero_S + Op_Str '将抹零的字符串 与 当前操作数拼接 '最后一次的单个操作数不变,用DelLastChar去掉即可


            Console.WriteLine("N_S:" & N_S)
            Console.WriteLine(" DelZero_S:" & DelZero_S)
        Next
        Return N_S
    End Function

    Function GetOperateStr(ByVal StrArr As String) '获取操作数,返回一个存放操作数的字符串数组
        Dim NewStrArr As String = ""
        For i = 0 To StrArr.Length - 1 '获取下标,从Index开始寻找第一个操作数,而不是重新开始
            If StrArr(i) = "+" Or StrArr(i) = "-" Or StrArr(i) = "*" Or StrArr(i) = "/" Then
                NewStrArr += StrArr(i)
            End If
        Next
        Return NewStrArr '字符串数组[+,-,]
    End Function


    Private Sub Button_Backspace_Click(sender As Object, e As EventArgs) Handles Button_Backspace.Click

        Try
            CalSubBox.Text = CalSubBox.Text.Substring(0, CalSubBox.Text.Length - 1) '回退一个字符:将字符串截取0,end-1赋值回去即可
        Catch ex As Exception
            MsgBox("发生错误:" & ex.Message)
            CalSubBox.Text = ""
        End Try

    End Sub


End Class

Demo2:对文件进行处理

要求:1.去掉当前文件的第一行

2.从第二行开始算,保留奇数行,去掉偶数行

3.将每一行的分隔符改为“/”

4.将每一行的2位和3位数字调换位置

5.将每一个数字保留2位小数


Imports System.IO


Module Module1
    Sub Main()
        Dim fr As New StreamReader("E:\T4-2.txt") '这里存放要处理的文件路径
        Dim fw As New StreamWriter("C:\Users\Public\Desktop\T4-2-处理.txt") '写到桌面的fw流的路径
        Dim data As String = ""
        Dim data1 As String = ""
        Dim new_data As String = ""
        fr.ReadLine() '跳过第一行中文字体,相当于第0行
        While data <> " " 'data读奇数行,data1读偶数行,遇到空格行就退出
            data = fr.ReadLine() '读取第一//...行数据,并把读的内容赋值给当前data(data每次循环都会被重新赋值)
            If data = Nothing Then Exit While '当data读到空格行就退出循环,下同
            new_data = replace_splitChar(data) '将读取的data替换字符并返回给新data,此时的新data可以被写出
            Console.WriteLine("newData:" + new_data)
            fw.WriteLine(new_data, True) '写出 (重写)
            data1 = fr.ReadLine() '跳过第二//...,
            If data1 = Nothing Then Exit While '
        End While
        fr.Close()
        fw.Close()
        Console.WriteLine("已输出到桌面、按下任意键退出.....")
        Console.ReadKey()
    End Sub

    Function replace_splitChar(ByVal charStr As String)
        Dim new_str As String = "" '用一个新的Str来拼接/
        Dim new_str1 As String = ""

        Dim strArr As String() = charStr.Split(",") '分隔为字符串数组["110","23","12"]
        For Each s In strArr
            '把每个字符串保留两位小数
            Dim f_s = Double.Parse(s).ToString("0.00") 'f_s是保留两位小数的当前字符串
            new_str += f_s & "/" '拿到每一个字符串并拼接/ 赋值给新Str
        Next
        '交换的代码

        Dim strArr1 As String() = new_str.Split("/") '对newstr进行交换操作
        For i = 0 To new_str.Length - 1 'strArr就是字符串数组
            new_str1 = strArr1(0) + "/" + exchange(strArr(1), strArr(2)) + "/" + strArr1(3)
        Next


        Return new_str1
    End Function

    Function exchange(ByVal StrA As String, ByVal StrB As String) As String '将两个字符串进行交换位置的函数
        StrA = Double.Parse(StrA).ToString("0.00") '先转换再交换
        StrB = Double.Parse(StrB).ToString("0.00")
        Return StrB + "/" + StrA
    End Function


End Module

Demo3:OPenDialog和SaveDialog对话框案例(包括ToolStripMenu)

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        OpenFileDialog1.InitialDirectory = "D:\"
        OpenFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
        OpenFileDialog1.Title = "打开文件"
        ' .RestoreDirectory = True '对话框关闭之前还原至当前目录
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            fileName = OpenFileDialog1.FileName 'OpenFileDialog1已经拿到文件名了
            fr = New StreamReader(fileName) '创建fileReader流通过文件名来读取文件
            RichTextBox1.Text = fr.ReadToEnd()  'fr已经获取到文件的所有信息,使用ReadToEnd()获取其内容
            fr.Close()
        End If
 End Sub
 
 Private Sub 打开文件ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 打开文件ToolStripMenuItem.Click
        OpenFileDialog1.InitialDirectory = "D:\"
        OpenFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
        OpenFileDialog1.Title = "打开文件"
        ' .RestoreDirectory = True '对话框关闭之前还原至当前目录
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            fileName = OpenFileDialog1.FileName 'OpenFileDialog1已经拿到文件名了
            fr = New StreamReader(fileName) '创建fileReader流通过文件名来读取文件
            RichTextBox1.Text = fr.ReadToEnd()  'fr已经获取到文件的所有信息,使用ReadToEnd()获取其内容
            fr.Close()
        End If

 End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HBase数据存储

1、数据模型 Namespace&#xff08;表命名空间&#xff09;&#xff1a;表命名空间不是强制的&#xff0c;当想把多个表分到一个组去统一管理的时候才会用到表命名空间。Table&#xff08;表&#xff09;&#xff1a;一个表由一个或者多个列族组成。数据属性&#xff0c;都在列…

javaWeb项目-ssm+vue个人博客网站管理系统功能介绍

本项目源码&#xff1a;java-基于ssmvue的个人博客网站的设计与实现源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a…

第 5 章:面向生产的 Spring Boot

在 4.1.2 节中&#xff0c;我们介绍了 Spring Boot 的四大核心组成部分&#xff0c;第 4 章主要介绍了其中的起步依赖与自动配置&#xff0c;本章将重点介绍 Spring Boot Actuator&#xff0c;包括如何通过 Actuator 提供的各种端点&#xff08;endpoint&#xff09;了解系统的…

DDD领域应用理论实践分析回顾

目录 一、DDD的重要性 &#xff08;一&#xff09;拥抱互联网黑话&#xff08;抓痛点、谈愿景、搞方法论&#xff09; &#xff08;二&#xff09;DDD真的重要吗&#xff1f; 二、领域驱动设计DDD在B端营销系统的实践 &#xff08;一&#xff09;设计落地步骤 &#xff0…

小程序无法调用服务端问题排查

1、问题描述 突然有一天线上的小程序不能登录&#xff0c;经查小程序无法调用。经查无法小程序页面无法调用后台服务。 2、排查过程 由于无法登录小程序发布服务器&#xff0c;无法测试小程序前端服务器到服务端网络&#xff0c;并且小程序无法看到日志。所以就得从服务端和网…

使用CSS、JavaScript、jQuery三种方式实现手风琴效果

手风琴效果有不少&#xff0c;王者荣耀官网&#xff08;源网址 https://pvp.qq.com/raiders/ &#xff09;有一处周免英雄&#xff0c;使用的就是手风琴效果&#xff0c;如图所示。 我试着用css、js、jQuery三种方式实现了这种效果&#xff0c;最终效果差不多&#xff0c;美中不…

IDEA创建简单web(servlet)项目(server为tomcat)

引言 鉴于网上很少有关于IDEA开发servlet项目的教程&#xff08;24版idea&#xff0c;并且servlet技术十分复古&#xff0c;很少有人用到&#xff0c;能够理解&#xff0c;该文章旨在为在校的学生提供一个参考&#xff0c;项目技术简单&#xff09;本人在此总结从头开始到项目…

MATLAB算法实战应用案例精讲-【数模应用】有序Logit(Logistic)分析

目录 算法原理 logit回归分析步骤 二元logit分析 多分类logit分析 有序logit分析 总结 SPSS 1、问题与数据 2、对数据结构的分析 3、SPSS分析方法 SPSSAU 有序Logit回归案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解惑 提示…

Joplin Typora 粘贴图片 | 当使用Typora作为Joplin编辑器时,如何粘贴图片并上传到Joplin服务器,替换链接

一、背景 当我们使用Joplin时&#xff0c;上传图片时会自动上传到Joplin服务器并替换链接 但是Joplin的编辑器不好用&#xff0c;我更习惯用Typora来编辑&#xff0c; 然而Typora中上传的图片只能在本地&#xff0c;无法上传到Joplin服务器&#xff0c;在其他客户端也看不到图片…

迈向『闭环』| PlanAgent:基于MLLM的自动驾驶闭环规划新SOTA!

中科院自动化所深度强化学习团队联合理想汽车等提出了一种新的基于多模态大语言模型MLLM的自动驾驶闭环规划框架—PlanAgent。该方法以场景的鸟瞰图和基于图的文本提示为输入&#xff0c;利用多模态大语言模型的多模态理解和常识推理能力&#xff0c;进行从场景理解到横向和纵向…

若依RuoYi-Vue分离版—免登录直接访问

若依RuoYi-Vue分离版—免登录直接访问 如何不登录直接访问前端&#xff1a;后端:方法1&#xff1a;在SecurityConfig.java中设置httpSecurity配置匿名访问方法2&#xff1a;在对应的方法或类上面使用Anonymous注解。 如何不登录直接访问 官网有说明&#xff1a;如何不登录直接…

pyechart 创建柱形图

Pyecharts 是一个基于 Python 的开源数据可视化库&#xff0c;用于创建各种交互式的图表和可视化效果。它是在 Echarts 的基础上进行封装和优化&#xff0c;Echarts 是一个流行的 JavaScript 数据可视化库pyecharts 中文网站 : https://pyecharts.org/# pyecharts 模块 还支持…

day35| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

文章目录 前言860.柠檬水找零思路方法一 406.根据身高重建队列思路方法一 452. 用最少数量的箭引爆气球思路方法一 总结 前言 860.柠檬水找零 思路 很简单&#xff0c;贪心只有一个&#xff0c;如果20优先用105找零&#xff0c;因为5更加万能一些 方法一 class Solution(ob…

RabbitMQ实践——配置Prometheus和Grafana报表

大纲 启用rabbitmq_prometheus插件安装启动Prometheus创建用户下载并解压修改配置启动 安装启动grafana安装启动配置数据源 在《RabbitMQ实践——在Ubuntu上安装并启用管理后台》中我们已经安装成功RabbitMQ及其管理后台。在此基础上&#xff0c;我们将打通它和Prometheus、Gra…

26.0 Http协议

1. http协议简介 HTTP(Hypertext Transfer Protocol, 超文本传输协议): 是万维网(WWW: World Wide Web)中用于在服务器与客户端(通常是本地浏览器)之间传输超文本的协议.作为一个应用层的协议, HTTP以其简洁, 高效的特点, 在分布式超媒体信息系统中扮演着核心角色. 自1990年提…

Python图像处理——基于Pytorch框架ResNet152特征提取的MNIST手写数字识别

1. 数据集介绍 MNIST手写数字数据集&#xff1a; http://yann.lecun.com/exdb/mnist/ MNIST 数据集一共有 7 万张图片&#xff0c;其中 6 万张是训练集&#xff0c; 1 万张是测试集。每张图片是 28 28 的 0−9 的手写数字图片组成。每个图片是黑底白字的形式&#xff0c;黑底…

【全开源】餐饮点餐小程序源码(ThinkPHP+FastAdmin+Uniapp)

&#x1f37d;️餐饮点餐小程序&#xff1a;让美食触手可及 一款基于ThinkPHPFastAdminUniapp开发的点餐小程序&#xff0c;支持单人点餐&#xff0c;还满足多人协同点餐(高级授权)&#xff0c;支持多门店管理&#xff0c;并提供先吃后付和先付后吃两种支付方式。​ &#x1…

桌面应用开发框架比较:Electron、Flutter、Tauri、React Native 与 Qt

在当今快速发展的技术环境中&#xff0c;对跨平台桌面应用程序的需求正在不断激增。 开发人员面临着选择正确框架之挑战&#xff0c;以便可以高效构建可在 Windows、macOS 和 Linux 上无缝运行的应用程序。 在本文中&#xff0c;我们将比较五种流行的桌面应用程序开发框架&…

C#开源项目推荐:Watt Toolkit跨平台游戏工具箱支持github网络加速

Watt Toolkit是一个开源跨平台的多功能游戏工具箱&#xff0c;主要专注于增强玩家在Steam平台上的游戏体验及国外网站平台加速。 主要功能 兼容性 用户数据 团队背景 github加速功能 使用方法&#xff1a;用户只需在Watt Toolkit中启用网络加速功能&#xff0c;并选择对Gi…

揭秘Netflix背后的魔法:如何用三层架构打造个性化推荐帝国

推荐系统就像一家餐厅的菜单推荐 想象一下&#xff0c;你走进一家餐厅&#xff0c;面对琳琅满目的菜单&#xff0c;不知道点什么好。这时候&#xff0c;服务员给你推荐了几道菜&#xff0c;这些推荐是基于你以往的口味偏好和其他顾客的选择。Netflix的推荐系统也是类似的&…