Скачать

Автоматизация учета в автотранспортном предприятии

1. Изучение предметной области


1.1 Заинтересованные лица и их требования


Заинтересованные лица:

Водитель

Бухгалтер

Депо

Диспетчер

Кондуктор

Основные требования:

Безошибочный ввод данных.

Программа работает без сбоев.

Хороший и удобный интерфейс.

Быстрое и качественное обслуживание


1.2 Документ «Видение»


Заинтересованные лица:

Водитель: хочет осторожно и точно по расписанию производить маршрут.

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

Депо: хочет, в случае необходимости производить ремонт – амортизацию транспорта.

Кондуктор: хочет зафиксировать в начале каждого маршрута количество билетов, выданных диспетчером, а также подсчитать их количество в конце маршрута.

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

Место системы.

Систему можно использовать на такой государственной организации, как городской электротранспорт.

Пользователи системы.

В качестве непосредственных пользователей системы могут выступать: водитель, диспетчер, бухгалтер и кондуктор городского электротранспорта.

Задачи и свойства системы.

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

Реагировать на ошибки ввода – вывода данных.

Искать данные в системе по запросу.


1.3 График выполнения курсовой работы


Период выполнения

Выполняемый этап курсовой работы

2 неделяИзучение предметной области.
3\4 неделяВыполнение анализа системы.
5\9 неделяОкончание проектирования.
10\13 неделяНаписания программного кода.
13\14 неделяПредоставление окончательной программы.
14\15 неделяЗащита курсовой работы.

1.4 Диаграмма прецедентов и описание прецедентов


Диаграмма прецедентов

Автоматизация учета в автотранспортном предприятии


Описание прецедентов

Прецедент П1: Подсчет прибыли.

Основной исполнитель: Бухгалтер.

Заинтересованные лица и их требования:

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

Бухгалтер: Хочет подсчитать полученную прибыль от продажи билетов и распределить ее на оплату налогов и зарплаты.

Предусловия: Бухгалтер должен быть идентифицирован и аутентифицирован.

Постусловия: Прибыль посчитана, и данные о подсчете занесены в систему.

Основной, успешный сценарий:

1).В начале рабочего дня бухгалтер фиксирует в «журнале учета»: дату, количество выдающихся билетов, в соответствии с маршрутом; выдает билеты диспетчеру, который передает кондуктору.

2).В конце рабочего дня кондуктор возвращает диспетчеру оставшееся количество билетов и сумму от проданных. Диспетчер передает их бухгалтеру, который заносит всю необходимую информацию (дата, №маршрута, количество оставшихся билетов, количество выданных билетов, сумма) в «журнал учета».

3).Бухгалтер учитывает образовавшуюся прибыль и высчитывает денежные финансы на оплату налогов и заработной платы. А также, фиксирует количество денежных финансов на налоги в «журнале налогов», а заработную плату в «журнале ЗП».

Альтернативный сценарий 1:

2.а). В конце рабочего дня кондуктор возвращает диспетчеру всё оставшееся количество билетов, но не всю сумму денег за проданные билеты.

1. Диспетчер передает все бухгалтеру. Бухгалтер заносит всю необходимую информацию в систему.

2. Система при подсчете обнаруживает ошибку недостачи, а также количество штрафа.

3. Бухгалтер вызывает кондуктора и информирует его о недостаче. Кондуктор платит необходимую сумму штрафа, по ранее определенной сумме. Бухгалтер заносит заплаченную сумму штрафа в «журнал штрафов».

4. Бухгалтер заносит в систему уже новые данные. Переход к п. 1).

Прецедент П2: Распределение транспорта по маршрутам.

Основной исполнитель: Диспетчер.

Заинтересованные лица и их требования:

Диспетчер: Хочет точно и правильно создать путевые листы для каждого маршрута. Хочет правильно распределить транспорт по маршрутам, в соответствии с количеством пассажиров на маршрутах, а также не допустить пересечение или столкновение транспортов. Провести регистрацию в соответственном журнале.

Водитель: Хочет иметь в наличии маршрут своего транспорта, путевой лист, расписание остановок, точное время передвижения и остановок.

Предусловия: Диспетчер должен быть идентифицирован и аутентифицирован.

Постусловия: Транспорт распределен по маршрутам.

Основной, успешный сценарий.

1).Диспетчер создает путевые листы в системе для всех необходимых маршрутов, в зависимости от количества мест, приходящихся на каждый транспорт, и количеством пассажиров на маршрутах. Все путевые листы хранятся в «журнале П_лист’.

