Разработка программного продукта "Виды спорта"

Этапы разработки программного продукта. Линейка продуктов компании Microsoft. Изучении анимирования объектов в Microsoft Visual Basic Express 2010. Дизайн программного продукта "Виды спорта". Инструкция по работе с программой. Листинг программного кода.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 20.10.2016
Размер файла 992,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

Язык программирования -- формальная знаковая система, при помощи которой записываются компьютерные программы. По разным оценкам, в настоящее время существует от двух с половиной до десяти тысяч различных языков программирования.

В Прогопедии сведения о языках программирования организованы в виде трехуровневой структуры: "язык" > "реализация" > "версия". Также описаны диалекты языков программирования (хотя вопрос, что считать языком, а что диалектом, является довольно спорным).

Классификация языков осуществляется по поддерживаемым парадигмам и системам типизации данных. Разбиения на языки высокого и низкого уровня нет, так как оно более условно, устаревает со временем, появляются языки сверхвысокого уровня и т.д. Большинство представленных в энциклопедии языков можно считать языками высокого уровня. Также в Прогопедии не проводится разделения на интерпретируемые и компилируемые языки: для многих языков, традиционно считавшихся интерпретируемыми, сейчас существуют компиляторы, и наоборот. Возможна также комбинация интерпретации и компиляции: компиляция в байт-код. Таким образом, классификация по принципу интерпретируемости или компилируемости языка не имела бы большого смысла.

программный анимирование листинг

1. Постановка задачи

Visual Basic Express 2010

Научиться пользоваться выбранной средой программирования и создать свой программный продукт

Разработать программный продукт - база «Виды спорта».

1.1 Описание выбранного языка программирования

Visual Studio -- линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-служб как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных.

Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода как (например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

1.2 Этапы разработки программы

I. Этап создания главной формы «Виды спорта». Для управления на форме расположен MenuStrip, в него добавим такие элементы:

1. Файл

Новая база - создание пустой базы шаблона(предварительно сохраняем копию текущей базы)

Загрузить - загрузка файл АНК (можно и XML)

Сохранить - сохранение Базы

Выход - выход из программы

2. Настройки

Удалить запись - удаляет текущую запись

Добавить запись - открывает окно добавления записи

Поверх всех - вкл\откл функцию Поверх всех

Часы - вкл\откл часы

Txt2Ank - конвертор из Txt в Анк

Далее идет навигация по записям:

3. <==, ==>, Случайный - переключение между записями - вперед, назад, случайный номер.

NumericUpDown1 - Нумератор - переключение между записями

ComboBox - изменение ранга записи

Ярлык - для вывода часов

RichTextBox - для вывода записи (а так же номера и ранга).

StatusStrip1 - в статус мы записываем общее количество записей в базе(это число выводится также в название) и полный путь и имя базы.

Contex1 - контекстное меню для RTB - копировать запись в буфер обмена

OpenFileDealog и SaveFileDealog - для открытия и сохранения базы

Timer - для часов на рисунке 1.

Рисунок 1 «Главная форма «Виды спорта».

II. Этап создания формы «Добавление записи».

На форме расположены:

RichTextBox - для написания новой записи

Button (Добавить) - добавление новой записи на рисунке 2.

Рисунок 2 Форма «Добавление записи»

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

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

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) - подчищаем файл от записи " <anek />"

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) <> " <anek />" 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 = <anek>

<id><%= nextID %></id>

<text><%= newText %></text>

<rang>0</rang>

</anek>

readElement.Add(xml_value)

'сохраняем

readElement.Save(Form1.fileName)

Form1.maxIDxml(Form1.fileName)

Me.Close()

End Sub

End Class

1.4 Отладка

Сначала я не знал как сделать в меню открытие и сохранение файла но потом нашел инструменты 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()

2. Эксплуатация программного продукта

2.1 Описание готовой программы

База «Виды спорта» разработана в Visual basic.NET

По умолчанию программа открывает базы формата АНК, что по сути является файлом XML, с определённой структурой.

