Программа автоматизации учёта выплат учащимися профсоюзных взносов
28
СОДЕРЖАНИЕ
Введение…………………………………………………………………………………………. |
4 |
1 Анализ предметной области………………………………………………………………….. |
5 |
2 Постановка задачи…………………………………………………………………………….. |
6 |
3 Разработка информационного обеспечения задачи…………………………………………. |
7 |
3.1 Информационный анализ входной информации необходимой для решения задачи и выделения информационных объектов........................................................ |
7 |
3.2 Определение связей информационных объектов и построение информационной логической модели……………………………………………….. |
7 |
3.3Определение логической структуры БД…………………………………………. |
8 |
3.4 Разработка исходных данных контрольного примера создания БД…………... |
9 |
4 Описание технологии и алгоритмов решения задачи и их математических реализаций…. |
10 |
5 Разработка диалогов приложения пользователя…………………………………………….. |
12 |
6 Руководство пользователя……………………………………………………………………. |
15 |
Заключение ……………………………………………………………………………………... |
16 |
Список использованных источников………………………………………………………….. |
17 |
Приложение А…………………………………………………………………………………... |
18 |
ВВЕДЕНИЕ
Автоматизация возложение некоторых функций на компьютерную программу. И не зависимо от того, много или мало функций, даже если вы используете компьютер для одной рутинной операции это уже автоматизация.
Данное приложение используется для автоматизирует учет сдачи профсоюзных взносов.
Приложение позволяет вести контроль и учет оплаты учащимися проф взносов.
Автоматизация позволяет сократить хранение массы информации в бумажном виде, в любой момент в приложении можно будет быстро найти нужную информацию, использовать ее и создать отчет.
Повышение степени автоматизации предприятия ведет к повышению стабильности технологического процесса, уменьшению человеческого фактора, улучшению прозрачности производства, что в конечном итоге положительно сказывается на качестве готовой продукции и ведет к снижению ее себестоимости. Автоматизированное производство делает технологический процесс гибким, что позволяет предприятию меняться и подстраиваться под рынок, а это так актуально в период экономической нестабильности.
1. Анализ предметной области
В данном приложении будет автоматизирована сдача профсоюзных взносов учащимися колледжа. Осуществляется контроль и учет сдачи взносов так же формируется отчетность по периоду и за год. В данном приложении необходимо автоматизировать процесс работы сотрудников колледжа принимающих взносы и формирующие отчетность.
В данном случае это будет ведомость уплаты членских профсоюзных взносов. Автоматизация это процесс который позволит вести отчетность и учет на электронном носителе. Значительно сократить расход бумаги и создать быстрый поиск по нужной группе или периоду времени. Так же создавать отчетность всего одним нажатием кнопки что позволит сократить время требующее создания отчета сотрудником, и улучшит его условия труда.
2. Постановка задачи
На основе анализа предметной области необходимо провести анализ входной информации, разработать логическую и физическую модель базы данных.
Программа учета выплат профсоюзных взносов учащимися предназначена для решения таких задач, как ведение справочника учащихся, справочника групп, и формирования ведомости. Программа осуществляет формирование отчетов за период и за год.
Средством разработки данной программы является Delphi 7. Данную среду разработки я выбрал из-за простоты выполнения в ней основных операций и потому, что этот язык программирования мне больше всего знаком. Delphi 7 не требует большого потребления оперативной памяти, занимает мало места на диске, вследствие чего, компилируется проект достаточно быстро.
Средством создания и хранения базы данных является SQL Server 2008. Данную СУБД я выбрал из-за понятности и простоты использования, простоты манипулирования базами данных, быстрое выполнение запросов и удобный вывод сообщений об ошибках.
Данный курсовой проект был реализован на ПК HP 630 с операционной системой Windows 7.
Программно аппаратные ресурсы ПК HP 630:
- 2 GB ОЗУ;
- 512 Mb RAM;
- процессор Intel(R) Celeron(R) CPU815 @ 1.60GHz.
Минимальными системными требованиями будет наличие:
центральный процессор не ниже 1,0 MHz;
объем оперативной памяти 256 Mb;
свободное пространство на жестком диске не менее 100 Mb.
3. Разработка информационного обеспечения задачи
3.1 Информационный анализ входной информации необходимой для решения задачи и выделения информационных объектов
Анализ входной информации осуществлён в виде таблиц.
Таблица 3.1.1 Справочник Групп
Название поля |
Тип данных |
Название группы |
Varchar |
Таблица 3.1.2 Справочник Учащийся
Название поля |
Тип данных |
ФИО учащегося |
Varchar |
Таблица 3.1.3 Ведомость
Название поля |
Тип данных |
Дата взноса |
DateTime |
Сумма взноса |
Int |
3.2 Определение связей информационных объектов и построение информационной логической модели.
В настоящее время существует ряд методологий, специально предназначенных для упрощения системного анализа. Одним из инструментов системного анализа является CASEсредство верхнего уровня BPWin. Важнейшим этапом современного процесса разработки сложных систем вообще и программного обеспечения в частности является этап системного анализа и моделирования соответствующей предметной области. Данный этап является предпроектным. Его цель заключается в разработке спецификации проекта (технического задания на разработку проекта). От успеха проведения этого этапа зависит успех проекта в целом.
В настоящее время существует ряд методологий, специально предназначенных для упрощения системного анализа и моделирования предметной области. Данные методологии поддерживаются специальными инструментальными средствами автоматизированного анализа, моделирования и разработки сложных систем, получившими название CASE-средств (Computer-Aided Software/System Engineering - компьютерная поддержка проектирования программного обеспечения/систем).
В семействе CASE-средств инструменты для анализа предметной области составляют небольшую часть. Однако именно изучение и моделирование предметной области является наиболее важным этапом при разработке любого приложения, так как позволяет четко и однозначно определить задачи, которые стоят перед разработчиками. Одним из инструментов системного анализа является CASE-средство верхнего уровня BPwin (Business Process for Windows). Термин Business Process («бизнес-процесс») близок по смыслу к термину «предметная область» и в настоящее время часто заменяет последний. BPwin разработан фирмой LogicWorks. После слияния в 1998г. фирм LogicWorks и PLATINUM technology данное CASE-средство выпускается под логотипом PLATINUM technology.
Основными функциями BPwin являются рисование диаграмм, представляющих собой средства визуального представления отдельных компонентов моделируемой предметной области различных уровней детализации проверка целостности и согласованности иерархической модели, построенной из диаграмм различных уровней детализации, генерация различного вида отчетов по построенной модели. К достоинствам BPwin следует отнести обеспечение логической четкости в определении и описании элементов диаграмм, проверку целостности связей между диаграммами, локализацию или коррекцию наиболее часто встречающихся ошибок при моделировании.
Цель построения модели некоторого процесса (предметной области) - специфицирование операций и действий, выполняемых в процессе взаимосвязей между ними.
BPwin поддерживает три методологии структурного анализа и моделирования систем - IDEFO, IDEF3 и DFD. В процессе создания модели бизнес-процесса на любой ветви модели можно переключиться на любую из методологий и создать смешанную модель.
В IDEFO-модели операция представляет собой процесс преобразования входных материалов или информации в некоторый результат на выходе с использованием ресурсов в виде механизма и при выполнении условий, представленных в виде управления.
Таблица 3.2.1 Связи информационных объектов
Ключ связи |
Главный ИО |
Подчинённый ИО |
Тип отношения |
id_grup |
Справочник групп |
Справочник учащихся |
1:M |
id_stud |
Справочник учащихся |
Ведомость |
1:M |
id_vedom |
Ведомость |
3.3 Определение логической структуры базы данных
Для ускорения процесса проектирования в настоящее время используются различные CASE-средства. Одним из широко применяемых недорогих CASE-средств является ERwin.
ERwin средство разработки структуры базы данных, сочетающее графический интерфейс Windows, инструменты для построения ER-диаграмм (Entities-Relationships-диаграммы или диаграммы «сущность-связь»), редакторы для создания логического и физического описания модели данных и прозрачную поддержку ведущих реляционных систем управления базами данных и настольных баз данных. С помощью ERwin можно создавать базы данных или проводить их обратное проектирование (реинженеринг).
Реализация моделирования в ERwin базируется на теории реляционных баз данных и на стандартизированной методологии семантического моделирования данных IDEF1X.
Возможны две точки зрения на информационную модель и соответственно два уровня модели. Первый - логический (точка зрения пользователя) описывает реальные сущности (объекты) предметной области. Второй - физический (точка зрения программиста) определяет представление информации в базе данных. ERwin объединяет их в единую диаграмму, имеющую несколько уровней представления.
Сущность (объект) это абстракция некоторого множества предметов реального мира (например, человек, место, вещь, событие, концепция), для которого все предметы множества (экземпляры) имеют одни и те же характеристики, подчинены и согласуются с одним и тем же набором правил и линий поведения.
Связь это абстракция набора отношений, которые систематически возникают между различными видами предметов в реальном мире. Таким образом, связи определяют функциональные зависимости между сущностями. Общепринятым видом графического изображения реляционной модели данных является ER-диаграмма. На такой диаграмме сущности изображаются прямоугольниками, соединенными между собой линиями.
На рисунке 3.3.1 отражена логическая модель базы данных
Рисунок 3.3.1 Логическая схема данных
Детальное описание базы данных, используемой в программе находится в таблицах 3.3.1 3.3.3
Таблица 3.3.1 Справочник групп
Название поля |
Тип данных |
Описание |
id_grup |
Integer |
Используется для однозначной идентификации записей |
name_grup |
Varchar |
Название группы |
Таблица 3.3.2 Справочник учащихся
Название поля |
Тип данных |
Описание |
id_stud |
Integer |
Используется для однозначной идентификации записей |
id_grup |
Integer |
Внешний ключ |
fio_stud |
Varchar |
ФИО учащегося |
Таблица 3.3.3 Ведомость
Название поля |
Тип данных |
Описание |
id_vedom |
Integer |
Используется для однозначной идентификации записей |
id_children |
Integer |
Внешний ключ |
data |
DateTine |
Дата сдачи |
summa |
Integer |
Сумма сдачи |
3.4 Разработка исходных данных контрольного примера и создание базы данных
Данные контрольного примера предназначенные для тестирования, отладки и демонстрации решения задачи приведены в таблицах 3.4.1 3.4.3
Таблица 3.4.1 Справочник сотрудников
Название группы |
309 |
209 |
Таблица 3.4.2 Справочник учащихся
ФИО студента |
Высоцкая О В |
Бараш Р О |
Таблица 3.4.3 Таблица Ведомости
Сумма |
Дата сдачи |
5000 |
23.12.2012 |
5000 |
25.12.2012 |
4. Описание технологии и алгоритмов решения задачи и их математических реализаций
Вся область программы предназначена для использования её в однопользовательском режиме. Все действия в программе выполняет одно лицо работающее с данной программой.
Всю программу по сути можно разделить на две части:
- Область справочников;
- Область Выдачи;
- Область справочников предназначена для введения и поиска информации в справочниках, создании отчётов по критериям.
Область поставки представляет собой отчёты по поставленным товарам за определённый период. Область выдачи представляет собой соединенные между собой справочники что позволяет начислить подарки детям сотрудников сразу всем детям сотрудника так же это можно сделать и только конкретному ребенку.
5. Разработка диалогов приложения пользователя
На главной форме осуществляется выбор действия с помощью меню 5.1
Рисунок 5.1 Главная форма
На рисунке 5.2 показано форма управления справочником групп
.
Рисунок 5.2 Управление справочником групп
Рисунок 5.3 на данной форме представлено управление справочником учащихся
.
Рисунок 5.3 Управление справочником учащихся
На рисунке 5.4 ввод периода для отчета
Рисунок 5.4 Отчет за период
Рисунок 5.5 Сформированный отчет за период
Рисунок 5.6 Отчет за год
5.6 Отчет за год
6. Руководство пользователя
Разобьём программу на две части:
- Справочники;
- Ведомость;
Рассмотрим работу со справочниками. В программе имеются справочники сотрудников, детей. Для корректной работы программы изначально необходимо заполнить все справочники данными.
Для добавления записи в справочник необходимо заполнить все поля и нажать кнопку добавить. Для изменения необходимо внести в поле или в несколько полей изменения и нажать кнопку изменить. Для удаления записи необходимо выбрать из таблицы нужную запись и нажать кнопку удалить. Поиск по справочникам осуществляется вводом в сроку поиска символа или несколько символов искомой комбинации после чего в таблице сразу отобразятся поля с совпадающими символами, для того что бы все поля содержащие таблицу отобразились необходимо просто очистить поле поиска.
Работа с ведомостью осуществляется путем выбора группы после чего устанавливаем дату сдачи после чего вводим или выбираем дату из списка и нажмите кнопку выплатить. Поиск осуществляется так же как и в справочниках.
Формирование отчет за год производиться образом из системной даты сервера отнимается год и по году группируется все выплаты. Отчет за период формируется таким образом что вам необходимо выбрать начальную дату и конечную при этом начальная дата не может быть больше конечной и так же больше системной (существующей) после чего как даты выбраны необходимо нажать кнопку сформировать и после этого на экране появиться отчет по конкретному периоду времени.
Заключение
В процессе выполнения курсового проекта была разработана программа автоматизации учёта выплат учащимися профсоюзных взносов.
Программный продукт разработан в соответствии со всеми требованиями норм и качества и является:
- выполненным в соответствии с техническим заданием;
- универсальным, так как подойдёт на системы с низкими техническими характеристиками;
- надёжным, обеспечивается правильное функционирование;
- простым в использовании, так как программой довольно просто управлять.
Данную задачу считаю выполненной в соответствии с техническим заданием, однако программа может быть доработана с целью повышения её эффективности и добавления новых возможностей.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Ашарчук Л.М. Информационные системы в управлении, 2009.
2. Норенков, И.П. - Основы автоматизированного проектирования: Учеб. Для вузов. М.: Изд-во МГТУ им. Н. Э. Баумана, 2000. 360 с. ил.
3. Астафьева В.А., Ковальчук Е.В. Технологии автоматизированной обработки, 2006.
4. Прохорова Т.В. Автоматизация учета в системе «1С Предприятие 7.7» для Республики Беларусь, 2006.
5. Гетц К. Программирование в Microsoft Office, 2000.
6. Бухгалтерия 7.7. Руководство по ведению учета, 2000.
7. Алан Р. Саймон. Стратегические технологии баз данных. М.: «Финансы и статистика», 2001
8. Архангельский А.Я., Тагин М.А. - Программирование в C++ Builder 6 и 2006 .- 224 с.: ил.
9. Дьюхерт, С. C++. Священные знания. - Пер. с анл. - СПб.: Символ-Плюс, 2012. - 240 с., ил.
10. Динман, М.И. С++. Освой на примерах. - СПб.: БЧИ-Петербург, 2006. - 348 с.: ил.
11. Послед Б.С. - Borland C++ Builder 6. Разработка приложений баз данных 2003. 200 с.: ил.
12. Фаронов, В. Программирование на языке высокого уровня: Учебник для вузов / В. Фаронов. Санкт-Петербург: ООО «Питер Пресс»,2009. 640с.
Приложение А
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.XPMan, Data.DB,
Data.Win.ADODB, Vcl.StdCtrls, frxClass, frxDBSet;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
XPManifest1: TXPManifest;
ADOConnection1: TADOConnection;
Label1: TLabel;
N10: TMenuItem;
N11: TMenuItem;
frxDBDataset1: TfrxDBDataset;
procedure N5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
file_i:TextFile;
file_b:string;
buttonSelected : Integer;
ler:Boolean;
myDate : TDateTime;
myYear, myMonth, myDay : Word;
implementation
{$R *.dfm}
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.ADOConnection1.Connected:=false;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Form1.ADOConnection1.Connected:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
AssignFile(file_i,'conf.txt');
reset(file_i);
readLn(file_i, file_b);
form1.ADOConnection1.ConnectionString:=file_b;
Form1.ADOConnection1.Connected:=True;
CloseFile(file_i);
except
Form1.ADOConnection1.Connected:=false;
CloseFile(file_i);
buttonSelected := MessageDlg('База не подключена, Настройте конфигурацию с БД, либо выйдите',mtError, mbOKCancel, 0);
if buttonSelected = mrOK then Form1.Show;
if buttonSelected = mrCancel then Application.Terminate;
end;
if(Form1.ADOConnection1.Connected=true) then
Form1.Label1.Caption:='База данных подключена'
else
Form1.Label1.Caption:='База данных не подключена';
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form6.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form7.ShowModal;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Form4.ShowModal;
end;
end.
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
CheckBox1: TCheckBox;
Button1: TButton;
procedure CheckBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit1;
procedure TForm2.Button1Click(Sender: TObject);
begin
if(form2.Edit1.Text<>'')and(Form2.Edit2.Text<>'')and(Form2.Edit1.Text<>' ')and(Form2.Edit2.Text<>' ') then begin
if(Form1.ADOConnection1.Connected=false) then begin
try
Form1.ADOConnection1.Connected:=false;
Form1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+Form2.Edit2.Text+';Data Source='+Form2.Edit1.Text+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ADMINKA;Use Encryption for Data=False;Tag with column collation when possible=False;';
Form1.ADOConnection1.Connected:=True;
ler:=true;
except
ler:=false;
ShowMessage('Имя сервера или название бд неверные');
Form2.Edit1.Clear;
Form2.Edit2.Clear;
end;
if(ler=true) then begin
file_b:=Form1.ADOConnection1.ConnectionString;
AssignFile(file_i, 'conf.txt'); // Связь переменной с файлом.
Rewrite(file_i); // Создания нового файла
write(file_i,file_b); // Запись строки в файл.
CloseFile(file_i);
ShowMessage('База Подключена');
Form1.Label1.Caption:='База данных подключена';
Form2.Close;
end;
end else begin
if (Form1.ADOConnection1.Connected=false) then begin
Form1.Label1.Caption:='База данных не подключена';
Form1.Label1.Font.Color:=clRed;
Form1.Label1.Color:=clRed;
Form1.Cursor:=crAppStart;
end
else
begin
Form1.Label1.Caption:='База данных подключена';
Form1.Label1.Color:=clGreen;
Form2.Edit1.Clear;
Form2.Edit2.Clear;
ShowMessage('База Подключена');
Form2.Close;
end;
end
end
else
ShowMessage('Вы не ввели все данные');
end;
procedure TForm2.CheckBox1Click(Sender: TObject);
begin
if(Form2.CheckBox1.Checked=true) then begin
Form2.Edit2.Enabled:=false;
Form2.Edit2.Text:='sveta';
end
else begin
Form2.Edit2.Enabled:=true;
Form2.Edit2.Clear;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Edit2.Text:='sveta';
Form2.Edit2.Enabled:=false;
end;
end.
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
CheckBox1: TCheckBox;
Button1: TButton;
procedure CheckBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit1;
procedure TForm2.Button1Click(Sender: TObject);
begin
if(form2.Edit1.Text<>'')and(Form2.Edit2.Text<>'')and(Form2.Edit1.Text<>' ')and(Form2.Edit2.Text<>' ') then begin
if(Form1.ADOConnection1.Connected=false) then begin
try
Form1.ADOConnection1.Connected:=false;
Form1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+Form2.Edit2.Text+';Data Source='+Form2.Edit1.Text+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ADMINKA;Use Encryption for Data=False;Tag with column collation when possible=False;';
Form1.ADOConnection1.Connected:=True;
ler:=true;
except
ler:=false;
ShowMessage('Имя сервера или название бд неверные');
Form2.Edit1.Clear;
Form2.Edit2.Clear;
end;
if(ler=true) then begin
file_b:=Form1.ADOConnection1.ConnectionString;
AssignFile(file_i, 'conf.txt'); // Связь переменной с файлом.
Rewrite(file_i); // Создания нового файла
write(file_i,file_b); // Запись строки в файл.
CloseFile(file_i);
ShowMessage('База Подключена');
Form1.Label1.Caption:='База данных подключена';
Form2.Close;
end;
end else begin
if (Form1.ADOConnection1.Connected=false) then begin
Form1.Label1.Caption:='База данных не подключена';
Form1.Label1.Font.Color:=clRed;
Form1.Label1.Color:=clRed;
Form1.Cursor:=crAppStart;
end
else
begin
Form1.Label1.Caption:='База данных подключена';
Form1.Label1.Color:=clGreen;
Form2.Edit1.Clear;
Form2.Edit2.Clear;
ShowMessage('База Подключена');
Form2.Close;
end;
end
end
else
ShowMessage('Вы не ввели все данные');
end;
procedure TForm2.CheckBox1Click(Sender: TObject);
begin
if(Form2.CheckBox1.Checked=true) then begin
Form2.Edit2.Enabled:=false;
Form2.Edit2.Text:='sveta';
end
else begin
Form2.Edit2.Enabled:=true;
Form2.Edit2.Clear;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Edit2.Text:='sveta';
Form2.Edit2.Enabled:=false;
end;
end.
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
CheckBox1: TCheckBox;
Button1: TButton;
procedure CheckBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit1;
procedure TForm2.Button1Click(Sender: TObject);
begin
if(form2.Edit1.Text<>'')and(Form2.Edit2.Text<>'')and(Form2.Edit1.Text<>' ')and(Form2.Edit2.Text<>' ') then begin
if(Form1.ADOConnection1.Connected=false) then begin
try
Form1.ADOConnection1.Connected:=false;
Form1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+Form2.Edit2.Text+';Data Source='+Form2.Edit1.Text+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ADMINKA;Use Encryption for Data=False;Tag with column collation when possible=False;';
Form1.ADOConnection1.Connected:=True;
ler:=true;
except
ler:=false;
ShowMessage('Имя сервера или название бд неверные');
Form2.Edit1.Clear;
Form2.Edit2.Clear;
end;
if(ler=true) then begin
file_b:=Form1.ADOConnection1.ConnectionString;
AssignFile(file_i, 'conf.txt'); // Связь переменной с файлом.
Rewrite(file_i); // Создания нового файла
write(file_i,file_b); // Запись строки в файл.
CloseFile(file_i);
ShowMessage('База Подключена');
Form1.Label1.Caption:='База данных подключена';
Form2.Close;
end;
end else begin
if (Form1.ADOConnection1.Connected=false) then begin
Form1.Label1.Caption:='База данных не подключена';
Form1.Label1.Font.Color:=clRed;
Form1.Label1.Color:=clRed;
Form1.Cursor:=crAppStart;
end
else
begin
Form1.Label1.Caption:='База данных подключена';
Form1.Label1.Color:=clGreen;
Form2.Edit1.Clear;
Form2.Edit2.Clear;
ShowMessage('База Подключена');
Form2.Close;
end;
end
end
else
ShowMessage('Вы не ввели все данные');
end;
procedure TForm2.CheckBox1Click(Sender: TObject);
begin
if(Form2.CheckBox1.Checked=true) then begin
Form2.Edit2.Enabled:=false;
Form2.Edit2.Text:='sveta';
end
else begin
Form2.Edit2.Enabled:=true;
Form2.Edit2.Clear;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Edit2.Text:='sveta';
Form2.Edit2.Enabled:=false;
end;
end. unit Unit5;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.StdCtrls,
Vcl.ComCtrls, Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls;
type
TForm5 = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
DBLookupComboBox1: TDBLookupComboBox;
DateTimePicker1: TDateTimePicker;
ComboBox1: TComboBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
ADOQuery2id_vedom: TAutoIncField;
ADOQuery2id_stud: TIntegerField;
ADOQuery2data: TWideStringField;
ADOQuery2summa: TIntegerField;
ADOQuery1: TADOQuery;
ADOQuery1id_stud: TAutoIncField;
ADOQuery1id_grup: TIntegerField;
ADOQuery1fio_stud: TStringField;
ADOQuery1id_grup_1: TAutoIncField;
ADOQuery1name_grup: TStringField;
procedure Edit1Change(Sender: TObject);
procedure ADOQuery1AfterScroll(DataSet: TDataSet);
procedure DBLookupComboBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
myDate : TDateTime;
tmDate : TDateTime;
kol:Integer;
i:integer;
myYear, myMonth, myDay : Word;
implementation
{$R *.dfm}
uses Unit1, Unit3;
procedure TForm5.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
Form5.ADOQuery2.Filtered:=False;
Form5.ADOQuery2.Filter:='id_stud ='+IntToStr(ADOQuery1.FieldByName('id_stud').AsInteger);
Form5.ADOQuery2.Filtered:=True;
end;
procedure TForm5.Button1Click(Sender: TObject);
begin
myDate:=now;
tmDate:=Form5.DateTimePicker1.Date;
if(myDate<=tmDate) then
begin
ShowMessage('Введена дата больше существующей');
Form5.DateTimePicker1.Date:=now;
exit;
end;
//проверка оплады группы за месяц
if(Form5.DBLookupComboBox1.Text<>'')and(Form5.ComboBox1.Text<>'')and(Form5.ADOQuery1.RecordCount>0) then begin
myDate:=Form5.DateTimePicker1.Date;
DecodeDate(myDate,myYear, myMonth, myDay);
Form5.ADOQuery1.First;
kol:=Form5.ADOQuery1.RecordCount;
for i:=1 to kol do begin
Form5.ADOQuery2.Insert;
Form5.ADOQuery2.FieldByName('id_stud').AsInteger:=Form5.ADOQuery1.FieldByName('id_stud').AsInteger;
Form5.ADOQuery2.FieldByName('summa').AsInteger:=StrToInt(Form5.ComboBox1.text);
Form5.ADOQuery2.FieldByName('data').AsDateTime:=EncodeDate(myYear, myMonth,myDay);;
Form5.ADOQuery2.Post;
Form5.ADOQuery1.Next;
end;
end
else
begin
ShowMessage('Не все заполнено!!!');
end;
end;
procedure TForm5.DBLookupComboBox1Click(Sender: TObject);
begin
Form5.ADOQuery1.Active:=false;
Form5.ADOQuery1.SQL.Text:='select * from grup,stud where grup.id_grup=stud.id_grup and grup.id_grup='+IntToStr(Form5.DBLookupComboBox1.KeyValue);
Form5.ADOQuery1.Active:=true;
end;
procedure TForm5.Edit1Change(Sender: TObject);
begin
Form5.ADOQuery1.Close();
Form5.ADOQuery1.SQL.text:='select * from grup,stud where grup.id_grup=stud.id_grup and grup.id_grup='+IntToStr(Form5.DBLookupComboBox1.KeyValue)+' and stud.fio_stud like ''%' + Form5.Edit1.Text +'%''';
Form5.ADOQuery1.Open();
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
Form5.ComboBox1.ItemIndex:=0;
Form5.ADOQuery2.Active:=true;
end;
end.
unit Unit6;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.StdCtrls,
Vcl.ComCtrls, Vcl.DBCtrls, frxClass, frxDBSet;
type
TForm6 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Button1: TButton;
ADOQuery1: TADOQuery;
frxDBDataset1: TfrxDBDataset;
DataSource1: TDataSource;
frxReport1: TfrxReport;
procedure DBLookupComboBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
procedure DateTimePicker2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
myDate : TDateTime;
tmDate : TDateTime;
myYear, myMonth, myDay : Word;
tmYear, tmMonth, tmDay : Word;
gupDate:TDateTime;
gupYear, gupMonth, gupDay : Word;
implementation
{$R *.dfm}
uses Unit1, Unit4, Unit3;
procedure TForm6.Button1Click(Sender: TObject);
begin
if(Form6.DBLookupComboBox1.Text<>'') then begin
myDate:=Form6.DateTimePicker1.Date;
tmDate:=Form6.DateTimePicker2.Date;
Form6.ADOQuery1.Active:=False;
DecodeDate(myDate,myYear, myMonth, myDay);
DecodeDate(tmDate,tmYear, tmMonth, tmDay);
Form6.ADOQuery1.Parameters.ParamByName('D1').Value:=EncodeDate(myYear,myMonth,01);
Form6.ADOQuery1.Parameters.ParamByName('D2').Value:=EncodeDate(tmYear, tmMonth,tmDay);
Form6.ADOQuery1.Active:=true;
Form6.frxReport1.ShowReport;
end
else
ShowMessage('Вы не ввели группу');
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
Form6.frxReport1.ShowReport;
end;
procedure TForm6.DateTimePicker1Change(Sender: TObject);
begin
myDate:=now;
tmDate:=Form6.DateTimePicker1.Date;
DecodeDate(myDate, myYear, myMonth, myDay);
DecodeDate(gupDate,gupYear, gupMonth, gupDay);
if(myDate<tmDate) then
begin
ShowMessage('Введена дата больше существующей');
Form6.DateTimePicker1.Date:=now;
exit;
end;
end;
procedure TForm6.DateTimePicker2Change(Sender: TObject);
begin
myDate:=now;
tmDate:=Form6.DateTimePicker2.Date;
DecodeDate(myDate, myYear, myMonth, myDay);
DecodeDate(gupDate,gupYear, gupMonth, gupDay);
if(myDate<tmDate) then
begin
ShowMessage('Введена дата больше существующей');
Form6.DateTimePicker2.Date:=now;
exit;
end;
end;
procedure TForm6.DBLookupComboBox1Click(Sender: TObject);
begin
Form6.ADOQuery1.Parameters.ParamByName('d').Value:=Form6.DBLookupComboBox1.KeyValue;
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
Form6.ADOQuery1.Active:=true;
end;
end.
Программа автоматизации учёта выплат учащимися профсоюзных взносов