2).В начале рабочего дня диспетчер выдает каждому водителю его путевой лист. Диспетчер отправляет транспорт по маршруту. Регистрирует начало каждого маршрута в «журнале регистрации отправки и прибытия транспортов».

3).Диспетчер принимает транспорт, проверяет его, и не найдя повреждений отпускает водителя, регистрирует в «регистрации отправки и прибытия транспортов», а также сообщает системе о завершении определенного маршрута.

Альтернативный сценарий 1:

3.а) В конце рабочего дня транспорт не возвращается в Депо

1. Диспетчер фиксирует в системе отсутствие транспорта. Информирует необходимых лиц. Производятся поиски транспорта.

2. При прибытии с маршрута транспорта переход к п. 3).

Альтернативный сценарий 2:

3.б) Принимая и осматривая транспорт в конце рабочего дня, диспетчер находит незначительные повреждения.

1. Диспетчер сообщает о повреждениях водителю, в Депо, в систему в «журнал повреждений».

2. Транспорт снимают с линии маршрута, заменяя его другим и фиксируя смену в системе.

3. Депо вызывает мастера по ремонтным работам, регистрируя в системе оплату работнику за ремонт.

4. После ремонта транспорт возвращают на линию маршрута. Переход к п. 3).

Прецедент П3: Расчет с работниками.

Основной исполнитель: Бухгалтер.

Заинтересованные лица и их требования:

Бухгалтер. Хочет точно и быстро выделить средства для оплаты услуг работников.

Руководство. Хочет аккуратно и точно записать и хранить информацию о выделенных средствах в систему.

Предусловия: Бухгалтер идентифицирован и аутентифицирован (имеет доступ к определенным ресурсам). Программа загружена.

Постусловия: Расчет с работниками. Занесение и сохранение соответствующей информации в журналах системы.

Основной, успешный сценарий

1).В систему бухгалтером заноситься количество выданных билетов и количество оставшихся, за весь месяц.

2).Система считает прибыль от всех проданных билетов. Бухгалтер отсчитывает некоторую часть прибыли на оплату налогов, заносит в «журнал налогов».

3).Система вычисляет заработную плату работникам в соответствии с установленным коэффициентом k, который (от всей суммы прибыли) составляет:

– для водителя = 0,3

– для кондуктора = 0,15

– для диспетчера = 0,15

– для бухгалтера =0,2

5).Система выводит конечные данные по оплате и сохраняет их. Бухгалтер расплачивается с работниками, фиксируя все расчеты в «журнале ЗП».

Альтернативный сценарий 1:

1.а). В систему бухгалтер заносит не всю информацию.

1. Бухгалтер заносит только количество выданных билетов.

2. Система выдает сообщение: «НЕДОСТАТОЧНО ДАННЫХ ДЛЯ РАСЧЕТА!!!»

3. Бухгалтер вводит уже всю информацию заново. Переход к п. 1.

Прецедент П4: Расчет с поставщиком электроэнергии.

Основной исполнитель: Бухгалтер.

Заинтересованные лица и их требования:

Бухгалтер. Хочет точно и быстро выделить средства для оплаты услуг энергопоставщика.

Руководство. Хочет аккуратно и точно записать в систему, и хранить информацию о выделенных энергопоставщику средствах.

Предусловия: Бухгалтер идентифицирован и аутентифицирован (имеет доступ к определенным ресурсам). Программа загружена.

Постусловия: Произведен расчет за электроэнергию. Занесение и сохранение соответствующей информации в базе данных системы.

Основной, успешный сценарий:

1).Бухгалтер заносит все необходимые данные (количество маршрутов, пройденные ими расстояния) в систему.

2).Система в конце каждого дня производит подсчет затраченной электроэнергии на каждый маршрут, соответственно учитывая расстояния маршрутов. Бухгалтер сохраняет в системе все данные в конце каждого дня.

3).В конце каждой недели бухгалтер суммирует окончательный результат за оплату электроэнергии. Бухгалтер сохраняет в системе все данные в конце каждой недели.

4).Бухгалтер представляет полученный отчет поставщику электроэнергии. Поставщик сверяет со своими расчетами, и при совпадении принимает оплату. Бухгалтер фиксирует в системе все проведенные расчеты и уплаты в «журнале оплаты за электричество».

Альтернативный сценарий 1:

4).Не совпадение расчетов бухгалтера и поставщика.

1. Бухгалтер заново вносит свои данные в систему. Система выдает новые данные об оплате.

2. Бухгалтер представляет новый полученный отчет поставщику электроэнергии. Переход к п4).


1.5 Составление концептуальных классов


Список категорий концептуальных классов

Категории концептуальных классов

Пример

Физические или материальные объектыТрамвай, троллейбус
Спецификации, элементы проектных решений или описание объектовОписание регистрации
МестаОстановки, Депо
ТранзакцииРегистрация
Роль людейВодитель, кондуктор, диспетчер, бухгалтер
Контейнеры других объектовТрамвай, троллейбус
Содержимое контейнеровПассажиры, кондуктор
ОрганизацииСлужба авторизации платежей, налоговая служба, амортизационная служба.
СобытияПродажа билета, создание путевого листа.
Правила и политикаПравило возврата путевого листа
Записи различных деятелейРазличного вида журналы

Описание концептуальных классов.

Бухгалтер – Accountant

Пассажир – Passenger

Водитель – Driver

Диспетчер – Dispatch

Кондуктор – Conductor

Депо – Depo

Служба авторизации платежей – Service payment

Амортизационный фонд – Repair fund

Билет – Ticket

Налог – Tax

Прибыль – Profit

Заработная плата – Salary

Трамвай – Tram

Троллейбус – Trolley-bus

Путевой лист – Plist

Продажа – Sale

Оплата – Payment

Маршрут – Itinerary

Расписание – Time_table

Налоговая служба – Tax_Service

Энергопоставщик – ElSupplier

Журнал регистрации транспорта – Journal transport register

Журнал путевых листов – Journal_Plist

Журнал учета – Journal_Ychet

Журнал ЗП (Заработной платы) – Journal_ZP

Журнал налогов – Journal_Tax

Журнал оплаты за электроэнергию – Journal_Elect

Журнал штрафов – Journal_sh

Журнал повреждений – Journal_break

Ассоциации классов

Категория

Пример

А является физической частью ВТроллейбус =вагон
А физически содержится в ВМаршрут =остановка
А логически содержится в ВОстановка =расписание остановок
А получает ВПассажир =билет
А начисляет ВБухгалтер =зарплата
А использует ВВодитель = расписание
А выдает ВДиспетчер =путевой лист
А получает ВВодитель =путевой лист
А принимает ВКондуктор =оплату

Диаграмма концептуальных классов

Автоматизация учета в автотранспортном предприятии

Атрибуты классов

Itinerary

nameIt-ry: text

Col. Stop: int

nameStop: text

time between Stop: double

timeA: double

timeB: double

Salary

Summa: double

Col sale ticket: double

Bonus: double

Tax: double

Procent: double

Holiday: double


PList

NumberT-t: int

Itinerary: text

timeA: double

timeB: double

surnameDriver: text

year: double

month: double

Accountant

name: FIO

addres: text

tel: PhoneNumber

Transport_Register

Surname_Dispatch: text

NumberIt-ry: double

Number_Tr-t: double

timeA: double

TimeB: double



Transport

Tip: text

Number: int

Ser_number: int


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


2.1 Описание операций и диаграмм взаимодействия


Прецедент:Распределение транспорта по маршрутам.

Описание операции ОП 1:


ОперацияTransport_Itinerary
СсылкиРаспределение транспорта по маршрутам и занесение данных в журнал регистрации
ПредусловияБухгалтер идентифицирован и аутентифицирован.
ПостусловияТранспорт распределен. Данные занесены в журнал.

Автоматизация учета в автотранспортном предприятии


Прецедент:Начисление заработной платы.


Описание операции ОП 2:

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

Автоматизация учета в автотранспортном предприятии


Описание операции ОП 3:

ОперацияPay_Salary
СсылкиВыделение средств оплаты услуг работникам
ПредусловияБухгалтер идентифицирован и аутентифицирован.
ПостусловияСредства выделены, данные записаны в журнале системы.

Автоматизация учета в автотранспортном предприятии


Прецедент:Оплата за электроэнергию.


Описание операции ОП 4:

ОперацияPay_Supplier
СсылкиВыделение средств оплаты услуг поставщика энергии.
ПредусловияБухгалтер идентифицирован и аутентифицирован
ПостусловияСредства выделены, данные записаны в журнале системы

Автоматизация учета в автотранспортном предприятии


2.2 Программные классы


Journal_Plist

FIO_driver: String

FIO_cond: String

№marsh: Byte

data: Byte

№Plist: Byte

Plist (№marsh, data, №Plist, FIO_driver, FIO_cond)

Journal_Ychet

data: Byte

colvo_t №1: Byte

colvo_t №2: Byte

№marsh: Byte

sum: Byte

Beginwork_day (data, colvo_t №1, №marsh)

Endwork_day (data, colvo_t №1, colvo_t №2, sum, №marsh)


Journal_ZP

pribul: Byte

sumZP: Byte

zp: Byte

zp_account: Byte

zp_driv: Byte

zp_disp: Byte

zp_cond: Byte

Podschet_ZP (pribul, sumZP)

Pay_ZP (zp, zp_account, zp_driv, zp_disp, zp_cond)


Journal_transport register

data: Byte

№marsh: Byte

timeA: Byte

timeB: Byte

Begin_marsh (data, №marsh, timeA)

End_marsh (data, №marsh, timeB)


Journal_sh

№marsh: Byte

sum_sh: Byte

data: Byte

FIO: String

Shtraff (sum_sh, data, FIO, №marsh)

Journal_Tax

pribul: Byte

sumTax: Byte

data: Byte

Podschet_Tax (pribul, sumTax)

Pay_ZP (sumTax, data)


Journal_break

№marsh: Byte

data: Byte

Polomka (data, №marsh)

Journal_Elect

data: Byte

sum_el: Byte

El_oplata (data, sum_el)

System

FIO_driver: String

FIO_cond: String

№marsh: Byte

data: Byte

№Plist: Byte

colvo_t №1: Byte

colvo_t №2: Byte

sum: Byte

pribul: Byte

sumZP: Byte

zp: Byte

zp_account: Byte

zp_driv: Byte

zp_disp: Byte

zp_cond: Byte

data: Byte

timeA: Byte

timeB: Byte

sum_sh: Byte

FIO: String

pribul: Byte

sumTax: Byte

sum_el: Byte

time_now: Byte

№marsh_old: Byte

№marsh_new: Byte

sum_pay: Byte

all_prible: Byte

Plist (№marsh, data, №Plist, FIO_driver, FIO_cond), Beginwork_day (data, colvo_t №1, №marsh), Endwork_day (data, colvo_t №1, colvo_t №2, sum, №marsh),

Podschet_ZP (pribul, sumZP), Pay_ZP (zp, zp_account, zp_driv, zp_disp, zp_cond),

Begin_marsh (data, №marsh, timeA), End_marsh (data, №marsh, timeB), Shtraff (sum_sh, data, FIO, №marsh), Podschet_Tax (pribul, sumTax), Pay_ZP (sumTax, data), Polomka (data, №marsh), El_oplata (data, sum_el), Otsyts_tr (FIO_driver, FIO_cond, data, time_now, №marsh), Zamena (№marsh_old, №marsh_new), Pay_break (sum_pay, data), Salary (all_prible, data)


3. Описание интерфейса приложения


При входе в систему, она запрашивает пароль. Без него пользователь не сможет иметь доступ к системе.


Автоматизация учета в автотранспортном предприятии


Далее, пользователь может выбирать необходимое действие, нажав в открывшемся окне – File -> Action.


Автоматизация учета в автотранспортном предприятии


В результате, получив список, необходимых действий.


Автоматизация учета в автотранспортном предприятии


Для начала выбираем создание путевого листа (Path List). В необходимых колонках вводим соответствующие данные. После создания обязательно сохраняем в созданном и указанном журнале.


Автоматизация учета в автотранспортном предприятии


Сделаем проверку журнала, в котором должен был сохраниться наш 1-й путевой лист.


Автоматизация учета в автотранспортном предприятии


Далее выбираем учет билетов (Uchet). Здесь аналогично вводим необходимые данные. Также сохраняем в журнале.


Автоматизация учета в автотранспортном предприятии


Проверяем журнал.


Автоматизация учета в автотранспортном предприятии


Далее выбираем операции с заработной платой и налогом. Введя необходимые данные, сохраняем в журнале.


Автоматизация учета в автотранспортном предприятии


Проверяем выданное и оставшееся количество билетов.


Автоматизация учета в автотранспортном предприятии


Начисляем заработную плату.


Автоматизация учета в автотранспортном предприятии


Проверяем начисление зарплаты.


Автоматизация учета в автотранспортном предприятии


Выбрав пункт Поломка (Polomka), мы видим следующее окно, в котором вводим необходимые данные.


Автоматизация учета в автотранспортном предприятии

Проверяем в журнале.


Автоматизация учета в автотранспортном предприятии


Если необходимо произвести отчет, то нажав на главной панели кнопочку Browse, мы видим следующее окно.


Автоматизация учета в автотранспортном предприятии


В котором выбрав необходимый нам журнал или файл, видим его в окне на главной панели.


Автоматизация учета в автотранспортном предприятии


И дополнительная информация об авторе этого замечательного проекта может быть найдена по адресу – About -> Show.


Автоматизация учета в автотранспортном предприятии


