Разработка программы "Телефонная база"

Разработка программы для автоматизации расчетов на телефонной станции. Описание входной и выходной информации, комплекс технических средств. Интерфейс конечного пользователя. Проектирование программных модулей представления входных и выходных данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.06.2015
Размер файла 460,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования и науки российской федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Российский экономический университет имени Г.В. Плеханова

Кемеровский институт (филиал)

Кафедра вычислительной техники и информационных технологий

Пояснительная записка к курсовой работе

По дисциплине «Информатика и программирование»

На тему

Разработка программы «Телефонная база»

Выполнил: Чиркин А.Н.

Студент гр. ПИ-145

Руководитель: к.т.н.,

доцент Ткаченко Н.А.

Кемерово 2015
ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
Студенту гр. ПИ-145 Чиркину Александру Николаевичу

Тема курсовой работы:

Разработка программы «Телефонная база»

Перечень вопросов, подлежащих исследованию или разработке:

1. Ввод исходных данных в файл

2. Вычисление остатка (остаток равен разности между суммой, внесенной абонентом и суммой за МТР)

3. Вывод таблицы со столбцами: телефон, сумма за МТР, остаток

4. Вывод списка телефонов тех абонентов, которые остались должны (остаток отрицательный)

5. Выдачу справки по конкретному телефону

СОДЕРЖАНИЕ

Введение

1. Техническое задание

1.1 Формулировка задачи

1.2 Описание входной и выходной информации

1.3 Требования к комплексу технических средств

1.4 Требования к интерфейсу конечного пользователя

2. Технический проект

2.1 Разработка форм представления входных данных

2.2 Разработка форм представления выходных данных

2.3 Проектирование программных модулей

3. Рабочий проект

3.1 Описание программы

3.2 Руководство пользователя

3.3 Руководство программиста

Заключение

Список использованной литературы

Приложение А - Текст программы

ВВЕДЕНИЕ

В наше время, информационные технологии окружают человека во всех сферах его деятельности и помогают ему решать различные виды задач.

Во всех развитых странах осуществляются широкомасштабные программы информатизации.

Разрабатываемая в рамках данной курсовой работы программа является демонстрационной и показывает уровень освоения материала по курсу «N», а также практических навыков по применению методик разработки программ в объектно-ориентированной среде Lazarus.

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ

1.1 Формулировка задачи

Задачей курсового проектирования является: Разработка программы «Телефонная станция», предназначенная для использования в высших учебных заведениях.

Программа «Справочная аэропорта» должна решать следующие задачи:

· Ввод исходных данных в файл

· Вычисление остатка (остаток равен разности между суммой, внесенной абонентом и суммой за МТР)

· Вывод таблицы со столбцами: телефон, сумма за МТР, остаток

· Вывод списка телефонов тех абонентов, которые остались должны (остаток отрицательный)

· Выдачу справки по конкретному телефону

Программа предназначена для автоматизации работы телефонной станции. Использование программы позволит повысить скорость работы телефонной станции.

Данные в программу вносятся на основании списков телефонных номеров, и заносятся в файл базы данных для дальнейшей обработки и выдачи виде таблиц. Данная программа обеспечит автоматизацию расчётов на станции, что ускорит процесс работы.

1.2 Описание входной и выходной информации

Входная информация - это те данные, которые вносятся пользователем в программу.

Входная информация формируется на основании данных об абонентах телефонной станции, а именно: номер телефона абонента, сумме на его счету, расходов на междугородние телефонные разговоры.

При этом вся введенная информация должна сохраняется и в последующем используется для получения выходной информации.

Выходная информация - это данные представляемые по запросу пользователя в электронном и при необходимости в печатном виде.

Выходная информация формируется на основании обработки входной информации, отсортированной в определенном виде, по запросу пользователя и представляется в виде таблиц.

1.3 Требования к комплексу технических средств

Для реализации поставленной задачи необходимо наличие следующих программно-технических средств, представленных в таблице 1.3.1:

Таблица 1.3.1

Программно-технические требования

Наименование

Требования

Процессор

с тактовой частотой 1200 MHz или более мощный

RAM

512 Мб или больше

Video

Не меньше 512 Мб

Операционная система

Windows 7, Windows 8

1.4 Требования к интерфейсу конечного пользователя

Пользовательский интерфейс состоит из главного окна с системным меню. Меню предлагает пользователю работу с данными. А именно, Открытие файла с данными, редактирование ранее введенной информации, удаление данных. Также пользователю предлагается вывести перечень абонентов удовлетворяющих условию запроса (Вывод списка абонентов, которые остались должны) , расчёт остатка на счёте абонента. Программа имеет контекстные меню для отдельных компонентов.

2. Технический проект

2.1 Разработка форм представления входных данных

Входная информация должна содержать в себе данные об абонентах, заносящиеся в программу и хранящиеся в файле БД. Раздел программы, отвечающий за ввод входной информации выделен на рис.2.1.1.

Рис. 2.1.1 Форма для ввода информации об абоненте

После ввода данные сохраняются в файле БД и затем могут быть отображены.

2.2 Разработка форм представления выходных данных

Программа реализует основные функции по выдаче выходной информации. Во-первых, это вывод списка всех абонентов, во-вторых, вывод списка абонентов, у которых остался долг, в третьих вычисление остатка на счёте, в четвёртых выдача справки по конкретному телефону.

