Advertisement
Guest User

Untitled

a guest
Oct 6th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Imports System.IO
  2. Imports System.Text
  3.  
  4.  
  5.  
  6. Public Enum ТипЧеловек
  7.         Автор1 = 1
  8.         Автор2 = 2
  9.     End Enum
  10.     'объявление структуры описывающей песню
  11.    Public Structure ТипОписание
  12.         Dim Название As String
  13.         Dim ДатаИздания As String
  14.         Dim ФИОАвтора As ТипЧеловек
  15.         Dim Жанр As String
  16.  
  17.  
  18.         Function ЧитатьИзПотока(Поток As StreamReader) As Boolean
  19.             Try
  20.             Название = Поток.ReadLine
  21.             ДатаИздания = Поток.ReadLine
  22.                 ФИОАвтора = Поток.ReadLine
  23.                 Жанр = Поток.ReadLine
  24.                 Return True
  25.             Catch ex As Exception
  26.                 Console.WriteLine(ex.Message)
  27.                 Return False
  28.             End Try
  29.         End Function
  30.  
  31.         Function ПисатьВПоток(Поток As StreamWriter) As Boolean
  32.             Try
  33.                 Поток.WriteLine(Название)
  34.                 Поток.WriteLine(ДатаИздания)
  35.                 Поток.WriteLine(ФИОАвтора)
  36.                 Поток.WriteLine(Жанр)
  37.                 Return True
  38.             Catch ex As Exception
  39.                 Console.WriteLine(ex.Message)
  40.                 Return False
  41.             End Try
  42.         End Function
  43.  
  44.  
  45.  
  46.         Function ЧитатьИзФормы(Форма As Form) As Boolean
  47.             Try
  48.                 With Форма.Controls("grbПесни")
  49.                     Название = .Controls("txtНазвание").Text
  50.  
  51.                     Dim ФИОАвтора As String = .Controls("cbxФИОАвтора").Text
  52.                     Select Case ФИОАвтора
  53.                         Case "Автор1"
  54.                             ФИОАвтора = 1
  55.                         Case Else
  56.                             ФИОАвтора = 2
  57.  
  58.                     End Select
  59.  
  60.                     Жанр = .Controls("txtЖанр").Text
  61.  
  62.                     ДатаИздания = .Controls("txtДатаИздания").Text
  63.                 End With
  64.                 Return True
  65.             Catch ex As Exception
  66.                 Console.WriteLine(ex.Message)
  67.                 Return False
  68.             End Try
  69.         End Function
  70.         Function ПисатьВФорму(Форма As Form) As Boolean
  71.             Try
  72.                 With Форма.Controls("grbПесни")
  73.                     .Controls("txtНазвание").Text = Название
  74.                     .Controls("cbxФИОАвтора").Text = IIf(ФИОАвтора = 1, "Автор1", "Автор2")
  75.                     .Controls("txtЖанр").Text = Жанр
  76.                     .Controls("txtДатаИздания").Text = ДатаИздания
  77.                 End With
  78.                 Return True
  79.             Catch ex As Exception
  80.                 Console.WriteLine(ex.Message)
  81.                 Return False
  82.  
  83.             End Try
  84.  
  85.         End Function
  86.         Sub Сбросить()
  87.             Название = ""
  88.             ФИОАвтора = ТипЧеловек.Автор1
  89.             ДатаИздания = ""
  90.             Жанр = ""
  91.  
  92.         End Sub
  93.  
  94.  
  95.     End Structure
  96.     Public Structure ТипКоллекция
  97.         Public Песни() As ТипОписание
  98.         Public Позиция As Integer
  99.         Public ИмяФайла As String
  100.         Sub New(ИмяФайла As String)
  101.             Me.ИмяФайла = ИмяФайла
  102.             ReDim Песни(0)
  103.             Позиция = 0
  104.         End Sub
  105.         ReadOnly Property Количество() As Integer
  106.             Get
  107.                 Return UBound(Песни) + 1
  108.             End Get
  109.         End Property
  110.         Function Загрузить() As Boolean
  111.  
  112.             Dim i As Integer
  113.             Using Файл = New FileStream(ИмяФайла, FileMode.Open, FileAccess.Read)
  114.                 'Создание потока для чтения из файла
  115.                Using Поток As New StreamReader(Файл, Encoding.Default)
  116.                     ReDim Песни(-1)
  117.                     Загрузить = True
  118.                     Do Until Поток.EndOfStream
  119.                         i = UBound(Песни) + 1
  120.                         ReDim Preserve Песни(i)
  121.                         If Not Песни(i).ЧитатьИзПотока(Поток) Then
  122.                             Загрузить = False
  123.                             Exit Do
  124.                         End If
  125.                     Loop
  126.                     Поток.Close()
  127.                 End Using
  128.                 Файл.Close()
  129.             End Using
  130.         End Function
  131.         Function Сохранить() As Boolean
  132.             Using Файл = New FileStream(ИмяФайла, FileMode.Create, FileAccess.Write)
  133.                 'создание потока для записи в файл
  134.                Using Поток As New StreamWriter(Файл, Encoding.Default)
  135.                     Сохранить = True
  136.                     For i As Integer = 0 To UBound(Песни)
  137.                         If Not Песни(i).ПисатьВПоток(Поток) Then
  138.                             Сохранить = False
  139.                             Exit For
  140.                         End If
  141.                     Next
  142.                     Поток.Close()
  143.                 End Using
  144.                 Файл.Close()
  145.             End Using
  146.         End Function
  147.     End Structure
  148. Public Class Form1
  149.     Private ИмяФайла As String = "Песни.dat"
  150.     Private Коллекция As ТипКоллекция
  151.  
  152.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
  153.         Коллекция = New ТипКоллекция(ИмяФайла)
  154.     End Sub
  155.  
  156.     Private Sub btnПервый_Click(sender As Object, e As EventArgs) Handles btnПервый.Click
  157.         Коллекция.Позиция = 0
  158.         Коллекция.Песни(Коллекция.Позиция).ПисатьВФорму(Me)
  159.     End Sub
  160.  
  161.     Private Sub btnПредыдущий_Click(sender As Object, e As EventArgs) Handles btnПредыдущий.Click
  162.         If Коллекция.Позиция > 0 Then
  163.             Коллекция.Позиция -= 1
  164.             Коллекция.Песни(Коллекция.Позиция).ПисатьВФорму(Me)
  165.  
  166.         End If
  167.     End Sub
  168.  
  169.     Private Sub btnДобавить_Click(sender As Object, e As EventArgs) Handles btnДобавить.Click
  170.         Коллекция.Позиция = Коллекция.Количество
  171.         ReDim Preserve Коллекция.Песни(Коллекция.Позиция)
  172.         With Коллекция.Песни(Коллекция.Позиция)
  173.             .Сбросить()
  174.             .ПисатьВФорму(Me)
  175.         End With
  176.     End Sub
  177.  
  178.     Private Sub btnУдалить_Click(sender As Object, e As EventArgs) Handles btnУдалить.Click
  179.         If Коллекция.Количество = 1 Then
  180.             With Коллекция.Песни(0)
  181.                 .Сбросить()
  182.                 .ПисатьВФорму(Me)
  183.             End With
  184.  
  185.         Else
  186.             For i As Integer = Коллекция.Позиция To Коллекция.Количество - 2
  187.                 Коллекция.Песни(i) = Коллекция.Песни(i + 1)
  188.  
  189.  
  190.             Next
  191.             ReDim Preserve Коллекция.Песни(Коллекция.Количество - 2)
  192.             Коллекция.Позиция = 0
  193.             Коллекция.Песни(Коллекция.Позиция).ПисатьВФорму(Me)
  194.         End If
  195.     End Sub
  196.  
  197.     Private Sub btnСохранить_Click(sender As Object, e As EventArgs) Handles btnСохранить.Click
  198.         If Коллекция.Песни(Коллекция.Позиция).ЧитатьИзФормы(Me) Then
  199.             Коллекция.Сохранить()
  200.         End If
  201.     End Sub
  202.  
  203.     Private Sub btnЗагрузить_Click(sender As Object, e As EventArgs) Handles btnЗагрузить.Click
  204.         If Коллекция.Загрузить() Then
  205.             Коллекция.Позиция = 0
  206.             Коллекция.Песни(Коллекция.Позиция).ПисатьВФорму(Me)
  207.         End If
  208.     End Sub
  209.  
  210.     Private Sub btnСледующий_Click(sender As Object, e As EventArgs) Handles btnСледующий.Click
  211.  
  212.     End Sub
  213.  
  214.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  215.  
  216.     End Sub
  217. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement