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

Создание программы для работы организации "Городской электротранспорт". Описание операций и диаграмм взаимодействия: распределение транспорта по маршрутам, начисление заработной платы, оплата за электроэнергию. Программные классы, интерфейс приложения.

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

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

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

1. Водитель

2. Бухгалтер

3. Депо

4. Диспетчер

5. Кондуктор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Журнал регистрации транспорта – Journaltransport 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.

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


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

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


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

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


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

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

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


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

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


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

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

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


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

Заключение

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


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

1. Майкл Дж. Янг Полное руководство по VisualC++ 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);

}