Обратиться к таблице данных можно с помощью кнопок и меню расположенных на форме (Рис. 2.2.1)

Рис. 2.2.1 Выбор запроса

После выбора пункта запроса выполняются соответствующие действия, которые отображаются в исходной таблице.

2.3 Проектирование программных модулей

В соответствии с условиями поставленной задачи была построена схема программы, отражающая все задачи, которые должна решать программа (рис. 2.3.1).

Данная схема облегчает разработку программы, так как позволяет увидеть основные блоки работы программы, а также взаимосвязи между ними.

В соответствии со структурной схемой программа должна решать следующие задачи:

ь ввод данных по абонентам;

ь вывод информации об абонентах в виде таблицы;

ь вывод списка абонентов, имеющих задолженность;

ь выдача справки по конкретному телефону;

ь вычисление остатка на счёте абонента;

ь поиск конкретного абонента по его номеру телефона;

ь построение графика, демонстрирующего количество должников

ь выход из программы в ОС.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рис.2.3.1.Структурная схема программы «Телефонная станция»

Приведенный выше перечень показывает, какие программные модули следует разработать для решения поставленных задач.

3. Рабочий проект

3.1 Описание программы

В рамках данной работы была разработана программа «Телефонная станция». Программа была разработана в объектно-ориентированной среде Lazarus и имеет модуль запуска в виде exe-файла, таким образом, для работы программы не нужно дополнительное программное обеспечение.

Данная программа составлена из модулей, листинг которых приведен в Приложении 1. Их роль, связь и выполняемые функции описаны ниже.

Для запуска программы нужно запустить файл ATS.exe

Из главного меню модуля ATSmain.pas можно запустить любую функцию программы. При нажатии пункта меню «Сохранить как» пользователь получает возможность сохранить базу в нужный ему файл. При выборе пункта меню «Открыть как» пользователь выбирает файл с нужной ему БД. Для того чтобы открыть данные об абонентах необходимо выбрать пункт «Открыть» в меню «Файл».

При нажатии пункта меню «Формат» появляется подменю, состоящее из пункта: «Шрифт». При нажатии на который, пользователь получит возможность редактировать шрифт некоторых компонентов.

При выборе пункта меню «Справка», пользователь получает краткую информацию о программе.

Пункт меню «Выход» осуществляет выход из программы в ОС.

3.2 Руководство пользователя

Для того чтобы начать работу в программе, необходимо запустить файл ATS.exe. После этого на экране появится загрузочный экран программы (рис. 3.2.1).

Рис. 3.2.1 Загрузочный экран программы «Телефонная база»

Затем на экране отобразится главное окно программы (рис. 3.2.2)

Рис. 3.2.2 Внешний вид главного окна программы

В верхней части окна отображается главное меню, состоящее из пунктов, которые в свою очередь делятся на подпункты.

Во время работы, программа автоматически сохраняет все изменения данных, поэтому пользователь может не волноваться о потере данных во время работы.

Основные компоненты программы (обе таблицы и поле ввода информации) имеют собственное контекстное меню.

1) Меню для поля ввода информации содержит в себе два пункта:

ь Очистить поле

ь Справка

2) Меню для таблицы вывода всех абонентов содержит в себе четыре пункта:

ь Открыть

ь Сохранить как

ь Очистить

ь Справка

3) Меню для таблицы вывода абонентов с задолженностью содержит в себе три пункта

ь Показать список

ь Очистить

ь Справка

При помощи круговой диаграммы программа демонстрирует две категории абонентов:

ь Абоненты, у которых нет задолженности

ь Абоненты, имеющие задолженность

Работа программы основывается на нескольких основных функциях и процедурах, которые используются в основном коде.

1) Функция StringisNumber - проверяет является ли символ строки, находящейся в файле цифрой.

function StringIsNumber(Data:String): Boolean;

var start, i: Integer;

res: Boolean;

begin

res:= true;

if Length(Data) = 0

then res:= false

else

begin

start:= 1;

if (Data[start] = '-')

then start:= 2;

for i:= start to Length(Data) do

begin

if not (Data[i] in ['0'..'9'])

then

begin

res:= false;

break;

end;

end;

end;

Result:= res;

end;

2) Процедура Grafik - отвечает за постройку графика в программе

procedure Grafik (SG:TStringGrid; res: TPieSeries);[2]

var neg,pos1:integer;

begin

neg:=0;

pos1:=0;

for i:=1 to SG.RowCount-1 do

if strtoint(SG.cells[3,i])<40 then

inc(neg) else

inc(pos1);

if pos1+neg>0 then

With res do

begin

Clear;

Add(pos1,'Нет долгов',clYellow);

Add(neg,'Имеется долг',clBlue);

end;

end;

3) Процедура spisok - формирует строку, выводящуюся в справку. [5]

procedure spisok(SG:TStringGrid);

var

row:integer;

ind,nomer,MTP,balance,ost,s:string;

begin

row:=SG.row;

ind:='Выделен абонент с номером: '+SG.cells[0,row]+#13#10+#13#10;

nomer:='Номер телефона: ' + SG.cells[0,row]+#13#10;

MTP:='Расходы на МТР: ' +SG.cells[1,row]+' р'+#13#10;

balance:='Внесённая сумма: ' +SG.cells[2,row]+' р'+#13#10;

