Home Информационни технологии Да се направи Windows приложение за изчисляване на оптималната големина на партидата(l) на различни детайли

***ДОСТЪП ДО САЙТА***

ДО МОМЕНТА НИ ПОСЕТИХА НАД 2 500 000 ПОТРЕБИТЕЛИ

БЕЗПЛАТНИТЕ УЧЕБНИ МАТЕРИАЛИ ПРИ НАС СА НАД 7 700


Ако сме Ви били полезни, моля да изпратите SMS с текст STG на номер 1092. Цената на SMS е 2,40 лв. с ДДС.

Вашият СМС ще допринесе за обогатяване съдържанието на сайта.

SMS Login

За да използвате ПЪЛНОТО съдържание на сайта изпратете SMS с текст STG на номер 1092 (обща стойност 2.40лв.)


SMS e валиден 1 час
Да се направи Windows приложение за изчисляване на оптималната големина на партидата(l) на различни детайли ПДФ Печат Е-мейл

Задание

Да се направи Windows приложение за изчисляване на оптималната големина на партидата(l) на различни детайли, при ртимична потребност и зададени:

  1. работни дни за година (dr) (дни)
  2. разходи за подготвително заключителни времена (Ka) (лв.)
  3. разходи за времената за обработка за всеки детайл (Ks) (лв./брой)
  4. разходи за материал (Km) (лв./брой)
  5. норматив на коефициента за използваемост на еднократните разходи (Nzn) ()
  6. време за всички работни операции (за един детайл) (Ts) (дни/брой)
  7. дневна потребност от детайли (b) (брой/ден)

Програмата трябва да може да изчислява и ритмичността на партидата: r= (дни)

Приложението трябва да позволява записване на резултатите в база данни.

Обща диаграма на процеса

След като бъдат въведени входните данни от заданието, приложението ги подава на изчислителния процес, който представлява две формули за изчисление на ОГП и ритмичността. Резултата се извежда на екрана и при желание от потребителя може да бъде запаметен в базата от данни.

Реализация

Програмата е реализирана на езика Visual Basic 6.0. Интерфейса е реализиран чрез 2 форми. В първата от тях се въвеждат всички необходими данни и се правят изчисленията, тя е основната форма (frmMain).

Другата форма е помощна и от нея се въвеждат нови детайли

Достъпът до данните се осъществава чрез 3 Data контроли, свързани към таблиците от базата данни. За въвеждане на входните данни се използват няколко текстови полета (textBox) които са свързани (bounded) към Data контролите и служат както за въвеждане на нови данни, така и за извеждане на вече записаните в базата данни.

За извеждането на резултата се използват също две такива свързани полета. Разликата е, че те са заключени така че потребителят да не може да пише в тях. Тъй като тези полета съдържат резултатите от изчисленията, не би следвало потребителя да попълва нещо в тях.

По сложно е избирането на детайл. Както ще стане ясно по нататък в базата данни се записва само ID(номер) на детайла, който се взима от таблицата “детайли”. Това е направено с цел спестяване на памет и по-голяма яснота кое изчисление за кой детайл се отнася. Реализирано е със специален Data Bound Combo Box, който е отделна ActiveX контрола.

Помощната форма служи единствено за добавяне на нови детайли. Тя се състои само от едно свързано поле. Извиква се чрез бутона “Нов Детайл”. При изход от нея се опреснява съдържанието на Combo Box-а, за да се появи в него току що въведения детайл.

И при двете форми въвеждането на данни става чрез два бутона. По този начин въвеждането се разделя на три части:

- подготовка на базата за нови данни

- въвеждане от потребителя на новите данни

- добавяне на новите данни в базата ИЛИ отказване на операцията

Така потребителят може да се откаже от операцията по средата на въвеждането.

Организация на базата данни

Базата данни е направена на ACCESS 97. Файлът е наименован “ogplog97.mdb”. Тя съдържа две таблици свързани помежду си. Първата таблица се казва “OgpRez”. В нея всеки запис включва входните данни и изчислените оптимална големина на партидата и ритмичност. Другата таблица се състои само от две полета. Първото поле е ключ е Autonumber. То представлява уникален код за всеки датайл. Второто поле съдържа наименованието на детайла. Тази таблица спестява доста памет, тъй като ако вместо нея имаше само една таблица и всеки път трябваше да се въвежда име на детайл в поле от тип (Text – низ) всеки символ от този низ заема по 1 byte. Докато в този вариант винаги е 4 bytes, което позволява същесвуването на 4 294 967 296 различни детайла в базата. Ето и структурата на самите таблици:

Таблица “OgpRez”

Поле

Тип на полето

