Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая по КП

.doc
Скачиваний:
7
Добавлен:
16.12.2013
Размер:
828.93 Кб
Скачать

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

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

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

«Государственный Университет Управления»

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

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

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

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

Выполнила студентка

Проверил ____________ /Канаков А.Г

МОСКВА 2005

Задание курсового проекта

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

№ п/п

Табельный номер

Фамилия

Профессия

Разряд

Цех

Выработка

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

  2. По каждой профессии дать все сведения о рабочих

  3. По каждому разряду дать сведения о численности и средней выработке рабочих.

Создать таблицу Access из 15 записей (строк), считать данные таблицы в среду Visual Basic, вывести на экран в массив List. Проект должен содержать 4 формы: 1 – общая, 2 – по первому заданию и т.д. Обеспечить возможность добавления и удаления записей, используя динамические массивы.

Вид таблицы базы данных

Функциональная схема курсового проекта

ФОРМА №4

Решение 3-го пункта задания

Элементы управления

Label

TextBox

MSFlexGrid

Command Button

Свойства элементов управления соответствуют общепринятым значениям

Программа решения 3-го задания

Вид формы № 1

Программа считывания базы данных в массив, вывода массива на форму, добавления и удаления записей

Private Sub Command1_Click() 'программа добавления записей

Data1.Recordset.AddNew 'добавление записи в базу данных через Text1

End Sub

Private Sub Command2_Click()

'программа удаления записей, предварительно введенной в Text1 с помощью

'элемента управления Data1

If MsgBox("Действительно удалить запись для " + Data1.Recordset.Fields("FAM") + "?" , vbYesNo) = vbYes Then

Data1.Recordset.Delete 'удаление записи

N = N - 1 'кол-во записей

Data1.Recordset.MoveNext 'переход на следующую запись

If Data1.Recordset.EOF Then Data1.Recordset.MoveLast 'переход на последнюю запись

End If

End Sub

Private Sub Command3_Click() 'удаление записи по заданному номеру

Dim K As String 'номер удаляемой записи

K = InputBox("Введите номер строки удаляемой записи")

Data1.Recordset.MoveFirst 'переход на первую строку записи в базе данных

Do While Text1 <> "" 'делать пока шифр не равен пустому

If Text1 = K Then Data1.Recordset.Delete: GoTo 10 'если номер записи совпадает с К

Data1.Recordset.MoveNext 'переход на последующие строки базы данных

Loop

10 Data1.Refresh 'Обновление базы данных

End Sub

Private Sub Command4_Click() 'считывание информации из базы данных

N = 0 'кол-во записей в базе данных

Data1.Recordset.MoveFirst 'переход на первую строку записи в базе данных

Do While Text1 <> "" 'определение кол-ва строк в базе данных

N = N + 1

Data1.Recordset.MoveNext 'переход на последующие строки базы данных

Loop

ReDim MS(1 To N) As ZAP 'переобъявление массива записей

Data1.Recordset.MoveFirst 'переход на первую строку записи в базе данных

For I = 1 To N 'формирование массива записей

With MS(I) 'подключение оператора присоединения

.NP = Text1

.TN = Text2

.FAM = Text3

.PROF = Text4

.RAZR = Text5

.CEH = Text6

.VRB = Text7

End With

Data1.Recordset.MoveNext 'переход на последующие строки базы данных

Next I

For I = 1 To 7 'очистка экрана

List1.Clear

Next I

For I = 1 To N 'вывод массива на форму

With MS(I) 'подключение оператора присоединения

List1.List(I - 1) = .NP

List2.List(I - 1) = .TN

List3.List(I - 1) = .FAM

List4.List(I - 1) = .PROF

List5.List(I - 1) = .RAZR

List6.List(I - 1) = .CEH

List7.List(I - 1) = .VRB

End With

Next I

End Sub

Private Sub Command5_Click() 'переход на форму 2

Form1.Hide 'убрать форму с экрана