ost:='Остаток на счёте: ' +SG.cells[3,row]+' р'+#13#10;

s:=ind+nomer+MTP+balance+ost;

ShowMessage(s);

end;

4) Процедура AddNumber - отвечает за добавление новых строк в файл. [2]

procedure AddNumber(FileName:String; NewLine:String);

var OTable1: TextFile;

begin

AssignFile(OTable1, FileName);

Append(OTable1);

Writeln(OTable1, NewLine);

CloseFile(OTable1);

end;

5) Процедура ReplaceNumber - отвечает за замену, существующей строки в файле. Замена происходит при повторном введении одинаковых телефонных номеров, если пользователь согласится на неё. [5,6]

procedure ReplaceNumber(FileName:String; Position:Integer;

NewLine:String);

var i: Integer;

OTable1: TextFile;

NewText, OldLine: String;

begin

AssignFile(OTable1, FileName);

Reset(OTable1);

i:= 0;

NewText:= '';

while not eof (OTable1) do

begin

Readln(OTable1, OldLine);

if i = Position

then NewText:= NewText + NewLine + #13#10

else NewText:= NewText + OldLine + #13#10;

inc(i);

end;

CloseFile(OTable1);

Rewrite(OTable1);

Write(OTable1, NewText);

CloseFile(OTable1);

end;

6) Функция CheckNumber - проверяет сколько “групп” цифр находится в строке. Программа работает с четырьмя “группами” цифр (номер телефона, баланс, МТР, остаток). [2]

function CheckNumber(FileName:String; Phone:String): Integer;

var position, i : Integer;

OTable1: TextFile;

strTemp: String;

List: TStrings;

begin

AssignFile(OTable1, FileName);

Reset(OTable1);

i:= -1;

position:= -1;

while not eof (OTable1) do

begin

Readln(OTable1, strTemp);

List := TStringList.Create;

ExtractStrings(['|'], [], PChar(strTemp), List);

inc(i);

if List.Count > 0

then

if List[0] = Phone

then

begin

position:= i;

break;

end;

end;

CloseFile(OTable1);

Result:= position;

end;

7) Процедура DeleteNumber - служит для удаления выделенной строки из файла. [6,5]

procedure DeleteNumber(FileName:String; Position:Integer);

var i: Integer;

OTable1: TextFile;

NewText, OldLine: String;

begin

AssignFile(OTable1, FileName);

Reset(OTable1);

i:= 0;

NewText:= '';

while not eof (OTable1) do

begin

Readln(OTable1, OldLine);

if i <> Position

then NewText:= NewText + OldLine + #13#10;

inc(i);

end;

CloseFile(OTable1);

Rewrite(OTable1);

Write(OTable1, NewText);

CloseFile(OTable1);

end;

8) Функция LoadDataInGrid - данная функция загружает выбранный пользователем файл в таблицу.[6]

function LoadDataInGrid(FileName:String; SG: TStringGrid): Boolean;

var i, k, t: Integer;

OTable1: TextFile;

strTemp: String;

List: TStrings;

res: Boolean;

begin

res:=true;

AssignFile(OTable1, FileName);

k:= 1;

Reset(OTable1);

while not eof (OTable1) do

begin

Readln(OTable1, strTemp);

if strTemp <> '' then

begin

List:= TStringList.Create;

ExtractStrings(['|'], [], PChar(strTemp), List);

if List.Count < 4

then res:= false

else

begin

for t:= 1 to 3 do

if not StringIsNumber(List[t])

then

begin

res:= false;

break; // конец цикла for t:= 1 to 3 do

end;

end;

if res

then

begin

if k > SG.RowCount - 1

then SG.RowCount:= k + 1;

for i:= 0 to 3 do

SG.Cells[i, k]:= List[i];

inc(k);

end

else

break; // конец цикла while not eof (OTable1) do

end;

end;

CloseFile(OTable1);

Result:= res;

end;

3.3 Руководство программиста

Данная программы она работает с таблицами баз данных, роль базы данных играют текстовые файлы. По умолчанию таблица располагается в каталоге с программой и имеет имя tablica1.txt. Все данные, которые заносятся пользователями программы, сохраняются в этом файле, и последующая работа с ними возможна только при ее наличие в рабочем каталоге. Кроме этого, пользователь имеет возможность сохранять данные в файл по выбору и использовать необходимые ему базы данных, загружая их из других файлов БД. Однако, следует с особой внимательностью следить за сохранностью таблицы и не допускать ее изменений вне программы.

Программа имеет проверку на “правильность” БД, если пользователь выберет таблицу, которая содержит в себе неверную информацию, то программа предложит ему выбрать другой файл для работы. При отсутствии файла в каталоге, программа автоматически создаст необходимый файл.

ЗАКЛЮЧЕНИЕ

Результатом курсовой работы является разработанная программа «Телефонная станция». Данная программа предназначена для использования на телефонных станциях и позволяет производить необходимые работы в более короткие сроки.

Разработанная программа решает следующие (основные) задачи:

· Ввод исходных данных в файл

· Вычисление остатка (остаток равен разности между суммой, внесенной абонентом и суммой за МТР)

· Вывод таблицы со столбцами: телефон, сумма за МТР, остаток

· Вывод списка телефонов тех абонентов, которые остались должны (остаток отрицательный)

