- •Оглавление
- •Глава 1 Постановка задачи. 8
- •Глава 2 Основная часть 14
- •Глава 3 Экономическая часть 53
- •Глава 4 Техника безопасности 63
- •Введение
- •1.2.1 Требования к функциональным характеристикам
- •1.2.2 Требования к надежности
- •1.2.3 Условия эксплуатации
- •1.2.4 Требования к составу и параметрам технических средств
- •Требования к информационной и программной совместимости
- •1.2.6 Технико-экономические показатели
- •1.2.7 Стадии и этапы разработки
- •1.2.8 Порядок контроля приемки
- •1.2.9 Обзор существующих решений
- •1.2.10 Выбор языка программирования
- •Глава 2 Основная часть
- •2.1 Описание программы
- •2.1.1 Общие сведения
- •2.1.2 Функциональное назначение
- •2.1.3 Описание логической структуры
- •2.1.4 Используемые технические средства
- •2.1.5 Входные данные
- •2.1.6 Выходные данные
- •Условия применения
- •2.2 Руководство системного программиста
- •2.2.1 Общие сведения о программе
- •2.2.2 Используемые программные средства.
- •2.2.3 Структура программы
- •2.2.4 Структура таблиц базы данных предприятия
- •2.2.5 Этап разработки программы
- •2.2.6 Настройка программы
- •2.2.7 Проверка программы
- •2.2.7.1 Общие сведения о тестировании
- •2.2.7.2 Виды тестирования
- •2.2.7.3 Методы тестирования
- •2.2.7.4 Принципы тестирования
- •2.3.4 Сообщения оператору
- •Глава 3 Экономическая часть
- •Расчет времени на создание программного продукта
- •Расчет годового фонда заработной платы исполнителя по созданию программного продукта
- •Расчет начислений на заработную плату
- •Расчет расходов на содержание и эксплуатацию пэвм
- •Расчет себестоимости программного продукта
- •Расчет цены программного продукта
- •Расчет экономической эффективности
- •Глава 4 Техника безопасности
- •4.1. Основы техники безопасности при работе с эвм
- •4.2. Выводы по технике безопасности
- •Заключение
- •Список используемой литературы
- •Приложение. Код программы //Клиентское приложение.
- •//Серверное приложение.
//Серверное приложение.
unit server;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdContext,
IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer, Data.DB,
DBAccess, Uni, MemDS, UniProvider, MySQLUniProvider, Vcl.ExtCtrls,
Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Printers, ShellAPI, Vcl.CheckLst,
Vcl.ComCtrls, IdAntiFreezeBase, Vcl.IdAntiFreeze;
type
TForm1 = class(TForm)
log: TMemo;
Label2: TLabel;
Label3: TLabel;
IdTCPServer1: TIdTCPServer;
Button1: TButton;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
MySQLUniProvider1: TMySQLUniProvider;
Connection: TUniConnection;
DataSource: TUniDataSource;
Button2: TButton;
StaticText1: TStaticText;
Timer1: TTimer;
Query: TUniQuery;
Button4: TButton;
SaveDialog1: TSaveDialog;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button3: TButton;
ListBox1: TListBox;
PrintDialog1: TPrintDialog;
TrayIcon1: TTrayIcon;
Button8: TButton;
IdAntiFreeze1: TIdAntiFreeze;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdTCPServer1Execute(AContext: TIdContext);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure TrayIcon1DblClick(Sender: TObject);
procedure TrayIcon1Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//---log clear---//
procedure TForm1.Button1Click(Sender: TObject);
begin
log.Clear;
end;
//---log clear---//
//---Refresh---//
procedure TForm1.Button2Click(Sender: TObject);
begin
IdAntiFreeze1.Active:=true;
ListBox1.Items.Clear;
Query.SQL.Clear;
Query.SQL.Text:=('Select * From Users where `Online`="1";');
Query.ExecSQL;
While not Query.EOF do
begin
ListBox1.Items.Add(Query.FieldByName('Login').AsString); //Заполняем
Query.Next;
end;
ListBox1.ItemIndex :=0;
Label2.Caption:='Пользователи on-line: '+IntToStr(ListBox1.Items.Count);
IdAntiFreeze1.Active:=false;
end;
//---Refresh---//
//---Таблица "users"---//
procedure TForm1.Button3Click(Sender: TObject);
begin
Query.SQL.Clear;
Query.SQL.Text:=('Select * From Users');
Query.ExecSQL;
Width:=1550;
Height:=900; //on
Left:=10;
Top:=10;
Button3.Visible:=false;
Button7.Visible:=true;
DBNavigator1.Visible:=true;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Width:=664;
Height:=400;
Position:=poDesktopCenter; //off
Button3.Visible:=true;
Button7.Visible:=false;
DBNavigator1.Visible:=false;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
log.Lines.Add(#13#10+('=====//Список неактивированных учетных записей:')+#13#10);
Query.SQL.Clear;
Query.SQL.Text:=('Select Login From Users where `Статус регистрации`="0";');
Query.ExecSQL;
While not Query.EOF do
begin
log.Lines.Add(Query.FieldByName('Login').AsString); //Заполняем
Query.Next;
end;
log.Lines.Add
(#13#10+('=====//')+#13#10);
end;
//---Таблица "users"---//
//---Save Memo---//
procedure TForm1.Button4Click(Sender: TObject);
var
saveDialog : TSaveDialog; // Переменная диалога сохранения
begin
saveDialog:=TSaveDialog.Create(self);
saveDialog.Title := 'Save log history';
// Разрешаем сохранять файлы типа .txt и .doc
saveDialog.Filter := 'Text file|*.txt|';
saveDialog.FileName:='Log history ['+DateToStr(Now)+']';
if saveDialog.Execute then begin
log.Lines.SaveToFile(SaveDialog.FileName+'.txt');
ShowMessage('File : '+saveDialog.FileName+' has been saved');
end else ShowMessage('Сохранение отменено!'); // Освобождения диалога
saveDialog.Free;
end;
//---Save Memo---//
//---Печать Memo---//
procedure TForm1.Button6Click(Sender: TObject);
var
Line: TextFile;
I: integer;
begin
If PrintDialog1.Execute then
begin
AssignPrn(Line);
ReWrite(Line);
Printer.Canvas.Font := log.Font;
for I := 0 to log.Lines.Count -1 do Writeln (Line, log.Lines[i]);
System.CloseFile(Line);
end;
end;
//---Печать Memo---//
//---Настройки соединения---//
procedure TForm1.FormCreate(Sender: TObject);
begin
IdTCPServer1.DefaultPort := 12345;
IdTCPServer1.Active:=true;
Connection.ProviderName:='MySQL';
Connection.Server:='localhost'; //192.168.1.29
Connection.Database:='uptrasko';
Connection.Username:='root';
Connection.Password:='';
Connection.Connected:=true;
Query.SQL.Text:=('Select * From Users');
Query.Active:=true;
end;
//---Настройки соединения---//
//---Прием данных в лог---//
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
i,t: string; // строковая переменная, в которую мы будем получать
begin
i := AContext.Connection.IOHandler.ReadLn();
Button2.Click;
if ListBox1.Items.IndexOf(i)>= 0 then begin
t:=' вошел в систему!'
end else begin
t:=' вышел из системы!'
end;
log.Lines.Add('['+DateTimeToStr(Now)+'] Пользователь '+i+t+' '+AContext.Connection.Socket.Binding.PeerIP);
end;
//---Прием данных в лог---//
//---Timer---//
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StaticText1.Caption:=DateTimeToStr(Now);
if StaticText1.Caption=DateToStr(Now)+' 00:01:00' then begin //AutoBackup and save log
ShellExecute(handle,'open','O:\autobackup.bat',nil,nil,SW_SHOWNORMAL);
log.Lines.SaveToFile('O:\LogBackupFolder\Log history ['+DateToStr(Now)+'].txt');
log.Lines.Clear;
end else
end;
//---Timer---//
//---Backup---//
procedure TForm1.Button5Click(Sender: TObject);
begin //Backup
ShellExecute(handle,'open','O:\backup.bat',nil,nil,SW_SHOWNORMAL);
end;
//---Backup---//
procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
Form1.Visible:=false;
end;
procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
Form1.Visible:=true;
Application.BringToFront; //поверх всех окон
end;
end.