|
|
Таблица идентификаторов, исходные данные и результаты обработкиОГЛАВЛЕНИЕ ЗАДАНИЕ.......................................................................................3 ВВЕДЕНИЕ....................................................................................5 ТАБЛИЦА ИДЕНТИФИКАТОРОВ.................................................10 СТРУКТУРА ПРОГРАММЫ.........................................................11 3. ТЕКСТ ПРОГРАММЫ..................................................................14 ИСХОДНЫЕ ДАННЫЕ И РЕЗУЛЬТАТЫ ОБРАБОТКИ...................29 СПИСОК ЛИТЕРАТУРЫ. .................................................................32 ПРИЛОЖЕНИЯ..............................................................................33 ЗАДАНИЕ Общая часть задания. В среде Access создать две таблицы, каждая не менее 10 записей. Записи, не упорядоченные ни по какому реквизиту. Распечатать обе таблицы в форме отчета с необходимыми заголовками. Сформировать запросы. Средствами Visual Basic обеспечить доступ к базам данных в среде Access и выполнить требуемую обработку. Результаты сохранить в файле и отобразить в отчете. Все задания можно оформить в виде процедур, объединенных в меню с использованием заставки пароля. Осуществить экспорт файлов базы данных в среду Visual Basic, выполнить требуемую обработку. Детализованное задание. Создать первую таблицу в Access с исходными данными о предприятиях города. О каждом предприятии известно: код, название, год начала внедрения новых технологий (период с 1996 по 2000 г.). Создать 2-ю таблицу в Access c данными о тех же предприятиях: код, затраты на внедрение на каждый год пятилетки, начиная с начала года, число предприятий не определенно. Разработать запросы для решений следующих задач: напечатать справку о суммарных затратах на каждый год периода (с 1996 г.) напечатать справку о пяти предприятиях с наибольшими суммарными затратами, определить предприятие с самым поздним началом внедрения. Разработать форму и программу на Visual Basic, обеспечивающую доступ к базе данных и позволяющую: напечатать справку о предприятиях, в которых средние годовые затраты больше общего среднего значения годовых затрат, напечатать справку о предприятиях с годом начала позже заданного. Осуществить экспорт базы данных в Visual Basic. Разработать форму и программу на Visual Basic, позволяющую считать запись этих файлов, отображать их на экране в виде списка и напечатать справку для произвольно задаваемых кодами предприятий. Число таких предприятий неопределенно. Записать эти сведения в файл. ВВЕДЕНИЕ Системы управления базами данных С развитием информационных технологий происходил рост той части работы, которую человек хотел переложить на компьютеры, но существовавшая "на заре человечества" файловая система не позволяла организовать сложную структуру данных и поддерживать ее работу. Производились различные настройки над файловой системой, что на мой взгляд явилось предпосылками построения систем управления базами данных (СУБД). Существует несколько потребностей, которые не покрываются возможностями систем управления файлами: поддержание логически согласованного набора файлов; обеспечение языка манипулирования данными; восстановление информации после разного рода сбоев; реально параллельная работа нескольких пользователей. Можно считать, что если прикладная информационная система опирается на некоторую систему управления данными, обладающую этими свойствами, то эта данными является системой управления базами данных (СУБД). Основные функции СУБД К числу функций СУБД (с пользой для пользователей систем) принято относить следующее: Непосредственное управление данными во внешней памяти; Управление буферами оперативной памяти; Управление транзакциями; Журнализация; Языки БД. Первые четыре понятия достаточно сложны и раскрытие их требует более глубокого изучения СУБД, что не входит в задание, поэтому они были лишь перечислены, а пятый пункт языки БД мы раскроем детально. Языки БД Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Мы рассмотрим более подробно языки ранних СУБД в следующей лекции. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language). Прежде всего язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом именование объектов БД (для реляционной БД - именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. Внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов. Язык SQL содержит специальные средства определения ограничений целостности БД. Опять же ограничения целостности хранятся в специальных таблицах-каталогах, и обеспечение контроля целостности БД производится на языковом уровне, т.е. при компиляции операторов модификации БД компилятор SQL на основании имеющихся в БД ограничений целостности генерирует соответствующий программный код. Специальные операторы языка SQL позволяют определять так называемые представления БД, фактически являющиеся хранимыми в БД запросами (результатом любого запроса к реляционной БД является таблица) с именованными столбцами. Для пользователя представление является такой же таблицей, как любая базовая таблица, хранимая в БД, но с помощью представлений можно ограничить или наоборот расширить видимость БД для конкретного пользователя. Поддержание представлений производится также на языковом уровне. Наконец, авторизация доступа к объектам БД производится на основе специального набора операторов SQL. Идея состоит в том, что для выполнения операторов SQL разного вида пользователь должен обладать различными полномочиями. Пользователь, создавший таблицу БД, обладает полным набором полномочий для работы с этой таблицей. В их число входит полномочие на передачу всех или части полномочий другим пользователям, включая полномочие на передачу полномочий. Полномочия пользователей описываются в специальных таблицах-каталогах, контроль полномочий поддерживается на языковом уровне. Типовая организация современной СУБД Естественно, организация типичной СУБД и состав ее компонентов соответствует рассмотренному нами набору функций. Напомним, что мы выделили следующие основные функции СУБД: управление данными во внешней памяти; управление буферами оперативной памяти; управление транзакциями; журнализация и восстановление БД после сбоев; поддержание языков БД. Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть - ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других - нет, но логически такое разделение можно провести во всех СУБД. Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Как можно было понять из первой части этой лекции, функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ), и утилитах БД. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры "клиент-сервер" ядро является основным составляющим серверной части системы. Основная функция компилятора языка БД - компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, т.е. в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не процедура, она лишь описывает в некоторой форме условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка, прежде чем произвести программу. Применяются достаточно сложные методы оптимизации операторов. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка. Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и разгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра. 1. ТАБЛИЦА ИДЕНТИФИКАТОРОВ Для выполнения данного задания был выбран наиболее функциональный Access 2000. В данном программном продукте компании Microsoft соединены все лучшие стороны всех предыдущих версий данного продукта. С помощью встроенных функций Access 2000 была создана база данных и 2 таблицы одна из которых главная, а другая подчиненная. Таблица Master Имя идентификатора поля Тип Num Счетчик - содержит автоматически создаваемые при внесении новой записи уникальные номера. Kod Код предприятия Name Наименование предприятия Date Дата начала внедрения новых технологий Таблица Detail Имя идентификатора поля Тип Num Счетчик Kod Код предприятия Year Год вычисления затрат MoneyOfYear Сумма затрат в год вычисления затрат В данные таблицы были занесены данные о предприятиях средствами Access. 2. СТРУКТУРА ПРОГРАММЫ В Access 2000 существует несколько возможностей подготовки запросов: - с помощью мастера; - в режиме SQL. Запросы для решения поставленных задач были созданы в режиме SQL, так как мастер запросов не обладает такой гибкостью как язык SQL: Справка о суммарных затратах на каждый год периода (с 1996 г.). Запрос S1: SELECT detail.Year, Sum(detail.MoneyOfYear) AS [sum] FROM detail GROUP BY detail.Year; Справка о пяти предприятиях с наибольшими суммарными затратами Запрос S2_1 (вспомогательный): SELECT SUM(MoneyOfYear) AS [sum], kod FROM detail GROUP BY kod; Запрос S2: SELECT TOP 5 master.name, S2_1.sum FROM master INNER JOIN S2_1 ON master.kod = S2_1.kod; Предприятие с самым поздним началом внедрения Запрос S3: SELECT TOP 1 master.Date, master.Name FROM master ORDER BY master.Date DESC; Справка о предприятиях, в которых средние годовые затраты больше общего среднего значения годовых затрат Запрос S4_1 (вспомогательный): SELECT AVG(MoneyOfYear) AS [avg] FROM detail; Запрос S4_2 (вспомогательный): SELECT AVG(MoneyOfYear) AS [avg], kod FROM detail GROUP BY kod; Запрос S4: SELECT master.Name, S4_2.avg FROM S4_1, S4_2 INNER JOIN master ON S4_2.kod = master.Kod WHERE (((S4_2.avg)>[S4_1].[avg])); Справка о предприятиях с годом начала позже заданного Запрос S4: SELECT name, date FROM master WHERE date>intYear; После создания запросов в среде Access 2000 было произведено преобразование базы данных к предыдущей версии Access средствами самой среды. Это было сделано для совместимости данной БД с предыдущими версиями. Теперь переводим работы в область разработки приложений средствами Visual Basic. Для этого создаем проект в среде Visual Basic и создаем интерфейс для доступа к базе данных Access. Данная программа будет позволять просматривать, добавлять и изменять данные по предприятиям. Формы программы представлены на рис. 1. Данное приложение через пункт меню Печать позволяет сохранять в файл и выводить на печать собственными средствами 5 заданных справок. Имена файлов S1.txt, S2.txt, S3.txt, S4.txt, S5.txt соответственно. Рис.1 Формы программы. 3. ТЕКСТ ПРОГРАММЫ Действующая программа прилагается на магнитном носителе. Листинг: Form1 Public intKod As Integer общая переменная для всех модулей - значение кода записи Dim Db As Database, Rs As Recordset текущие перем. для выполнения SQL запросов Dim Myrec As String перем. для работы со строкой в файле Dim filename As String перем. имени файла Dim intN As Integer счетчик Public intYear As Integer перем. значение года в записи Public Ins As Boolean перем.-флаг записи в таблицу Private Sub Command1_Click() Ins = True intKod = 0 Form2.Show vbModal, Me вызов модальной формы End Sub Private Sub Command2_Click() Ins = False intKod = Data1.Recordset.Fields("KOD").Value & "" Form2.Show vbModal, Me вызов модальной формы End Sub Private Sub Command3_Click() Dim query As QueryDef запрос на удаление из подчиненной таблицы Set query = Db.CreateQueryDef("Del", "DELETE FROM detail WHERE kod=" & Data1.Recordset.Fields("KOD").Value) query.Execute Db.QueryDefs.Delete ("Del") Data1.Recordset.Delete End Sub Private Sub DBGrid1_DblClick() Ins = False intKod = Data1.Recordset.Fields("KOD").Value & "" Form2.Show vbModal, Me вызов модальной формы End Sub Private Sub Exit_Click() Unload Form1 выгрузка формы из памяти End Sub Private Sub Form_Activate() DBGrid1.Refresh обновление табличного элемента управления End Sub Private Function format(s As String, kol As Integer) функция форматирующая строку Do While Len(s) < kol s = s & " " Loop If Len(s) > kol Then s = Mid(s, 1, kol) format = s End Function Private Sub Form_Load() Set Db = Workspaces(0).OpenDatabase("C:Kursdb2.mdb") открытие БД End Sub Private Sub S1_Click() /////////S1 Set Rs = Db.OpenRecordset("SELECT year, SUM(MoneyOfYear) as sum FROM detail GROUP BY year", dbOpenDynaset) Set Data2.Recordset = Rs Open "c:kurss1.txt" For Output As 1 Print #1, Print #1, Print #1, "Справка о суммарных затратах на каждый год периода (с 1996 г.)" Print #1, " _______________________________________________" Print #1, "| №п/п | Год периода | Сумма |" Print #1, " _______________________________________________" intN = 1 Do While Not Data2.Recordset.EOF Print #1, "|" & format(CStr(intN), 6) & "|" & format(CStr(Data2.Recordset.Fields("year").Value), 17) & "|" & format(CStr(Data2.Recordset.Fields("sum").Value), 22) & "|" Data2.Recordset.MoveNext intN = intN + 1 Loop Print #1, " _______________________________________________" Close #1 filename = "c:kurss1.txt" Dim nnn As Integer nnn = 0 Printer.Orientation = 1 Printer.FontName = "Courier New Cyr" Printer.FontBold = True Printer.FontSize = 10 Open filename For Input As 1 Do While Not EOF(1) Line Input #1, Myrec nnn = nnn + 1 Printer.Print Tab(1); Spc(10); Myrec Loop Close #1 Printer.EndDoc End Sub Private Sub S2_Click() /////////S2 Set Rs = Db.OpenRecordset("SELECT SUM(MoneyOfYear) AS sum, kod FROM detail GROUP BY kod", dbOpenDynaset) Set Data2.Recordset = Rs Open "c:kurss2.txt" For Output As 1 Print #1, Print #1, Print #1, "Пять предприятий с наибольшими суммарными затратами" Print #1, " _________________________________________________________________________" Print #1, "| №п/п | Наименование предприятия | Сумма |" Print #1, " _________________________________________________________________________" intN = 1 Do While Not Data2.Recordset.EOF Set Rs = Db.OpenRecordset("SELECT name FROM master WHERE kod=" & Data2.Recordset.Fields("kod").Value, dbOpenDynaset) Set Data3.Recordset = Rs Print #1, "|" & format(CStr(intN), 6) & "|" & format(CStr(Data3.Recordset.Fields("name").Value), 43) & "|" & format(CStr(Data2.Recordset.Fields("sum").Value), 22) & "|" Data2.Recordset.MoveNext intN = intN + 1 Loop Print #1, " _________________________________________________________________________" Close #1 filename = "c:kurss2.txt" Dim nnn As Integer nnn = 0 Printer.Orientation = 1 Printer.FontName = "Courier New Cyr" Printer.FontBold = True Printer.FontSize = 10 Open filename For Input As 1 Do While Not EOF(1) Line Input #1, Myrec nnn = nnn + 1 Printer.Print Tab(1); Spc(10); Myrec Loop Close #1 Printer.EndDoc End Sub Private Sub S3_Click() /////////S3 Set Rs = Db.OpenRecordset("SELECT date, name FROM master ORDER BY date DESC", dbOpenDynaset) Set Data2.Recordset = Rs Open "c:kurss3.txt" For Output As 1 Print #1, Print #1, Print #1, "Предприятие с самым поздним началом внедрения" Print #1, " _________________________________________________________________________" Print #1, "| №п/п | Наименование предприятия | Год начала внедрения |" Print #1, " _________________________________________________________________________" intN = 1 Print #1, "|" & format(CStr(intN), 6) & "|" & format(CStr(Data2.Recordset.Fields("name").Value), 43) & "|" & format(CStr(Data2.Recordset.Fields("date").Value), 22) & "|" Print #1, " _________________________________________________________________________" Close #1 filename = "c:kurss3.txt" Dim nnn As Integer nnn = 0 Printer.Orientation = 1 Printer.FontName = "Courier New Cyr" Printer.FontBold = True Printer.FontSize = 10 Open filename For Input As 1 Do While Not EOF(1) Line Input #1, Myrec nnn = nnn + 1 Printer.Print Tab(1); Spc(10); Myrec Loop Close #1 Printer.EndDoc End Sub Private Sub S4_Click() Dim intAvg As Integer /////////S4 Set Rs = Db.OpenRecordset("SELECT AVG(MoneyOfYear) AS avg FROM detail", dbOpenDynaset) Set Data3.Recordset = Rs intAvg = Data3.Recordset.Fields("avg").Value Set Rs = Db.OpenRecordset("SELECT AVG(MoneyOfYear) AS avg, kod FROM detail GROUP BY kod", dbOpenDynaset) Set Data2.Recordset = Rs Open "c:kurss4.txt" For Output As 1 Print #1, Print #1, Print #1, "Предприятия, в которых средние годовые затраты больше общего среднего значения годовых затрат=" & intAvg Print #1, " __________________________________________________________________________" Print #1, "| №п/п | Наименование предприятия |Средние годовые затраты|" Print #1, " __________________________________________________________________________" intN = 1 Do While Not Data2.Recordset.EOF Set Rs = Db.OpenRecordset("SELECT name FROM master WHERE kod=" & Data2.Recordset.Fields("kod").Value, dbOpenDynaset) Set Data3.Recordset = Rs If Data2.Recordset.Fields("avg").Value > intAvg Then Print #1, "|" & format(CStr(intN), 6) & "|" & format(CStr(Data3.Recordset.Fields("name").Value), 43) & "|" & format(CStr(Data2.Recordset.Fields("avg").Value), 23) & "|" intN = intN + 1 End If Data2.Recordset.MoveNext Loop Print #1, " __________________________________________________________________________" Close #1 filename = "c:kurss4.txt" Dim nnn As Integer nnn = 0 Printer.Orientation = 1 Printer.FontName = "Courier New Cyr" Printer.FontBold = True Printer.FontSize = 10 Open filename For Input As 1 Do While Not EOF(1) Line Input #1, Myrec nnn = nnn + 1 Printer.Print Tab(1); Spc(10); Myrec Loop Close #1 Printer.EndDoc End Sub Private Sub S5_Click() /////////S5 Form4.Show vbModal, Me Set Rs = Db.OpenRecordset("SELECT name, date FROM master WHERE date>" & intYear, dbOpenDynaset) Set Data2.Recordset = Rs Open "c:kurss5.txt" For Output As 1 Print #1, Print #1, Print #1, "Предприятия с годом внедрения технологий позже " & intYear & " года" Print #1, " ___________________________________________________________________________" Print #1, "| №п/п | Наименование предприятия |Год внедрения технологий|" Print #1, " ___________________________________________________________________________" intN = 1 Do While Not Data2.Recordset.EOF Print #1, "|" & format(CStr(intN), 6) & "|" & format(CStr(Data2.Recordset.Fields("name").Value), 43) & "|" & format(CStr(Data2.Recordset.Fields("date").Value), 24) & "|" intN = intN + 1 Data2.Recordset.MoveNext Loop Print #1, " ___________________________________________________________________________" Close #1 filename = "c:kurss5.txt" Dim nnn As Integer nnn = 0 Printer.Orientation = 1 Printer.FontName = "Courier New Cyr" Printer.FontBold = True Printer.FontSize = 10 Open filename For Input As 1 Do While Not EOF(1) Line Input #1, Myrec nnn = nnn + 1 Printer.Print Tab(1); Spc(10); Myrec Loop Close #1 Printer.EndDoc End Sub Form2 Dim Db As Database, Rs As Recordset Dim stat As Boolean функция по фильтрованию записей, не используется Function FilterField(intFilter As Integer) As Recordset Dim Db As Database, rstTemp As Recordset Set Db = Workspaces(0).OpenDatabase("C:Kursdb2.mdb") Set rstTemp = Db.OpenRecordset("DETAIL", dbOpenSnapshot) rstTemp.Filter = "KOD = " & intFilter Set FilterField = rstTemp.OpenRecordset End Function Private Sub Command1_Click() If Text1.Text <> "" Then Set Rs = Db.OpenRecordset("SELECT kod FROM master WHERE kod=" & Text1.Text, dbOpenDynaset) If Rs.RecordCount <> 0 And stat = True Then t = MsgBox("Данный код предприятия уже присутствует в базе данных. Смените его.", 0, "Ошибка") Else Unload Form2 End If End If End Sub Private Sub Command3_Click() Form1.Ins = True Form3.Show vbModal, Me End Sub Private Sub Command4_Click() Form1.Ins = False Form3.Show vbModal, Me End Sub Private Sub Command5_Click() Data2.Recordset.Delete End Sub Private Sub DBGrid1_DblClick() Form1.Ins = False Form3.Show vbModal, Me End Sub Private Sub Form_Activate() Set Rs = Db.OpenRecordset("SELECT Year,MoneyOfYear,kod FROM detail WHERE kod=" & Form1.intKod, dbOpenDynaset) Set Data2.Recordset = Rs DBGrid1.Refresh End Sub Private Sub Form_Load() stat = Form1.Ins Set Db = Workspaces(0).OpenDatabase("C:Kursdb2.mdb", , False) Set Data1.Recordset = Form1.Data1.Recordset Text1.Enabled = False Data1.ReadOnly = False If Form1.Ins = False Then Set Rs = Db.OpenRecordset("SELECT Year,MoneyOfYear,kod FROM detail WHERE kod=" & Form1.intKod, dbOpenDynaset) Set Data2.Recordset = Rs Data2.Refresh DBGrid1.Refresh Else Text1.Enabled = True Data1.Recordset.AddNew End If добавление в ComboBox строк выбора Combo1.AddItem ("1996") Combo1.AddItem ("1997") Combo1.AddItem ("1998") Combo1.AddItem ("1999") Combo1.AddItem ("2000") End Sub Form3 Private Sub Command1_Click() If Form1.Ins = True Then если режим вставки Data1.Recordset.Fields("KOD").Value = Form2.Text1.Text End If Unload Form3 выгрузка формы End Sub Private Sub Form_Load() Set Data1.Recordset = Form2.Data2.Recordset присваиваем текущему набору данных исходный набор If Form1.Ins = True Then Data1.Recordset.AddNew если режим вставки, то добавляем запись End Sub Form4 Private Sub Command1_Click() Form1.intYear = CInt(Combo1.Text) запоминаем введенный в форме год Form4.Hide скрываем форму без ее выгрузки End Sub Private Sub Form_Load() Combo1.Text = "" Combo1.AddItem ("1996") Combo1.AddItem ("1997") Combo1.AddItem ("1998") Combo1.AddItem ("1999") Combo1.AddItem ("2000") End Sub 4. ИСХОДНЫЕ ДАННЫЕ И РЕЗУЛЬТАТЫ ОБРАБОТКИ Допустим имеются следующие данные по предприятиям города: Код Наименование Год начала внедрения новых технологий Затраты на внедрение Год Сумма 1 Саратовский подшипниковый завод 1996 1996 234 1997 346 1998 656 1999 2323 2000 45 2 Радиоприборный завод 1996 1996 1 1997 1 1998 1 1999 22 2000 66666 3 Саратовмука 1998 1998 1 1999 22 2000 66666 4 Полиграфкомбинат №1 1997 1997 971 1998 44 1999 344 2000 56 5 Хлебозавод №3 1999 1999 7777 2000 45444 6 ПО "Бином" 1996 1996 234545 1998 85634 2000 53455 34 Примерное предприятие 1996 1996 5656 1997 19652 1998 7845 1999 21111 10 ООО ТеЛКаТ 1997 1997 16328,45 1998 23442 1999 23524 2000 9564 13 Резерв 1999 1999 52341 2000 90766 15 ГражданПроект 1998 1998 8362 1999 65743 2000 45325 16 ПромПроект 2000 2000 435345 Для того чтобы внести имеющуюся информацию в базу данных необходимо открыть файл "db2.mdb", войти в таблицу "master" и ввести в графу "Kod" - код предприятия, в графу "Name" - название предприятия, в графу "Date" - год начала внедрения новых технологий. Далее нужно войти в таблицу "Detail" и ввести в графу "Kod" - код предприятия, а в графу "Year" и "MoneyOfYear" - годы и соответствующие им затраты на внедрение новых технологий. Запуск программы осуществляется файлом "kurs.exe ". Программа через пункт меню Печать позволяет выводить на печать собственными средствами 5 заданных справок. Справка о суммарных затратах на каждый год периода распечатывается при выборе пункта с одноименным названием в меню Печать (приведена в приложении 1). Справка о пяти предприятиях с наибольшими суммарными затратами распечатывается при выборе пункта с одноименным названием в меню Печать (приведена в приложении 2). Определение и распечатка предприятия с самым поздним сроком внедрения производится при выборе пункта "Предприятие с самым поздним началом внедрения" в меню Печать (приложение 3). Справка о предприятиях, в которых средние годовые затраты больше общего среднего можно распечатать выбрав пункт "Превышение средних годовых затрат" в меню Печать (приложение 4). Напечатать справку о предприятиях с годом начала позже заданного можно выбрав пункт меню Печать "Внедрили технологии с..." (приложение 5). СПИСОК ЛИТЕРАТУРЫ "Visual Basic 6.0 Programmers Guide" Microsoft corporation 1998 Райтингер М., Муч Г. Visual Basic 6.0 - полное руководство. М.:1997 Сигнор Р., Стегман М. Использование ODBC для доступа к базам данных М.: 1999. "Access 2000" Microsoft corporation 2000. Джонс Э., Джонс Дж. М. Ассеss 97: книга ответов - СПб.: Питер, 1998. Приложение 1 Справка о суммарных затратах на каждый год периода (с 1996 г.) _______________________________________________ | №п/п | Год периода | Сумма | _______________________________________________ |1 |1996 |240436 | |2 |1997 |37298.45 | |3 |1998 |125985 | |4 |1999 |173207 | |5 |2000 |813332 | Приложение 2 Пять предприятий с наибольшими суммарными затратами _____________________________________________________________ | №п/п | Наименование предприятия | Сумма | _____________________________________________________________ |1 |Саратовский подшипниковый завод |3604 | |2 |Радиоприборный завод |66691 | |3 |Саратовмука |66689 | |4 |Полиграфкомбинат №1 |1415 | |5 |Хлебозавод №3 |53221 | Приложение 3 Предприятие с самым поздним началом внедрения _____________________________________________________________ | №п/п | Наименование предприятия | Год начала внедрения | _____________________________________________________________ |1 |ПромПроект | 2000 _____________________________________________________________ Приложение 4 Предприятия, в которых средние годовые затраты больше общего среднего значения годовых затрат=38618.2902777778 _____________________________________________________________ | №п/п | Наименование предприятия |Средние годовые затраты| _____________________________________________________________ |1 |ПО "Бином" |124544.666666667 |2 |Резерв |71553.5 |3 |ГражданПроект |39810 |4 |ПромПроект |435345 _____________________________________________________________ Приложение 5 Предприятия с годом внедрения технологий позже 1998 года _____________________________________________________________ | №п/п | Наименование предприятия |Год внедрения технологий| _____________________________________________________________ |1 |Хлебозавод №3 |1999 |2 |Резерв |1999 |3 |ПромПроект |2000 ____________________________________________________________ 2 Работа на этой странице представлена для Вашего ознакомления в текстовом (сокращенном) виде. Для того, чтобы получить полностью оформленную работу в формате Word, со всеми сносками, таблицами, рисунками, графиками, приложениями и т.д., достаточно просто её СКАЧАТЬ. |
|
Copyright © refbank.ru 2005-2024
Все права на представленные на сайте материалы принадлежат refbank.ru. Перепечатка, копирование материалов без разрешения администрации сайта запрещено. |
|