· Выдачу справки по конкретному телефону

При выполнении курсовой работы были закреплены и углублены практические умения работы в среде объектно-ориентированного программирования Lazarus, а также получены навыки по оформлению и представлению технической документации к работе.

программный автоматизация телефонный данные

Список использованной литературы

1. Ткаченко Н.А. Разработка Windows-приложений в среде Delphi. Методические указания по выполнению лабораторных работ.

2. http://www.williamspublishing.com/PDF/5-8459-0693-8/p..

3. http://www.kazedu.kz/referat/133065

4. Фаронов В. Dephi 6: учебный курс.

5. http://www.delphi-manual.ru/lesson1.php

6. http://www.stringgrid-delphi.ru/index.php

7. http://www.intuit.ru/studies/courses/13745/1221/info

ПРИЛОЖЕНИЕ A

Главный модуль программы

unit Unit2;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, TAGraph, TASeries, Forms, Controls, Graphics,

Dialogs, Menus, StdCtrls, Grids, ExtCtrls, ComCtrls;

type

{ TForm2 }

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

DeleteBaton: TButton;

Chart1: TChart;

Chart1PieSeries1: TPieSeries;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

FontDialog1: TFontDialog;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

ImageList1: TImageList;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

MainMenu1: TMainMenu;

MenuItem1: TMenuItem;

MenuItem11: TMenuItem;

MenuItem12: TMenuItem;

MenuItem13: TMenuItem;

MenuItem14: TMenuItem;

MenuItem15: TMenuItem;

MenuItem16: TMenuItem;

MenuItem17: TMenuItem;

MenuItem2: TMenuItem;

MenuItem4: TMenuItem;

MenuItem5: TMenuItem;

MenuItem6: TMenuItem;

MenuItem7: TMenuItem;

MenuItem8: TMenuItem;

MenuItem9: TMenuItem;

OpenDialog1: TOpenDialog;

PopupGrid: TPopupMenu;

PopupEdits: TPopupMenu;

PopupGrid2: TPopupMenu;

SaveDialog1: TSaveDialog;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

ToolButton7: TToolButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure DeleteBatonClick(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: char);

procedure Edit2KeyPress(Sender: TObject; var Key: char);

procedure Edit3KeyPress(Sender: TObject; var Key: char);

procedure Edit4KeyPress(Sender: TObject; var Key: char);

procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);

