Реализация на языке высокого уровня PascalABC.NET недосетевого чата
Talkomatic - первый в мире чат, созданный примерно в 1974 году. Средства FormsABC, используемые программе: ComboBox, TextBox, Field. Четыре этапа алгоритмического конструирования. Описание базового класса и классов-наследников. Тестирование программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 30.06.2012 |
Размер файла | 156,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
С развитием информационных технологий все больше стало модно общение в режиме реального времени. Историческим «докомпьютерным» предшественником чатов, несомненно, был телефон. Ни почта, ни телеграф не позволяли общаться в реальном времени и не были доступны в домашней обстановке. Изобретение и распространение телефона по планете вызвало настоящую революцию в средствах и способах общения. Возможность поговорить с собеседником на другой стороне Земли казалась настоящим чудом. Но после создания всемирной паутины это уже не казалось чудом, поскольку было придумано множество средств для общения с собеседником на другой стороне Земли. Одно из таких средств несомненно был чат.
Чат (chat) - (от англ. to chat - болтать) - это общение в Интернет, когда разговор ведется в реальном времени. Содержание чата существует только "здесь и сейчас" - чат выглядит как окно, в котором идет поток сообщений от всех участников чата. Для того, чтобы общаться в чате, нужно просто выбрать себе имя, под которым вы "появитесь" в нем, и послать в чат сообщение, которое сразу же появится в общем потоке. Архивы чатов в чистом виде, как правило, не имеют смысла, поскольку текст выглядит сплошной мешаниной, в которой очень трудно понять, кто, кому и какое сообщение посылал.[2]
Первый в мире чат был создан примерно в 1974 году под названием Talkomatic. Существует несколько разновидностей программной реализации чатов: HTTP или веб - чаты, чаты, использующие технологию Adobe Flash, IRC, специализированный протокол для чатов, программы-чаты для общения в локальных сетях и т.д. Разновидности чатов: Веб - чат, видео - чат, системы мгновенных сообщений, телечат.[2]
1. Анализ задачи
1.1 Общий анализ
Поставлена задача: реализовать на языке высокого уровня программное средство недосетевой чат. Система чата с использованием внешних файлов размещенных в общей директории. Исходная задача решается в несколько этапов:
1. Проектирование окна программы.
2. Проектирование формы входа в чат.
3. Реализация приема и отправки сообщения.
4. Реализация инициализации пользователей (т.е. другие пользователи должны видеть, кто вошел в сеть).
Для проектирования окна будем использовать такое средство среды разработки PascalABC.NET как FormsABC. Данный модуль работает непосредственно с классом System.Windows.Forms библиотеки классов .NET.
Ниже описаны средства FormsABC которые мы будем использовать в нашей программе:
1. ComboBox (раскрывающийся список) - данный объект я буду использовать (от третьего лица) для записи вошедших пользователей и в дальнейшем для выбора пользователя которому надо отправить сообщение.
2. TextBox (текстовое поле) - данный объект будет предназначен для отображения отправленных и пришедших сообщений.
3. Field (поле ввода) - данный объект будет предназначен для ввода сообщения.
Для проектирования формы входа будет использоваться библиотека классов .NET, а именно System.Windows.Forms.
Причина выбора данного класса в том, что у модуля FormsABC нет деструктора, поэтому при перерисовке окна не уничтожаются объекты, которые были заданы ранее.[3]
Для реализации приема и отправки сообщения, а также для реализации инициализации пользователей будут использоваться стандартные средства языка Pascal (перечислить какие именно).
2. Алгоритмическое конструирование
Реализация программного средства будет происходить в четыре этапа:
1. Инициализация пользователей
Инициализация пользователей в моей программе будет происходить путем создания файлов в отдельной папке. При вводе логина пользователя в определенной папке будет создаваться не типизированный файл с именем пользователя. Другие вошедшие пользователи будут считывать название данного файла и будут знать какие пользователи вошли в чат. Блок схема инициализации пользователей представлена на рисунке 1.
Размещено на http://www.allbest.ru/
Рисунок 1. Блок схема инициализации пользователей.
1. Реализация отправки сообщения.
2. Реализация приема сообщения
3. Реализация графического интерфейса для взаимодействия с пользователем.
2. Отправка сообщений будет происходить путем создания временного файла в папке пользователя, которому мы хотим отправить сообщение. Причина выбора временного файла в том, что таким образом легче считывать сообщение из файла. Отправка сообщения будет только строго выбранному пользователю, т.е сообщение будет приватное. Блок схема отправки сообщения представлена на рисунке 2.
Размещено на http://www.allbest.ru/
Рисунок 2. Блок схема отправки сообщения
3. Прием сообщений будет очень прост. Через определенный промежуток времени программа будет проверять папку пользователя, которому отправлено сообщение на наличие файла. Если данный файл обнаружен, то он открывается для чтения и из него считывается сообщение и выводится на экран в определенное место окна.
После считывания данный файл удаляется. Причина удаления файла заключается в экономии места. Если же файл не обнаружен или его не получилось открыть, то будет срабатывать исключение и вывод соответствующей ошибки.
Размещено на http://www.allbest.ru/
Рисунок 3 - Блок схема приема сообщения.
4. Графический интерфейс пользователя будет состоять из поля ввода сообщения списка пользователей, кнопки отправки сообщения и поле вывода отправленного или приемного сообщения. Прорисовка окна будет выполнена с помощью библиотеки классов .NET. Подробнее о реализации графического интерфейса будет описано ниже в разделе программное конструирование.
На основании выше изложенного текста можно составить общий алгоритм реализуемого программного обеспечения:
1) При запуске программы будет появляться окно входа с полем ввода логина и кнопки входа.
2) После ввода логина и при нажатии кнопки входа должно нарисовать новое окно с полем ввода сообщения, с полем вывода сообщений, со списком пользователей и кнопки отправки сообщения.
3) После прорисовки нового окна будет проверка на наличие вошедших пользователей в сеть. Если пользователи вошли в сеть, то вывести список пользователей в раскрывающийся список и снова запускать проверку через определенные промежутки времени.
4) После ввода сообщения, выбора пользователя и нажатия кнопки «отправить» будет вызвана процедура отправки сообщения. Процедура приема сообщения вызывается автоматически через равные промежутки времени при помощи таймера.
5) Если сообщение принято, то вывести его в поле вывода.
Блок схема общего алгоритма представлена на рисунке 4.
Размещено на http://www.allbest.ru/
3. Программное конструирование
Реализованное по алгоритму программное обеспечение оформлено в виде классов. В программе имеются три класса, один из которых является базовым классом, а остальные два наследники. Каждый наследник может наследовать любой из методов базового класса, поскольку все его методы являются открытыми (public).
3.1 Описание базового класса
Базовый класс называется TUser. В данном классе имеется одно поле, которое называется nickname (имя пользователя). Также в классе имеется 5 открытых (public) методов:
1) Constructor Create - у данного метода входной параметр является переменная name строкового типа. Данный конструктор вызывается при нажатии кнопки «вход» в форме входа. Как только происходит событие нажатия кнопки, вызывается конструктор, который инициализирует поле nickname с переменной name и после создается объект, который в дальнейшем будет использоваться как имя пользователя.
2) Procedure init - у данного метода входных параметров нет. Этот метод вызывается, после того как конструктор инициализирует поле nickname, т.е. когда пользователь вошел в сеть. Данный метод после входа создает папку chat и в данной папке создает папку ini, в которой создается файл с именем вошедшего пользователя. Если файлы по каким-либо причинам не получается создать то срабатывает исключение и выводится на экран ошибка.
3) Function check - у данного метода нет входных параметров, имеется только выходной параметр строкового типа. Данный метод используется для проверки вошедших пользователей в сеть. То есть проверяет наличие файлов с названиями пользователей в папке ini. Если файлы найдены, то имена этих файлов записываются в строковою переменную b, причем имена пользователей разделяются знаком _.
4) Procedure sendMES - у данного метода два входных параметра переменная s и b строкового типа. Первая переменная является временной для хранения сообщения, а вторая в свою очередь является основной, поскольку в ней хранятся имена пользователей. Данный метод создает в папке пользователя временный файл, в который записывается сообщение. Если по каким-либо причинам файл создать не удается, то срабатывает исключение и выводится на экран ошибка. Данный метод является одним из основных, поскольку без передачи сообщения не будет работать весь чат.
5) Function getMES - у данного метода нет входных параметров, имеется только выходной параметр строкового типа. Данный метод считает из папки пользователя временный файл с сообщением, записывает сообщение во временную переменную, удаляет файл и выводит на экран сообщение.
3.2 Описание классов наследников
В программе имеется два класса наследника Tbase и TForm.
Класс Tbase наследован от класса TUser, поэтому использует все методы базового класса.
В классе TBase имеются следующие методы:
1) Procedure main - данный метод является один из основных методов. Этот метод вырисовывает основное окно и элементы управления (TextBox, CombBox, Button, Field). Также метод вызывает метод init наследованный из класса TUser+ вызывает некоторые свои методы (ch, get,work) которые будут описаны ниже. Методы ch и get вызываются каждые 7000 и 1000 миллисекунд соответственно. Метод work вызывается после нажатия клавиши отправить.
2) Procedure work - данный метод вызывается по нажатию кнопки «отправить». Метод считывает введенный текст из поля ввода (Field), и отправляет выбранному пользователю.
3) Procedure get - данный метод выводит в TextBox полученное сообщение.
4) Procedure ch - данный метод выполняет запись в ComboBox (раскрывающийся список) имен пользователей. Данная процедура выполняется каждые 7000 миллисекунд.
Класс TForm наследуется от класса TBase а значит и от класса TMain. Данный класс создает форму входа использую библиотеку классов .NET, а именно System.Windows.Forms.
В классе TForm имеются следующие методы:
1) constructor Create - данный метод (конструктор) создает форму входа и объекты (кнопка и поле ввода). Также данный метод при нажатии кнопки входа вызывает метод MyButtonClick, который будет описан ниже.
2) Procedure MyButtonClick - данный метод является событием нажатия кнопки. При нажатии кнопки входа вызывается конструктор базового класса который создает объект nickname (имя пользователя).
4. Тестирование программы
В моей программе могут быть ошибки такие как:
1) Ошибка при вводе логина т.е. если поле ввода логина останется пустым, то программа выдаст ошибку «Ошибка входа».
чат программа класс тестирование
Рисунок 5 Ошибка при входе
2) Если файл с сообщением не создан, то выводится окно с сообщением об ошибки «Ошибка отправки!».
Рисунок 6 Ошибка отправки
В результате проведенных тестов программы было выявлено, что программа корректно реагирует на ошибки и производит соответствующие действия.
Программное обеспечение «Недосетевой чат» было неоднократно протестировано на прием и передачу сообщений, были проверены все ошибки вследствие чего можно заключить, что программа полностью работоспособна и удобна для стороннего пользователя.
Заключение
В результате проделанной работы было создано программное средство недосетевой чат. Данное средство подходит для общения в локальной сети, поскольку файлы с именами пользователей и с сообщениями хранятся в общей папке.
Программное средство было написано в среде разработки PascalABC.NET. Данная среда разработки позволяет писать полноценные программные продукты на языке Object Pascal и с технологией .NET от компании Microsoft.
Дальнейшее развитие мною написанного программного средства не имеет смысла т.к на данный момент очень много похожих программ которые работают не только в локальных сетях но и в глобальных.
В результате работы над курсовой я изучил некоторые аспекты объектно-ориентированного программирования, а именно:
1) написание классов. Оформление программы в классах;
2) создание объектов при помощи конструктора;
3) наследование;
4) перегрузка операций.
А также некоторые вещи из технологии .NET. Например, создание оконного приложения при помощи Windows.Form.
Список использованных источников
1) В.В. Фаронов. Основы Турбо Паскаля. Кн.1, М., МВТУ, 1992.
2) URL. Википедия, - Статья «Чат» [http://ru.wikipedia.org/wiki/Чат].
3) Справка PascalABC.NET. Ростов н\Д,2008.
Приложение А
Исходный код программы
Базовый класс
unit Tmain;
{$reference System.Windows.Forms.dll}
uses system.IO,system, System.Windows.Forms;
var
nickname :string;
type Tuser = class
public
constructor Create(name:string);
procedure init;
function check:string;
procedure sendMES(var s,b:string);
function getMES:string;
end;
constructor TUser.Create(name:string);
begin
nickname:=name;
end;
procedure tuser.init;
var
f:file;
begin
try
mkdir('.\chat\ini');
MkDir('.\chat\'+nickname);
MessageBox.show(nickname);
system.IO.File.Create('.\chat\ini\'+nickname);
except
MessageBox.Show('Ощибка при входе');
end;
end;
function tuser.check():string;
var
a:array[1..15] of string;
s,b,fname:string;
i,n:integer;
begin
var d:= new DirectoryInfo('.\chat\ini');
var ff:=d.GetFiles;
b:='';
s:='';
n:=1;
foreach f: DirectoryInfo in ff do
begin
fname:=f.Name;
a[n]:=fname;
n:=n+1
end;
for i:=1 to n do
if a[i]='' then
b:=b+'/'
else
b:=b+a[i]+'_';
if b <> s then
begin
s:=b;
check:=b;
end
else
check:='';
end;
procedure tuser.sendMES(var s,b:string);
var
f:file of char;
mes,t:string;
cc:char;
i:integer;
begin
try
mes:=s;
t:= t+ nickname+ ': ';
Assign(f,'.\chat\'+b+'data.dat');;
rewrite(f);
for i:= 1 to Length(t) do write(f,t[i]);
for i:=1 to length(mes) do write(f,mes[i]);
close(f);
except
MessageBox.Show('Ошибка отправки!');
end;
end;
function tuser.getMES():string;
var
f:file of char;
cc:char;
mes:string;
begin
try
assign(f,'.\chat\'+nickname+'data.dat');
reset(f);
mes:=' ';
while not eof(f) do begin
read(f,cc);
mes:=mes+cc;
end;
getMES:=mes;
close(f);
DeleteFile('.\chat\'+nickname+'data.dat');
except
getMES:='error27591634';
end;
end;
begin
end.
Наследованные класс
Класс Form1.
unit form1;
interface
uses
FormsABC, Tmain, timers;
type
Tbase = class (Tuser)
public
p:integer;
tb:= FormsABC.TextBox.Create;
a := new Field('Сообщение:', 200);
f3 := new FlowBreak;
ok := new Button('Отправить');
f5:=new flowbreak;
cb := new ComboBox;
procedure work;
procedure get;
procedure ch;
procedure main;
end;
implementation
procedure tbase.main;
var s:string;
f4:=new FlowBreak;
begin
tb.Dock := DockStyle.fill;
s:='SuPerCHaT'+' | '+ ' Ваш Логин: ' +Tmain.nickname;
FormsABC.MainForm.Title := s;
FormsABC.MainForm.SetSize(200, 230);
FormsABC.MainForm.IsFixedSize := true;
FormsABC.MainForm.CenterOnScreen;
mainPanel.Height := 100;
FormsABC.mainPanel.dock := Dockstyle.bottom;
ParentControl := MainForm;
mainPanel.Dock := DockStyle.Bottom;
a.Text := '';
init;
var w := new Timer(5000, ch);
var e := new Timer(2000, get);
w.Start;
e.Start;
ok.Click += work;
end;
procedure tbase.work;
var
k: string;
begin
if a.Text<>'' then
begin
p:=cb.SelectedIndex;
var f66:=cb.SelectedValue.ToString;
var s:string;
s:=f66+': '+a.Text;
tb.AddLine(s);
k:=a.Text;
a.text:='';
sendMES(k, f66);
end;
end;
procedure tbase.get;
var
s: string;
begin
s := getMES;
if s <> 'error27591634' then
tb.AddLine(s);
end;
procedure tbase.ch;
var
b: array[1..15] of string;
s,t: string;
c: char;
i, n, k, j: integer;
begin
if check <> '' then
begin
cb.Items.Clear;
s := check;
k := Length(s);
j := 1;
for i := 1 to k-1 do
begin
if (s[i] <> '_') then
begin
c := s[i];
b[j] := b[j] + c;
end
else
begin
j := j + 1;
end;
end;
for i := 1 to j do
begin
t:=b[i];
cb.Items.Add(t);
end;
cb.SelectedIndex:= p;
end;
end;
end.
Класс UFile.
unit UFile;
#apptype windows
#reference 'System.Windows.Forms.dll'
#reference 'mscorlib.dll'
interface
uses
System,
System.Windows.Forms,
System.IO,
Tmain,
form1;
type
TFile = class(Tbase)
public
a:textbox;
myForm: Form;
myButton: Button;
public
procedure MyButtonClick(sender: Object; e: EventArgs);
constructor Create;
end;
implementation
procedure TFile.MyButtonClick(sender: Object; e: EventArgs);
var
s:string;
f:file;
begin
s:=a.Text;
Tmain.Tuser.Create(s);
main;
myForm.Close;
end;
constructor TFile.Create;
begin
myForm := new Form;
myForm.Text := 'Форма фхода :) | Введите ник';
a:=new TextBox;
myButton := new Button;
myButton.Text := ' Войти! ';
myButton.AutoSize := True;
myButton.Left := 200;
myButton.Top := 110;
a.Top:=110;
a.Width:=200;
myForm.Controls.Add(myButton);
myForm.Controls.Add(a);
myButton.Click += MyButtonClick;
Application.Run(myForm);
end;
end.
Размещено на Allbest.ru
Подобные документы
Описание логической и модульной структуры разрабатываемой программы, используемые в данном процессе основные технические средства. Организация хранения данных в программе, проектирование интерфейса. Тестирование и отладка, листинг готовой программы.
курсовая работа [494,5 K], добавлен 20.06.2012Программа "Labs", выбор шрифта с помощью элемента ComboBox. Очистка содержимого и добавление значений в элемент ListBox. Загрузка картинки в элементе Image. Совместная работа SpinButton и TextBox. Изменение масштаба надписи и текста элемента Label.
лабораторная работа [3,1 M], добавлен 31.05.2009Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.
лабораторная работа [43,1 K], добавлен 21.07.2012Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.
курсовая работа [1,1 M], добавлен 17.03.2015Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013Программа для выбираемой единицы измерения (градусы Фаренгейта или Цельсия) и для задаваемого значения температуры в этой единице измерения. Среда Delphi. Системные требования. Блок схема программы. Интерфейс. Тестирование и сопровождение программы.
курсовая работа [447,6 K], добавлен 04.02.2009Понятие и цель применения текстовых данных. Принцип кодирования азбуки Морзе. Основные методы языка высокого уровня C#. Алгоритм работы, листинг, тестирование программы для перевода текста в последовательность кодов азбуки Морзе. Руководство пользователя.
курсовая работа [1,4 M], добавлен 15.01.2013