Разработка программного продукта "Виды спорта"
Этапы разработки программного продукта. Линейка продуктов компании 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