Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по кп.docx
Скачиваний:
5
Добавлен:
01.08.2019
Размер:
575.53 Кб
Скачать

Министерство образования и науки Российской Федерации

(МИНОБРНАУКИ)

Федеральное государственное бюджетное образовательное учреждение

Высшего профессионального образования

«ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ УПРАВЛЕНИЯ»

Институт информационных систем управления

Кафедра компьютерных технологий

Специальность:

Специализация:

Форма обучения:

КУРСОВОЙ ПРОЕКТ

по дисциплине «Компьютерная подготовка»

на тему:

«Проектирование приложений в среде Visual Basic 6.0 и СУБД MS Access»

Исполнитель:

студент__курса, __ группы __________ _____________________

(подпись) (инициалы и фамилия)

Руководитель проекта:

___________________________ __________ _____________________

(учёная степень, учёное звание) (подпись) (инициалы и фамилия)

Москва - 2011 г.

Общие требования к курсовому проекту.

Тема проекта: «Обработка данных средствами Visual Basic»

1). Исходные данные проекта должны соответствовать индивидуальному заданию.

2). Должно быть учтено, что данные могут вводиться с клавиатуры.

3). Проект должен состоять из 2-х форм и одного модуля.

Форма 1. Первая форма должна содержать название проекта, условие задачи и сведения о студенте, выполнившем работу. Текст условия задачи должен быть полным и по нажатию кнопки “Условие задачи” должен появляться в текстовом поле (элемент TextBox), которое должно быть снабжено полосами прокрутки (установить свойство ScrollBar). По кнопке “Решение” должен происходить переход на 2-ю форму проекта. Остальные требования к кнопкам такие же, как в ЛР1.

Форма 2. Вторая форма должна содержать набор средств (набор кнопок) по работе с исходными данными: «Ввод данных», «Обработка данных», «Включение в список», «Сортировка списка», «Удаление из списка», «Изменение данных». Требования к этим кнопкам такие же, как в ЛР6 – ЛР8, но работать они должны только с исходными данными. Также на форме должны быть кнопки “Условие задачи”, “Обработка списка” и “Выход”. По кнопке “Условие задачи” должен происходить переход на 1-ю форму проекта.

Модуль. Выполнение задания в описанном выше виде возможно лишь при создании модуля, в который следует записать все подпрограммы общего назначения, которые используются в форме 2, и все переменные, предназначенные для обработки данных, которые ранее были описаны в разделе General. При описании переменных вместо ключевого слова Dim следует использовать слово Public, что делает эти переменные доступными во всех формах проекта.

Рекомендуется записать в модуль следующие подпрограммы: поиск суммы элементов массива, поиск номера максимального элемента, сдвиг элементов массива, сортировку массива, а также выделение из строки заданного слова (в соответствии с индивидуальным заданием возможны свои подпрограммы общего назначения).

Индивидуальное задание студента.

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

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

б) для каждой страны процент стоимости авиаперелета от платы за проживание, а также процентное отношение стоимости одного дня проживания от средней стоимости по всем странам.

Список переменных описанных в Модуле.

Public strana() 'переменная обозначающая страну путешествия.

Public vir() 'переменная обозначающая стоимость одного дня проживания.

Public ob() 'переменная обозначающая общую стоимость поездки.

Public kol() 'переменная обозначающая количество дней проживания.

Public cena() 'переменная обозначающая общую плату за проживание.

Public avia() 'переменная обозначающая стоимость авиаперелета.

Форма №1

'Командная кнопка «Условие задачи» после щелчка мыши в текстовом поле должно появиться условие задачи, индивидуальное для каждого студента, причем текст в нем должен быть недоступен для изменения:

Private Sub Command1_Click()

ENDLN = Chr(13) = Chr(10)

Text1.Visible = True

Text1 = "Имеются сведения о туристических поездках: название страны,"

Text1 = Text1 + "количество дней проживания, общая плата за проживание и стоимость авиаперелета."

Text1 = Text1 + "Определить: для каждой страны общую стоимость поездки, "

Text1 = Text1 + "стоимость одного дня проживания. "

Text1 = Text1 + "для каждой страны процент стоимости авиаперелета от платы за проживание, "

Text1 = Text1 + "а также процентное отношение стоимости одного дня проживания от средней стоимости по всем странам. "

Command3.Enabled = True

End Sub

'Командная кнопка «Выход» обеспечивает выход из программы в любой момент работы проекта по желанию пользователя:

Private Sub Command2_Click()

End

End Sub

