Информационно-вычислительная сеть на основе архитектуры "клиент-сервер", предметная область: "Магазин бытовой техники"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
вары (ID, Группа, Название, Количество, Цена закупки, Цена продажи)
Эта сущность хранит информацию о количестве товаров, их разновидности и о цене закупки и продажи. Атрибут ID связывает таблицы Товары - Состав расхода - Склад.
. Состав расхода (Шифр расхода, ID-товара, Количество, Цена реализации)
Эта сущность хранит информацию о расходах, затраченных на закупку товара. Атрибут Шифр расхода связывает таблицы Состав расхода - Приход/Расход.
. Склад (Шифр прихода, ID товара, Цена закупки, Кол-во закупок, Кол-во реализации)
Эта сущность хранит информацию о количестве оставшегося товара и о цене покупки данного товара. Атрибут Шифр прихода выполняет функцию индексной связи между сущностями, которая определяет связь между таблицами Склад - Приход/Расход.
. Приход/Расход (Шифр, Тип операции, Дата)
Эта сущность хранит информацию о всех операциях связанных с реализацией товара. Атрибут Шифр имеет характер индексной связи между сущностями, которая определяет связь между таблицами Приход/Расход - Склад - Состав расхода.
Модель данной БД представлена на рисунке 1.
Рисунок 1 - Модель базы данных
5. Результаты работы
Было проведено тестирование программы, подтверждающее правильность её работы. Ниже приведены результаты работы.
Рисунок 2 - Приложение клиент
Рисунок 3 - Приложение сервер
Рисунок 4 - Выбор источника данных
Рисунок 5 - Запуск сервера прошел успешно
Рисунок 6 - Получение данных после запроса от клиента
Заключение
В ходе выполнения курсового проекта было разработано клиент-серверное приложение для передачи и обработки данных. Программа была разработана на языке С++ в среде программирования Microsoft Visual Studio.
Проведённое тестирование показало правильность работы программ. Разработка проведена с использованием операционной системы Windows 7 на ПК с процессором Phenom II.
Список использованной литературы
1.Зинкин С.А. Курс лекций по курсу Сети ЭВМ и телекоммуникации
2.Компьютерные сети. Принципы, технологии, протоколы / В.Г. Олифер, Н.А. Олифер.-СПб.: Питер, 2002.
.Филиппов М.В.Вычислительные машины, компьютерные сети и системы телекоммуникации.
4.MSDN Library. Copyright 1995-2000 Microsoft Corporation.
5.Сети ЭВМ: протоколы, стандарты, интерфейсы / Ю. Блэк; перев. с англ. - М.: Мир, 1990.
.А.П. Сергеев Офисные и локальные сети. Самоучитель: - М.: Издательский дом Вильямс, 2003
7.">www.ru.wikipedia.org
магазин сеть клиент сервер
Приложение А (обязательное)
Листинг программного текста
Приложение Сервер
#include "stdafx.h"
#include "lip_server.h"
#include "MainFrm.h"
#include "lip_serverDoc.h"
#include "lip_serverView.h"
#include "ParamDlg.h"
#include "global.h"
#include "..\crypt.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILEchar THIS_FILE[] = __FILE__;
#endif_MESSAGE_MAP(CLip_serverApp, CWinApp)
//{{AFX_MSG_MAP(CLip_serverApp)_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based document commands_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)_MESSAGE_MAP()_serverApp::CLip_serverApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}_serverApp theApp;CLip_serverApp::InitInstance()
{(!AfxSocketInit())
{(IDP_SOCKETS_INIT_FAILED);FALSE;
OpenEx(NULL,0);=newCRecordset(pLipDB);=false;(WaitingForConnect,NULL);">}d(NULL);(d.DoModal() == IDOK) {= d.m_Port;= d.m_Password;= new CDatabase();>OpenEx(NULL, 0);= new CRecordset(pLipDB);= false;(WaitingForConnect, NULL);
}false;
#ifdef _AFXDLLdControls();// Call this when using MFC in a shared DLL
#elsedControlsStatic();// Call this when linking to MFC statically
#endif(_T("Local AppWizard-Generated Applications"));(0); // Load standard INI file options (including RU)* pDocTemplate;= new CSingleDocTemplate(_MAINFRAME,_CLASS(CLip_serverDoc),_CLASS(CMainFrame), // main SDI frame window_CLASS(CLip_serverView));(pDocTemplate);
// Parse command line for standard shell commands, DDE, file opencmdInfo;(cmdInfo);
// Dispatch commands specified on the command line(!ProcessShellCommand(cmdInfo))FALSE;
// The one and only window has been initialized, so show and update it._pMainWnd->ShowWindow(SW_SHOW);_pMainWnd->UpdateWindow();TRUE;
}CLip_serverApp::ExitInstance()
{(pLipRec) {>Close();pLipRec;
}(pLipDB) {>Close();pLipDB;
}CWinApp::ExitInstance();
}CAboutDlg : public CDialog
{:();
// Dialog Data
//{{AFX_DATA(CAboutDlg){ IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg):void DoDataExchange(CDataExchange* pDX); // DDX/DDV upport
//}}AFX_VIRTUAL
// Implementation:_MESSAGE_MAP()
};::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}CAboutDlg::DoDataExchange(CDataExchange* pDX)
{::DoDataExchange(pDX);
}_MESSAGE_MAP(CAboutDlg, CDialog)_MESSAGE_MAP()
// App command to run the dialogCLip_serverApp::OnAppAbout()
{aboutDlg;.DoModal();
}WaitingForConnect( LPVOID pParam)
{
SOCKET MySocket;// основное гнездо - на которое принимаются соединения
sockaddr_inMySocketAdress;// структура данных гнездаnewSocket;// гнездо, на которое перенаправляются соединения
inta;= socket(AF_INET, SOCK_STREAM, 0); // создать гнездо
if(MySocket == INVALID_SOCKET)
{ // в случае неудачи - выдать сообщение и выйти
// cout<<endl<<"socket(...) error "<<WSAGetLastError()<<endl;0;
}.sin_family = AF_INET; // заполнение структуры
данных.sin_port = htons(port);.sin_addr.s_addr = htonl(INADDR_ANY);(bind(MySocket, (sockaddr*) &MySocketAdress,(MySocketAdress)) == SOCKET_ERROR) // получение локального
адреса
{ // в случае неудачи - выдать сообщение, закрыть гнездо и выйти
// cout<<endl<<"bind(...) error "<<WSAGetLastError()<<endl;(MySocket);0;
}(listen(MySocket, 5) == SOCKET_ERROR) // перевести гнездо в с
остояние ожидания
{
// cout<<endl<<"listen(...) error "<<WSAGetLastError()<<endl;(MySocket);0;
}(1) {= sizeof(sockaddr_in);= accept(MySocket, (sockaddr*)&MySocketAdress, &a); //
принять соединение(newSocket == INVALID_SOCKET)
{
//cout<<endl<<"accept(...) error "<<WSAGetLastError()<<endl;(MySocket);0;
}
/*= sizeof(sockaddr_in);(getpeername(sw, (sockaddr*)&MySocketAdress, &a) !=
SOCKET_ERROR