【实验】VB.NET控件综合运用——“五一”商城大促の模拟

实验要求——VB.NET控件综合运用

一、目的与任务
本实验主要练习VB.NET的控件的综合运用。熟悉VB.NET的集成开发环境,掌握VB.NET编程技巧和开发过程。
实验学时数:4学时
二、实验内容
某商店为了迎接“五一”将进行促销活动,促销的商品包括服装、鞋、箱包、化妆品和床上用品五类。在促销期间,每种产品的规定品牌前5件以3折特价出售,先到先得,每种特价商品每人限购1件,售完为止。(例如,张三可以同时以3折的价格购买1件“幸福羊毛衫”、1件“米奇T恤”、1双“苹果男鞋”,但是不能以3折的价格购买2件“幸福羊毛衫”)买这五类产品的促销商品列表如下表:
在这里插入图片描述
为了帮助收银员快速的完成收银工作请帮助开发一个简单的收银程序。
参考界面如下:
在这里插入图片描述

(1)基本要求:每次在列表框中点击相应的商品时,会显示商品的名称、数量、单价折扣,并把用户所采购的所有商品在文本框内进行汇总,当输入实付款后单击“收款”按钮后计算应找的零钱。
(2)进一步要求:添加菜单,使得对于特价商品的种类、品牌商品、价格和折扣进行编辑。
(3)创新提示:无。要求自行寻找可改进的地方和创新点。

注意:付款金额要合理。
例如,购买41元的商品,实付款为41元、50元、100元、101元是合理的;实付款为200元,即为不合理。

VB.NET编程实现

