Описание Windows-программы "Messenger"

Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.

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

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

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

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

Содержание

  • Введение
  • 1. Внешнее описание
    • 1.1 Определение требований
    • 1.2 Спецификация качества
  • 2. Проектирование
    • 2.1 Проектирование модульной структуры программы.
    • 2.2 Проектирование главной формы
    • 2.3 Проектирование модуля формы «About»
  • 3. Кодирование программы
  • 4. Тестирование и отладка программы
    • 4.1 Разработка методики тестирования и отладка
    • 4.2 Результаты тестирования
  • 5. Аттестация
  • Заключение
  • Список литературы
  • Приложения

Введение

В данной пояснительной записке рассматривается описание Windows-программы «Messenger».

Условия задачи: Есть две программы: клиент и сервер. Они должны взаимодействовать между собой. Клиент должен отправлять сообщения серверу, а сервер, должен принимать эти сообщения и сохранять их на диске.

Для выполнения поставленной задачи необходимо разобраться с сетевым вводом/выводом.

В данной программе будет реализована отправка сообщения по протоколу TCP/IP.

В качестве основного инструмента разработки применяется Microsoft Visual Studio.NET. Язык программирования C#.

1. Внешнее описание

1.1 Определение требований

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

Клиент имеет поля TextBox для ввода сообщений и IP адреса сервера. После нажатия кнопки Button, сообщение передается серверу. Сервер принимает сообщения и сохраняет их на диске.

Если сервер не доступен или введен неправильно его IP адрес, клиент получает сообщение об ошибке.

1.2 Спецификация качества

ПС должно соответствовать основным критериям качества:

· функциональность: программа является demo - версией, пользование возможно только при наличии ОС Win32. Возможна доработка программы, в использовании Udp - протокола для широковещательных сообщений, разработке windows приложения сервера, организации списка пользователей и таймера для его автоматического обновления, а так же разработке административных функций серверу;

· надежность ПС это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью. При этом под отказом в ПС понимают проявление в нем ошибки. В процессе тестирования были проверены все возможные ситуации взаимодействия сервера и клиента. Все возникшие недочеты были устранены;

· эффективность: программа предъявляет минимальные требования к аппаратному обеспечению, захват памяти и процессорного времени минимален, требования к аппаратным ресурсам намного ниже, чем для самой ОС Win32;

· сопровождаемость:

o изучаемость: программа интуитивно понятна своим интерфейсом, позволяющим правильно оценить назначение программы. Некоторые объекты сопровождены надписями, например Send - отправить сообщение, IPadressServera - поле для ввода IP адреса сервера и другие;

o модифицируемость: клиент и сервер являются легко модифицируемы, вследствие простой структуры программы;

o структурированность: клиент разделен на два модуля: функциональная часть, предназначенная для отправки сообщений и информационная часть, содержащая информацию о программе и разработчике. Сервер представляет собой консольное приложение.

· мобильность: обеспечивается прямым переносом исполняемых файлов в любую папку ОС Win. Установка не требуется. Клиент и сервер работают под любым клоном Win32.

2. Проектирование

2.1 Проектирование модульной структуры программы

Программный модуль - это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт. Цели модульного программирование две: борьба со сложностью и повторное использование программного кода. Модули могут выполнять некоторые специализированные функции, тем самым, скрывая часть связей внутри себя. В проектируемой программе можно выделить следующие модули:

· модуль формы клиента “frmMsg.cs”, реализующий интерфейс пользователя;

· модуль формы клиента “frmAbout.cs” ("О программе");

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

Рисунок 1. Структура программы

Назначение модуля «frmMsg»:

· описание элементов интерфейса, таких как TextBox - для ввода текста, MenuStrip, Button - для управляющих действий и т.п.

· установка соединения с сервером по средством протокола Tcp/IP и отправка ему сообщений

· передача управления другому модулю, в частности, модулю About

· запуск и завершение приложения

Назначение модуля «frmAbout»:

· данные о программе и разработчике

2.2 Проектирование главной формы

Главная форма реализует интерфейс пользователя. Интерфейс пользователя должен быть интуитивно понятным.

Большее пространство формы занимает TextBox(TxtMsg) - это текстовое поле для ввода сообщений. Еще один TextBox(txtIPserver) предназначен для ввода IP адреса сервера. Для наглядности его сопровождает Label - пояснительная надпись - «IPadressServera».

На форме реализовано Меню- MenuStrip. Оно состоит из двух главных и одного вложенного элемента (File - Exit и About). «Exit» - предназначен для выхода из программы, «About» - для вызова информации о программе и разработчике.

Также на форме имеется кнопка Button(cmdSend), предназначенная для отправки сообщений.

Рисунок 2. Вид главной формы

Рисунок 3. Реализация меню

2.3 Проектирование модуля формы «About»