Описание

IDRes

Autonumber (Long Int)

Идентификатор на записа, първичен ключ

IDDet

Number (Long Int)

Идентификатор на детайла

L

Number (long Int)

Големина на партидата

Dr

Number (Integer)

Работни дни за година

Ka

Currency

Разходи за подготвително-заключителни времена

Ks

Currency

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

Km

Currency

Разходи за материал

Nzn

Number (Double)

Норматив на коефициента за използваемост на еднократните разходи

Ts

Number (Double)

Време за всички работни операции (за един детайл)

B

Number (Long Int)

Дневна потребност от детайли

R

Number (Integer)

Ритмичност на партидатаТаблица “Detail”

Поле

Тип на полето

Описание

IDDet

Autonumber (Long Int)

Идентификатор на детайла и първичен ключ

ImeDet

Text (50)

Наименование на детайла

Двете таблици са свързани чрез полетата си IDDet , като връзката е от типа 1->М (1 откъм таблица “Detail” и М откъм таблица “OgpRez”) – на един детайл съответстват много изчисления с различни параметри.

Компоненти на програмата

Списък с компонентите на програмата и техните характеристики:

Компонент

Свойство

Стойност

frmMain

Caption

“Изчисляване на оптимална големина на партидата”

 

BorderStyle

1 – Fixed Single

 

Name

frmMain

 

 

 

lblInfo

Caption

“Изчисляване на оптимална големина на партидата”

 

Allignment

2 – Center

 

Name

lblInfo

 

 

 

lbldr

Caption

“Работни дни за година (dr)”

 

Alignment

1 – Right Justify

 

Name

lbldr

 

 

 

lblKa

Caption

“Разходи за подготвително - заключителни времена (Ka)”

 

Alignment

1 – Right Justify

 

Name

lblKa

 

 

 

lblKs

Caption

“Разходи за времената за обработка за всеки детайл (Ks)”

 

Alignment

1 – Right Justify

 

Name

lblKs

 

 

 

lblKm

Caption

“Разходи за материал (Km)”

 

Alignment

1 – Right Justify

 

Name

lblKm

 

 

 

 

 

 

 

 

 

 

 

 

lblNzn

Caption

“Норматив на коефициента за използваемост на еднократните разходи (Nzn)”

 

Alignment

1 – Right Justify

 

Name

lblNzn

 

 

 

lblTs

Caption

“Време за всички работни операции (Ts)”

 

Alignment

1 – Right Justify

 

Name

lblNzn

 

 

 

lblb

Caption

“Дневна потребност от детайли (b)”

 

Alignment

1 – Right Justify

 

Name

lblb

 

 

 

lblDet

Caption

“Детайл”

 

Alignment

1 – Right Justify

 

Name

lblDet

 

 

 

lbll

Caption

“Оптимална големина на партидата (L)”

 

Alignment

1 – Right Justify

 

Name

lbll

 

 

 

lblr

Caption

“Оптимална ритмичност на партидата (r)”

 

Alignment

1 – Right Justify

 

Name

lblr

 

 

 

txtdr

DataField

dr

 

DataSource

datOGP

 

Name

txtdr

 

Text

“”

 

 

 

txtKa

DataField

Ka

 

DataSource

datOGP

 

Name

txtKa

 

Text

“”

 

 

 

 

 

 

 

 

 

txtKs

DataField

Ks

 

DataSource

datOGP

 

Name

txtKs

 

Text

“”

 

 

 

txtKm

DataField

Km

 

DataSource

datOGP

 

Name

txtKm

 

Text

“”

 

 

 

txtNzn

DataField

Nzn

 

DataSource

datOGP

 

Name

txtNzn

 

Text

“”

 

 

 

txtTs

DataField

Ts

 

DataSource

datOGP

 

Name

txtTs

 

Text

“”

 

 

 

txtb

DataField

b

 

DataSource

datOGP

 

Name

txtb

 

Text

“”

 

 

 

txtl

DataField

l

 

DataSource

datOGP

 

Name

txtl

 

Text

“”

 

Locked

True

 

 

 

txtr

DataField

r

 

DataSource

datOGP

 

Name

txtr

 

Text

“”

 

Locked

True

 

 

 

dbcDet

BoundColumn

IDDet

 

DataField

IDDet

 

DataSource

datOGP

 

ListField

ImeDet

 

RowSource

datDetBound

 

Style

2 – dbcDropdownList

 

 

 

cmdNewDet

Caption

“Нов Детайл”

 

Name

cmdNewDet

 

 

 

cmdNew

Caption

“Нов Запис”

 

Name

cmdNew

 

 

 

cmdSave