'После появления на экране условия задачи становится доступна командная кнопка “Решение”, и после ее выбора должен произойти переход на 2-ю форму проекта.

Private Sub Command3_Click()

Form2.Show

End Sub

Форма №2

Option Explicit 'используется на уровне модуля для установки/проверки наличия объявлений для всех переменных в данном модуле

Dim nom As Integer 'переменная обозначающая номер слова в строке

Dim L As Integer 'локальная переменная процедур

Dim sum As Currency 'переменная обозначающая

Dim k As Integer 'переменная обозначающая номер записи в файле

Dim max As Currency 'переменная обозначающая

Dim sc1 As Currency 'переменная обозначающая это поле, средний результат которого мы ищем

Dim sc2 As Currency 'переменная обозначающая

Dim sc3 As Currency 'переменная обозначающая

Dim sc4 As Currency 'переменная обозначающая

Dim sc5 As Currency 'переменная обозначающая

Dim rez1 As String 'переменная обозначающая

Dim s As String 'локальная переменная процедур

Dim sl As String 'переменная обозначающая пустую строку

Dim MS As String 'переменная обозначающая

Dim ENDLN As String 'переменная обозначающая

Dim c As String 'переменная обозначающая

Dim Ind As Integer 'переменная обозначающая

Dim i As Integer 'переменная обозначающая

Dim n As Integer 'переменная обозначающая количество введенных записей

Dim MI As Integer 'переменная обозначающая номер страны ?

'Командная кнопка “Изменение данных” удаляет запись из списка, а поля выбранной записи появляются в полях Text1, Text2, Text3,, причем объекты TextBox становятся доступными для изменения данных.

Private Sub cmdIzm_Click()

Cls

Ind = List1.ListIndex

List1.RemoveItem Ind

cmdresh.Enabled = True

cmdIzm.Enabled = False

cmdUdal.Enabled = False

Txtob = ""

Txtvir = ""

lblSR.Caption = " Ср.знач. = "

cmdvkl.Enabled = False

Txtstrana.Enabled = True

Txtkol.Enabled = True

Txtcena.Enabled = True

Txtavia.Enabled = True

cmdok.Enabled = True

Txtstrana.SetFocus

End Sub

'Командная кнопка «Обработка данных», после щелчка мыши на которой должны выполниться простейшие арифметические действия по обработке данных.

Private Sub cmdobr_Click()

ob(0) = avia(0) + cena(0)

vir(0) = cena(0) / kol(0)

Txtob = Str(ob(0))

Txtvir = Str(vir(0)) + " РУБ"

cmdobr.Enabled = False

cmdvkl.Enabled = True

End Sub

'Конец ввода подтверждается щелчком мыши на кнопке «ОК», которая закрывает доступ к текстовым полям и открывает доступ к кнопкам «Обработка данных» и «Включение в список».

Private Sub cmdok_Click()

Txtstrana.Enabled = False

Txtkol.Enabled = False

Txtcena.Enabled = False

Txtavia.Enabled = False

cmdok.Enabled = False

cmdobr.Enabled = True

End Sub

'Кнопка “Решение”, после щелчка мыши на кнопку следует ввести одну запись с исходными данными в соответствии с индивидуальным заданием, используя при этом функцию InputBox.

Private Sub cmdresh_click()

frmSort.Visible = False

frmopt.Visible = False

Cls

rez1 = ""

lblSR.Caption = "Ср.знач.= "

ENDLN = Chr(13) + Chr(10)

Txtstrana.Enabled = True

Txtstrana.SetFocus

Txtkol.Enabled = True

Txtcena.Enabled = True

Txtavia.Enabled = True

Txtstrana = ""

Txtkol = ""

Txtcena = ""

Txtavia = ""

Txtob = ""

Txtvir = ""

cmdok.Enabled = True

End Sub

'Командная кнопка «Выход»:

Private Sub cmdexit_Click()

End

End Sub

'Кнопка “Сортировка списка”. Сортировка списка производиться по щелчку мыши на выбранном поле через сортировку массива, соответствующему данному полю, где сам массив оформлен, как параметр. В цикле сортировки в зависимости от значения опции optUb происходит перестановка элементов всех массивов данных, логически связанных с выбранным полем. После сортировки массива идет перезапись элементов списка.

Private Sub CmdSort_Click()

frmSort.Visible = True

frmopt.Visible = True

End Sub

'Командная кнопка “Удаление данных” при нажатии на кнопку запись должна удаляться из списка, а все кнопки (кроме “Ввод данных” и “Выход”) должны стать недоступными.