Заключение


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


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


1. Майкл Дж. Янг Полное руководство по Visual C++ 6. Издательский дом «Ирина», BHV, Киев, 2000 г.-1048 с.

2. Дейтел Х.М., Дейтел П.Дж. Как программировать на С++ (Третье издание). Под издательством ЗАО «Бином», Москва, 2003 г.-1150 с.

3. Крэг Лерман. Применение UML и шаблонов проектирования. М. Издательский дом «Вильямс». 2002.-624 с.

4. Гради Буч. Объектно-ориентированный анализ и проектирование. Бином, СПБ, 2000. -560 с.

5. Орлов С.А. Технология разработки программного обеспечения. СПБ.: Питер, 2002. -464 с.


Приложение


Листинги программных модулей

Add class

#include «add1.h»

#include «path.h»

#include «uch.h»

#include «bre.h»

#include «elec.h»

void add: OnChoose()

{

UpdateData(TRUE);

if (m_radio==0) {

path dlg;

dlg. DoModal();

}

if (m_radio==1) {

uch dlg;

dlg. DoModal();

}

if (m_radio==2) {

add1 dlg;

dlg. DoModal();

}

if (m_radio==3) {

elec dlg;

dlg. DoModal();

}

if (m_radio==4) {

bre dlg;

dlg. DoModal();

}

}


Add1 class

 // add1.cpp: implementation file

 //


#include «stdafx.h»

#include «MasKurs.h»

#include «add1.h»


#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE() = __FILE__;

#endif

 /////////////////////////////////////////////////////////////////////////////

 // add1 dialog


add1:add1 (CWnd* pParent /*=NULL*/)

: CDialog (add1:IDD, pParent)

{

 // {{AFX_DATA_INIT(add1)

m_date = _T(«»);

m_numberofout = _T(«»);

m_numberofleft = _T(«»);

m_number = _T(«»);

m_profit = 0;

m_zarplata = 0;

m_zarpl = _T(«»);

m_nalog1 = _T(«»);

m_profit1 = 0;

m_nalog = 0;

m_shtraf = _T(«»);

 // }} AFX_DATA_INIT

}


void add1: DoDataExchange (CDataExchange* pDX)

{

CDialog: DoDataExchange(pDX);

 // {{AFX_DATA_MAP(add1)

DDX_Control (pDX, IDC_COMBO1, m_combo1);

DDX_Text (pDX, IDC_EDIT1, m_date);

DDX_Text (pDX, IDC_EDIT2, m_numberofout);

DDX_Text (pDX, IDC_EDIT3, m_numberofleft);

DDX_Text (pDX, IDC_EDIT11, m_number);

DDX_Text (pDX, IDC_EDIT4, m_profit);

DDX_Text (pDX, IDC_EDIT5, m_zarplata);

DDX_Text (pDX, IDC_EDIT8, m_zarpl);

DDX_Text (pDX, IDC_EDIT9, m_nalog1);

DDX_Text (pDX, IDC_EDIT6, m_profit1);

DDX_Text (pDX, IDC_EDIT7, m_nalog);

DDX_Text (pDX, IDC_EDIT10, m_shtraf);

 // }} AFX_DATA_MAP

}


BEGIN_MESSAGE_MAP (add1, CDialog)

 // {{AFX_MSG_MAP(add1)

ON_WM_SHOWWINDOW()

ON_BN_CLICKED (IDC_BUTTON5, OnSaveToUchetZarplataNalogi)

ON_BN_CLICKED (IDC_BUTTON1, OnCount1)

ON_BN_CLICKED (IDC_BUTTON2, OnSaveToZarp)

ON_BN_CLICKED (IDC_BUTTON3, OnCount2)

ON_BN_CLICKED (IDC_BUTTON4, OnSaveToNalog)

ON_BN_CLICKED (IDC_BUTTON6, OnSaveToshtraf)

 // }} AFX_MSG_MAP

END_MESSAGE_MAP()


 /////////////////////////////////////////////////////////////////////////////

 // add1 message handlers

CString str0;

void add1: OnShowWindow (BOOL bShow, UINT nStatus)

{

CDialog: OnShowWindow (bShow, nStatus);


UpdateData(TRUE);

 // CStdioFile fOpen («d:\\MasKurs\\driver.txt», CFile:modeRead);

CStdioFile fOpen1 («d:\\MasKurs\\konductor.txt», CFile:modeRead);

CString str;

 // CString str1;

 // while (fOpen. ReadString(str)!=0) {

 // m_combo. AddString(str);

 // }

while (fOpen1. ReadString(str0)!=0) {

m_combo1. AddString(str0);

}


}