Caption

“Запис”

 

Name

cmdSave

 

 

 

cmdOtkaz

Caption

“Отказ”

 

Name

cmdOtkaz

 

 

 

cmdIztrii

Caption

“Изтрий”

 

Name

cmdIztrii

 

 

 

cmdCalculate

Caption

“Изчисли ОГП”

 

Name

cmdCalculate

 

 

 

cmdExit

Caption

“Изход”

 

Name

cmdExit

 

 

 

datDetBound

Caption

“datDetBound”

 

Connect

Access

 

DatabaseName

“D:\UNI\UIS\kursova\ogplog97.mdb”

 

RecordSource

Detail

 

Visible

False

 

Name

datDetBound

 

 

 

datOGP

Caption

“ogplog97.mdb”

 

Connect

Access

 

DatabaseName

“D:\UNI\UIS\kursova\ogplog97.mdb”

 

RecordSource

OgpRez

 

ReadOnly

True

 

Name

datOGP

 

 

 

 

 

 

frmDetail

BorderStyle

1 – Fixed Single

 

Caption

“Добавяне на нови детайли”

 

ControlBox

False

 

Name

frmDetail

txtDetail

DataField

ImeDet

 

DataSource

datDetail

 

Name

txtDetail

 

Text

“”

 

 

 

cmdNovDet

Caption

“Нов Детайл”

 

Name

cmdNovDet

 

 

 

cmdSaveDet

Caption

“Запис”

 

Name

cmdSaveDet

 

 

 

cmdOtkazDet

Caption

“Отказ”

 

Name

cmdOtkazDet

 

 

 

cmdIzhodDet

Caption

“Изход”

 

Name

cmdIzhodDet

 

 

 

datDetaili

Caption

“Детайли”

 

Connect

Access

 

DatabaseName

“D:\UNI\UIS\kursova\ogplog97.mdb”

 

RecordSource

Detail

 

Name

datDetaili

 

 

 

Променливи в програмата:

Променлива

Тип

dbll

Double

intdr

Integer

curKa

Currency

curKs

Currency

curKm

Currency

dblNzn

Double

dblTs

Double

lngb

Long

dblChislitel

Double

dblZnamenatel

DoubleТаблица на модулите и функциите.

Име на модул

Предназначение

frmMain

Този модул съдържа процедури, обслуващи формата frmMain

Име на функция

Предназначение

cmdIztrii_Click()

Изтрива текущия запис като преди това пита потребителя за потвърждение

cmdNew_Click()

Поготвя базата и програмата за въвеждане на нов запис в базата

cmdSave_Click()

Записва новия запис в базата

cmdOtkaz_Click()

Отказва записването на записа

cmdCalculate_Click()

Изчислява оптималната големина на партидата

cmdExit_Click()

Изход от програмата

cmdNewDet_Click()

Отваря помощен модален прозорец за въвеждане на нов детайл

 

 

Име на модул

Предназначение

frmDetail

Този модул съдържа процедури, обслуващи формата frmDetail

Име на функция

Предназначение

cmdIzhodDet_Click()

Затваря се модалния прозорец и се орпеснява съдържанието на Data Bound Combo Box-a

cmdNovDet_Click()

Подготвя се базата за въвеждане на нов детайл

cmdOtkazDet_Click()

Отказва се нововъведения детайл

cmdSaveDet_Click()

Записва се новия детайл в базата

Програмен код

frmMain

Dim dbll As Double

Dim intdr As Integer

Dim curKa As Currency

Dim curKs As Currency

Dim curKm As Currency

Dim dblNzn As Double

Dim dblTs As Double

Dim lngb As Long

Dim dblChislitel As Double

Dim dblZnamenatel As Double

Private Sub cmdIztrii_Click()

Dim reply As Integer

reply = MsgBox("Наистина ли искате да изтриете този запис?", vbYesNo, "Потвърдете изтриването")

If reply = vbYes Then

datOGP.ReadOnly = False

datOGP.Refresh

datOGP.Recordset.Delete

datOGP.ReadOnly = True

datOGP.Refresh

datOGP.UpdateControls

End If

End Sub

Private Sub cmdNew_Click()

cmdSave.Enabled = True

cmdOtkaz.Enabled = True

cmdNew.Enabled = False

cmdIztrii.Enabled = False

datOGP.ReadOnly = False

datOGP.Refresh

datOGP.Recordset.AddNew

MsgBox " 1.  Въведете входните данни от ляво" & vbCrLf & _

" 2.  Натиснете бутона 'Изчисли ОГП'" & vbCrLf & _

" 3.  Натиснете бутона 'Запис'" & vbCrLf & _