Form2.Show 'отобразить форму на экране

End Sub

Private Sub Command6_Click() 'переход на форму 3

Form1.Hide 'убрать форму с экрана

Form3.Show 'отобразить форму на экране

End Sub

Private Sub Command7_Click() 'переход на форму 4

Form1.Hide 'убрать форму с экрана

Form4.Show 'отобразить форму на экране

End Sub

Private Sub Command8_Click() 'выход из проекта

End

End Sub

Вид формы № 1 после старта программы

Вид формы № 2 решения 1-го пункта задания

Программа решения 1-го пункта задания

Private Sub Command1_Click()

Dim SR As Integer 'средняя выработка

Dim CH As Integer 'заданный шифр цеха

Dim KOl As Integer 'кол-во рабочих

Dim SUM As Integer 'общяя выработка

1 CH = InputBox("Введите номер цеха")

Text1.Text = CH

KOl = 0

SUM = 0

For I = 1 To N 'цикл доступа к элементам массива

If MS(I).CEH = CH Then

KOl = KOl + 1

SUM = SUM + MS(I).VRB

End If

Next I

If SUM = 0 Then Print ("Ошибка ввода шифра цеха"): GoTo 1

SR = SUM / KOl

Text2.Text = SR

End Sub

Private Sub Command5_Click()

Form2.Hide 'убрать форму с экрана

Form1.Show 'отобразить форму на экране

End Sub

Private Sub Command3_Click()

Form2.Hide 'убрать форму с экрана

Form3.Show 'отобразить форму на экране

End Sub

Private Sub Command4_Click()

Form2.Hide 'убрать форму с экрана

Form4.Show 'отобразить форму на экране

End Sub

Private Sub Command2_Click()

End

End Sub

Вид формы № 2 после старта программы

Вид формы № 3 решения 2-го пункта задания

Программа решения 2-го пункта задания

Private Sub Command1_Click()

Dim R() As String 'массив разных профессий

ReDim R(1 To N) As String

Dim K As Integer ' количесвто разных профессий

Dim F As Byte 'флажок

Dim L As Integer 'вспомогательная переменная

Dim SP As String 'переменная для вывода

K = 0 'кол-во разных профессий

For I = 1 To N 'формирование массива профессий

F = 0

For J = 1 To K 'доступ к массиву профессий

If MS(I).PROF = R(J) Then F = 1: J = K 'профессия есть в массиве профессий

Next J

If F = 0 Then K = K + 1: R(K) = MS(I).PROF 'профессии нет в массиве профессий

Next I

For I = 1 To N - 1 'сортировка по фамилиям

For J = I + 1 To N

If MS(I).FAM > MS(J).FAM Then MAS = MS(I): MS(I) = MS(J): MS(J) = MAS

Next J

Next I

SP = ""

For I = 1 To K 'вывод разных профессий на экран

SP = SP + R(I) + " "

Next I

Text1.Text = SP

With MSFlexGrid1 'подключение оператора присоединения

.Rows = N + 1 'кол-во столбцов с учетом заголовка

.Cols = 6 'кол-во столбцов

.TextMatrix(0, 0) = "Профессия" 'формирование заголовка таблицы

.TextMatrix(0, 1) = "Табельный номер"

.TextMatrix(0, 2) = "Фамилия"

.TextMatrix(0, 3) = "Разряд"

.TextMatrix(0, 4) = "Цех"

.TextMatrix(0, 5) = "Выработка"

.RowHeight(0) = 300 'задание высоты заголовка

.ColWidth(0) = 1500 'задание ширины столбцов

.ColWidth(1) = 800

.ColWidth(2) = 3500

.ColWidth(3) = 800

.ColWidth(4) = 800

.ColWidth(4) = 800

L = 0 'счетчик номеров строк выводимой информации

For J = 1 To K 'доступ к масиву профессий

F = 0 'начальное значение флажка

For I = 1 To N 'доступ к массиву записей базы данных

