Автоматизация учета в автотранспортном предприятии
Автоматизация учета в автотранспортном предприятии
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
Журнал
регистрации транспорта – 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);
}
|