Public Class Form1
    Dim counter As Integer = 0
    Dim nowkind As Category
    Dim nowcommodity As Commodity
    Dim nextkind As Category
    Dim lastcommodity As Commodity
    Public mkindlist As CategoriesList = CategoriesList.Instance
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each element In mkindlist.jutilist
            ComboBox1.Items.Add(element.Name)
            ComboBox3.Items.Add(element.Name)
        Next

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        ListBox1.Items.Clear()
        Dim name As String = ComboBox1.Text
        Dim names() As String = {""}
        For Each element In mkindlist.jutilist
            If name.Equals(element.Name) Then
                nowkind = element
                names = element.GetNames
                Exit For
            End If
        Next
        ListBox1.Items.AddRange(names)
    End Sub

    Private Sub ListBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseClick
        '得到当前所选择的商品
        nowcommodity = nowkind.GetCommodity(ListBox1.SelectedItem.ToString())
        If nowcommodity.First = True Then
            nowcommodity.SoldCount()
        End If
        '在上面的框里面把当前商品的各个属性写入(如名字价格等)
        NameTextBox.Text = nowcommodity.Name
        NumberTextBox.Text = "1"
        PriceTextBox.Text = nowcommodity.Price
        If nowcommodity.First = True And (nowcommodity.CountNumber >= 0) Then
            CountTextBox.Text = nowcommodity.Count
        Else
            CountTextBox.Text = "0%"
        End If
        Dim mCountDouble As Double = Convert.ToDouble(CountTextBox.Text.Replace("%", "")) / 100
        nowcommodity.First = False
        '将属性添加到表格里面
        DataGridView1.AllowUserToAddRows = False
        DataGridView1.Rows.Add({nowcommodity.Name, "1", nowcommodity.Price, CountTextBox.Text, nowcommodity.Price * (1 - mCountDouble)})
        '计算总额的和并将其写入“应付款”里面
        Dim count As Integer = Me.DataGridView1.Rows.Count
        Dim sum As Double = 0
        For i = 0 To count - 1
            sum += Val(Me.DataGridView1.Item("总额", i).Value)
        Next
        TextBox7.Text = Convert.ToString(sum)
    End Sub

    Private Sub clearTextBoxes()
        NameTextBox.Text = ""
        NumberTextBox.Text = ""
        PriceTextBox.Text = ""
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            If TextBox9.Text = "缴费不足或金额格式有误" Then
                MsgBox("支付金额不足!")
            ElseIf Convert.ToDouble(TextBox9.Text) > 100 Then
                MsgBox("零钱在100.00元以内才提供找零")
            ElseIf TextBox9.Text = "" Then
                MsgBox("输入错误!")
            Else
                MsgBox("结账成功!")
                clearTextBoxes()
                CountTextBox.Text = ""
                DataGridView1.Rows.Clear()
                TextBox7.Text = ""
                TextBox8.Text = ""
                TextBox9.Text = ""
                mkindlist.AllFirstTrue()
            End If
        Catch ex As Exception
            clearTextBoxes()
        End Try
    End Sub

    Private Sub TextBox8_TextChanged(sender As Object, e As EventArgs) Handles TextBox8.TextChanged
        Try
            If TextBox7.Text = "" Then
                'Do nothing
            ElseIf "" = TextBox8.Text Or Convert.ToDouble(TextBox7.Text) > Convert.ToDouble(TextBox8.Text) Then
                TextBox9.Text = "缴费不足或金额格式有误"
            Else
                TextBox9.Text = Convert.ToString(Convert.ToInt32(TextBox8.Text) - Convert.ToInt32(TextBox7.Text))
            End If
        Catch ex As Exception
        End Try
    End Sub

    Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
        ComboBox2.Items.Clear()
        ComboBox2.Text = ""
        Dim name As String = ComboBox3.Text
        Dim names() As String = {""}
        For Each element In mkindlist.jutilist
            If name.Equals(element.Name) Then
                nextkind = element
                names = element.GetNames
                Exit For
            End If
        Next
        ComboBox2.Items.AddRange(names)
    End Sub

    Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
        Dim name As String = ComboBox2.Text
        TextBox2.Text = name
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        '确认
        If Not TextBox5.ReadOnly Then
            MsgBox("请先确认产品信息")
            Return
        End If
        lastcommodity.Price = Convert.ToInt16(TextBox3.Text)
        lastcommodity.Count = TextBox1.Text
        TextBox5.ReadOnly = False
        TextBox5.Text = ""
        TextBox1.Text = ""
        TextBox3.Text = ""
        MsgBox("修改成功")
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        '查询
        Dim Flag As Boolean = False
        For Each element In mkindlist.jutilist
            For Each obj In element.CommodityList
                If TextBox5.Text = obj.Name Then
                    TextBox1.Text = obj.Count
                    TextBox3.Text = obj.Price
                    Flag = True
                    lastcommodity = obj
                End If
            Next
        Next
        If Not Flag Then
            MsgBox("找不到商品")
            Return
        End If
        MsgBox("查找成功")
        TextBox5.ReadOnly = True
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        '重查
        TextBox5.ReadOnly = False
        TextBox5.Text = ""
        TextBox1.Text = ""
        TextBox3.Text = ""
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim text1 As String = ComboBox3.Text
        Dim text2 As String = ComboBox2.Text
        Dim text3 As String = TextBox2.Text
        If text1 = "" Or text1 = "请选择" Or text2 = "" Or text2 = "请选择" Or text3 = "" Then
            MsgBox("修改失败")
            Return
        End If
        For Each element In mkindlist.jutilist
            If text3 = element.Name Then
                MsgBox("修改失败")
                Return
            Else
                For Each obj In element.CommodityList
                    If text3 = obj.Name Then
                        MsgBox("修改失败")
                        Return
                    End If
                Next
            End If
        Next
        '检查后OK
        For Each element In nextkind.CommodityList
            If text2 = element.Name Then
                element.Name = text3
            End If
        Next
        '后续完善
        MsgBox("修改完成")
        ComboBox2.Text = ""
        ComboBox3.Text = ""
        TextBox2.Text = ""
    End Sub

End Class

成品展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

清晰完整版链接

Download-Link
Note:不认识的话不提供邮件发送服务,谢谢!

发布了570 篇原创文章 · 获赞 1179 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104415378