void add1: OnSaveToUchetZarplataNalogi()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\uchetzarplatnalogi.txt», CFile:modeWrite);

CString str;


 // int index=m_combo. GetCurSel();

int index1=m_combo1. GetCurSel();


 // m_combo. GetLBText (index, str1);

m_combo1. GetLBText (index1, str0);

if (m_date==»» || m_number==»» || m_numberofout==»» || m_numberofleft==»» || str0==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

 // fOpen. WriteString («FIO driver «+str1+»\n»);

fOpen. WriteString («FIO konductor «+str0+»\n»);

fOpen. WriteString («Date «+m_date+»\n»);

fOpen. WriteString («Number of vudanih «+m_numberofout+»\n»);

fOpen. WriteString («Number of ostavshihsa «+m_numberofleft+»\n»);

fOpen. WriteString («Number «+m_number+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to uchetzarplatnalogi.txt», MB_OK);

}


void add1: OnCount1 ()

{

UpdateData(TRUE);

int result=m_profit*m_zarplata/100;

CString str;

str. Format («%d», result);

GetDlgItem (IDC_EDIT8)->SetWindowText(str);

 // UpdateData(FALSE);


}


void add1: OnSaveToZarp()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\zarplata.txt», CFile:modeWrite);

CString str;


 // int index=m_combo. GetCurSel();

int index1=m_combo1. GetCurSel();

 // m_combo. GetLBText (index, str1);

m_combo1. GetLBText (index1, str0);

if (m_profit==0 || m_zarplata==0 || str0==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

 // fOpen. WriteString («FIO driver «+str1+»\n»);

fOpen. WriteString («FIO konductor «+str0+»\n»);

fOpen. WriteString («Zarplata «+m_zarpl+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to zarplata.txt», MB_OK);

}


void add1: OnCount2 ()

{


UpdateData(TRUE);

int result=m_profit1*m_nalog/100;

CString str;

str. Format («%d», result);

 // GetDlgItem (IDC_EDIT9)->SetWindowText(str);

m_nalog1=str;

UpdateData(FALSE);


}


void add1: OnSaveToNalog()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\nalog.txt», CFile:modeWrite);

CString str;


 // int index=m_combo. GetCurSel();

 // int index1=m_combo1. GetCurSel();


 // m_combo. GetLBText (index, str1);

 // m_combo1. GetLBText (index1, str0);

if (m_profit1==0 || m_nalog==0) {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

str. Format («%d», m_profit1);

 // fOpen. WriteString («FIO driver «+str1+»\n»);

fOpen. WriteString («Profit «+str+»\n»);

fOpen. WriteString («Nalog «+m_nalog1+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to nalog.txt», MB_OK);


}


void add1: OnSaveToshtraf()

{

UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\shtraf.txt», CFile:modeWrite);

CString str;


 // int index=m_combo. GetCurSel();

int index1=m_combo1. GetCurSel();


 // m_combo. GetLBText (index, str1);

m_combo1. GetLBText (index1, str0);

if (m_shtraf==»» || str0==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

 // fOpen. WriteString («FIO driver «+str1+»\n»);

fOpen. WriteString («FIO konductor «+str0+»\n»);

fOpen. WriteString («Shtraf «+m_shtraf+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to shtraf.txt», MB_OK);


}


Bre class

void bre: OnSaveToBreak()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\bre.txt», CFile:modeWrite);

CString str;

if (m_date==»» || m_number==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

fOpen. WriteString («Date «+m_date+»\n»);

fOpen. WriteString («Number «+m_number+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to bre.txt», MB_OK);

}


void bre: OnSaveToZamena()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\zamena.txt», CFile:modeWrite);

CString str;

if (m_date1==»» || m_number1==»» || m_number2==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

fOpen. WriteString («Number marsh old «+m_number1+»\n»);

fOpen. WriteString («Number marsh new «+m_number2+»\n»);

fOpen. WriteString («Date «+m_date1+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to zamena.txt», MB_OK);

}


void bre: OnSaveToPay()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\pay.txt», CFile:modeWrite);

CString str;

if (m_date2==»» || m_sum==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

fOpen. WriteString («Sum «+m_sum+»\n»);

fOpen. WriteString («Date «+m_date2+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to pay.txt», MB_OK);

}


Elec class

void elec: OnSaveToElectro()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\elec.txt», CFile:modeWrite);

CString str;


 // m_combo. GetLBText (index, str1);

 // m_combo1. GetLBText (index1, str0);

if (m_ammount==»» || m_sum==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}

