Разработка списка рабочих, имеющих брак при изготовлении деталей

Автор работы: Пользователь скрыл имя, 03 Сентября 2014 в 19:41, курсовая работа

Краткое описание

Целью курсового проекта является закрепление и обобщение знаний, полученных при изучении теоретического курса, приобретение практических навыков по программированию задач на объектно - ориентированном языке Visual C++ в среде разработки Visual Studio 2005 по дисциплине «Технологии и методы программирования».

Прикрепленные файлы: 1 файл

MINOBRNAUKI_ROSSII.docx

— 79.74 Кб (Скачать документ)

 

МИНОБРНАУКИ РОССИИ

 

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный

экономический университет»

 

Факультет информатики и прикладной математики

 

Кафедра вычислительных систем и программирования

 

 

 

КУРСОВОЙ ПРОЕКТ

по дисциплине

 

 

«ТЕХНОЛОГИИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ»

 

 

на тему «Разработка списка рабочих, имеющих брак при изготовлении деталей»

 

Выполнила студентка Полякова П., группа Б3821

____________________________________________________________

(подпись)

 

Руководитель: к.т.н., профессор Павлов Ф. Ф.

(уч. степень и звание, Ф.И.О.)

 

_____________________________________________________________

(оценка, дата)

 

_____________________________________________________________

(подпись)

 

 

 

 

 

 

 

Санкт-Петербург

2014

 

Цель курсового проекта

Целью курсового проекта является закрепление и обобщение знаний, полученных при изучении теоретического курса, приобретение практических навыков по программированию задач на объектно - ориентированном языке Visual C++ в среде разработки Visual Studio 2005 по дисциплине «Технологии и методы программирования».

 

Постановка задачи

      Имеются данные  об изготовлении изделий рабочими  участка: табельный номер, ФИО, код  детали, количество изготовленных  деталей. Имеются акты о браке: табельный номер, код детали, количество деталей. Рассчитать ведомость годных деталей для рабочего, задаваемого по запросу.

Постановка задачи заключается в разработке технического задания:

1) Наименование и краткая характеристика  программы

Разработать систему учета и отчетности поступления на склад деталей. Учет фиксируется в исходном документе «Приход». Расценки деталей содержатся в исходном документе «Справочник деталей». Отчет об итоговом движении всех деталей вцелом за месяц определяется в результирующем документе «Ведомость стоимости деталей».

2) Требования к функциональным  характеристикам

Система должна обеспечивать выполнение следующих функций:

для исходных документов («Приход», «Справочник деталей») – ввод, просмотр, поиск, замена, удаление информации (хранение в базе данных);

для результирующего документа - только расчет «Ведомости».

Исходные данные: для документа «Приход» - Код детали, Дата, Количество (в шт.); для документа «Справочник деталей» - Код детали, Наименование, Расценка.

Результатные данные для документа «Ведомости» - Код детали, Наименование, Количество, Итоговая стоимость, итого за месяц.

3) Требования к техническим средствам (минимальная конфигурация): компъютеры  – IBM PC, тип процессора – Pentium, объем оперативной памяти 32 Мб, операционная система семейства Win32.

4) Технологические требования:

архитектура - однопользовательская, класс – программная система;

пользовательский интерфейс – это интерфейс-меню и интерфейс со свободной навигацией (диалоговые окна с кнопочным меню и компонентами ввода/вывода);

метод программирования – объектно-ориентированный; язык программирования – Visual C++ 7;

среда программирования – Visual C++  платформы Visual Studio 2005.

 

Определение спецификаций программы

Для получения спецификаций сформулируем содержательную постановку задачи, разработаем интерфейс-меню, определим подзадачи (функции меню), алгоритмы решения функций.

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

Выберем в качестве имен классов входящие в условие задачи наименования документов, циркулирующие в разрабатываемой системе. В нашем случае - это «Акт прихода», «Справочник расценок», «Ведомость», и ,следовательно, классы - это akt, cena, ved. Класс ved является производным классов akt и cena.

Исходные документы («Приход», «Справочник деталей») хранится в базе данных с  индексной  организацией; «Ведомость стоимости работ» - выводится сразу на экран. Структура записи файла «приход» содержит следующие поля: Код детали, Дата, Количество, где ключом записи является Код детали. Структура записи файла «Справочник деталей» содержит следующие поля: Код детали, Наименование, Расценка, где ключом записи является Код детали.

Главное меню содержит опции, соответствующие названиям документов: Приход, Справочник, Ведомость. С помощью подменю реализуются следующие операции над исходными  документами : создание, просмотр, поиск, замена, удаление. Для вывода «Ведомости стоимости деталей» используется опция главного меню.

 

Pr

File                    Приход       Справочник  Ведомости  View            Help

Имена файлов  Создание    Создание      Создание     Status Bar   About

Exit                    Просмотр   Просмотр

                Поиск          Поиск

                Замена        Замена

                Удаление   Удаление


 

Рис. 1. Меню системы

 

Проектирование структуры программы

Классами, описывающими предметную область, будут классы CAkt, CCena, CVed. Создание индексного массива реализует класс CIndex.

