Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ВВЕДЕНИЕ
В настоящее время, несмотря на повышение компьютеризации общества, в сфере образования до сих пор нет средств, позволяющих в достаточной мере автоматизировать процесс ведения документации и отчетности.
О своевременности и актуальности рассматриваемой проблемы говорит тот факт, что большую часть своего времени администраторы заведений и преподаватели тратят на оформление различной документации и отчетов. Огромное количество учебных заведений и отсутствие предложений в данной сфере гарантируют высокую потребность в данном продукте.
Базы данных (БД) составляют в настоящее время основу компьютерного обеспечения информационных процессов, входящих практически во все сферы человеческой деятельности.
Действительно, процессы обработки информации имеют общую природу и опираются на описание фрагментов реальности, выраженное в виде совокупности взаимосвязанных данных. Базы данных являются эффективным средством представления структур данных и манипулирования ими. Концепция баз данных предполагает использование интегрированных средств хранения информации, позволяющих обеспечить централизованное управление данными и обслуживание ими многих пользователей. При этом БД должна поддерживаться в среде ЭВМ единым программным обеспечением, называемым системой управления базами данных (СУБД). СУБД вместе с прикладными программами называют банком данных.
Дипломная работа посвящена анализу проектирования баз данных, а также освещению методов построения форм на примере построения программы ведения электронной документации учебного заведения. В качестве инструмента построения базы данных использован Microsoft Access. С самого начала эту СУБД отличала простота использования в сочетании с широкими возможностями по разработке законченных приложений.
1. ОБЩАЯ ЧАСТЬ
Информационные технологии развиваются с невероятной скоростью. Лет 15 назад компьютеры были не так распространены. Да и никто не мог подумать, что будет такой прогресс в этой сфере. Сейчас, практически, у каждого в квартире есть компьютер, и у всех есть мобильные телефоны, коммуникаторы и т.д. Все становится автоматизированным.
Целью разработки проекта является создание и разработка информационной системы для среднеобразовательных учебных заведений, которая позволит вести учет учеников, преподавателей и технического персонала, предоставляемых школой.
1.2. Анализ средств программирования
1.2.1. Обзор методов решения
Есть много языков программирования, на которых можно было бы написать эту программу: Visual Basic, Delphi, C++. Для этого дипломного проекта выбран язык програмированния Delphi, потому что это достаточно легкий и понятный язык.
Дипломный проект написан на Delphi 7 с помощью СУБД Access.
1.2.2. Описание языка
1.2.2.1.Общие сведения
В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать.
Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах.
Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.
Delphi современная система программирования. Назначение Delphi быстрая разработка приложений. С ее помощью можно быстро и качественно создавать любые программы: от простейшего калькулятора до многоуровневой системы управления предприятием.
Программирование в Delphi строится на тесном взаимодействии двух процессов: процесса конструирования визуального проявления программы (т. е. ее Windows-окна) и процесса написания кода, придающего элементам этого окна и программе в целом необходимую функциональность. Для написания кода используется окно кода, для конструирования программы - остальные окна Delphi, и прежде всего - окно формы.
Между содержимым окон формы и кода существует неразрывная связь, которая строго отслеживается Delphi. Это означает, что размещение на форме компонента приводит к автоматическому изменению кода программы и наоборот - удаление тех или иных автоматически вставленных фрагментов кода может привести к удалению соответствующих компонентов. Помня об этом, программисты вначале конструируют форму, размещая на ней очередной компонент, а уже только после этого переходят, если это необходимо, к писанию фрагмента кода, обеспечивающего требуемое поведение компонента в работающей программе. Вот почему наше знакомство с Delphi-программированием мы начинаем с окна формы.
Одним из достоинств среды программирования Delphi это система подсказок. В процессе набора текста программы редактор кода выводит справочную информацию. Например, если на форме располагается компонент кнопка Button1 и, когда пользователь в окне кода программы напишет Button1 и поставит точку, то появится окно с параметрами процедур и функций, свойствами и методами объектов. Система подсказок существенно облегчает процесс подготовки текста программы, избавляет от рутины. Кроме того, если во время набора программы подсказка не появилась, это значит, что программист допустил ошибку: скорее всего, неверно набрал имя процедуры или функции.
1.2.2.2. Способы структурирования программы
Любой проект имеет, по-крайней мере, шесть файлов, связанных с ним. Три из них относятся к управлению проектом из среды и напрямую программистом не меняются. Вот эти файлы:
Разумеется, если сохранить проект под другим именем, то изменят название и файлы с расширением RES, OPT и DSK.
После компиляции программы получаются файлы с расширениями:
DCU - скомпилированные модули
EXE - исполняемый файл
DSM - служебный файл для запуска программы в среде, очень большой, рекомендуется стирать его при окончании работы.
~PA, ~DP - backup файлы Редактора.
1.2.2.3. Дополнительные средства языка
Дипломный проект был реализован с помощью следующих компонент:
Закладка DataControls:
Закладка DataAccess:
Закладка ADO:
Для соединения с базой данных используется стандартный компонент Delphi ADOConnection, который находится на вкладке ADO палитры компонентов. Компонент относится к группе не визуальных компонентов, то есть во время работы приложения он не виден.
Мы будем рассматривать строку подключения, тем более мы отчасти разбирали ее при создании базы данных. Приступим к созданию строки подключения. Для этого необходимо нажать кнопку Build, после этого на появившейся вкладке «Поставщик данных» необходимо выбрать драйвер подключения (Microsoft Jet 4.0.OLE DB Provider) и нажать кнопку «далее». На следующей вкладке «Подключение» надо указать имя базы данных, с которой мы хотим соединится (вводится полный путь). Если при создании базы данных было задано имя пользователя и пароль. То их необходимо указать чуть ниже. После проделанных действий нажмите на кнопку «Проверить подключение» и, если все указано верно, то появится сообщение «Проверка соединения выполнена».
На этом соединение с базой можно считать законченным и закрыть окно.
Adoconnection.connectionstring := Provider=Microsoft.jet.oledb.4.0;
DataSource=c:\first.mdb;
persist security info=false;
Первые два свойства нам знакомы, это имя драйвера и путь. К подключаемой базе данных. А третье свойство persist security означает сохранять информацию о безопасности или нет. В принципе, эта строка не играет особого значения и следует оставить значение false.
Adoconnection.conтected := true;
Это все необходимые настройки для компонента ADOConnection и теперь мы можем переходить к следующему этапу установки связей с таблицами базы данных.
ADOTable. Он то по сути и будет связываться с таблицей БД. Минимальные настройки заключаются в:
Adotable1.connection := adoconnection1
Adotable.tablename :=Справочник;
Adotable.active:=true;
Datasource Этот компонент является как бы контейнером данных, полученных от компонентов ADOTable и ADOQuerry. Исходя из этого можно догадаться что ему просто необходимо указать данные какой таблицы или запроса он будет отображать. Сделать это можно выбрав в свойстве Dataset необходимую таблицу (ADOtable)
На этом необходимые настройки можно считать законченными и можно переходить к непосредственной работе с базой данных.
Компонент DBGrid. Этот компонент представляет собой двумерную таблицу, в которой строки представляют собой записи, а столбцы поля определенной таблицы из базы данных.
В компоненте TDBGrid можно отображать произвольное подмножество полей используемого набора данных, но число записей ограничить нельзя в компоненте всегда присутствуют все записи связанного набора данных. Требуемый набор полей можно составить при помощи специального Редактора столбцов, который открывается при двойном щелчке на компоненте, перенесенном на форму, или кнопкой свойства columns в Инспекторе объектов.
При помощи кнопки Add All Fields в сетку можно добавить все поля из набора данных.
Для каждого поля можно настроить отображение более детально. Для этого необходимо выделить нужное поле и в инспекторе объектов изменить нужное свойство.
1.2.2.4. Средства обмена данными
В Delphi программа реализована в виде таблиц. Для создания таблиц использовалось приложение Microsoft Access. База данных «Школа» состоит из нескольких таблиц, которые содержат информацию об учениках, преподавателях и техническом персонале.
Таблицы можно посмотреть на рисунке 1.
Рис.1. Таблицы
2. СПЕЦИАЛЬНАЯ ЧАСТЬ
2.1. Постановка задачи
2.1.1.Назначение задачи
Создание многофункциональной, несложной, быстродействующей программы предназначенной для ведения учета учеников , преподователей и техничесого персонала , предоставляемых школой.
2.1.2. Технико-математическое описание задачи
Т.к. программа ориентирована не на математические расчеты, а на управление информацией, то не было необходимости применять формулы.
2.1.3. Требования к программе
Программа должна быть многофункциональна, понятна для любого пользователя.
2.1.3.1. Требования к функциональным характеристикам
Программа должна:
2.1.3.2. Требования к аппаратным и программным средствам
Требования:
2.1.3.3. Требования к надежности
Программа состоит из:
Корректное функционирование программы обеспечивается путем выполнения следующих рекомендаций:
2.2. Описание алгоритма
Программная часть:
Блок схема работы процедуры поиска по фамилии
2.3. Описание программы
Исходный текст программы находится в ПРИЛОЖЕНИИ 1.
2.3.1. Описание структуры программы
Программа состоит из тринадцати модулей. Все модули связаны с формами.
Рис.2.
(Рис.3)
(Рис.3)
2.3.2. Выходные и входные данные
Входными данными являются:
Выходными данными являются:
2.3.3. Организация данных в программе
В данном проекте основные данные представлены в виде записей таблицы
Каждое поле в таблице имеет свой тип данных. Программные названия полей и их типы данных были описаны в процессе создания базы данных SchoolDataBase.mdb MS Access(Рисунки 6-7). Остальные таблицы услуг похожи по своей стурктуре.
2.4. Инструкция пользователя
Программа состоит из нескольких модулей со своим окном. Исполняемым файлом к программе является файл SchoolProject.exe
2.4.1. Форма ввода пароля
При запуске программы появляется форма ввода пароля
После ввода неверного пароля выводится сообщение об ошибке.
2.4.2. Окно базы данных
При правильно введенных логине и пароле откроется окно базы данных «Ученики»()
Также с нее можно перемещатся по другим таблицам базы данных:
Преподаватели()
Технический персонал()
2.4.3. Панель управления записями баз данных
В программе существует возможность добавления, удаления и изменения записей в базе данных при помощи навигатора()
2.4.4. Открытие в Excel
Программа имеет возможность выводить таблицы базы данных в формате Excel
2.4.5. Пользователи
На этой форме можно изменять/добавлять/удалять данные для входа программы и назначать права.
2.4.6. Прочие функции
Поиск по фамилии в таблице БД
Сортировка данных
Сортировка по Фамилии в таблицах БД «Преподаватели» и «Технический персонал», а в таблице «Ученики» сортировка производится по фамилии и классу.
Информация о таблице
2.5. Анализ результатов
В ходе выполнения работы по данной теме были освоены основные приемы работы с базами данных в среде программирования Delphi, изучена современнейшая технология ADO, работающая с базами данных. Прежде всего, были изучены новые компоненты, с помощью которых осуществляется связь и отображение информации баз данных.
Реализованы основные действия с базами данных, а именно: просмотр, редактирование, поиск и сортировка по различным полям
Программа снабжена простым и интуитивным интерфейсом, но, тем не менее, реализованы все необходимые операции с таблицами баз данных.
Программа может использоваться практически в любом учебном учереждении, как учеником так и преподавателем, который просто регистрирует новых пользователей в программе с минимальными правами доступа, так и администратором этого заведения, с максимальными возможностями.
3. ЭКОНОМИЧЕСКАЯ ЧАСТЬ
Расчет предполагаемой прибыли от реализации созданного программного продукта
3.1 Описание продукта
Программный продукт, разработанный в данном дипломном проекте, информационная система для учебного заведения. С помощью данной программы можно добавлять новых учеников, преподователей и тех. персонал в базу данных, редактировать и удалять устаревшие записи, а так же выводить данные в таблицах Excel. Эта программа позволяет легко и быстро отредактировать старые данные об учениках и персонале , или занести нового. Программа предназначена для пользователей с начальным уровнем ПК.
3.2 Работа программы
При запуске программы необходимо ввести логин и пароль для входа в систему.
После этого открывается главная форма и можно выполнять различные действия с базой данных, а именно:
3.3 Описание и расчет затрат на выполнение проекта
Разработка данного пособия, так же как и разработка любого другого программного продукта, требует определенных материальных, временных и трудовых затрат, а следовательно должна соответственно окупаться. С экономической точки зрения затраты связанные с выполнением проекта, должны быть покрыты доходами от реализации конечного продукта.
Определение трудоёмкости.
Трудоемкость выполнения программного продукта характеризуется перечнем основных этапов и видов работ, которые должны быть выполнены. Упорядочен данный перечень в соответствии со смысловым содержанием каждого вида работ и взаимосвязями между всеми видами работ.
Форма расположения работ по этапам:
1.Разработка технического задания (ТЗ):
- получение ТЗ;
2. Подготовительный этап:
-сбор информации;
-определение возможных направлений решения заданий;
-выбор объектного построения программы;
-разработка общей методики создания продукта;
-подготовка промежуточного отчета;
3. Основной этап:
- Разработка основного алгоритма;
-Создание интерфейса;
-Отладка;
4. Завершающий этап:
-Подготовка технической документации;
-сдача продукта.
Определим трудоёмкость нашего проекта
Таблица 1 Расчет трудоёмкости по проекту
№ п/п |
Виды работ |
Трудоёмкость |
1 |
Получение ТЗ |
1 |
2 |
Сбор информации и ознакомление с предметной областью |
33 |
3 |
Определение возможных направлений решения заданий |
17 |
4 |
Выбор объектного построения программы |
14 |
5 |
Разработка общей методики создания продукта |
9 |
6 |
Подготовка промежуточного отчета |
5 |
7 |
Разработка основного алгоритма |
93 |
8 |
Создание интерфейса |
20 |
9 |
Отладка |
16 |
10 |
Подготовка технической документации |
21 |
11 |
Сдача продукта |
1 |
Итого |
230 |
Суммарная трудоемкость составила 230 чел.\час.
Расчет расходов на заработную плату
На основе данных о трудоемкости и средней заработной плате по отрасли рассчитывается основная заработная плата. Допустим, что заработная плата программиста без опыта работы составляет 24 000 тыс. руб. в месяц. (21 рабочий день, 8 часовой рабочий день) или 142,86 руб./час.
Таким образом, расходы на заработную плату по данному проекту составляют:
ЗП = 142,86*230 = 32857,8руб.
Отчисления на ЗП (Пенсионный Фонд, Фонд соц. страхования, Фонд обязательного мед. страхования, территориальные фонды мед. страхования) составляют 26% (20,0+2,9+1,1+2,0 соответственно). В денежном выражении составляют:
32857,8 *0,26=8543руб.
Расходные материалы
Материалы, затраченные на создание проекта, приведены в Таблице 2.
Таблица 2 - Материалы, затраченные на создание проекта
Расходные материалы: |
Количество: |
Цена за единицу: |
Сумма (руб.): |
1)Бумага для принтера |
1 упаковка |
120 |
120 |
2)Картридж для принтера |
1 штука |
354 |
354 |
3)Интернет |
1 месяц |
550 руб/мес |
550 |
4)CD-R |
1 штука |
12 |
12 |
5)Канцелярия |
Папка+файлы |
132 |
132 |
6) Клавиатура |
1 штука |
159 |
159 |
Итого |
1327 |
Расчет амортизации
Стоимость компьютера 60 тыс. руб. Используется он в течение 5 лет (60 мес.). Годовая амортизация составит в месяц 1000 руб. В час: 5.95 руб. Умножая на трудоёмкость:
АО= 5,95*230= 1368,5 руб.
Расчет электроэнергии
ПК в среднем употребляет 0,6 Квт/час. 0,6*230=138 КВт. Примерная стоимость 1 Квт/ч около 1,97 руб.
Итого: 138 *1,97=271,86 руб.
Все результаты расчета затрат приведены в таблице 3.
Таблица 3 - Результаты расчетов
Наименование статей затрат |
Сумма, руб. |
Расходные материалы |
1327 |
Основная заработная плата |
32857,8 |
Расходы на электроэнергию |
271,86 |
Амортизационные отчисления |
1368,5 |
Отчисления на ЗП |
8543 |
Итого: |
35856,21 |
Таким образом, суммарная стоимость затрат на создание данного программного продукта составляет 44368,16 рублей, следовательно, продать программу ниже этой стоимости невыгодно.
В ОБЩЕМ КОМУ НЕОБХОДИМ СОЗДАННЫЙ ПРОГРАММНЫЙ ПРОДУКТ.
По ходу разработки дипломного проекта им заинтересовался директор средней общеобразовательной школы , который предполагает использование данного программного продукта для учета учеников и персонала, предоставляемых школой, так как наш продукт обладает следующими преимуществами:
Рыночная цена данного программного продукта составляет 50000 руб.
Предполагаемая прибыль составляет 5631,84руб.
В настоящее время существует не так много аналогов данного программного продукта, которые позволяют в той или иной степени упростить работу с информационными системами.
В отличие от имеющихся похожих программ, разработанный программный продукт является простым в использовании и имеет абсолютно понятный интерфейс для пользователя. Данная программа при сравнительно небольших затратах в 44368,16 рублей, позволяет максимально упростить учет записей. Использование данного программного продукта в значительной мере упрощает работу с базой данных. Таким образом, данный программный продукт выгоден для образовательных учереждений , которые будут использовать данный продукт для учета учеников и персонала.
ЗАКЛЮЧЕНИЕ
В результате работы над дипломным проектом была разработана информационная система для школы. В программе разработано 6 форм, выполняющих различные действия. В проекте существует возможность вывода на печать результатов работы приложения.
Достоинства программы:
При написании дипломного проекта были изучены дополнительные компоненты, такие как ADOQuery, ADOTable их свойства, методы, а так же свойства и методы уже изученных компонентов Delphi, которые позволяют создавать приложения, работающие с полноценными базами данных, обращающиеся к данным через ADO технологию.
Разработанный проект может использоваться практически в любых учебных заведениях для автоматизации рабочего места и систематизации хранимой информации о учениках и персонале.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1.
Исходный текст программы
unit DataModule
interface
uses
SysUtils, Classes;
type
TDataModule2 = class(TDataModule)
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule2: TDataModule2;
implementation
{$R *.dfm}
end.
unit DataModuleUnit
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDataModule1 = class(TDataModule)
ADOConnection1: TADOConnection;
StudentTable: TADOTable;
StudentDataSource: TDataSource;
StudentTableDSDesigner: TWideStringField;
StudentTableDSDesigner2: TWideStringField;
StudentTableDSDesigner3: TWideStringField;
StudentTableDSDesigner4: TWideStringField;
StudentTableDSDesigner5: TWideStringField;
StudentTableKey1: TAutoIncField;
PrepodDataSource: TDataSource;
PrepodTable: TADOTable;
PrepodTableKey1: TAutoIncField;
PrepodTableDSDesigner: TWideStringField;
PrepodTableDSDesigner2: TWideStringField;
PrepodTableDSDesigner3: TWideStringField;
PrepodTableDSDesigner4: TWideStringField;
PrepodTableDSDesigner5: TWideStringField;
UsersDataSource: TDataSource;
PersonalTable: TADOTable;
PersonalDataSource: TDataSource;
PersonalTableKey1: TAutoIncField;
PersonalTableDSDesigner: TWideStringField;
PersonalTableDSDesigner2: TWideStringField;
PersonalTableDSDesigner3: TWideStringField;
PersonalTableDSDesigner4: TWideStringField;
PersonalTableDSDesigner5: TWideStringField;
UsersTable: TADOTable;
UsersTableKey1: TAutoIncField;
UsersTableDSDesigner: TWideStringField;
UsersTableDSDesigner2: TWideStringField;
UsersTableDSDesigner3: TBooleanField;
procedure StudentTableAfterOpen(DataSet: TDataSet);
procedure PrepodTableAfterOpen(DataSet: TDataSet);
procedure PersonalTableAfterOpen(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule1: TDataModule1;
implementation
uses Unit2, PrepodUnit, StudentUnit, Unit1, UserUnit;
{$R *.dfm}
procedure TDataModule1.StudentTableAfterOpen(DataSet: TDataSet);
begin
DataModule1.StudentTable.IndexFieldNames:='Фамилия';
end;
procedure TDataModule1.PrepodTableAfterOpen(DataSet: TDataSet);
begin
DataModule1.StudentTable.IndexFieldNames:='Фамилия';
end;
procedure TDataModule1.PersonalTableAfterOpen(DataSet: TDataSet);
begin
DataModule1.PersonalTable.Sort:='Фамилия';
end;
end.
unit PersonalUnit
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Menus, ToolWin, ComCtrls, Grids,
DBGrids,ComObj;
type
TPersonalForm = class(TForm)
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
Excel1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Label1: TLabel;
FilterFamEdit: TEdit;
DBNavigator1: TDBNavigator;
procedure FilterFamEditKeyPress(Sender: TObject; var Key: Char);
procedure N8Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Excel1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
PersonalForm: TPersonalForm;
implementation
uses DataModuleUnit, PrepodUnit, StudentUnit;
{$R *.dfm}
procedure TPersonalForm.FilterFamEditKeyPress(Sender: TObject;
var Key: Char);
begin
If Length(FilterFamEdit.Text)>0 then
DataModule1.PersonalTable.Filtered:=True
else DataModule1.PersonalTable.Filtered:=False;
DataModule1.PersonalTable.Filter:='Фамилия>'''+FilterFamEdit.Text+'''';
end;
procedure TPersonalForm.N8Click(Sender: TObject);
begin
DataModule1.PersonalTable.Sort:='Фамилия';
end;
procedure TPersonalForm.N3Click(Sender: TObject);
begin
Close;
end;
procedure TPersonalForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
StudentForm.Close;
end;
procedure TPersonalForm.N6Click(Sender: TObject);
begin
StudentForm.Show;
PersonalForm.Hide;
end;
procedure TPersonalForm.N5Click(Sender: TObject);
begin
PrepodForm.Show;
PersonalForm.Hide;
end;
procedure TPersonalForm.Excel1Click(Sender: TObject);
var
XLApp,Sheet,Colum:Variant;
index,i:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Школа-Технический персонал';
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Технический персонал'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Технический персонал'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlack;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Школа-Технический персонал'];
Sheet.Cells[1,2]:='Школа';
Sheet.Cells[2,1]:='Фамилия';
Sheet.Cells[2,2]:='Имя';
Sheet.Cells[2,3]:='Должность';
Sheet.Cells[2,4]:='Адрес';
Sheet.Cells[2,5]:='Телефон';
index:=3;
DataModule1.PersonalTable.First;
for i:=0 to DataModule1.PersonalTable.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataModule1.PersonalTable.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataModule1.PersonalTable.Fields.Fields[2].AsString;
Sheet.Cells[index,3]:=DataModule1.PersonalTable.Fields.Fields[3].AsString;
Sheet.Cells[index,4]:=DataModule1.PersonalTable.Fields.Fields[4].AsString;
Sheet.Cells[index,5]:=DataModule1.PersonalTable.Fields.Fields[5].AsString;
Inc(index);
DataModule1.PersonalTable.Next;
end;
end;
procedure TPersonalForm.N2Click(Sender: TObject);
var
s:integer;
i:integer;
begin
s:=0;
for i:=0 to DataModule1.PersonalTable.RecordCount-1 do
s:=s+1;
ShowMessage('Название таблицы: '+Datamodule1.PersonalTable.TableName+#13+'Количество записей: '+IntToStr(s));
end;
end.
unit PrepodUnit
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ToolWin, ComCtrls, Menus, StdCtrls, ExtCtrls,
DBCtrls,ComObj;
type
TPrepodForm = class(TForm)
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Label1: TLabel;
FilterFamEdit: TEdit;
Sort: TMenuItem;
N5: TMenuItem;
PrepodNavigator: TDBNavigator;
ExelItem: TMenuItem;
Cghfdrf1: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N4Click(Sender: TObject);
procedure FilterFamEditChange(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure ExelItemClick(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
PrepodForm: TPrepodForm;
implementation
uses DataModuleUnit, StudentUnit, UserUnit, Unit1;
{$R *.dfm}
procedure TPrepodForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
StudentForm.Close;
end;
procedure TPrepodForm.N4Click(Sender: TObject);
begin
PrepodForm.Hide;
StudentForm.Show;
end;
procedure TPrepodForm.FilterFamEditChange(Sender: TObject);
begin
If Length(FilterFamEdit.Text)>0 then
DataModule1.PrepodTable.Filtered:=true
else DataModule1.PrepodTable.Filtered:=false;
DataModule1.PrepodTable.Filter:='Фамилия>'''+FilterFamEdit.Text+'''';
end;
procedure TPrepodForm.N5Click(Sender: TObject);
begin
DataModule1.PrepodTable.IndexFieldNames:='Фамилия ASC';
end;
procedure TPrepodForm.ExelItemClick(Sender: TObject);
var
XLApp,Sheet,Colum:Variant;
index,i:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Школа-Преподаватели';
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Преподаватели'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Преподаватели'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlack;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Школа-Преподаватели'];
Sheet.Cells[1,2]:='Школа';
Sheet.Cells[2,1]:='Фамилия';
Sheet.Cells[2,2]:='Имя';
Sheet.Cells[2,3]:='Должность';
Sheet.Cells[2,4]:='Адрес';
Sheet.Cells[2,5]:='Телефон';
index:=3;
DataModule1.PrepodTable.First;
for i:=0 to DataModule1.PrepodTable.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataModule1.PrepodTable.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataModule1.PrepodTable.Fields.Fields[2].AsString;
Sheet.Cells[index,3]:=DataModule1.PrepodTable.Fields.Fields[3].AsString;
Sheet.Cells[index,4]:=DataModule1.PrepodTable.Fields.Fields[5].AsString;
Sheet.Cells[index,5]:=DataModule1.PrepodTable.Fields.Fields[4].AsString;
Inc(index);
DataModule1.PrepodTable.Next;
end;
end;
procedure TPrepodForm.N6Click(Sender: TObject);
begin
MessageDlg('Школа'#10#13'© 2006 Игорь Филиппов'#10#13'Версия 1.001',
mtInformation,[mbok],0);
end;
procedure TPrepodForm.N2Click(Sender: TObject);
begin
Close;
end;
procedure TPrepodForm.N7Click(Sender: TObject);
var
s:integer;
i:integer;
begin
s:=0;
for i:=0 to DataModule1.PrepodTable.RecordCount-1 do
s:=s+1;
ShowMessage('Название таблицы: '+Datamodule1.PrepodTable.TableName+#13+'Количество записей: '+IntToStr(s));
end;
procedure TPrepodForm.N8Click(Sender: TObject);
begin
PersonalForm.Show;
PrepodForm.hide;
end;
procedure TPrepodForm.FormCreate(Sender: TObject);
begin
if login='admin' then N9.Visible:=true
else n9.Visible:=false;
if Dostup=false then begin
DBGrid1.Enabled:=false;
PrepodNavigator.VisibleButtons:=[nbFirst,nbNext,nbPrior,nbLast,nbRefresh];
DbGrid1.Font.Style:=[fsBold];
end;
end;
end.
unit ProgrammInfoUnit
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TProgrammInfoForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
ProgrammInfoForm: TProgrammInfoForm;
implementation
{$R *.dfm}
end.
unit StudentUnit
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, Menus, ToolWin, ComCtrls, StdCtrls,
ExtCtrls, DBCtrls,ComObj;
type
TStudentForm = class(TForm)
DBGrid1: TDBGrid;
MainMenu1: TMainMenu;
FileItem: TMenuItem;
ExitItem: TMenuItem;
CategoryItem: TMenuItem;
SortItem: TMenuItem;
ByFamItem: TMenuItem;
ByClassItem: TMenuItem;
ToolBar1: TToolBar;
Label1: TLabel;
FilterFamEdit: TEdit;
StudentNavigator: TDBNavigator;
HelpItem: TMenuItem;
ProgrammInfo: TMenuItem;
CategoryPrepod: TMenuItem;
ExelItem: TMenuItem;
TableInfoItem: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
ToolButton1: TToolButton;
procedure ByFamItemClick(Sender: TObject);
procedure ByClassItemClick(Sender: TObject);
procedure ExitItemClick(Sender: TObject);
procedure FilterFamEditChange(Sender: TObject);
procedure ProgrammInfoClick(Sender: TObject);
procedure CategoryPrepodClick(Sender: TObject);
procedure HelpMeItemClick(Sender: TObject);
procedure ExelItemClick(Sender: TObject);
procedure TableInfoItemClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
StudentForm: TStudentForm;
implementation
uses DataModuleUnit, PrepodUnit, UserUnit, Unit1, Unit2;
{$R *.dfm}
procedure TStudentForm.ByFamItemClick(Sender: TObject);
begin
DataModule1.StudentTable.Sort:='Фамилия';
end;
procedure TStudentForm.ByClassItemClick(Sender: TObject);
begin
DataModule1.StudentTable.Sort:='Класс';
end;
procedure TStudentForm.ExitItemClick(Sender: TObject);
begin
Close;
end;
procedure TStudentForm.FilterFamEditChange(Sender: TObject);
begin
If Length(FilterFamEdit.Text)>0 then
DataModule1.StudentTable.Filtered:=True
else DataModule1.StudentTable.Filtered:=False;
DataModule1.StudentTable.Filter:='Фамилия>'''+FilterFamEdit.Text+'''';
end;
procedure TStudentForm.ProgrammInfoClick(Sender: TObject);
begin
MessageDlg('Программа "База Данных "Школа"'#10#13' Создана Колобовым Ильёй,'#10#13' Студентом колледжа информационных технологий'#10#13'(484 группа)"'#10#13' 2012',
mtInformation,[mbok],0);
end;
procedure TStudentForm.CategoryPrepodClick(Sender: TObject);
begin
StudentForm.Hide;
PrepodForm.Show;
end;
procedure TStudentForm.HelpMeItemClick(Sender: TObject);
begin
//winhelp(StudentForm.Handle,'ШКОЛАH.hlp',HELP_CONTEXT,0);
end;
procedure TStudentForm.ExelItemClick(Sender: TObject);
var
XLApp,Sheet,Colum:Variant;
index,i:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Школа-Ученики';
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Ученики'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Ученики'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlack;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Школа-Ученики'];
Sheet.Cells[1,2]:='Школа';
Sheet.Cells[2,1]:='Фамилия';
Sheet.Cells[2,2]:='Имя';
Sheet.Cells[2,3]:='Класс';
Sheet.Cells[2,4]:='Адрес';
Sheet.Cells[2,5]:='Телефон';
index:=3;
DataModule1.StudentTable.First;
for i:=0 to DataModule1.StudentTable.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataModule1.StudentTable.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataModule1.StudentTable.Fields.Fields[2].AsString;
Sheet.Cells[index,3]:=DataModule1.StudentTable.Fields.Fields[3].AsString;
Sheet.Cells[index,4]:=DataModule1.StudentTable.Fields.Fields[5].AsString;
Sheet.Cells[index,5]:=DataModule1.StudentTable.Fields.Fields[4].AsString;
Inc(index);
DataModule1.StudentTable.Next;
end;
end;
procedure TStudentForm.TableInfoItemClick(Sender: TObject);
var
s:integer;
i:integer;
begin
s:=0;
for i:=0 to DataModule1.StudentTable.RecordCount-1 do
s:=s+1;
ShowMessage('Название таблицы: '+Datamodule1.StudentTable.TableName+#13+'Количество записей: '+IntToStr(s));
end;
procedure TStudentForm.N1Click(Sender: TObject);
begin
PersonalForm.Show;
end;
procedure TStudentForm.N2Click(Sender: TObject);
begin
UsersForm.Show;
end;
procedure TStudentForm.FormActivate(Sender: TObject);
begin
If login='admin' then N2.Visible:=true
else n2.Visible:=false;
end;
procedure TStudentForm.FormCreate(Sender: TObject);
begin
if Dostup=false then begin
DBGrid1.Enabled:=false;
StudentNavigator.VisibleButtons:=[nbFirst,nbNext,nbPrior,nbLast,nbRefresh];
DbGrid1.Font.Style:=[fsBold];
end;
end;
end.
unit Unit1
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Menus, ToolWin, ComCtrls, Grids,
DBGrids,ComObj;
type
TPersonalForm = class(TForm)
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
Excel1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N11: TMenuItem;
Label1: TLabel;
FilterFamEdit: TEdit;
DBNavigator1: TDBNavigator;
N12: TMenuItem;
N13: TMenuItem;
procedure FilterFamEditKeyPress(Sender: TObject; var Key: Char);
procedure N8Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Excel1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
PersonalForm: TPersonalForm;
implementation
uses DataModuleUnit, PrepodUnit, StudentUnit, Unit2, UserUnit;
{$R *.dfm}
procedure TPersonalForm.FilterFamEditKeyPress(Sender: TObject;
var Key: Char);
begin
If Length(FilterFamEdit.Text)>0 then
DataModule1.PersonalTable.Filtered:=True
else DataModule1.PersonalTable.Filtered:=False;
DataModule1.PersonalTable.Filter:='Фамилия>'''+FilterFamEdit.Text+'''';
end;
procedure TPersonalForm.N8Click(Sender: TObject);
begin
DataModule1.PersonalTable.Sort:='Фамилия';
end;
procedure TPersonalForm.N3Click(Sender: TObject);
begin
Close;
end;
procedure TPersonalForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
StudentForm.Close;
end;
procedure TPersonalForm.N6Click(Sender: TObject);
begin
StudentForm.Show;
PersonalForm.Hide;
end;
procedure TPersonalForm.N5Click(Sender: TObject);
begin
PrepodForm.Show;
PersonalForm.Hide;
end;
procedure TPersonalForm.Excel1Click(Sender: TObject);
var
XLApp,Sheet,Colum:Variant;
index,i:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add;
XLApp.Workbooks[1].WorkSheets[1].Name:='Школа-Технический персонал';
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Технический персонал'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Школа-Технический персонал'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlack;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Школа-Технический персонал'];
Sheet.Cells[1,2]:='Школа';
Sheet.Cells[2,1]:='Фамилия';
Sheet.Cells[2,2]:='Имя';
Sheet.Cells[2,3]:='Должность';
Sheet.Cells[2,4]:='Адрес';
Sheet.Cells[2,5]:='Телефон';
index:=3;
DataModule1.PersonalTable.First;
for i:=0 to DataModule1.PersonalTable.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataModule1.PersonalTable.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataModule1.PersonalTable.Fields.Fields[2].AsString;
Sheet.Cells[index,3]:=DataModule1.PersonalTable.Fields.Fields[3].AsString;
Sheet.Cells[index,4]:=DataModule1.PersonalTable.Fields.Fields[4].AsString;
Sheet.Cells[index,5]:=DataModule1.PersonalTable.Fields.Fields[5].AsString;
Inc(index);
DataModule1.PersonalTable.Next;
end;
end;
procedure TPersonalForm.N2Click(Sender: TObject);
var
s:integer;
i:integer;
begin
s:=0;
for i:=0 to DataModule1.PersonalTable.RecordCount-1 do
s:=s+1;
ShowMessage('Название таблицы: '+Datamodule1.PersonalTable.TableName+#13+'Количество записей: '+IntToStr(s));
end;
procedure TPersonalForm.N11Click(Sender: TObject);
begin
MessageDlg('Школа'#10#13'© 2006 Игорь Филиппов'#10#13'Версия 1.001',
mtInformation,[mbok],0);
end;
procedure TPersonalForm.FormCreate(Sender: TObject);
begin
if login='admin' then n12.Visible:=true
else N12.Visible:=false;
if Dostup=false then begin
DBGrid1.Enabled:=false;
DbNavigator1.VisibleButtons:=[nbFirst,nbNext,nbPrior,nbLast,nbRefresh];
DbGrid1.Font.Style:=[fsBold];
end;
end;
end
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, ToolWin, ComCtrls;
type
TUsersForm = class(TForm)
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
Label1: TLabel;
LoginEdit: TEdit;
DBNavigator1: TDBNavigator;
ToolButton1: TToolButton;
procedure LoginEditKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UsersForm: TUsersForm;
implementation
uses UserUnit, DataModuleUnit;
{$R *.dfm}
procedure TUsersForm.LoginEditKeyPress(Sender: TObject; var Key: Char);
begin
If Length(LoginEdit.Text)>0 then
DataModule1.UsersTable.Filtered:=True
else DataModule1.UsersTable.Filtered:=False;
DataModule1.UsersTable.Filter:='Логин>'''+LoginEdit.Text+'''';
end;
end.
unit UserUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB;
type
TUserForm = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
LoginEdit: TEdit;
PasswordEdit: TEdit;
UserQuery: TADOQuery;
ADOConnection1: TADOConnection;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UserForm: TUserForm;
Login:string;
Dostup:boolean;
implementation
uses DataModuleUnit, StudentUnit;
{$R *.dfm}
procedure TUserForm.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TUserForm.Button1Click(Sender: TObject);
begin
If (LoginEdit.Text<>'') and (PasswordEdit.Text<>'') then //поля не пустые
begin
UserQuery.Active:=false;
UserQuery.Parameters.ParamByName('log').Value:=LoginEdit.Text;
UserQuery.Active:=true;
If UserQuery.RecordCount<>0 then
begin
If UserQuery.FieldByName('Пароль').AsString=PasswordEdit.Text then begin
login:=LowerCase(LoginEdit.Text);
If UserQuery.FieldByName('Доступ').AsString='True' then Dostup:=true//есть доступ
else Dostup:=false;
Close;
end
else Showmessage('Пароль неверный!');
end;
end
else ShowMessage('Введите имя пользователя и пароль!');//пустые поля
end;
procedure TUserForm.Button3Click(Sender: TObject);
begin
Messagedlg('Введите Ваши имя пользователя и пароль!',mtinformation,[mbOk],0);
end;
procedure TUserForm.FormCreate(Sender: TObject);
begin
Brush.Bitmap := TBitMap.Create;
Brush.Bitmap.LoadFromFile('1.bmp');
end;
end.
ПРИЛОЖЕНИЕ 2.
Результат работы программы
Программа “База Данных “Школа”” позволяет вам просматривать и редактировать информацию об учениках, преподавателях и пр.
Для входа в программу нужны права администратора или учетной записи.
Для навигации по разделам Базы Данных используйте меню Категория.
Для выбора варианта сортировки записей используйте меню Сортировка.
Для быстрого поиска по записям введите фамилию в поле рядом с
меткой Фамилия.
Перемещайтесь по таблице, создавайте, удаляйте записи с помощью навигационного компонента:
PAGE 33
Проект
Интерфейсная часть
Программная часть
UserUnit
DataModule
PersonalUnit
PrepodUnit
StudentUnit
Начало
StudentForm. FilterFamEditChange
Length>0
Входными данными являются обьекты базы данных
DataModule1.StudentTable.filtered:=true
ataModule1.StudentTable.filtered:=false
Выходными данными является искомая информация
Конец