Курсовая по КП
.docФедеральное агентство по образованию
Государственное образовательное учреждение
Высшего профессионального образования
«Государственный Университет Управления»
Институт Информационных Систем Управления
Кафедра компьютерных технологий
КУРСОВОЙ ПРОЕКТ
по дисциплине «Компьютерная подготовка»
Выполнила студентка
Проверил ____________ /Канаков А.Г
МОСКВА 2005
Задание курсового проекта
Заданы следующие структуры записей, все данные по полям которых не упорядочены:
№ п/п |
Табельный номер |
Фамилия |
Профессия |
Разряд |
Цех |
Выработка |
-
Определить среднюю выработку рабочих по заданному номеру цеха.
-
По каждой профессии дать все сведения о рабочих
-
По каждому разряду дать сведения о численности и средней выработке рабочих.
Создать таблицу 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, я думаю, я достойно справлюсь с поставленными передо мной задачами.
Список используемой литературы
-
Канаков А.Г. Методические указания к практическим занятиям по разделу «Разработка приложений в различных программных средах» на языке Visual Basic дисциплины «Компьютерная подготовка» / ГУУ.-М., 2003
-
Канаков А.Г. Методические указания к выполнению лабораторных и домашних работ по дисциплине «Компьютерная подготовка» на языке Visual Basic / ГУУ.-М., 2004.
-
Ананьев А.И., Федоров А.Ф. Самоучитель Visual Basic 6.0. / БХВ-Петербург.-СПб., 2003
Содержание:
-
Задание курсового проекта…………………………………………………………..…2
-
Вид таблицы базы данных…………………………………………………………..….3
-
Функциональная схема курсового проекта………………………………….…….…..4
-
Вид формы № 1……………………………………………………………………….…5
-
Программа считывания базы данных в массив, вывода массива на форму, добавления и удаления записей………………………………………………………...6
-
Вид формы № 1 после старта программы……………………………………….……..8
-
Вид формы № 2 решения 1-го пункта задания………………………………………...9
-
Программа решения 1-го пункта задания……………………………………………..10
-
Вид формы № 2 после старта программы…………………………………………….11
-
Вид формы № 3 решения 2-го пункта задания……………………………………….12
-
Программа решения 2-го пункта задания……………………………………………..13
-
Вид формы № 3 после старта проекта………………………………………………...15
-
Вид формы № 4 решения 3-го пункта задания……………………………………….16
-
Программа решения 3-го пункта задания……………………………………………..17
-
Вид формы № 4 после старта программы…………………………………………….19
-
Программа модуля……………………………………………………………………...20
-
Заключение……………………………………………………………………………...21
-
Список используемой литературы…………………………………………………….22
-
Содержание……………………………………………………………………………..23