Модуль формы «About» содержит информацию о программе и разработчике.

Рисунок 4. Вид формы «About»

3. Кодирование программы

При кодировании программ, типа клиент - сервер следует обратить внимание на сетевой ввод/вывод, основанный на потоках , создаваемых с помощью сокетов.

Сокет - это объект, представляющий конечную точку коммуникаций двух процессов, связанных между собой через сеть. Сокеты могут работать с различными протоколами, включаю UDP и TCP/IP. Данная программа осуществляет соединение клиента и сервера по протоколу TCP/IP.

Чтобы создать сетевой сервер для потока данных , следует вначале создать объект TcpListener, который будет считывать информацию указонного порта TCP/IP.

//создаем объект для считывания информации с порта

TcpListener tcpListener = new TcpListener(ipA [0],8001);

//запускаем порт на прослушку

tcpListener.Start();

Теперь будем ждать, пока какой- нибудь клиент не запросит соединение:

Socket socketForClient = tcpListener.AcceptSocket();

Если соединение с клиентом установлено,

if (socketForClient.Connected)

то вызовем функцию объекта networkStrem.BeginRead, класса NetworkStream для приема сообщений:

networkStrem.BeginRead(

buffer , //куда помещать результат

0, //смещение

buffer .Length , //размер буффера

callbackRead , //делегат обратного вызова

null); //локальный объект состояния

Текст программы клиента весьма прост. Клиент создает cокет tcpSocket для порта, прослушиваемого сервером, и объект класса NetworkStream для это сокета. Затем он выводит сообщение в поток и освобождает буфер:

System.IO.StreamWriter writer = new System.IO.StreamWriter(streamToServer);

writer.WriteLine(message);

writer.Flush();

Наиболее подробно вся логика по созданию соединения сервера с клиентом отражена на рисунке 5.

Рисунок 5. Блок схема

4. Тестирование и отладка программы

4.1 Разработка методики тестирования и отладка

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

Подключение клиента к серверу.

1. Подключение клиента к серверу произойдет только после ввода IP адреса сервера и нажатия кнопки Send.

2. Если IP адрес не задан или задан не верно, то в поле txtMsg появиться сообщение «Server not found…».

3. Также сообщение «Server not found…» появиться при попытке приконнектиться к незапущенному серверу.

Рисунок 6. Server not found

Доставка сообщений до сервера и запись их на диск.

Доставка сообщений до сервера осуществляется по протоколу TCP/IP, что гарантирует надежность доставки. На диск этих сообщения записываются в текстовый файл - logs.txt

Рисунок 7. Доставка сообщений до сервера

Рисунок 8. Запись сообщений в текстовый файл

4.2 Результаты тестирования

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

· При отправке текста, размер которого превышает размер буфера сервера, а именно 256 byte, сервер выводит на экран часть текста, а клиент, отправивший сообщение подвисает.

· Если после отключения клиента, адрес сервера не изменился, то вновь запущенный клиент будет коннектиться к серверу без ввода его IP адреса в поле txtIPserver.

messenger сетевой программа

5. Аттестация

По рассмотренным выше методикам программа тестировалась много раз в течение всего процесса изготовления программного продукта. Некорректное поведение программы должно быть исправлено и доработано, но несмотря на это проведенное тестирование показало, что демо-версия программного продукта отвечает всем заявленным требованиям:

· Клиент отправляет сообщения серверу

· Сервер принимает сообщения клиента

· Сервер сохраняет принятые сообщения на диск

Заключение

В рамках курсовой работы был разработан сетевой «messenger». И хотя, вероятность использования данной демо-версии по назначению очень мала, программу можно использовать, как учебный проект, демонстрирующий программирование сетевого ввода/вывода на примере протокола TCP/IP.

В дальнейшем хотелось бы разработать дополнительные возможности мессенджера:

· Отправку сообщений с сервера

· Отправку сообщений между пользователями и «всем пользователям»

· Windows приложение сервера

· Регистрацию пользователей

· Просмотр списка пользователей по именам

· Автоматическое обновление списка пользователей

· Административные функции мессенджера

· Улучшить интерфейс клиента

· Автоответчик и меню «Информация о пользователе»

Разработав перечисленные выше методы и реализовав их в программе, «messenger» может претендовать на широкое использование в локальных сетях.

Список литературы

1. Э. Троелсен. С# и платформа .NET. Библиотека программиста. М. 2004

2. Д. Либерти. C#. Создание .Net приложений. Программирование на c# . «Символ-Плюс», СП 2003

3. A.Turtschi. C# .NET Web Developers Guide

4. E.Butow,T.Ryan C#. Your visual blueprint for building .Net aplications

Приложение

SERVER

using System;

using System.Collections.Generic;

using System.Text;

using System.Net;

using System.Net.Sockets;

using System.Threading ;

using System.IO;