После запуска программы, загружается начальная база, если ещё нет, создаётся мини база с 3 записями. Таким образом, мы можем скачать программу отдельно без каких либо баз, а затем по мере необходимости скачать нужные базы.

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

После прочтения записи мы можем оценить ещё (+5, +1, 0) или удалить ее.

При удалении данная запись заменяется на последнюю, а после удаляется последняя.

В данной программе так же есть часы и функция поверх всех окон.

2.2 Инструкция по работе с программой

Для того чтобы открыть программу нужно запустить ярлык программы. Откроется главная форма на рисунке 4.

Рисунок 4 «Главная форма»

Для создания базы нажимаем - «Новая база»

Для открытия ранее созданной - «Загрузить»

Для сохранения - «Сохранить»

Для выхода - «Выход» на рисунке 5.

Рисунок 5 «Работа на главной форме»

Для удаления записи - «Удалить запись»

Для добавления записи - «Добавить запись»

Функция поверх всех окон - «Поверх всех»

Часы - «Часы»

Функция конвертирования txt в ank - «Txt2Ank» на рисунке 6.

Рисунок 6 «Работа на главной форме»

Для пролистывания записей - « <== » , «Случайный» , « ==> » на рисунке 7.

Рисунок 7 «Работа на главной форме»

Так же записи можно пролистывать с помощью инструмента NumericUpDown показанной на рисунке 8.

Рисунок 8 «Работа на главной форме»

Если вы хотите оценить запись то это можно сделать как показано на рисунке 9.

Рисунок 9 «Работа на главной форме»

При нажатии на кнопку «Добавить запись» открывается форма Добавления записи где вы можете написать новую запись соответствующей кнопкой «Добавить» на рисунке 10.

Рисунок 10 «Добавление записи»

Заключение

В результате прохождения практики были закреплены полученные знания при изучении анимирования объектов в Microsoft Visual Basic express 2010, а так же дизайн программного продукта

Изучив все необходимые материалы, четко усвоены все полученные знания. В ходе практики мы встретились с трудностями программирования и освоения языка. Были сложности при создании и разработки программного кода. Но все неисправности и ошибки были устранены. Требования к программам соблюдены. Все проекты сданы вовремя.

Приложение

Листинг программного кода

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

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

maxIDxml(fileName)

End Sub

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

Sub newFile()

If IO.File.Exists(fileName) Then

fileNameBU = Format(D, "BU yyyy_MM_dd_HHmmssfff.bu")

IO.File.Copy(fileName, fileNameBU

End If

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

Writer.WriteStartDocument(True)

Writer.Formatting = Xml.Formatting.Indented

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

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

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

Sub del1()

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

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

Sub delOstatok()

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) <> " <anek />" Then

massTMP(i) = mass(i)

File.WriteLine(massTMP(i))

End If

Next

File.Close()

End Sub

Sub delTempFile()

IO.File.Delete(fileName)

IO.File.Delete(fileName2)

IO.File.Copy(fileName3, fileName)

IO.File.Delete(fileName3)

End Sub

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