fOpen. SeekToEnd();

 // fOpen. WriteString («FIO driver «+str1+»\n»);

fOpen. WriteString («Ammount «+m_ammount+»\n»);

fOpen. WriteString («Number «+m_sum+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to elec.txt», MB_OK);

}

MasKursDlg class

 // MasKursDlg.cpp: implementation file

 //


#include «stdafx.h»

#include «MasKurs.h»

#include «MasKursDlg.h»


#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE() = __FILE__;

#endif


 /////////////////////////////////////////////////////////////////////////////

 // CAboutDlg dialog used for App About


class CAboutDlg: public CDialog

{

public:

CAboutDlg();


 // Dialog Data

 // {{AFX_DATA(CAboutDlg)

enum {IDD = IDD_ABOUTBOX};

 // }} AFX_DATA


 // ClassWizard generated virtual function overrides

 // {{AFX_VIRTUAL(CAboutDlg)

protected:

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

 // }} AFX_VIRTUAL


 // Implementation

protected:

 // {{AFX_MSG(CAboutDlg)

 // }} AFX_MSG

DECLARE_MESSAGE_MAP()

};


CAboutDlg:CAboutDlg(): CDialog (CAboutDlg:IDD)

{

 // {{AFX_DATA_INIT(CAboutDlg)

 // }} AFX_DATA_INIT

}


void CAboutDlg: DoDataExchange (CDataExchange* pDX)

{

CDialog: DoDataExchange(pDX);

 // {{AFX_DATA_MAP(CAboutDlg)

 // }} AFX_DATA_MAP

}


BEGIN_MESSAGE_MAP (CAboutDlg, CDialog)

 // {{AFX_MSG_MAP(CAboutDlg)

 // No message handlers

 // }} AFX_MSG_MAP

END_MESSAGE_MAP()


 /////////////////////////////////////////////////////////////////////////////

 // CMasKursDlg dialog


CMasKursDlg:CMasKursDlg (CWnd* pParent /*=NULL*/)

: CDialog (CMasKursDlg:IDD, pParent)

{

 // {{AFX_DATA_INIT(CMasKursDlg)

 // NOTE: the ClassWizard will add member initialization here

 // }} AFX_DATA_INIT

 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon (IDR_MAINFRAME);

}


void CMasKursDlg: DoDataExchange (CDataExchange* pDX)

{

CDialog: DoDataExchange(pDX);

 // {{AFX_DATA_MAP(CMasKursDlg)

DDX_Control (pDX, IDC_LIST1, m_list);

 // }} AFX_DATA_MAP

}


BEGIN_MESSAGE_MAP (CMasKursDlg, CDialog)

 // {{AFX_MSG_MAP(CMasKursDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_COMMAND (ID_FILE_ACTION, OnFileAction)

ON_BN_CLICKED (IDC_BUTTON3, OnBrowse)

ON_BN_CLICKED (IDC_BUTTON1, OnButton1)

ON_BN_CLICKED (IDC_BUTTON2, OnButton2)

ON_COMMAND (ID_FILE_EXIT, OnFileExit)

ON_COMMAND (ID_ABOUT_SHOW, OnAboutShow)

 // }} AFX_MSG_MAP

END_MESSAGE_MAP()


 /////////////////////////////////////////////////////////////////////////////

 // CMasKursDlg message handlers

#include «login.h»

BOOL CMasKursDlg: OnInitDialog()

