Member 13801987 Ответов: 2

Решите следующую задачу


Создайте проект для отслеживания продаж билетов на концерты вашего клуба. Цены на билеты зависят от места размещения. Используйте массив для хранения цены каждого типа мест.

Не позволяйте пользователю получать исключение для индекса вне диапазона.

Ваша программа должна рассчитать общее количество проданных билетов на каждую секцию для каждого члена клуба (не менее 10 членов). Имя члена клуба и количество проданных билетов для каждой секции должны быть в текстовом файле (используйте порядок, как показано в таблице ниже.

Если участник не продал никаких билетов на этот раздел, используйте 0 в качестве записи), программа
следует прочитать этот текстовый файл, а затем создать массив с информацией (используйте метод Split).

Программа должна создать двумерный массив результатов (исходный массив плюс общее количество проданных билетов и общий доход для каждого участника (еще 2 столбца) Отображение расписания цен на билеты. Отображение конечного массива в виде списка. В последней строке должны быть подведены итоги.

Используйте запрос LINQ (должен иметь опцию Infer вверху), чтобы найти участников с пятью лучшими продажами, отображающими это в сводной форме

Используйте хорошие методы программирования: например, соответствующий заставочный экран, окно "о программе" и меню. Убедитесь, что вы используете комментарии по всему коду

Тип сидения цена за одно место
Оркестр 40,00
Мезонин 27.50
Вообще Я 15.00
Балкон 10.00

Что я уже пробовал:

Я пробую следующий код, но вопрос говорит о том, чтобы получить массив через текстовый файл, а также запрос LINQ. Если вы прочтете вопрос, вы его получите.

Public Class MainForm

    Friend PriceDecimal() As Decimal = {40D, 27.5D, 15D, 10D}

    Friend SectionString() As String = {"Orchestra", "Mezzanine", "General", "Balcony"}

    Friend NumberInteger As Integer

    Friend TotalTicketsInteger(3) As Integer

    Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click

        ' Display AboutBox.

        AboutBox1.ShowDialog()

    End Sub

    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click

        ' Close Main Form.

        Me.Close()

    End Sub

    Private Sub ClearToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClearToolStripMenuItem.Click

        ' Clear Main Form for next sale.

        NumberTextBox.Clear()

        'Here Purchase Info control is changed from text box to label

        PurchaseInfoLabel.Text = ""

        AmountDueTextBox.Clear()

        With SelectionListBox

            .SelectedIndex = -1

            .Focus()

        End With

    End Sub

    Private Sub DisplayPricesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisplayPricesToolStripMenuItem.Click

        ' Display Price Schedule. ListBox in Price Schedule Form will display section and price.

        For i = 0 To 3

            PriceScheduleForm.PriceScheduleListBox.Items.Add(SectionString(i) & "     " & PriceDecimal(i).ToString("C"))

        Next

        PriceScheduleForm.ShowDialog()

    End Sub

    Private Sub PrintSummaryToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintSummaryToolStripMenuItem.Click

        ' Begin process for print preview of summary.

        PrintPreviewDialog1.Document = PrintDocument1

        PrintPreviewDialog1.ShowDialog()

    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        ' Handle printing and print preview when printing summary.

        Dim PrintFont As New Font("Arial", 12)

        Dim LineHeightSingle As Single = PrintFont.GetHeight + 2

        Dim HorizontalPrintLocationSingle As Single = 250

        Dim VerticalPrintLocationSingle As Single = e.MarginBounds.Top

        Dim ColumnEndSingle As Single

        Dim ColumnXSingle As Single

        Dim FontSizeF As New SizeF

        Dim FormattedOutputString As String

        Dim SalesAmountDecimal(3) As Decimal

        Dim TotalSalesDecimal As Decimal

        ' Print page heading.

        Using HeadingFont As New Font("Arial", 16, FontStyle.Bold)

            e.Graphics.DrawString("Summary of Ticket Sales", HeadingFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

            ' Blank line between heading and data.

            VerticalPrintLocationSingle += LineHeightSingle * 2

        End Using

       ' Print column headings.

        e.Graphics.DrawString("Section", PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

        HorizontalPrintLocationSingle += 100

        e.Graphics.DrawString("# Tickets", PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

        HorizontalPrintLocationSingle += 100

        e.Graphics.DrawString("Ticket Price", PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

        HorizontalPrintLocationSingle += 100

        e.Graphics.DrawString("Sales Amount", PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

        HorizontalPrintLocationSingle += 100

        VerticalPrintLocationSingle += LineHeightSingle  

        ' Print data.

        For IndexInteger = 0 To 3

            HorizontalPrintLocationSingle = 250

            ' Section name will be printed in first column

            e.Graphics.DrawString(Me.SelectionListBox.Items(IndexInteger).ToString, PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

            HorizontalPrintLocationSingle += 100

            ' Each section's # of tickets sold will be right-aligned in 2nd column.

            ' Set ending position for right-aligned column.

            ColumnEndSingle = 400

            ' Format the number.

            FormattedOutputString = TotalTicketsInteger(IndexInteger).ToString

            ' Calculate the X position of the amount.

            ' Measure string in this font.

            FontSizeF = e.Graphics.MeasureString(FormattedOutputString, PrintFont)

            ' Subtract width of string from the column position.

            ColumnXSingle = ColumnEndSingle - FontSizeF.Width

            e.Graphics.DrawString(FormattedOutputString, PrintFont, Brushes.Black, ColumnXSingle, VerticalPrintLocationSingle)

            HorizontalPrintLocationSingle += 100

            e.Graphics.DrawString(FormatCurrency(PriceDecimal(IndexInteger), 2), PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

            HorizontalPrintLocationSingle += 100

            SalesAmountDecimal(IndexInteger) = TotalTicketsInteger(IndexInteger) * PriceDecimal(IndexInteger)

            TotalSalesDecimal += SalesAmountDecimal(IndexInteger)

            e.Graphics.DrawString(FormatCurrency(SalesAmountDecimal(IndexInteger), 2), PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

            VerticalPrintLocationSingle += LineHeightSingle

        Next

        HorizontalPrintLocationSingle = 500

        VerticalPrintLocationSingle += LineHeightSingle * 2

        e.Graphics.DrawString("Total Sales: " & FormatCurrency(TotalSalesDecimal, 2), PrintFont, Brushes.Black, HorizontalPrintLocationSingle, VerticalPrintLocationSingle)

    End Sub

    Private Sub PurchaseTicketsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PurchaseTicketsToolStripMenuItem.Click

        Dim SelectionString As String

        Dim SelectedPriceDecimal As Decimal

        ' Add number of tickets in current sale to total tickets sold for selected seating section.

        Try

            ' Convert number of tickets purchased to numeric.

            NumberInteger = Integer.Parse(NumberTextBox.Text)

            Try

                SelectionString = SelectionListBox.SelectedItem

                SelectedPriceDecimal = PriceDecimal(SelectionListBox.Items.IndexOf(SelectionString))

                TotalTicketsInteger(SelectionListBox.Items.IndexOf(SelectionString)) += NumberInteger

                PurchaseInfoLabel.Text = "Purchased " & NumberInteger & " ticket(s) at " & FormatCurrency(SelectedPriceDecimal, 2) & " per ticket"

                AmountDueTextBox.Text = FormatCurrency((NumberInteger * SelectedPriceDecimal), 2)

            Catch SectionException As FormatException

                MessageBox.Show("You must first select a seating section.", "Missing Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                SelectionListBox.Focus()

            End Try

        Catch NumberException As FormatException

            MessageBox.Show("Enter desired number of tickets.", "Missing Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

            With NumberTextBox

                .Focus()

                .SelectAll()

            End With

        End Try

    End Sub

    Private Sub frmTicketSales_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For i = 0 To 3

            SelectionListBox.Items.Add(SectionString(i))

        Next

    End Sub

End Class

2 Ответов

Рейтинг:
1

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Рейтинг:
1

Patrice T

Цитата:
Я пробую следующий код, но вопрос говорит о том, чтобы получить массив через текстовый файл, а также запрос LINQ. Если вы прочтете вопрос, вы его получите.

В чем заключается вопрос или проблема ?

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.