Private Sub cmdUdal_Click()

Cls

Ind = List1.ListIndex

List1.RemoveItem Ind

cmdresh.Enabled = True

cmdIzm.Enabled = False

cmdUdal.Enabled = False

lblSR.Caption = " Ср.знач. = "

cmdvkl.Enabled = False

End Sub

'Кнопка “Просмотр условия” позволяет перейти на первую форму проекта, для повторного просмотра условия.

Private Sub cmdUsl_Click()

Form1.Show

End Sub

'По нажатию кнопки «Включение в список» производится включение полей записи в массивы (напр., Firma(N) = Firma(0), Kol(N) = Kol(0), Cena(N) = Cena(0)), а сама запись появиляется в поле ListBox. При этом производятся простейшие арифметические действия, результат которых выводится в метку. Кнопки «Обработка списка» и «Сортировка списка» становятся доступными.

Private Sub cmdvkl_Click()

n = n + 1

ReDim Preserve strana(n)

ReDim Preserve vir(n)

ReDim Preserve ob(n)

ReDim Preserve kol(n)

ReDim Preserve cena(n)

ReDim Preserve avia(n)

strana(n) = strana(0)

kol(n) = kol(0)

cena(n) = cena(0)

avia(n) = avia(0)

ob(n) = ob(0)

vir(n) = vir(0)

ob(n) = cena(n) + avia(n)

vir(n) = cena(n) / kol(n)

s = StrElem(n)

List1.AddItem s

cmdvkl.Enabled = False

End Sub

'По щелчку мыши на кнопке «Обработка списка» вычисляется средние арифметические значения числовых полей всех записей в списке и производится поиск записи с максимальным значением вычисляемого поля. Поля найденной записи появляются в Text1, Text2, Text3,, причем объекты TextBox будут недоступными для изменения данных. В левом верхнем углу формы появится надпись «Данные о фирме с максимальной выручкой» и все кнопки (кроме “Ввод данных” и “Выход”) должны стать недоступными.

Private Sub Comobrab_Click()

n = List1.ListCount

sc1 = 0: sc2 = 0: sc3 = 0: sc4 = 0: sc5 = 0: max = 0: MI = 0

sc1 = Summa(kol, n)

sc2 = Summa(cena, n)

sc3 = Summa(avia, n)

sc4 = Summa(ob, n)

sc5 = Summa(vir, n)

Ind = IndMax(ob, n)

If n > 0 Then

sc1 = sc1 / n: sc2 = sc2 / n: sc3 = sc3 / n: sc4 = sc4 / n: sc5 = sc5 / n

lblSR.Caption = " Ср.знач. = " + Space(15) + Str(sc1) + Space(25) + Str(sc2) + Space(25) + Str(sc3) + Space(25) + Str(sc4) + Space(25) + Str(sc5)

End If

End Sub

Private Sub Form_Load()

ReDim strana(1)

ReDim vir(1)

ReDim ob(1)

ReDim kol(1)

ReDim cena(1)

ReDim avia(1)

max = 0

k = 0

n = 0

End Sub

'Создание списка из первых к - элементов массивов:

Sub SozdList(k As Integer)

Dim i As Integer

For i = 1 To k

List1.List(i - 1) = StrElem(i)

Next i

End Sub

'Сортировка первых к - элементов массива:

Sub SortMas(Mas(), k As Integer)

Dim i As Integer, j As Integer, F As Integer

For i = 1 To k - 1

For j = i + 1 To k

F = 0

Select Case OptUb

Case True: If Mas(i) < Mas(j) Then F = 1

Case False: If Mas(i) > Mas(j) Then F = 1

End Select

If F = 1 Then

strana(0) = strana(i): strana(i) = strana(j): strana(j) = strana(0)

kol(0) = kol(i): kol(i) = kol(j): kol(j) = kol(0)

cena(0) = cena(i): cena(i) = cena(j): cena(j) = cena(0)

avia(0) = avia(i): avia(i) = avia(j): avia(j) = avia(0)

ob(0) = ob(i): ob(i) = ob(j): ob(j) = ob(0)

vir(0) = vir(i): vir(i) = vir(j): vir(j) = vir(0)

End If

Next j, i

End Sub

Private Sub List1_Click()

k = List1.ListIndex

s = List1.List(k)

s = s + " "

L = Len(s): sl = "": nom = 0

For i = 1 To L

c = Mid(s, i, 1)

If c <> " " Then sl = sl + c