Sub importFromTXT(filestxt As String, fileAnk As String

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

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

Writer.WriteStartDocument(True)

Writer.Formatting = Xml.Formatting.Indented

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

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

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

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

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

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 = <anek>

<id><%= nextID %></id>

<text><%= newText %></text>

<rang>0</rang>

</anek>

readElement.Add(xml_value)

readElement.Save(Form1.fileName)

Form1.maxIDxml(Form1.fileName)

Me.Close()

End Sub

End Class

Размещено на Allbest.ru

...

Подобные документы

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

    отчет по практике [2,0 M], добавлен 28.11.2022

  • Технологии разработки программного обеспечения. Процедура постановки задачи, определения требований. Последовательность действий логической, разветвленной и циклической структуры. Терминология программирования. Этапы создания программного продукта.

    презентация [793,8 K], добавлен 15.11.2010

  • Анализ требований к программному продукту. Требования к информационной и программной совместимости. Проектирование архитектуры программного продукта. Виды программ и программных документов. Общие сведения о С++. Технология разработки программного модуля.

    дипломная работа [1,2 M], добавлен 05.08.2011

  • Характеристика программного продукта и стадий разработки. Расчет затрат на разработку и договорной цены, эксплуатационных расходов, связанных с использованием нового программного продукта. Оценка конкурентоспособности. Изучение, оценка рыночного спроса.

    курсовая работа [139,0 K], добавлен 22.09.2008

  • Определение параметров линейной зависимости из графика. Метод парных точек. Метод наименьших квадратов. Блок-схема программного комплекса в Microsoft Visual Studio и Microsoft Excel. Инструкция пользователя, скриншоты. Общий вид программного кода.

    курсовая работа [2,1 M], добавлен 29.11.2014

  • Архитектура программного продукта и требования к платформе, обоснование выбора разработки. Закономерности и основные этапы алгоритмизации и программирования, а также отладка и тестирование продукта. Разработка и содержание руководства пользователя.

    дипломная работа [2,3 M], добавлен 19.01.2017

  • Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.

    дипломная работа [1008,9 K], добавлен 13.10.2013

  • Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.

    дипломная работа [1,5 M], добавлен 12.06.2009

  • Особенности информационных технологий в области медиапланирования и проблемы автоматизации в ООО "Медиа-Групп". Процесс разработки, алгоритм и эффективность внедрения программного продукта "Медиаплан рекламной кампании" в среде Microsoft Visual Basic.

    дипломная работа [2,7 M], добавлен 21.04.2009

  • Анализ существующего программного обеспечения. Этапы создания проекта. Концептуальное, логическое и физическое проектирование базы данных. Структура программного продукта. Руководство программиста и оператора. Тестирование программного продукта.

    курсовая работа [586,4 K], добавлен 26.06.2015

  • Создание программного продукта, представляющего моделирование на компьютере логнормального распределения, определение вероятностной оценки стоимости актива. Описание работы программного продукта. Работа с графиками, таблицами, математическими функциями.

    курсовая работа [742,7 K], добавлен 08.01.2009

  • Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.

    отчет по практике [296,1 K], добавлен 19.04.2015

  • Разработка информационной базы данных для компании с помощью СУБД Microsoft Office Access. Построение семантической модели предметной области. Листинг программного продукта: создание и заполнение таблиц. Инструкция по применению автоматизированной ИС.

    курсовая работа [1010,5 K], добавлен 26.03.2014

  • Требования к функциям и задачам, выполняемым системой "Подбор кредита ОАО "Россельхозбанк". Проектирование архитектуры программного продукта. Структурная схема программного продукта. Описание компонент программного обеспечения. План менеджмента проекта.

    курсовая работа [684,0 K], добавлен 03.05.2015

  • Обзор и анализ существующих методик управления проектами и оценки трудоемкости. Разработка алгоритма задания параметров и вычисления трудоемкости и стоимости программного продукта. Отладка и тестирование продукта. Разработка руководства пользователя.

    дипломная работа [2,5 M], добавлен 18.11.2017

  • Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.

    курсовая работа [1,3 M], добавлен 29.12.2014

  • Анализ проектирования интерфейса программы. Выбор и назначение визуальных компонентов. Изучение экранных форм приложения. Модули, процедуры, функции проекта и их назначение. Листинг программного кода. Результаты работы автоматизированного продукта.

    курсовая работа [1,9 M], добавлен 11.12.2017

  • Требования к пользовательскому интерфейсу программного продукта. Выбор инструментальных средств разработки программы. Описание функциональной схемы, модульной структуры, структурной схемы. Технология разработки справочной системы программного продукта.

    дипломная работа [2,7 M], добавлен 12.05.2016

  • Разработка программного продукта с помощью языка программирования Visual Basic. Описание интерфейса пользователя и возможностей программы. Исходный код основных модулей. Программа, демонстрирующая основные возможности диаграмм и среды Visual Basic.

    контрольная работа [989,9 K], добавлен 29.03.2011

  • Выбор инструментария программирования, технология создания электронного учебника. Установка программного продукта, инструкция пользователя по сопровождению. Набор тестов и тестирование, протокол ошибок. Расчёт цены и себестоимости программного продукта.

    курсовая работа [1,9 M], добавлен 09.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.