procedure FormCreate(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure GroupBox1Click(Sender: TObject);

procedure MenuItem10Click(Sender: TObject);

procedure MenuItem11Click(Sender: TObject);

procedure MenuItem12Click(Sender: TObject);

procedure MenuItem13Click(Sender: TObject);

procedure MenuItem14Click(Sender: TObject);

procedure MenuItem15Click(Sender: TObject);

procedure MenuItem16Click(Sender: TObject);

procedure MenuItem17Click(Sender: TObject);

procedure MenuItem2Click(Sender: TObject);

procedure MenuItem3Click(Sender: TObject);

procedure MenuItem4Click(Sender: TObject);

procedure MenuItem6Click(Sender: TObject);

procedure MenuItem7Click(Sender: TObject);

procedure MenuItem8Click(Sender: TObject);

procedure MenuItem9Click(Sender: TObject);

procedure PopupGridPopup(Sender: TObject);

procedure StringGrid1Click(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton7Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form2: TForm2;

a,Nomer,MTP,balance,ostatok,k, i,j:integer;

STable1:TextFile;

s,FileLocation:string;

implementation

uses Unit3;

{$R *.lfm}

{ TForm2 }

function StringIsNumber(Data:String): Boolean;

var start, i: Integer;

res: Boolean;

begin

res:= true;

if Length(Data) = 0

then res:= false

else

begin

start:= 1;

if (Data[start] = '-')

then start:= 2;

for i:= start to Length(Data) do

begin

if not (Data[i] in ['0'..'9'])

then

begin

res:= false;

break;

end;

end;

end;

Result:= res;

end;

procedure Grafik (SG:TStringGrid; res: TPieSeries);

var neg,pos1:integer;

begin

neg:=0;

pos1:=0;

for i:=1 to SG.RowCount-1 do

if strtoint(SG.cells[3,i])<40 then

inc(neg) else

inc(pos1);

if pos1+neg>0 then

With res do

begin

Clear;

Add(pos1,'Нет долгов',clYellow);

Add(neg,'Имеется долг',clBlue);

end;

end;

procedure spisok(SG:TStringGrid);

var

row:integer;

ind,nomer,MTP,balance,ost,s:string;

begin

row:=SG.row;

ind:='Выделен абонент с номером: '+SG.cells[0,row]+#13#10+#13#10;

nomer:='Номер телефона: ' + SG.cells[0,row]+#13#10;

MTP:='Расходы на МТР: ' +SG.cells[1,row]+' р'+#13#10;

balance:='Внесённая сумма: ' +SG.cells[2,row]+' р'+#13#10;

ost:='Остаток на счёте: ' +SG.cells[3,row]+' р'+#13#10;

s:=ind+nomer+MTP+balance+ost;

ShowMessage(s);

end;

procedure AddNumber(FileName:String; NewLine:String);

var OTable1: TextFile;

begin

AssignFile(OTable1, FileName);

Append(OTable1);

Writeln(OTable1, NewLine);

CloseFile(OTable1);

end;

procedure ReplaceNumber(FileName:String; Position:Integer;

NewLine:String);

var i: Integer;

OTable1: TextFile;

NewText, OldLine: String;

begin

AssignFile(OTable1, FileName);

Reset(OTable1);

i:= 0;

NewText:= '';

while not eof (OTable1) do

begin

Readln(OTable1, OldLine);

if i = Position

then NewText:= NewText + NewLine + #13#10

else NewText:= NewText + OldLine + #13#10;

inc(i);

end;

CloseFile(OTable1);

Rewrite(OTable1);

Write(OTable1, NewText);

CloseFile(OTable1);

end;

function CheckNumber(FileName:String; Phone:String): Integer;

var position, i : Integer;

OTable1: TextFile;

strTemp: String;

List: TStrings;

begin

AssignFile(OTable1, FileName);

Reset(OTable1);

i:= -1;

position:= -1;

while not eof (OTable1) do

begin

Readln(OTable1, strTemp);

List := TStringList.Create;

ExtractStrings(['|'], [], PChar(strTemp), List);

inc(i);

if List.Count > 0

then

if List[0] = Phone

then

begin

position:= i;

break;

end;

end;

CloseFile(OTable1);

Result:= position;

end;

procedure DeleteNumber(FileName:String; Position:Integer);

var i: Integer;

OTable1: TextFile;

NewText, OldLine: String;

begin

AssignFile(OTable1, FileName);

Reset(OTable1);

i:= 0;

NewText:= '';

while not eof (OTable1) do

begin

Readln(OTable1, OldLine);

if i <> Position

then NewText:= NewText + OldLine + #13#10;

inc(i);

end;

CloseFile(OTable1);

Rewrite(OTable1);

Write(OTable1, NewText);

CloseFile(OTable1);

end;

function LoadDataInGrid(FileName:String; SG: TStringGrid): Boolean;

var i, k, t: Integer;

OTable1: TextFile;

strTemp: String;

List: TStrings;

res: Boolean;

begin

res:=true;

AssignFile(OTable1, FileName);

k:= 1;

Reset(OTable1);

while not eof (OTable1) do

begin

Readln(OTable1, strTemp);

if strTemp <> '' then

begin

List:= TStringList.Create;

ExtractStrings(['|'], [], PChar(strTemp), List);

if List.Count < 4

then res:= false

else

begin

for t:= 1 to 3 do

if not StringIsNumber(List[t])

then

begin

res:= false;

break; // конец цикла for t:= 1 to 3 do

end;

end;

if res

then

begin

if k > SG.RowCount - 1

then SG.RowCount:= k + 1;

for i:= 0 to 3 do

SG.Cells[i, k]:= List[i];

inc(k);

end

else

break; // конец цикла while not eof (OTable1) do

end;

end;

CloseFile(OTable1);

Result:= res;

end;

procedure TForm2.Button1Click(Sender: TObject);

var AddInGrid: boolean;

currentRow, i, pos: integer;

begin

if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '')

then MessageDLG('Заполните все поля!', mtWarning, [mbOK], 0)

else

begin

AddInGrid:= true;

balance:= StrToInt(Edit3.text);

MTP:= StrToInt(Edit2.Text);

ostatok:= balance - MTP;

s:= Edit1.Text + '|' + Edit2.text + '|' + Edit3.text + '|' + IntToStr(ostatok);

if FileExists(WideString(Utf8ToSys(FileLocation)))

then pos:= CheckNumber(WideString(Utf8ToSys(FileLocation)),

Edit1.Text)

else pos:= -1;

if pos >= 0

then

begin

if MessageDlg('Такой номер уже есть в базе, заменить

его?',mtInformation,[mbYes, mbNo],0)=mrYes

then

begin

for i:= 1 to StringGrid1.RowCount - 1 do

begin

if StringGrid1.Cells[0, i] = Edit1.text

then

begin

currentRow:=i;

break;

end;

end;

ReplaceNumber(WideString(Utf8ToSys(FileLocation)), pos, s);

Grafik(StringGrid1,Chart1PieSeries1);

end

else

AddInGrid:=false;

end

else

begin

currentRow:=StringGrid1.RowCount; StringGrid1.RowCount:=currentRow

+ 1;

AddNumber(WideString(Utf8ToSys(FileLocation)), s);

end;

if AddInGrid

then

begin

StringGrid1.Cells[0, currentRow]:=Edit1.text;

StringGrid1.Cells[1, currentRow]:=Edit2.text;

StringGrid1.Cells[2, currentRow]:=Edit3.text;

StringGrid1.Cells[3, currentRow]:=IntToStr(ostatok);

Edit1.Clear;

Edit1.SetFocus;

Edit2.Clear;

Edit3.Clear;

Grafik(StringGrid1,Chart1PieSeries1);

end;

end;

end;

procedure TForm2.Button2Click(Sender: TObject);

var z:integer;

begin

if (Edit4.Text = '') then

MessageDLG('Введите номер искомого абонента!',mtWarning,[mbOK],0)

else

begin

z:=0;

for a:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do

begin

If StringGrid1.cells[0,a] = Edit4.text then

begin

z:=z+1;

if StrToInt(StringGrid1.Cells[3,a]) < 0 then

ShowMessage(' Абонент с номером '+ StringGrid1.cells[0,a] + ' найден '

+#13#10 +#13#10 +' Номер телефона ' + StringGrid1.Cells[0,a] + #13#10

+ ' MTP ' + StringGrid1.Cells[1,a] + #13#10 +' Баланс на счёте ' +

StringGrid1.Cells[2,a] + #13#10 +' Остаток на счёте ' +

StringGrid1.Cells[3,a] + ' - ИМЕЕТСЯ ЗАДОЛЖЕННОСТЬ! ')

else

ShowMessage(' Абонент с номером '+ StringGrid1.cells[0,a] + ' найден '

+#13#10 +#13#10 +' Номер телефона ' + StringGrid1.Cells[0,a] + #13#10

+ ' MTP ' + StringGrid1.Cells[1,a] + #13#10 +' Баланс на счёте ' +

StringGrid1.Cells[2,a] + #13#10 +' Остаток на счёте ' +

StringGrid1.Cells[3,a] + ' - ЗАДОЛЖЕННОСТИ НЕТ') ;

end;

end;

If z=0 then

ShowMessage('Абонент с номером ' + Edit4.text + ' не найден') ;

end;

end;

procedure TForm2.Button3Click(Sender: TObject);

var da,x:integer;

begin

da:=1;

for a:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do

if strtoint(stringgrid1.cells[3,a])<0 then

begin

inc(da);

StringGrid2.RowCount:=da;

end;

if da=1 then

ShowMessage('Должников нет');

x:=1;

for a:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do

begin

If StringGrid1.Cells[3,a]='' then

break

else

if StrToInt(StringGrid1.Cells[3,a]) < 0 then

begin

StringGrid2.Cells[0, x]:=StringGrid1.Cells[0,a];

StringGrid2.Cells[1, x]:=StringGrid1.Cells[1,a];

StringGrid2.Cells[2, x]:=StringGrid1.Cells[2,a];

StringGrid2.Cells[3,x]:=StringGrid1.Cells[3,a];

x:=x+1;

end;

end;

end;

procedure TForm2.Button4Click(Sender: TObject);

var i,neg,pos:integer;

begin

neg:=0;

pos:=0;

for i:=1 to StringGrid1.RowCount-1 do

if strtoint(StringGrid1.cells[3,i])<0 then

inc(neg) else

inc(pos);

With Chart1PieSeries1 do

begin

Clear;

Add(pos,'Цех 1',clYellow);

Add(neg,'Цех 2',clBlue);

end;

end;

procedure TForm2.DeleteBatonClick(Sender: TObject);

var

pos:integer;

next1:boolean;

begin

if MessageDLG('Вы хотите удалить выбранного абонента?',

mtConfirmation, [mbYes, mbNo], 0) = mryes then

begin

if FileExists(WideString(Utf8ToSys(FileLocation)))

then pos:= CheckNumber(WideString(Utf8ToSys(FileLocation)),

StringGrid1.Cells[0, StringGrid1.Row])

else pos:= -1;

if pos >= 0

then

begin

DeleteNumber(WideString(Utf8ToSys(FileLocation)), pos);

Grafik(StringGrid1,Chart1PieSeries1);

end;

end;

StringGrid1.rowcount:=1;

stringgrid2.rowcount:=1;

next1:=true;

if FileExists(WideString(Utf8ToSys(FileLocation))) then

begin

next1:= LoadDataInGrid(WideString(Utf8ToSys(FileLocation)),

StringGrid1) ;

Grafik(StringGrid1,Chart1PieSeries1);

end

else

next1:= false;

if not next1 then

ShowMessage('Выбран неверный файл, пожалуйста выберите другой');

end;

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: char);

begin

if not (Key in ['0'..'9',#8]) then

key:=#0;

end;

procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: char);

begin

if not (Key in ['0'..'9',#8]) then

key:=#0;

end;

procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: char);

begin

if not (Key in ['0'..'9',#8]) then

key:=#0;

end;

procedure TForm2.Edit4KeyPress(Sender: TObject; var Key: char);

begin

if not (Key in ['0'..'9',#8]) then

key:=#0;

end;

procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose:

boolean);

begin

if MessageDLG('Вы точно хотите выйти?', mtConfirmation, [mbYes,

mbNo], 0) = mrNo then

CanClose:=false

else

If ( Edit1.text<>'' )or ( Edit2.text<>'' )or (Edit3.text<>'' ) then

begin

ShowMessage('Имеется не записанный номер');

Edit1.SetFocus;

CanClose:=false;

end ;

If CanClose then

Application.Terminate; end;

procedure TForm2.FormCreate(Sender: TObject);

begin

i:=1;

j:=1;

Application.Title:='Телефонная база';

end;

procedure TForm2.FormShow(Sender: TObject);

var

next1:boolean;

begin

Chart1.visible:=true;

FileLocation:='';

if MessageDLG('Открыть файл для работы с данными?', mtConfirmation,

[mbYes, mbNo], 0) = mrYes then

begin

StringGrid1.RowCount:=1;

if OpenDialog1.Execute then

begin

FileLocation:= OpenDialog1.FileName

end

else

FileLocation:= 'Tablica1.txt';

end

else

FileLocation:= 'Tablica1.txt';

next1:= LoadDataInGrid(WideString(Utf8ToSys(FileLocation)),

StringGrid1) ;

Grafik(StringGrid1,Chart1PieSeries1) ;

if not next1 then

begin

ShowMessage('Выбран неверный файл, пожалуйста выберите другой');

Chart1.visible:=false;

end;

end;

procedure TForm2.MenuItem10Click(Sender: TObject);

var next1:boolean;

begin

stringgrid2.rowcount:=1;

next1:=true;

if FileExists(WideString(Utf8ToSys(FileLocation))) then

begin

next1:= LoadDataInGrid(WideString(Utf8ToSys(FileLocation)),

StringGrid1) ;

Grafik(StringGrid1,Chart1PieSeries1);

end

else

next1:= false;

if not next1 then

ShowMessage('Выбран неверный файл, пожалуйста выберите другой');

end;

procedure TForm2.MenuItem11Click(Sender: TObject);

var

i: Integer;

s:string;

begin

if SaveDialog1.Execute then

begin

for i:=1 to StringGrid1.RowCount-1 do

s:= s + (StringGrid1.Cells[0, i] + '|'+ StringGrid1.Cells[1, i] + '|' +

StringGrid1.Cells[2, i] + '|' + StringGrid1.Cells[3, i] + #13#10);

AddNumber(WideString(Utf8ToSys(SaveDialog1.FileName)), s + #13#10);

end;

end;

procedure TForm2.MenuItem12Click(Sender: TObject);

var i,j:integer;

begin

if MessageDLG('Вы точно хотите удалить содержимое файла?',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Chart1.visible:=false;

StringGrid1.RowCount:=1;

StringGrid2.RowCount:=1;

for i:=1 to StringGrid1.RowCount-1 do

for j:=0 to StringGrid1.ColCount-1 do

StringGrid1.cells[j,i]:='' ;

for i:=1 to StringGrid2.RowCount-1 do

for j:=0 to StringGrid2.ColCount-1 do

StringGrid2.cells[j,i]:='';

end;

procedure TForm2.MenuItem13Click(Sender: TObject);

begin

Edit1.SetFocus;

Edit1.clear;

Edit2.clear;

Edit3.clear;

end;

procedure TForm2.MenuItem14Click(Sender: TObject);

begin

MessageDLG('Поля служат для введения информации о

пользователях',mtInformation, [mbOK], 0);

end;

procedure TForm2.MenuItem15Click(Sender: TObject);

begin

MessageDLG('Таблица выводит информацию о пользовательях

АТС',mtInformation, [mbOK], 0);

end;

procedure TForm2.MenuItem16Click(Sender: TObject);

var i,j:integer;

begin

stringgrid2.rowcount:=1;

for i:=1 to StringGrid2.RowCount-1 do

for j:=0 to StringGrid2.ColCount-1 do

StringGrid2.cells[j,i]:=''

end;

procedure TForm2.MenuItem17Click(Sender: TObject);

begin

MessageDLG('Таблица показывает информацию о

должниках',mtInformation, [mbOK], 0);

end;

procedure TForm2.MenuItem3Click(Sender: TObject);

var next1:boolean;

begin

stringgrid2.rowcount:=1;

next1:=true;

if FileExists(WideString(Utf8ToSys(FileLocation))) then

begin

next1:= LoadDataInGrid(WideString(Utf8ToSys(FileLocation)),

StringGrid1) ;

Grafik(StringGrid1,Chart1PieSeries1);

end

else

next1:= false;

if not next1 then

ShowMessage('Выбран неверный файл, пожалуйста выберите другой');

end;

procedure TForm2.MenuItem2Click(Sender: TObject);

var

i: Integer;

s:string;

begin

if SaveDialog1.Execute then

begin

for i:=1 to StringGrid1.RowCount-1 do

s:= s + (StringGrid1.Cells[0, i] + '|'+ StringGrid1.Cells[1, i] + '|' +

StringGrid1.Cells[2, i] + '|' + StringGrid1.Cells[3, i] + #13#10);

AddNumber(WideString(Utf8ToSys(SaveDialog1.FileName)), s + #13#10);

end;

end;

procedure TForm2.MenuItem6Click(Sender: TObject);

begin

if FontDialog1.Execute then

begin

StringGrid1.Font.Assign(FontDialog1.Font);

StringGrid2.Font.Assign(FontDialog1.Font);

end;

end;

procedure TForm2.MenuItem7Click(Sender: TObject);

var next1:boolean;

begin

Chart1.visible:=true;

FileLocation:='';

if MessageDLG('Открыть файл для работы с данными?', mtConfirmation,

[mbYes, mbNo], 0) = mrYes then

begin

StringGrid1.RowCount:=1;

StringGrid2.RowCount:=1;

if OpenDialog1.Execute then

begin

FileLocation:= OpenDialog1.FileName;

Chart1.visible:=true;

next1:= LoadDataInGrid(WideString(Utf8ToSys(FileLocation)),

StringGrid1) ;

Grafik(StringGrid1,Chart1PieSeries1)

end

else

FileLocation:= 'Tablica1.txt';

end

else

FileLocation:= 'Tablica1.txt';

if not next1 then

begin

Chart1.visible:=false;

ShowMessage('Выбран неверный файл, пожалуйста выберите другой');

end;

end;

procedure TForm2.MenuItem8Click(Sender: TObject);

begin

MessageDLG('Программа автоматически сохраняет вносимые номера '

+ #13#10,mtInformation, [mbOK], 0);

end;

procedure TForm2.MenuItem9Click(Sender: TObject);

var da,x:integer;

begin

da:=1;

for a:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do

if strtoint(stringgrid1.cells[3,a])<0 then

begin

inc(da);

StringGrid2.RowCount:=da;

end;

if da=1 then

ShowMessage('Должников нет');

x:=1;

for a:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do

begin

If StringGrid1.Cells[3,a]='' then

break

else

if StrToInt(StringGrid1.Cells[3,a]) < 0 then

begin

StringGrid2.Cells[0, x]:=StringGrid1.Cells[0,a];

StringGrid2.Cells[1, x]:=StringGrid1.Cells[1,a];

StringGrid2.Cells[2, x]:=StringGrid1.Cells[2,a];

StringGrid2.Cells[3,x]:=StringGrid1.Cells[3,a];

x:=x+1;

end;

end;

end;

procedure TForm2.StringGrid1Click(Sender: TObject);

begin

spisok(StringGrid1);

end;

procedure TForm2.ToolButton1Click(Sender: TObject);

var next1:boolean;

begin

Chart1.visible:=true;

FileLocation:='';

if MessageDLG('Открыть файл для работы с данными?', mtConfirmation,

[mbYes, mbNo], 0) = mrYes then

begin

StringGrid1.RowCount:=1;

StringGrid2.RowCount:=1;

if OpenDialog1.Execute then

begin

FileLocation:= OpenDialog1.FileName;

Chart1.visible:=true;

next1:= LoadDataInGrid(WideString(Utf8ToSys(FileLocation)),

StringGrid1) ;

Grafik(StringGrid1,Chart1PieSeries1)

end

else

FileLocation:= 'Tablica1.txt';

end

else

FileLocation:= 'Tablica1.txt';

if not next1 then

begin

Chart1.visible:=false;

ShowMessage('Выбран неверный файл, пожалуйста выберите другой');

end;

end;

procedure TForm2.ToolButton3Click(Sender: TObject);

var

i: Integer;

s:string;

begin

if SaveDialog1.Execute then

begin

for i:=1 to StringGrid1.RowCount-1 do

s:= s + (StringGrid1.Cells[0, i] + '|'+ StringGrid1.Cells[1, i] + '|' +

StringGrid1.Cells[2, i] + '|' + StringGrid1.Cells[3, i] + #13#10);

AddNumber(WideString(Utf8ToSys(SaveDialog1.FileName)), s + #13#10);

end;

end;

procedure TForm2.ToolButton5Click(Sender: TObject);

begin

MessageDLG('Программа автоматически сохраняет вносимые номера '

+ #13#10,mtInformation, [mbOK], 0);

end;

procedure TForm2.ToolButton7Click(Sender: TObject);

begin

close;

end;

end.

Модуль заставки

unit Unit3;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,

ComCtrls;

type

{ TForm3 }

TForm3 = class(TForm)

Image1: TImage;

ProgressBar1: TProgressBar;

Timer1: TTimer;

procedure FormCreate(Sender: TObject);

procedure Image1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form3: TForm3;

i:integer;

implementation

uses unit2;

{$R *.lfm}

{ TForm3 }

procedure TForm3.Timer1Timer(Sender: TObject);

begin

Inc(i);

ProgressBar1.Position:=ProgressBar1.Position+1;

if i=110 then

Begin

Form3.Hide;

Form2.Show;

End;

end;

procedure TForm3.FormCreate(Sender: TObject);

begin

i:=0;

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Описание входной и выходной информации. Требования к комплексу технических средств и к интерфейсу конечного пользователя. Разработка форм представления входных и выходных данных. Проектирование программных модулей. Руководство пользователя и программиста.

    курсовая работа [421,6 K], добавлен 27.06.2015

  • Создание баз данных с использованием Database Desktop. Проведение автоматизации рабочего места кассира. Описание входной и выходной информации. Выбор среды реализации, состава и параметров технических средств. Проектирование интерфейса программы.

    курсовая работа [1021,5 K], добавлен 22.01.2015

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [159,8 K], добавлен 26.01.2010

  • Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.

    курсовая работа [3,7 M], добавлен 04.12.2014

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.

    курсовая работа [1,3 M], добавлен 15.11.2009

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [700,6 K], добавлен 26.01.2010

  • Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.

    курсовая работа [563,7 K], добавлен 15.07.2012

  • Разработка Windows-приложения, представляющего собой компьютерную игру "Кости". Организация входных и выходных данных. Минимальные требования. Выбор состава технических и программных средств. Спецификация программы, ее описание и внедрение, тестирование.

    курсовая работа [475,8 K], добавлен 18.07.2012

  • Проектирование программного обеспечения, позволяющего создавать и вести множество электронных словарей. Обоснование выбора программных средств решения задачи. Разработка формы входных и выходных данных. Описание модулей программы и процесса отладки.

    дипломная работа [1007,7 K], добавлен 03.07.2015

  • Обоснование выбора программно-технических средств. Надежность программы и состав технических средств. Разработка структурной схемы программы, алгоритмического и программного интерфейса. Технология разработки интерфейса пользователя и программных модулей.

    дипломная работа [3,2 M], добавлен 22.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.