If c = " " And sl <> "" Then

nom = nom + 1

Select Case nom

Case 1: Txtstrana = sl

Case 2: Txtkol = sl

Case 3: Txtcena = sl

Case 4: Txtavia = sl

Case 5: Txtob = sl

Case 6: Txtvir = sl

End Select

End If

If c = " " Then sl = ""

Next i

cmdUdal.Enabled = True

cmdIzm.Enabled = True

End Sub

Private Sub Option1_Click()

End Sub

Private Sub Optavia_Click()

SortMas avia, n

SozdList n

End Sub

Private Sub Optcena_Click()

SortMas cena, n

SozdList n

End Sub

Private Sub Optkol_Click()

SortMas kol, n

SozdList n

End Sub

Private Sub Optob_Click()

SortMas ob, n

SozdList n

End Sub

Private Sub optstr_Click()

SortMas strana, n

SozdList n

End Sub

Private Sub Optvir_Click()

SortMas vir, n

SozdList n

End Sub

Private Sub Txtstrana_Change()

strana(0) = Txtstrana

End Sub

Private Sub Txtkol_Change()

kol(0) = Val(Txtkol)

End Sub

Private Sub Txtcena_Change()

cena(0) = Val(Txtcena)

End Sub

Private Sub Txtavia_Change()

avia(0) = Val(Txtavia)

End Sub

Private Sub Txtob_Change()

ob(0) = Val(Txtob)

End Sub

Private Sub Txtvir_Change()

vir(0) = Val(Txtvir)

End Sub

Модуль

Public strana()

Public vir()

Public ob()

Public kol()

Public cena()

Public avia()

' Подсчет суммы элементов в массиве:

Function Summa(Mas(), k As Integer) As Currency

Dim i As Integer, s As Variant

s = 0

For i = 1 To k

s = s + Mas(i)

Next i

Summa = s

End Function

' Нахождение номера первого максимального элемента в массиве:

Function IndMax(Mas(), k As Integer) As Integer

Dim i As Integer, s As Integer

s = 1

For i = 2 To k

If Mas(i) > Mas(s) Then s = i

Next i

IndMax = s

End Function

' Удаление j - ого элемента из массива:

Sub SdvigElem(Mas(), j As Integer)

Dim i As Integer

For i = j To n - 1

Mas(i) = Mas(i + 1)

Next i

End Sub

' Выделение из строки к - ого слова:

Function Slovo(st As String, k As Integer) As String

Dim s As String, c As String

Dim i As Integer, nom As Integer

Dim L As Integer

st = st + " "

L = Len(st) ' кол-во символов в строке

s = "": nom = 0

For i = 1 To L

c = Mid(st, i, 1) ' i - й символ строки

If c <> " " Then s = s + c

If c = " " And s <> "" Then

nom = nom + 1 ' номер текущего слова в строке

If nom = k Then Exit For

s = ""

End If

Next i

Slovo = s

End Function

' Создание массивов из полей первых к - элементов списка:

Sub SozdMas(k As Integer)

Dim i As Integer

n = k

ReDim strana(n), kol(n), cena(n), VR(n)

For i = 1 To n

s = List1.List(i - 1)

strana(i) = Slovo(s, 1)

cena(i) = Val(Slovo(s, 2))

kol(i) = Val(Slovo(s, 3))

avia = (i) = Val(Slovo(s, 4))

ob(i) = cena(i) + avia(i)

vir(i) = cena(i) / kol(i)

Next i

End Sub

' Создание строки из i - х элементов массивов:

Function StrElem(n As Integer) As String

Dim s As String, L As Integer

Dim x As Currency

L = Len(strana(n))

s = " " + strana(n) + Space(16 - L)

L = Len(Str(kol(n)))

s = s + Str(kol(n)) + Space(15 - L)

x = cena(n)

L = Len(Str(x))

s = s + Str(x) + Space(15 - L)

x = avia(n)

L = Len(Str(x))

s = s + Str(x) + Space(15 - L)

x = ob(n)

L = Len(Str(x))

s = s + Str(x) + Space(15 - L)

x = vir(n)

L = Len(Str(x))

s = s + Str(x)

StrElem = s

End Function

' Создание списка из элементов массива после его сортировки:

Sub SortList(Mas(), k As Integer)

Dim i As Integer

SortMas Mas, k

If OptUb Then

lblSort.Caption = " Сортировка списка по убыванию"

Else

lblSort.Caption = " Сортировка списка по возрастанию"

End If

SozdList k

End Sub