Разработка программы для обмена тестовыми сообщениями

Автор: Пользователь скрыл имя, 11 Апреля 2011 в 17:46, курсовая работа

Описание работы

Техническое задание: разработать программу для обмена тестовыми сообщениями.
В настоящее время значительная часть программных продуктов написана на языке C++. Увеличение количества персональных ЭВМ в 80-90 гг. и вовлечение большого количества неквалифицированных пользователей в непосредственную работу на ЭВМ способствовало развитию операционных систем типа Windows. Эти операционные системы предполагают организацию процедур ввода-вывода не так как системы DOS.

Содержание

1. Введение……………………………………………………………3
2. Инструментальное обеспечение для обмена текстовыми
сообщениями……………………………………………….……...4
3. Разработка архитектуры программы для обмена текстовыми
сообщениями…………………………...........................................5
4. Программная реализация сетевой технологии обмена
текстовыми сообщениями в программе ………………………...8
5. Результаты работы программы…………………………………...25
6. Преимущества и недостатки приложения……………………….27
7. Заключение………………………………………………………...28
8. Список литературы………………………………………………..29

Работа содержит 1 файл

Курсовая СВП.doc

— 487.50 Кб (Скачать)

{

      int countpeople = 1/*сервер*/ + (int)m_vecSockets.size()/*клиенты*/;

      m_wndCountPeople.SetWindowText("В  чате " +

            IntToStr(countpeople) + " чел.");

      // Отправим сообщение  о количествах  людей в чате.

      SENDBUFFER sb;

      sb.typemessage = m_TypeMessage::tmCountPeople;

      sb.countpeople = countpeople;

      for(int i = 0; i < (int)m_vecSockets.size(); i++)

      {

            int send = m_vecSockets[i]->Send(&sb, sizeof(SENDBUFFER));

      }

}

/////////////////////////////////////////////////////////БЛОК 1.6//////////////////////////////////////////////////////////////// 

/////////////////////////////////////////////////////////БЛОК 1.7////////////////////////////////////////////////////////////////

// Запрос имени чатующего  перед созданием  сокета.

bool CChatCppDlg::QueryName(void)

{

      CString strName;

      m_wndName.GetWindowText(strName);

      if(strName == g_EmptyName || strName.IsEmpty() == true)

            return false; 

      return true;

}

/////////////////////////////////////////////////////////БЛОК 1.7//////////////////////////////////////////////////////////////// 
 
 
 
 
 
 
 
 
 
 
 
 
 

/////////////////////////////////////////////////////////БЛОК 3////////////////////////////////////////////////////////////////// 

Исходный  код инициализацию  сокета:

#include "stdafx.h"

#include "ChatCpp.h"

#include "ChatCppDlg.h" 

#ifdef _DEBUG

#define new DEBUG_NEW

#endif 
 

// CChatCppApp 

BEGIN_MESSAGE_MAP(CChatCppApp, CWinApp)

      ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP() 
 

// CChatCppApp construction 

CChatCppApp::CChatCppApp()

{

      // TODO: add construction code here,

      // Place all significant initialization in InitInstance

} 
 

// The one and only CChatCppApp object 

CChatCppApp theApp; 
 

// CChatCppApp initialization 

BOOL CChatCppApp::InitInstance()

{

//InitCommonControls () требуется на Windows XP, если прикладная декларация //определяет использование ComCtl32.dll версии 6 или позже позволить визуальные стили.

//Иначе,  любое создание  окна потерпит неудачу.  

            InitCommonControls(); 

      CWinApp::InitInstance(); 

      AfxEnableControlContainer(); 

      if (!AfxSocketInit())

      {

            AfxMessageBox("Нет инициализации  сокета!");

            return FALSE;

      }

      CChatCppDlg dlg;

      m_pMainWnd = &dlg;

      INT_PTR nResponse = dlg.DoModal();

      if (nResponse == IDOK)

      {

            // TODO: Place code here to handle when the dialog is

            //  dismissed with OK

      }

      else if (nResponse == IDCANCEL)

      {

            // TODO: Place code here to handle when the dialog is

            //  dismissed with Cancel

      } 

      // Since the dialog has been closed, return FALSE so that we exit the

      //  application, rather than start the application's message pump.

      return FALSE;

}

/////////////////////////////////////////////////////////БЛОК 3//////////////////////////////////////////////////////////////// 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

СОКЕТ:

#include "stdafx.h"

#include "ChatCppDlg.h"

