Разработка программы "Телефонная база"
Разработка программы для автоматизации расчетов на телефонной станции. Описание входной и выходной информации, комплекс технических средств. Интерфейс конечного пользователя. Проектирование программных модулей представления входных и выходных данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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