If R(J) <> MS(I).PROF Then GoTo 10 'к след. записи массива базы данных

If F = 0 Then 'флажковая развилка -первая запиь данного разряда

F = 1 'изменение начального значения

L = L + 1 'номер строки вывода

.TextMatrix(L, 0) = MS(I).PROF

.TextMatrix(L, 1) = MS(I).TN

.TextMatrix(L, 2) = MS(I).FAM

.TextMatrix(L, 3) = MS(I).RAZR

.TextMatrix(L, 4) = MS(I).CEH

.TextMatrix(L, 5) = MS(I).VRB

Else 'не первая запись данного разряда

L = L + 1 'номер строки вывода

.TextMatrix(L, 0) = ""

.TextMatrix(L, 1) = MS(I).TN

.TextMatrix(L, 2) = MS(I).FAM

.TextMatrix(L, 3) = MS(I).RAZR

.TextMatrix(L, 4) = MS(I).CEH

.TextMatrix(L, 5) = MS(I).VRB

End If

10 Next I

Next J

End With

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Command3_Click()

Form3.Hide 'убрать форму с экрана

Form1.Show 'отобразить форму на экране

End Sub

Private Sub Command4_Click()

Form3.Hide 'убрать форму с экрана

Form2.Show 'отобразить форму на экране

End Sub

Private Sub Command5_Click()

Form3.Hide 'убрать форму с экрана

Form4.Show 'отобразить форму на экране

End Sub

Вид формы № 3 после старта проекта

Вид формы № 4 решения 3-го пункта задания

Программа решения 3-го пункта задания

Private Sub Command1_Click()

Dim RZ() As Integer 'массив разрядов

ReDim RZ(1 To N) As Integer 'переобявление массива разрядов

Dim SP As String 'переменная для вывода разрядов

Dim K As Integer 'кол-во разрядов

Dim L As Integer 'вспомогательная переменная

Dim K1 As Integer 'кол-во рабочих одного разряда

Dim VR As Integer 'общая выработка рабочих одного разряда

Dim SRVRB As Single 'средняя выработка

K = 0 'кол-во разных разрядов

For I = 1 To N 'формирование массива разрядов

For J = 1 To K 'доступ к массиву разрядов

If MS(I).RAZR = RZ(J) Then GoTo 10 'разряд есть в массиве разрядов

Next J

K = K + 1: RZ(K) = MS(I).RAZR 'разрядов нет в массиве разрядов

10 Next I

SP = ""

For I = 1 To K

SP = SP + Str(RZ(I)) + " "

Next I

Text1.Text = SP 'вывод разрядов на экран

With MSFlexGrid1 'подключение оператора присоединения

.Rows = N + 1 'кол-во столбцов с учетом заголовка

.Cols = 3 'кол-во столбцов

.TextMatrix(0, 0) = "Разряд" 'формирование заголовка таблицы

.TextMatrix(0, 1) = "Число рабочих"

.TextMatrix(0, 2) = "Средняя выработка"

.RowHeight(0) = 300 'задание высоты заголовка

.ColWidth(0) = 2000 'задание ширины столбцов

.ColWidth(1) = 1500

.ColWidth(2) = 1500

L = 0 'счетчик номеров строк выводимой информации

For J = 1 To K 'доступ к массиву разрядов

K1 = 0 'кол-во рабочих одного разряда

VR = 0 'общяя выработка рабочих одного разряда

For I = 1 To N 'доступ к массиву базы данных

If MS(I).RAZR = RZ(J) Then K1 = K1 + 1: VR = VR + MS(I).VRB

Next I

SRVRB = VR / K1 'средний стаж по профессии

L = L + 1 'номер строки вывода

.TextMatrix(L, 0) = RZ(J)

.TextMatrix(L, 1) = K1

.TextMatrix(L, 2) = SRVRB

Next J

End With

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Command3_Click()

Form4.Hide 'убрать форму с экрана

Form1.Show 'отобразить форму на экране

End Sub