{

CDialog: OnInitDialog();


 // Add «About…» menu item to system menu.


 // IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT (IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu!= NULL)

{

CString strAboutMenu;

strAboutMenu. LoadString (IDS_ABOUTBOX);

if (! strAboutMenu. IsEmpty())

{

pSysMenu->AppendMenu (MF_SEPARATOR);

pSysMenu->AppendMenu (MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

login dlg;

dlg.m_login= «buhgalter»;

if (dlg. DoModal()==IDOK) {

if (dlg.m_pass== «111» && dlg.m_login== «buhgalter») {

return TRUE;

}

else {

MessageBox («Incorrect!!!»);

EndDialog(0);

}

}

 // Set the icon for this dialog. The framework does this automatically

 // when the application's main window is not a dialog

SetIcon (m_hIcon, TRUE); // Set big icon

SetIcon (m_hIcon, FALSE); // Set small icon


 // TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}


void CMasKursDlg: OnSysCommand (UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout. DoModal();

}

else

{

CDialog: OnSysCommand (nID, lParam);

}

}


 // If you add a minimize button to your dialog, you will need the code below

 // to draw the icon. For MFC applications using the document/view model,

 // this is automatically done for you by the framework.


void CMasKursDlg: OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting


SendMessage (WM_ICONERASEBKGND, (WPARAM) dc. GetSafeHdc(), 0);


 // Center icon in client rectangle

int cxIcon = GetSystemMetrics (SM_CXICON);

int cyIcon = GetSystemMetrics (SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect. Width() – cxIcon + 1) / 2;

int y = (rect. Height() – cyIcon + 1) / 2;


 // Draw the icon

dc. DrawIcon (x, y, m_hIcon);

}

else

{

CDialog: OnPaint();

}

}


 // The system calls this to obtain the cursor to display while the user drags

 // the minimized window.

HCURSOR CMasKursDlg: OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

#include «add.h»

void CMasKursDlg: OnFileAction()

{


add dlg;

dlg. DoModal();

}

void CMasKursDlg: OnBrowse()

{

CString str;

CString str1;

CFileDialog OpenFileDialog (true, «txt», NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, «Text files (*.txt)|*.txt||»);

if (OpenFileDialog. DoModal()==IDOK) {

str=OpenFileDialog. GetPathName();

GetDlgItem (IDC_EDIT1)->SetWindowText(str);

CStdioFile fOpen (str, CFile:modeRead);

while (fOpen. ReadString(str)!=0) {

m_list. AddString(str);

}

}

}


void CMasKursDlg: OnButton1 ()

{


add dlg;

dlg. DoModal();


}


void CMasKursDlg: OnButton2 ()

{


EndDialog(0);

}

void CMasKursDlg: OnFileExit()

{


EndDialog(0);

}


void CMasKursDlg: OnAboutShow()

{


CAboutDlg dlg;

dlg. DoModal();

}


Path class

void path: OnShowWindow (BOOL bShow, UINT nStatus)

{

CDialog: OnShowWindow (bShow, nStatus);


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\driver.txt», CFile:modeRead);

CStdioFile fOpen1 («d:\\MasKurs\\konductor.txt», CFile:modeRead);

CString str;

CString str1;

while (fOpen. ReadString(str)!=0) {

m_combo. AddString(str);

}

while (fOpen1. ReadString(str1)!=0) {

m_combo1. AddString(str1);

}

 // fOpen. SeekToEnd();

 // fOpen. WriteString (m_date+»\n»);

 // fOpen. WriteString (m_number+»\n»);

 // fOpen. WriteString (m_marsh+»\n»);

 // fOpen. WriteString («*****"+»\n»);


}

CString str1;

CString str2;

void path: OnSaveToPath()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\path.txt», CFile:modeWrite);

CString str;


int index=m_combo. GetCurSel();

int index1=m_combo1. GetCurSel();

if (m_date==»» || m_number==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}


m_combo. GetLBText (index, str1);

m_combo1. GetLBText (index1, str2);

fOpen. SeekToEnd();

fOpen. WriteString («FIO driver «+str1+»\n»);

fOpen. WriteString («FIO konductor «+str2+»\n»);

fOpen. WriteString («Date «+m_date+»\n»);

fOpen. WriteString («Number «+m_number+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to path.txt», MB_OK);


}


void path: OnBeginMarshrute()

{


UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\marshrutebegin.txt», CFile:modeWrite);

CString str;

if (m_date1==»» || m_number1==»» || m_time==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}


fOpen. SeekToEnd();

fOpen. WriteString («Date «+m_date1+»\n»);

fOpen. WriteString («Number «+m_number1+»\n»);

fOpen. WriteString («Time «+m_time+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to marshrutebegin.txt», MB_OK);

}


void path: OnSaveToMarshruteOkonchanie()

{

UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\marshruteokonchanie.txt», CFile:modeWrite);

CString str;

if (m_date2=»» || m_number2==»» || m_time1==»») {

MessageBox («Please fill all fields», «Info», MB_OK);

return;

}


fOpen. SeekToEnd();

fOpen. WriteString («Date «+m_date2+»\n»);

fOpen. WriteString («Number «+m_number2+»\n»);

fOpen. WriteString («Time «+m_time1+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to marshruteokonchanie.txt», MB_OK);


}

Uch class

void uch: OnSaveToUchet()

{

UpdateData(TRUE);

CStdioFile fOpen («d:\\MasKurs\\uchet.txt», CFile:modeWrite);

CString str;


fOpen. SeekToEnd();

fOpen. WriteString («Date «+m_date+»\n»);

fOpen. WriteString («Number of tickets «+m_number+»\n»);

fOpen. WriteString («Nomer «+m_marsh+»\n»);

fOpen. WriteString («*****\n»);

MessageBox («Saved to uchet.txt», MB_OK);


}