public class NetworkServer

{

class clientHandler

{

private byte[] buffer;

private Socket socket;

private NetworkStream networkStrem;

private AsyncCallback callbackRead;

public clientHandler(Socket socketForClient)

{

//инициализируем переменную класса

socket = socketForClient;

//инициализируем буфер для хранения сообщений

buffer = new byte[256];

//создаем сетевой поток данных

networkStrem = new NetworkStream(socketForClient);

//установить обратный вызов для операции чтения файла

callbackRead = new AsyncCallback(this.onReadComplete);

}

//начать чтение строки, переданной клиентом

public void StartRead()

{

//читаем по сети

networkStrem.BeginRead(

buffer , //куда помещать результат

0, //смещение

buffer .Length , //размер буффера

callbackRead , //делегат обратного вызова

null); //локальный объект состояния

}

//получив обратый вызов, этот метод выводит

//строку на экран и отсылает ее клиенту

void record_results(string data, string outName)

{

FileStream fout = new FileStream(outName, FileMode.OpenOrCreate);

StreamReader sr = new StreamReader(fout);

string old = sr.ReadToEnd();

sr.Close();

fout.Close();

data = old + data;

fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter st = new StreamWriter(fout);

st.Write(data);

st.Close();

fout.Close();

}

private void onReadComplete(IAsyncResult ar)

{

int temp = networkStrem.EndRead(ar);

//если получена строка

if (temp > 0)

{

//преобразуем строку в имя файла

string s = System.Text.Encoding.ASCII.GetString(buffer, 0, temp);

//выводим на экран

Console.WriteLine("say client: {0}", s);

string result ="==>"+ s;

record_results(result, "C:/temp/LOGS.txt");

}

else

{

Console.WriteLine("Read connection dropped");

networkStrem.Close();

socket.Close();

networkStrem = null;

socket = null;

}

}

}

static void Main(string[] args)

{

NetworkServer server = new NetworkServer();

server.Run();

}

private void Run()

{

string host = Dns.GetHostName();

IPHostEntry ipE = Dns.GetHostEntry(host);

IPAddress[] ipA = ipE.AddressList;

for (int i = 0; i < ipA.Length; i++)

{

Console.WriteLine(ipA[i].ToString());

}

//создаем объект для считывания информации с порта

TcpListener tcpListener = new TcpListener(ipA [0],8001);

//запускаем порт на прослушку

tcpListener.Start();

//слушаем порт

for (; ; )

{

//по запросу клиента устанавливаем соединение

//и возвращаем новый сокет и продолжаем слушать

Socket socketForClient = tcpListener.AcceptSocket();

//если соединение с клиентом установлено

if (socketForClient.Connected)

{

Console.WriteLine("Client connected");

clientHandler handler = new clientHandler(socketForClient);

//вызываем вспомогательный метод для приема сообщений

handler.StartRead();

}

}

}

}

CLIENT

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

namespace msg_Server

{

public partial class frmMsg : Form

{

public frmMsg()

{

InitializeComponent();

}

private void aboutToolStripMenuItem_Click(object sender, EventArgs e)

{

frmAbout about = new frmAbout();

about.ShowDialog(this);

}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)

{

this.Close();

}

private NetworkStream streamToServer;

private void button1_Click(object sender, EventArgs e)

{

try

{

string serverName = txtIPserver.Text;

TcpClient tcpSocket = new TcpClient(serverName, 8001);

streamToServer = tcpSocket.GetStream();

string message;

message = txtMSG.Text;

//создаем объект StreamWriter и с его помощью

//отправляем строку на сервер

System.IO.StreamWriter writer = new System.IO.StreamWriter(streamToServer);

writer.WriteLine(message);

writer.Flush();

streamToServer.Close();

}

catch { txtMSG.Text = "server not found..."; }

}

}

}

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


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

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

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

  • Проектирование модуля программы 1С: "Поступление и выбытие удобрений", позволяющего вносить данные о клиентах, складах, контролировать поставки удобрений. Анализ предметной области и построение функциональной модели программы, ее отладка и тестирование.

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

  • Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.

    курсовая работа [215,3 K], добавлен 01.09.2010

  • Основные стадии разработки, принципы тестирования и отладка программного модуля "VFS". Особенности проектирования на языке UML. Методы "грубой силы" и их применение при отладке программы. Вредные факторы, присутствующие на рабочем месте программиста.

    дипломная работа [827,0 K], добавлен 07.03.2012

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

    курсовая работа [1014,2 K], добавлен 15.01.2013

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

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

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

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

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

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

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

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

  • Структурная схема получения гороскопа по дате рождения. Листинг исходных кодов программы и руководство пользователя. Ввод данных с помощью объекта класса QDateEdit. Разработка пользовательского интерфейса. Выбор стратегии тестирования и отладка программы.

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

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