Получается следующая иерархия классов:

                                 CIndex

                                   /     \

                           CAkt    Ccena

Классами, описывающими диалог, будут 8 классов диалоговых окон:

    • CAktDobDlg–реализует создание записей актов;
    • CAktProsm–реализует просмотр записей актов;
    • CAktPoisk–реализует поиск,замену,удаление записей актов;
    • CCenaDobDlg–реализует создание записей Справочника;
    • CCenaProsm–реализует просмотр записей Справочника;;
    • CCenaPoisk–реализует поиск,замену,удаление записей Справочника;
    • CFilesDlg-реализует выбор имен файлов базы данных;
    • CVedomDlg-реализует расчет и вывод ведомости;

 

 

 

 

Реализация проекта

Файл кодов 1.cpp

// 1.cpp : Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "afxwinappex.h"

#include "afxdialogex.h"

#include "1.h"

#include "MainFrm.h"

#include "1Doc.h"

#include "1View.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CMy1App

BEGIN_MESSAGE_MAP(CMy1App, CWinAppEx)

ON_COMMAND(ID_APP_ABOUT, &CMy1App::OnAppAbout)

// Standard file based document commands

ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew)

ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)

// Standard print setup command

ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup)

END_MESSAGE_MAP()

// CMy1App construction

CMy1App::CMy1App()

{

m_bHiColorIcons = TRUE;

// support Restart Manager

m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;

#ifdef _MANAGED

// If the application is built using Common Language Runtime support (/clr):

//     1) This additional setting is needed for Restart Manager support to work properly.

//     2) In your project, you must add a reference to System.Windows.Forms in order to build.

System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException);

#endif

// TODO: replace application ID string below with unique ID string; recommended

// format for string is CompanyName.ProductName.SubProduct.VersionInformation

SetAppID(_T("1.AppID.NoVersion"));

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}

 

// The one and only CMy1App object

CMy1App theApp;

// CMy1App initialization

BOOL CMy1App::InitInstance()

{

// InitCommonControlsEx() is required on Windows XP if an application

// manifest specifies use of ComCtl32.dll version 6 or later to enable

// visual styles.  Otherwise, any window creation will fail.

INITCOMMONCONTROLSEX InitCtrls;

InitCtrls.dwSize = sizeof(InitCtrls);

// Set this to include all the common control classes you want to use

// in your application.

InitCtrls.dwICC = ICC_WIN95_CLASSES;

InitCommonControlsEx(&InitCtrls);

CWinAppEx::InitInstance();

// Initialize OLE libraries

if (!AfxOleInit())

{

AfxMessageBox(IDP_OLE_INIT_FAILED);

return FALSE;

}

AfxEnableControlContainer();

EnableTaskbarInteraction();

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

LoadStdProfileSettings(4);  // Load standard INI file options (including MRU)

InitContextMenuManager();

InitKeyboardManager();

InitTooltipManager();

CMFCToolTipInfo ttParams;

ttParams.m_bVislManagerTheme = TRUE;

theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,

RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);

// create main MDI Frame window

CMainFrame* pMainFrame = new CMainFrame;

if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))

{

delete pMainFrame;

return FALSE;

}

m_pMainWnd = pMainFrame;

// call DragAcceptFiles only if there's a suffix

//  In an MDI app, this should occur immediately after setting m_pMainWnd

// Parse command line for standard shell commands, DDE, file open

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);

// Dispatch commands specified on the command line.  Will return FALSE if

// app was launched with /RegServer, /Register, /Unregserver or /Unregister.

if (!ProcessShellCommand(cmdInfo))

return FALSE;

// The main window has been initialized, so show and update it

pMainFrame->ShowWindow(m_nCmdShow);

pMainFrame->UpdateWindow();

return TRUE;

}

int CMy1App::ExitInstance()

{

//TODO: handle additional resources you may have added

AfxOleTerm(FALSE);

return CWinAppEx::ExitInstance();

}

// CMy1App message handlers

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

// Dialog Data

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

{

}

 

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

// App command to run the dialog

void CMy1App::OnAppAbout()

{

CAboutDlg aboutDlg;

aboutDlg.DoModal();

}

// CMy1App customization load/save methods

void CMy1App::PreLoadState()

{

BOOL bNameValid;

CString strName;

bNameValid = strName.LoadString(IDS_EDIT_MENU);

ASSERT(bNameValid);

GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT);

}

void CMy1App::LoadCustomState()

{

}

void CMy1App::SaveCustomState()

{

}

// CMy1App message handlers

 

Файл кодов 1.h

// 1.h : main header file for the 1 application

//

#pragma once

#ifndef __AFXWIN_H__

#error "include 'stdafx.h' before including this file for PCH"

#endif

#include "resource.h"       // main symbols

// CMy1App:

// See 1.cpp for the implementation of this class

//

class CMy1App : public CWinAppEx