"(4.) Или натиснете бутона 'Отказ' за да се откажете"

End Sub

Private Sub cmdSave_Click()

datOGP.Recordset.Update

datOGP.ReadOnly = True

cmdSave.Enabled = False

cmdOtkaz.Enabled = False

cmdNew.Enabled = True

cmdIztrii.Enabled = True

End Sub

Private Sub cmdOtkaz_Click()

datOGP.Refresh

datOGP.Recordset.MoveLast

datOGP.ReadOnly = True

cmdSave.Enabled = False

cmdOtkaz.Enabled = False

cmdNew.Enabled = True

cmdIztrii.Enabled = True

End Sub

Private Sub cmdCalculate_Click()

intdr = Val(txtdr.Text)

curKa = Val(txtKa.Text)

curKs = Val(txtKs.Text)

curKm = Val(txtKm.Text)

dblNzn = Val(txtNzn.Text)

dblTs = Val(txtTs.Text)

lngb = Val(txtb.Text)

dblChislitel = 2 * intdr * curKa

dblZnamenatel = dblNzn * ((curKs + 2 * curKm) * dblTs + (curKs + curKm) * 1 / lngb)

dbll = Sqr(dblChislitel / dblZnamenatel)

txtl.Text = Int(dbll)

txtr.Text = Int(dbll / lngb)

End Sub

Private Sub cmdExit_Click()

End

End Sub

Private Sub cmdNewDet_Click()

frmDetail.Show 1

End Sub

frmDetail

Private Sub cmdIzhodDet_Click()

frmMain.datDetBound.Refresh

frmMain.dbcDet.Refresh

frmDetail.Hide

End Sub

Private Sub cmdNovDet_Click()

cmdSaveDet.Enabled = True

cmdOtkazDet.Enabled = True

cmdNovDet.Enabled = False

datDetail.Recordset.AddNew

MsgBox " 1.  Въведете новият детайл" & vbCrLf & _

" 2.  Натиснете бутона 'Запис'" & vbCrLf & _

"(3.) Или натиснете бутона 'Отказ' за да се откажете"

End Sub

Private Sub cmdOtkazDet_Click()

datDetail.Recordset.MoveLast

cmdSaveDet.Enabled = False

cmdOtkazDet.Enabled = False

cmdNovDet.Enabled = True

End Sub

Private Sub cmdSaveDet_Click()

datDetail.UpdateRecord

cmdSaveDet.Enabled = False

cmdOtkazDet.Enabled = False

cmdNovDet.Enabled = True

End Sub

Инструкция за работа с програмата

При стартиране програмата автоматично зарежда първият запис от базата данни. Чрез стрелките за навигиране може да се премествате един запис напред, един запис назад, на последния или на първия запис.

За да въведете нов запис, натиснете бутона “Нов запис”, при това той става неактивен, а достъпни стават бутоните “Запис” и “Отказ”. Въведете необходимите данни от ляво и изберете детайл от списъчното поле. След това натиснете бутона “Изчисли ОГП” – програмата изчислява ОГП и ритмичността. Ако желаете да запишете това изчисление в базата натиснете бутона “Запис”, в противен случай натиснете бутона “Отказ”.

За да изтриете запис от базата, първо се позиционирайте на записа, който искате да изтриете. След това натиснете бутона “Изтрий”. Ще бъдете попитани за потвърждение на изтриването, натиснете “Yes” ако наистина искате да изтриете записа, или натиснете “No” за да се откжете.

За да въведете нов детайл в базата, натиснете бутона “Нов Детайл”. Ще се отвори нов прозорец, в който ще въведете новия детайл. Той също има лента за навигиране, може да разгледате различните детайли както и да ги коригирате. Натиснете бутона “Нов Детайл” и попълнете името му в празното текстово поле. След това натиснете бутона “Запис” за да го запишете в базата, или бутона “Отказ” за да се откажете. След като приключите натиснете бутона “Изход”. Основната форма пак става активна и новият детайл ще се появи в списъчното поле.

За изход от програмата натиснете бутона “Изход” в горния ляв ъгъл.Тестови данни, резултати

Необходими файлове

ogplog97.mdb – това е файлът с базата данни на ACCESS. (>98KB)

OGP.exe – от този файл се стартира приложението. (36KB)

Msvbvm60.dll – Runtime библиотека на Visual Basic 6.0, никое приложение написано на Visual Basic 6.0 не може да тръгне без нея (1.32MB)

Dblist32.ocx – В този файл се съдържа ActiveX компонентата за Data Bound Combo Box-a (195KB)

Общо: >1.64MB

 

 

WWW.POCHIVKA.ORG