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

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

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

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

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

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

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

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

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

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

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

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

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

МОСКВА 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