#include "Sock.h" 

CSock::CSock()

: m_pParent(NULL)

{ 

} 

CSock::~CSock()

{

}

/////////////////////////////////////////////////////////БЛОК 3.1////////////////////////////////////////////////////////////////

// Событие подключения  на стороне клиентского  приложения.

void CSock::OnConnect(int nErrorCode)

{

      CChatCppDlg* pDlg = (CChatCppDlg*)m_pParent; 
 

      nErrorCode == 0 ? pDlg->OnConnect(FALSE) : pDlg->OnConnect(TRUE); 
 

      CAsyncSocket::OnConnect(nErrorCode);

}

/////////////////////////////////////////////////////////БЛОК 3.1//////////////////////////////////////////////////////////////// 
 

/////////////////////////////////////////////////////////БЛОК 3.2////////////////////////////////////////////////////////////////

// Событие отключения  от сети

void CSock::OnClose(int nErrorCode)

{

      Beep(2000, 300); 

      CAsyncSocket::OnClose(nErrorCode);

}

/////////////////////////////////////////////////////////БЛОК 3.2//////////////////////////////////////////////////////////////// 
 

/////////////////////////////////////////////////////////БЛОК 3.3////////////////////////////////////////////////////////////////

// Событие возможности  получения сообщений.

void CSock::OnReceive(int nErrorCode)

{ 

      CChatCppDlg* pDlg = (CChatCppDlg*)m_pParent;

      pDlg->OnReceive(); 

      CAsyncSocket::OnReceive(nErrorCode);

}

/////////////////////////////////////////////////////////БЛОК 3.3//////////////////////////////////////////////////////////////// 

/////////////////////////////////////////////////////////БЛОК 3.4////////////////////////////////////////////////////////////////

// Запрос на подключение,  направляемый клиентом  серверу.

// Происходит на  стороне серверного  приложения.

void CSock::OnAccept(int nErrorCode)

{

      CChatCppDlg* pDlg = (CChatCppDlg*)m_pParent;

      pDlg->OnAccept(); 
 

      CAsyncSocket::OnAccept(nErrorCode);

}

/////////////////////////////////////////////////////////БЛОК 3.4//////////////////////////////////////////////////////////////// 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

5.Результат работы программы.

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

 

Окно  первого запуска

 

Окно  сервера и окно клиента 
 
 

 

Проверка  отправки и прихода  сообщений 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

6.Преимущества и недостатки приложения. 

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

      К минусам программы можно отнести  почти полную неконкурентоспособность  – почти на любом компьютере установлен NetMeeting, поставляемый с  Windows, а сторонними разработчиками выпущено много других, еще более удобных и функциональных программ для обмена текстовыми сообщениями. Хотя возможно кто то найдет изюминку именно в этой программе, и она станет для него самым удобным и функциональным – о вкусах не спорят.

 

7.Заключение

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

      Также в процессе выполнения курсового  проекта были изучены компоненты классов TForm, TLabel, TMemo, TBitBtn, TScrollBox, TButton, TPopupMenu, TActionList, TMainmenu, TPanel, TBevel, TTrayIcon, TStringGrid и другие . Мы ознакомились со специальными методами  для работы с этими компонентами, научились обрабатывать реакцию этих компонентов на события, научились эффективно и эстетично использовать рабочее пространство формы и освоились со специфичностью написания программ на C++Builder(модульность).

      Стало ясно, что роль модулей в C++Builder. не исчерпывается только механизмом раздельной компиляции. C++Builder. связывает с каждым включаемым в программу окном собственный модуль и таким способом локализует все свойства окна в отдельной программной единице. Выяснили,  что основная программа весьма специфична: она содержит перечень всех используемых в программе модулей и несколько исполняемых операторов, обеспечивающих создание нужных окон и связь программы с Windows. Вся основная работа программы управляется кодом, содержащимся в модулях.

 

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

  1. Фаронов В. В. Delphi Программирование на языке высокого уровня. – М.: «ПИТЕР», 2006. – 639 с.
  2. Камилова А. М. Методические указания для выполнения лабораторных работ по дисциплине «Среды визуального программирования», обе части.
  3. Конспекты лекций по предмету «Среды визуального программирования», преподаватель Камилова А. М.
  4. Баженова И. Ю. «Delphi6 Самоучитель программиста», Кудиц-Образ, Москва, 2002.-345 с.

Информация о работе Разработка программы для обмена тестовыми сообщениями