Private Sub Command4_Click()

Form4.Hide 'убрать форму с экрана

Form2.Show 'отобразить форму на экране

End Sub

Private Sub Command5_Click()

Form4.Hide 'убрать форму с экрана

Form3.Show 'отобразить форму на экране

End Sub

Вид формы № 4 после старта программы

Программа модуля

Option Explicit

Public Type ZAP

NP As Integer

TN As Integer

FAM As String * 15

PROF As String * 15

RAZR As Integer

CEH As Integer

VRB As Integer

End Type

Global MAS As ZAP

Global MS() As ZAP

Global N As Integer

Global I As Integer, J As Integer

Заключение

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

Во-первых, не понравился порядок, в котором нам давались лекции. Мне кажется, что вопрос № 14 «Основные операторы Visual Basic» следовало дать раньше, тогда бы это избавило нас от многих проблем в начале нашего курса. Потом, мне кажется, что часть одной из первых лекций можно было посвятить «Введению в Visual Basic», в котором рассказать самые элементарные вещи, такие как стандартные обозначения переменных, структура цикла и т.д. Потому как, вспоминая первые лекции, могу отметить, что я просто списывала с доски непонятные мне обозначения, совершенно не понимая, что это и зачем это нужно.

Во-вторых, просмотрев варианты своих одногруппников, я заметила неравносильность некоторых заданий. Я за 30 минут смогла решить лабораторную работу № 6 своей подруги и до сих пор не могу справиться со своей собственной.

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

К положительным моментам курса я отношу:

1. Количество лабораторных работ, домашних заданий и т.д. Потому как по-настоящему разбираться в Visual Basic’е можно будет лишь благодаря практике. И чем её больше, тем лучше.

2. Система получения автоматов. По-моему, система – очень правильная, потому как автоматы получают именно те люди, которые их заслужили, а не те, кто больше запомнился преподавателю.

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

В целом, от пройденного курса я осталась довольна. И если в будущем мне предстоит столкнуться с языком программирования Visual Basic, я думаю, я достойно справлюсь с поставленными передо мной задачами.

Список используемой литературы

  1. Канаков А.Г. Методические указания к практическим занятиям по разделу «Разработка приложений в различных программных средах» на языке Visual Basic дисциплины «Компьютерная подготовка» / ГУУ.-М., 2003

  2. Канаков А.Г. Методические указания к выполнению лабораторных и домашних работ по дисциплине «Компьютерная подготовка» на языке Visual Basic / ГУУ.-М., 2004.

  3. Ананьев А.И., Федоров А.Ф. Самоучитель Visual Basic 6.0. / БХВ-Петербург.-СПб., 2003

Содержание:

  1. Задание курсового проекта…………………………………………………………..…2

  2. Вид таблицы базы данных…………………………………………………………..….3

  3. Функциональная схема курсового проекта………………………………….…….…..4

  4. Вид формы № 1……………………………………………………………………….…5

  5. Программа считывания базы данных в массив, вывода массива на форму, добавления и удаления записей………………………………………………………...6

  6. Вид формы № 1 после старта программы……………………………………….……..8

  7. Вид формы № 2 решения 1-го пункта задания………………………………………...9

  8. Программа решения 1-го пункта задания……………………………………………..10

  9. Вид формы № 2 после старта программы…………………………………………….11

  10. Вид формы № 3 решения 2-го пункта задания……………………………………….12

  11. Программа решения 2-го пункта задания……………………………………………..13

  12. Вид формы № 3 после старта проекта………………………………………………...15

  13. Вид формы № 4 решения 3-го пункта задания……………………………………….16

  14. Программа решения 3-го пункта задания……………………………………………..17

  15. Вид формы № 4 после старта программы…………………………………………….19

  16. Программа модуля……………………………………………………………………...20

  17. Заключение……………………………………………………………………………...21

  18. Список используемой литературы…………………………………………………….22

  19. Содержание……………………………………………………………………………..23

24