{

public:

CMy1App();

// Overrides

public:

virtual BOOL InitInstance();

virtual int ExitInstance();

// Implementation

UINT  m_nAppLook;

BOOL  m_bHiColorIcons;

virtual void PreLoadState();

virtual void LoadCustomState();

virtual void SaveCustomState();

afx_msg void OnAppAbout();

DECLARE_MESSAGE_MAP()

};

extern CMy1App theApp;

 

Файл кодов 1Doc.cpp

// 1Doc.cpp : implementation of the CMy1Doc class

//

#include "stdafx.h"

// SHARED_HANDLERS can be defined in an ATL project implementing preview, thumbnail

// and search filter handlers and allows sharing of document code with that project.

#ifndef SHARED_HANDLERS

#include "1.h"

#endif

#include "1Doc.h"

#include <propkey.h>

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CMy1Doc

IMPLEMENT_DYNCREATE(CMy1Doc, CDocument)

BEGIN_MESSAGE_MAP(CMy1Doc, CDocument)

END_MESSAGE_MAP()

// CMy1Doc construction/destruction

CMy1Doc::CMy1Doc()

{

// TODO: add one-time construction code here

}

CMy1Doc::~CMy1Doc()

{

}

BOOL CMy1Doc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

// TODO: add reinitialization code here

// (SDI documents will reuse this document)

return TRUE;

}

// CMy1Doc serialization

void CMy1Doc::Serialize(CArchive& ar)

{

if (ar.IsStoring())

{

// TODO: add storing code here

}

else

{

// TODO: add loading code here

}

}

#ifdef SHARED_HANDLERS

// Support for thumbnails

void CMy1Doc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)

{

// Modify this code to draw the document's data

dc.FillSolidRect(lprcBounds, RGB(255, 255, 255));

CString strText = _T("TODO: implement thumbnail drawing here");

LOGFONT lf;

CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));

pDefaultGUIFont->GetLogFont(&lf);

lf.lfHeight = 36;

CFont fontDraw;

fontDraw.CreateFontIndirect(&lf);

CFont* pOldFont = dc.SelectObject(&fontDraw);

dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);

dc.SelectObject(pOldFont);

}

// Support for Search Handlers

void CMy1Doc::InitializeSearchContent()

{

CString strSearchContent;

// Set search contents from document's data.

// The content parts should be separated by ";"

 

// For example:  strSearchContent = _T("point;rectangle;circle;ole object;");

SetSearchContent(strSearchContent);

}

void CMy1Doc::SetSearchContent(const CString& value)

{

if (value.IsEmpty())

{

RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);

}

else

{

CMFCFilterChunkValueImpl *pChunk = NULL;

ATLTRY(pChunk = new CMFCFilterChunkValueImpl);

if (pChunk != NULL)

{

pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);

SetChunkValue(pChunk);

}

}

}

#endif // SHARED_HANDLERS

// CMy1Doc diagnostics

#ifdef _DEBUG

void CMy1Doc::AssertValid() const

{

CDocument::AssertValid();

}

void CMy1Doc::Dump(CDumpContext& dc) const

{

CDocument::Dump(dc);

}

#endif //_DEBUG

// CMy1Doc commands

 

Файл кодов 1Doc.h

// 1Doc.h : interface of the CMy1Doc class

//

#pragma once

class CMy1Doc : public CDocument

{

protected: // create from serialization only

CMy1Doc();

DECLARE_DYNCREATE(CMy1Doc)

// Attributes

public:

// Operations

public:

// Overrides

public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchive& ar);

#ifdef SHARED_HANDLERS

virtual void InitializeSearchContent();

virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);

#endif // SHARED_HANDLERS

// Implementation

public:

virtual ~CMy1Doc();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

// Generated message map functions

protected:

DECLARE_MESSAGE_MAP()

#ifdef SHARED_HANDLERS

// Helper function that sets search content for a Search Handler

void SetSearchContent(const CString& value);

#endif // SHARED_HANDLERS

};

 

Файл кодов 1View.cpp

// 1View.cpp : implementation of the CMy1View class

//

#include "stdafx.h"

// SHARED_HANDLERS can be defined in an ATL project implementing preview, thumbnail

// and search filter handlers and allows sharing of document code with that project.

#ifndef SHARED_HANDLERS

#include "1.h"

#endif

#include "1Doc.h"

#include "1View.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CMy1View

IMPLEMENT_DYNCREATE(CMy1View, CView)

BEGIN_MESSAGE_MAP(CMy1View, CView)

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CMy1View::OnFilePrintPreview)

ON_WM_CONTEXTMENU()

ON_WM_RBUTTONUP()

END_MESSAGE_MAP()

// CMy1View construction/destruction

CMy1View::CMy1View()

{

// TODO: add construction code here

}

CMy1View::~CMy1View()

{

}

BOOL CMy1View::PreCreateWindow(CREATESTRUCT& cs)

{

// TODO: Modify the Window class or styles here by modifying

//  the CREATESTRUCT cs

return CView::PreCreateWindow(cs);

}

// CMy1View drawing

void CMy1View::OnDraw(CDC* /*pDC*/)

Информация о работе Разработка списка рабочих, имеющих брак при изготовлении деталей