Помощь в написании студенческих работ
Антистрессовый сервис

Разработка программного кода

РефератПомощь в написанииУзнать стоимостьмоей работы

В зависимости от числа в нумераторе открывается запись с выбранным номером. Private Sub СлучайныйToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles СлучайныйToolStripMenuItem.Click. Private Sub НоваяБазаToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles НоваяБазаToolStripMenuItem.Click. Private Sub ЗагрузитьToolStripMenuItem_Click (sender As Object, e As EventArgs… Читать ещё >

Разработка программного кода (реферат, курсовая, диплом, контрольная)

Добавляем библиотеку для работы с файлами ХМЛ.

Imports System.Xml.

Задаем переменные, имена баз и их местонахождение.

Public Class Form1.

'переменные.

'баз общая.

Public fileName As String = «basefull.ank» .

Public fileNameBU As String.

' для удаления записей.

Dim fileName2 As String = «tmp2.ank» .

Dim fileName3 As String = «tmp3.ank» .

Dim D As Date = Now 'date Переменная для времени.

'При загрузке — высчитывается количество записей в начальной базе.

'загрузка формы.

Private Sub Form1_Load (sender As Object, e As EventArgs) Handles MyBase.Load.

maxIDxml (fileName).

End Sub.

' (1) Процедура записи позиции.

Private Sub addProduct (ByVal pID As String, ByVal pName As String, ByVal pPrice As String, _.

ByVal writer As Xml. XmlTextWriter).

writer.WriteStartElement («anek»).

' Запись открывающего тега.

writer.WriteStartElement («id»).

' Запись обычных тексовых данных в качестве содержимого тега.

writer.WriteString (pID).

' Запись закрывающего тега.

writer.WriteEndElement ().

writer.WriteStartElement («text»).

writer.WriteString (pName).

writer.WriteEndElement ().

writer.WriteStartElement («rang»).

writer.WriteString (pPrice).

writer.WriteEndElement ().

writer.WriteEndElement ().

End Sub.

' (2) новый хмл.

Sub newFile ().

' проверям наличие файла.

If IO.File.Exists (fileName) Then.

fileNameBU = Format (D, «BU yyyy_MM_dd_HHmmssfff.bu»).

IO.File.Copy (fileName, fileNameBU).

End If.

' Создаем объект для записи XML-данных.

Dim Writer As New Xml. XmlTextWriter («basefull.ank», System.Text.Encoding.UTF8).

' Записываем объявление версии XML.

Writer.WriteStartDocument (True).

' Указываем, что XML-документ должен быть отформатирован.

Writer.Formatting = Xml.Formatting.Indented.

' Задаем 2 пробела для выделения вложенных данных.

Writer.Indentation = 2.

' Записываем открывающий тег.

Writer.WriteStartElement («Table»).

' Вызываем процедуру записи позиции.

addProduct (1, «», 0, Writer).

addProduct (2, «», 0, Writer).

addProduct (3, «», 0, Writer).

' Закрываем тег.

Writer.WriteEndElement ().

' Заканчиваем запись (закрываем все не закрытые элементы).

Writer.WriteEndDocument ().

' Закрываем файл.

Writer.Close ().

End Sub.

' (3) получение последнего (наибольшего) номерa ID.

Sub maxIDxml (files As String).

If IO.File.Exists (fileName) Then.

' «Файл уже существует» .

Else.

newFile ().

End If.

Dim xdoc As XDocument = XDocument. Load (files).

Dim maxId = 0.

For Each xe As XElement In xdoc. Element («Table»).Elements («anek»).

If xe. Element («id»).Value > maxId Then.

maxId += 1.

End If.

Next.

Me.Text = Str (maxId).

ToolStripStatusLabel1.Text = fileName.

ToolStripStatusLabel2.Text = maxId.

End Sub.

' (4) показывает текст по номеру ID (из нумератора).

Sub element1().

Dim nnn = NumericUpDown1.Value.

maxIDxml (fileName).

Dim maxId_ = Val (Me.Text).

NumericUpDown1.Maximum = maxId_.

Dim xdoc As XDocument = XDocument. Load (fileName).

rtxOtvet.Text = «» .

For Each xe As XElement In xdoc. Element («Table»).Elements («anek»).

If xe. Element («id»).Value = nnn Then.

rtxOtvet.Text += xe. Elements («id»).Value + ") «.

rtxOtvet.Text += xe. Elements («text»).Value + «ранг «.

rtxOtvet.Text += xe. Elements («rang»).Value + vbCrLf.

ComboBox1.Text = xe. Elements («rang»).Value.

End If.

Next.

End Sub.

' (5−1) удаление (1).

Sub del1().

'———1.

'значение из последнего записываем в удаленный.

'загрузка документа.

Dim xdoc As XDocument = XDocument. Load (fileName).

'из последней сохраняем в переменные.

Dim maxiZap = Val (Me.Text).

Dim nameMax = «» .

Dim priceMax = «» .

For Each xe As XElement In xdoc. Element («Table»).Elements («anek»).

If xe. Element («id»).Value = maxiZap Then.

nameMax = xe. Elements («text»).Value.

priceMax = xe. Elements («rang»).Value.

End If.

Next.

'из переменных во 2.

Dim etot = NumericUpDown1.Value.

For Each xe As XElement In xdoc. Element («Table»).Elements («anek»).

If xe. Element («id»).Value = etot Then.

xe.Elements («text»).Value = nameMax.

xe.Elements («rang»).Value = priceMax.

xdoc.Save (fileName2).

End If.

Next.

'————;

'удаление записи последней.

'загрузка документа.

Dim xdoc2 As XDocument = XDocument. Load (fileName2).

Dim id = maxiZap.

On Error Resume Next.

For Each xe As XElement In xdoc. Element («Table»).Elements («anek»).

If xe. Element («id»).Value = id Then.

xe.RemoveAll ().

xdoc.Descendants («anek»).Where (Function (el) el. Attribute («id»).Value.Equals (Str (id))).Remove ().

xdoc.Save (fileName2).

Exit Sub.

End If.

Next.

End Sub.

' (5−2) удаление (2) — подчищаем файл от записи ««.

Sub delOstatok ().

'—————-2.

Dim mass () = IO.File.ReadAllLines (fileName2, System.Text.Encoding.Default).

Dim max = mass.Length.

Dim massTMP (max).

Dim File As IO.StreamWriter.

File = IO.File.CreateText (fileName3).

For i = 0 To max — 1.

If mass (i) «» Then.

massTMP (i) = mass (i).

File.WriteLine (massTMP (i)).

End If.

Next.

File.Close ().

End Sub.

' (5−3) удаление (3) — удаляем все временные файлы и заменяем основной файл на измененный.

Sub delTempFile ().

'————————-3.

IO.File.Delete (fileName).

IO.File.Delete (fileName2).

IO.File.Copy (fileName3, fileName).

IO.File.Delete (fileName3).

End Sub.

' (6) смена ранга.

Sub RANG (rx As Integer).

Dim nnn = NumericUpDown1.Value.

Dim xdoc As XDocument = XDocument. Load (fileName).

For Each xe As XElement In xdoc. Element («Table»).Elements («anek»).

If xe. Element («id»).Value = nnn Then.

xe.Elements («rang»).Value = rx.

xdoc.Save (fileName).

End If.

Next.

element1().

End Sub.

(8) импорт — конвертер тхт, а анк.

Sub importFromTXT (filestxt As String, fileAnk As String).

' Dim r As New Random.

Dim bk.

Dim masStrFull ().

Dim mString () = IO.File.ReadAllLines (filestxt, System.Text.Encoding.Default) 'Загоняем текст построчно в массив.

Dim miniStr ().

Dim x = 0.

Dim xz = 0.

Dim numbers = 1.

'из тхт в хмл.

' Создаем объект для записи XML-данных.

Dim Writer As New Xml. XmlTextWriter (fileAnk, System.Text.Encoding.UTF8).

' Записываем объявление версии XML.

Writer.WriteStartDocument (True).

' Указываем, что XML-документ должен быть отформатирован.

Writer.Formatting = Xml.Formatting.Indented.

' Задаем 2 пробела для выделения вложенных данных.

Writer.Indentation = 2.

' Записываем открывающий тег.

Writer.WriteStartElement («Table»).

' Вызываем процедуру записи позиции.

'—————;

'-создание файла хмл из тхт.

bk = mString.Length.

ReDim masStrFull (bk).

ReDim miniStr (bk).

'-весь массив строк проходит проверку.

'-между *** это отдельный элемент нового массива.

For i = 0 To (bk — 1).

If mString (i) = «*** «Then.

miniStr (xz) = mString (i).

xz += 1.

End If.

masStrFull (xz) += mString (i) + vbNewLine.

Next i.

'- теперь каждый новый элемент записываем в файл.

'-(если он не равен пустой строке).

For j = 0 To (masStrFull.Length — 1).

If masStrFull (j) «» Then.

addProduct (j, masStrFull (j), «0», Writer).

End If.

Next.

' Закрываем тег.

Writer.WriteEndElement ().

' Заканчиваем запись (закрываем все не закрытые элементы).

Writer.WriteEndDocument ().

' Закрываем файл.

Writer.Close ().

End Sub.

'-меню-Случайный———————-;

Private Sub СлучайныйToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles СлучайныйToolStripMenuItem.Click.

maxIDxml (fileName).

Dim r As New Random.

Dim max = Val (Me.Text).

Randomize ().

Dim randoms.

randoms = r. Next (1, max).

NumericUpDown1.Value = randoms.

element1().

End Sub.

'-меню-+1 (—>).

Private Sub ToolStripMenuItem3_Click (sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click.

If NumericUpDown1. Value < Val (Me.Text) Then.

NumericUpDown1.Value += 1.

End If.

End Sub.

'-меню—1 (<—).

Private Sub ToolStripMenuItem2_Click (sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click.

If NumericUpDown1. Value > 1 Then.

NumericUpDown1.Value -= 1.

End If.

End Sub.

'-меню-из ТХТ в ANK (***) Конвертирование из ТХТ в АНК.

Private Sub Txt2AnkToolStripMenuItem1_Click (sender As Object, e As EventArgs) Handles Txt2AnkToolStripMenuItem1.Click.

' Указываем начальную папку.

OFD1.InitialDirectory = Application.StartupPath.

' Указываем заголовок.

OFD1.Title = «Откр файл ТХТ «.

' При помощи фильтра можно отбросить ненужные типы файлов.

OFD1.Filter = «TXT|*.txt» .

If OFD1. ShowDialog = DialogResult. OK Then.

Dim filestxt = OFD1.FileName.

Dim fileAnk = FileIO.FileSystem.GetFileInfo (filestxt).Name + «.ank» .

importFromTXT (filestxt, fileAnk).

End If.

End Sub.

'-меню-ФАЙЛ-Новая база—————————-;

Private Sub НоваяБазаToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles НоваяБазаToolStripMenuItem.Click.

newFile ().

element1().

End Sub.

'-меню-ФАЙЛ-загрузка базы.

Private Sub ЗагрузитьToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles ЗагрузитьToolStripMenuItem.Click.

' Указываем начальную папку.

OFD1.InitialDirectory = Application.StartupPath.

' Указываем заголовок.

OFD1.Title = «Откр Базу «.

' При помощи фильтра можно отбросить ненужные типы файлов.

OFD1.Filter = «Анекдоты|*.ank|РезКоп|*.bu|Все|*.*» .

' Если есть список выбора типов, то можно указать какой тип будет выбран при загрузке диалога.

OFD1.FilterIndex = 1.

If OFD1. ShowDialog = DialogResult. OK Then.

fileName = OFD1.FileName.

NumericUpDown1.Value = 1.

element1().

End If.

End Sub.

'-меню-ФАЙЛ-сохранить копию базы.

Private Sub СохранитьКопиюToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles СохранитьКопиюToolStripMenuItem.Click.

' Указываем начальную папку.

SFD1.InitialDirectory = Application.StartupPath.

' Указываем заголовок.

SFD1.Title = «Сохранить Базу «.

' При помощи фильтра можно отбросить ненужные типы файлов.

SFD1.Filter = «Анекдоты|*.ank|РезКоп|*.bu» .

' Если есть список выбора типов, то можно указать какой тип будет выбран при загрузке диалога.

SFD1.FilterIndex = 1.

If SFD1. ShowDialog = DialogResult. OK Then.

Dim fileSave = SFD1.FileName.

IO.File.Copy (fileName, fileSave).

End If.

End Sub.

'-меню-ФАЙЛ-Выход—————————-;

Private Sub ВыходToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles ВыходToolStripMenuItem.Click.

Close ().

End Sub.

'-меню-НАСТРОЙКА-Удалить запись———————;

Private Sub УдалитьЗаписьToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles УдалитьЗаписьToolStripMenuItem.Click.

maxIDxml (fileName).

If Me. Text > 1 Then.

del1().

delOstatok ().

delTempFile ().

element1().

maxIDxml (fileName).

End If.

End Sub.

Для добавления новой записи открывается новое окно (2 форма) — ее код ниже.

'-меню-НАСТРОЙКА-Добавить запись———————;

Private Sub ДобавитьЗаписьToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles ДобавитьЗаписьToolStripMenuItem.Click.

frmDobavka.Show ().

Me.Enabled = False.

End Sub.

'-меню-НАСТРОЙКА-Поверх всех окон.

Private Sub ПоверхВсехToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles ПоверхВсехToolStripMenuItem.Click.

If ПоверхВсехToolStripMenuItem. Checked = True Then.

ПоверхВсехToolStripMenuItem.Checked = False.

Me.TopMost = False.

Else.

ПоверхВсехToolStripMenuItem.Checked = True.

Me.TopMost = True.

End If.

End Sub.

Включение-отключение часов происходит по такому алгоритму, если галочка в меню есть — часы ходят и их видно, иначе их нет.

'-меню-НАСТРОЙКА-часы.

Private Sub ЧасыToolStripMenuItem_Click (sender As Object, e As EventArgs) Handles ЧасыToolStripMenuItem.Click.

If ЧасыToolStripMenuItem. Checked = True Then.

ЧасыToolStripMenuItem.Checked = False.

lblChas.Visible = False.

Shape1.Visible = False.

Timer1.Enabled = False.

Else.

ЧасыToolStripMenuItem.Checked = True.

lblChas.Visible = True.

Shape1.Visible = True.

Timer1.Enabled = True.

End If.

End Sub.

'в зависимости от числа в нумераторе открывается запись с выбранным номером.

'переключение нумератора (переключение между зап).

Private Sub NumericUpDown1_ValueChanged (sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged.

element1().

End Sub.

'изменение ранга по выбору в комбобоксе изменение ранга на вариант из комбобокса.

Private Sub ComboBox1_SelectedIndexChanged (sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged.

RANG (Val (ComboBox1.Text)).

End Sub.

'Таймер для времени.

Private Sub Timer1_Tick (sender As Object, e As EventArgs) Handles Timer1.Tick.

lblChas.Text = TimeOfDay.

End Sub.

'скопировать в буф обм.

Private Sub ToolStripMenuItem6_Click (sender As Object, e As EventArgs) Handles ToolStripMenuItem6.Click.

My.Computer.Clipboard.SetText (rtxOtvet.Text).

End Sub.

End Class.

Вторая форма — добавление записи.

Imports System.Xml.

Public Class frmDobavka.

'закрытие формы.

Private Sub frmDobavka_FormClosed (sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed.

Form1.Enabled = True.

End Sub.

'добавляем текст.

Private Sub cmdOk_Click (sender As Object, e As EventArgs) Handles cmdOk.Click.

'добавление в конец файла.

'загружаем xml файл.

Dim reader = New XmlTextReader (Form1.fileName).

Dim readElement = XElement. Load (reader).

reader.Close ().

Form1.maxIDxml (Form1.fileName).

Dim maxi = Val (Form1.Text).

Dim nextID = Str (maxi + 1).

Dim newText = «*** «+ vbCrLf + vbCrLf + rtx1. Text + vbCrLf + vbCrLf.

Dim xml_value =.

readElement.Add (xml_value).

'сохраняем.

readElement.Save (Form1.fileName).

Form1.maxIDxml (Form1.fileName).

Me.Close ().

End Sub.

End Class.

Отладка

Сначала я не знал как сделать в меню открытие и сохранение файла, но потом нашел инструменты OpenFileDialog и SaveFileDialog и использовал их. Написал для них вот этот код:

OFD1.InitialDirectory = Application.StartupPath.

OFD1.Title = «Откр Базу «.

OFD1.Filter = «Анекдоты|*.ank|РезКоп|*.bu|Все|*.*» .

OFD1.FilterIndex = 1.

If OFD1. ShowDialog = DialogResult. OK Then.

fileName = OFD1.FileName.

NumericUpDown1.Value = 1.

element1().

End If.

SFD1.InitialDirectory = Application.StartupPath.

SFD1.Title = «Сохранить Базу «.

SFD1.Filter = «Анекдоты|*.ank|РезКоп|*.bu» .

SFD1.FilterIndex = 1.

If SFD1. ShowDialog = DialogResult. OK Then.

Dim fileSave = SFD1.FileName.

IO.File.Copy (fileName, fileSave).

End If.

Так же была проблема выбрать случайную запись, но я нашел код в интернете и все получилось:

maxIDxml (fileName).

Dim r As New Random.

Dim max = Val (Me.Text).

Randomize ().

Dim randoms.

randoms = r. Next (1, max).

NumericUpDown1.Value = randoms.

element1().

Показать весь текст
Заполнить форму текущей работой