Система автоматизації функцій секретаря

Автор работы: Пользователь скрыл имя, 26 Марта 2014 в 17:00, курсовая работа

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

Завдання курсового проекту: деяка фірма включає K різних відділів (5 ≤ K ≤ 9), для узгодження роботи яких використовується щотижневий спільний календар. У цьому календарі представлені різноманітні заходи та події: щоденні планерки співробітників кожного відділу, щотижневі наради керівників відділів, відрядження співробітників відділів та керівництва, періодичні тематичні семінари, в яких можуть брати участь співробітники різних розділів і т.п. У кожного календарного події є дата, час початку і кінця (або його тривалість), місце проведення, учасники, ступінь важливості та інші характеристики. Внутрішні заходи фірми можуть проходити або в приміщеннях відділів, або в конференц -залі фірми.

Содержание

ЗМІСТ
ЛИСТ МЕТИ ТА ЗАВДАННЯ …………………………………………….....3
РЕФЕРАТ………………………………………………………………………4
ВСТУП…………………………………………………………………………5
РОЗДІЛ І. ОСОБЛИВОСТІ ФУНКЦІЙ СЕКРЕТАРЯ ………..…………….6
Функції секретаря ………………………………………………….6
РОЗДІЛ II. ОСОБЛИВОСТІ ОБ’ЄКТНО ОРІЄНТОВНОГО ПРОГРАМУВАННЯ НА С++ ……………………………………………………..8
2.1 Теоретичні відомості ………………………………………………8
РОЗДІЛ III. ПОСТАНОВКА ЗАДАЧІ ДЛЯ РОЗРОБКИ ПОГРАМИ ….....17
Постановка задачі ………………………………………………….17
РОЗДІЛ ІV. ПРОГРАМНА РЕАЛІЗАЦІЯ АЛГОРИТМУ ФУНКЦІЙ СЕКРЕТАРЯ ……………………………………………………………………….19
4.1 Схема алгоритму програми, та його аналіз …………………….19
ВИСНОВКИ ТА ПРОПОЗИЦІЇ .…………………………………………….28
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ ……………………………….29

Вложенные файлы: 1 файл

Міністерство.doc

— 420.50 Кб (Скачать файл)

Підготовка наради

Даний пункт реалізується наступним чином: спочатку вводиться час проведення наради, потім звіряється цей час із журналом, якщо актовий зал вільний, тоді вводяться ім’я учасників наради. При введені ім’я учасників наради провіряється чи не введене ім’я двічі, а також чи не є даний працівник у відряжденні.

Вивести операції

Виводить перелік всіх пунктів меню.

Вихід

Виходить із програми в наслідок переривання циклу.

 

Вивести журнали на екран

За дану операцію відповідає вищезгадана функція screan() (Табл. 4. 7).

Пошук події за днем

За дану операцію відповідає вищезгадана функція pushuk() (Табл. 4. 9).

Видалення всіх подій з пам'яті

Дана функція видаляє перший запис із кожного масиву, таким чином всі функції будуть бачити порожній масив, лічильникам записів присвоює нуль та очищає файл із записаними журналами.

Після закінчення роботи кожного з меню пункту (за винятком «Вихід») програма сортує та записує в файл журнали, виводить на екран список пунктів меню.

 

 

 

 

 

 

 

 

 

ВИСНОВКИ ТА ПРОПОЗИЦІЇ

 

В результаті виконаної роботи було розроблено програмне забезпечення, що моделює систему автоматизації окремих функцій секретаря фірми - формування та підтримку календаря фірми і контроль позначених у ньому подій. Серед основних функцій системи передбачено уточнення (актуалізація) календаря, видачу за запитом користувача всієї інформації про календарні події, включаючи зручний перегляд подій, запланованих на певний день або період дня.

При розробці програми було використано такі базові принципи об’єктно-орієнтовані принципи створення програмних продуктів як клас, об’єкти, успадкування класів, робота із файловими потоками тощо.

Проведена декомпозиція із  детальним аналізом функціонування окремих блоків модельованої системи. Встановлені відповідні взаємозв’язки, інформаційні потоки.

Розроблений програмний комплекс

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

Виконана програма може бути використана у навчальному процесі при вивченні курсів «Технологія комп’ютерного проектування», «Моделювання систем» у задачах повноцінного аналізу функціонування різноманітного виду систем та технологія створення програмних продуктів у аспектах конвертації програмного коду із C++ у С# із подальшою розробкою повноцінної бази даних.

 

СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ

    1. Архангельський А.Я. Программирование в C++ Builder 6. – М.: Издательство Бином – 2003  – 1152 с.
    2. Глинський Я. М., Анохін В. Є., Ряжська В. А. C++ i C++ Builder. – Львів: Деол. – 2003 – 192с. 
    3. Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование: Учеб. для вузов/ За ред. Г.С. Ивановой. — М.: Изд-во МГТУ им. Н.Э.Баумана, 2001. — 320 с.
    4. Кравець О. П. Об’єктно орієнтоване програмування: підручник – Львів: Видавництво Львівської Політехніки –2012 – 624 с.
    5. Шилдт Г. Базовий курс С++ – М.:ООО «І Д Вільямс» – 2010 . – 624 c.
    6. Секретарська справа

http://www.delovodstvo.ru/sekretar/sec_1.htm

 

 

 

 

Додаток А

Лістинг програми "Система автоматизації роботи секретаря "

#include <fstream>//бібліотека з методами вводу/виводу інформації з/в файл

#include <iostream>//бібліотека використовується для організації введення-виведення

#include <conio.h>//бібліотека використовується для створення текстового інтерфейсу користувача

#include <stdlib.h>// бібліотека яка містить в собі функції, які займаються виділенням пам'яті, //контроль процесу виконання програми, перетворення типів та інші

#include <string.h>// бібліотека  що містить функції для роботи з нуль-термінованими рядками і різними //функціями роботи з пам'яттю.

#include <iomanip>//бібліотека для роботи із виключними ситуаціями

#include <clocale>// котрий використовується для задач пов'язаних з локалізацію

using namespace std;

class Osoba{//клас Особа

public:

string name ;

int stuzh;

} ;

class Boss;

class Prac;

class Calendar;

class time{

public:

int ind;//зміна що відповідає за день

int ing; //зміна що відповідає за годину

int inh; //зміна що відповідає за хвилину

int pro; //зміна що відповідає за час програмного формату

int InToPro(){//функція трансформування часу з формату «день-година-хвилина» в формат «хвилина»

pro=ind*24*60+ing*60+inh;

}

int ProToIn(){//функція трансформування часу з формату «хвилина» в формат «день-година-хвилина»

cout.fill('0');

cout.width(2); //форматований вивід на екран часу

cout<<int(pro/(24*60))<<" числa ";//виділення дня

cout.width(2);

cout<<int((pro-int(pro/(24*60))*24*60)/60)<<" : ";//виділення години

cout.width(2);

cout<<pro-(int(pro/(24*60))*24*60)-((int((pro-int(pro/(24*60))*24*60)/60))*60);//виділення хвилини

}

friend void screan (time a, Boss b,  Prac c, Calendar d);//дружня функція що  працює із даним класом

friend void pushuk(time a, Boss b,  Prac c, Calendar d);

friend void Sort(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileOut(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileIn(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileUSER(time a, Boss b,  Prac c, Calendar d);

};

//-------------------------------------------------------------------------------------------------

class Calendar {//календар

public:

int naradd[100][2];//час початку та закінчення нарад

string tel[1000];//імена телефонуючих

int tell [1000][2];//час дзвінка та номер телефонуйочого

string vidvid[1000];//імена відвідувачів

int vidvidd [1000][2];//час відвідувача

string narad [100][25];//імена запрошиних  на нараду

 

friend void prnarad(Prac c,  Calendar &q, int i); //дружня функція що  працює із даним класом

friend void screan (time a, Boss b,  Prac c, Calendar d);

friend void pushuk(time a, Boss b,  Prac c, Calendar d);

friend void Sort(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileOut(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileIn(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileUSER(time a, Boss b,  Prac c, Calendar d);

};

class Secretar: public Osoba{

};

 

class Boss:public Osoba{//Клас що відповідає за записи кервника

public:

int chasBoss[1000][2];//час початку та кінця відрядження

string podia[1000];//мета відрядження

int posh(int a, Boss b);//звірення чи вільний  босс

friend void screan (time a, Boss b,  Prac c, Calendar d);

friend void pushuk(time a, Boss b,  Prac c, Calendar d);

friend void Sort(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileOut(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileIn(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileUSER(time a, Boss b,  Prac c, Calendar d);

};

 

class Prac{

public:

string name[1000];//імена працівників що  їхали, поїдуть або є  відрядженні

int poizdky[1000][2];//час початку та кінця відрядження

string meta[1000];

friend void prnarad(Prac c,  Calendar &q, int i);

friend void screan (time a, Boss b,  Prac c, Calendar d);

friend void pushuk(time a, Boss b,  Prac c, Calendar d);

friend void Sort(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileOut(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileIn(time &a, Boss &b,  Prac &c, Calendar &d);

friend void FileUSER(time a, Boss b,  Prac c, Calendar d);

void obr(int i){//функція яка перевіряє  чи вільна дана особа

int a=0;

int j=0;

try{

  while(name[j]!=""){цикл проходить всі записи журналу

   if(i!=0){

if((name[i]==name[j])&&(i!=j)&&!((poizdky[i][0]>=poizdky[j][1])||(poizdky[i][1]<=poizdky[j][0])))

/*умова що провіряє чи не  зайнятий цей працівник в заданий  час*/

throw a;//помилка

     }

j++;}

 

}

catch(int a){//виконання виводу на екран повідомлення про помилку

        i--;

cout<<"````````````````````````````````````````````````````````````````````````````````"<<endl;

cout<<"   ЦЯ ЛЮДИНА ЗАЙНЯТА  В ЦЕЙ ЧАС!!! ЩОБ ВВЕСТИ НОВI ДАНI ВИКOНАЙТЕ ОПЕРАЦIЮ ЗНОВУ!"<<endl;

cout<<"````````````````````````````````````````````````````````````````````````````````"<<endl;

}}

};

void FileUSER(time a, Boss b,  Prac c, Calendar d){//функція виводу в файл журналів для користувача

int i=0;

ofstream file2("ZAPYSNYCK.txt");//відкриття файлу

file2<<" ";//очищення файлу

file2.close();//закриття файлу

ofstream file1("ZAPYSNYCK.txt",ios::app);//відкриття файлу із можливостю дописування

file1<<"\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n";

file1<<" ----------------------------ЖУРНАЛ  ДЗВIНКIВ---------------------------\n";//назва журнала

file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n\n";

while(d.tel[i]!=""){//цикл проходження журналу

file1<<d.tel[i]<<" "<<int(d.tell[i][0]/(24*60))<<" числa ";//запис часу

file1<<int((d.tell[i][0]-int(d.tell[i][0]/(24*60))*24*60)/60)<<" : ";

file1<<d.tell[i][0]-(int(d.tell[i][0]/(24*60))*24*60)-((int((d.tell[i][0]-int(d.tell[i][0]/(24*60))*24*60)/60))*60);

file1<<" номер телефону: "<<d.tell[i][1]<<endl;//запис іншої інформації

i++ ;

}

i=0;

file1<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n";

file1<<" ----------------------------ЖУРНАЛ  ВIДВIДУВАЧIВ-----------------------\n";

file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n\n";

while(d.vidvid[i]!=""){

file1<<d.vidvid[i]<<" "<<int(d.vidvidd[i][0]/(24*60))<<" числa ";

file1<<int((d.vidvidd[i][0]-int(d.vidvidd[i][0]/(24*60))*24*60)/60)<<" : ";

file1<<d.vidvidd[i][0]-(int(d.vidvidd[i][0]/(24*60))*24*60)-((int((d.vidvidd[i][0]-int(d.vidvidd[i][0]/(24*60))*24*60)/60))*60)<<endl;

i++; 

}

     i=0;

file1<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n";

file1<<" -------------------------------ЖУРНАЛ  НАРАД---------------------------\n";

file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n\n";

while(d.narad[i][0]!=""){

int o=0;

file1<<" з "<<int(d.naradd[i][0]/(24*60))<<" числa ";

file1<<int((d.naradd[i][0]-int(d.naradd[i][0]/(24*60))*24*60)/60)<<" : ";

file1<<d.naradd[i][0]-(int(d.naradd[i][0]/(24*60))*24*60)-((int((d.naradd[i][0]-int(d.naradd[i][0]/(24*60))*24*60)/60))*60);

file1<<" до "<<int(d.naradd[i][1]/(24*60))<<" числa ";

file1<<int((d.naradd[i][1]-int(d.naradd[i][1]/(24*60))*24*60)/60)<<" : ";

file1<<d.naradd[i][1]-(int(d.naradd[i][1]/(24*60))*24*60)-((int((d.naradd[i][1]-int(d.naradd[i][1]/(24*60))*24*60)/60))*60);

file1<<" Учасники наради: ";

     while(d.narad[i][o]!=""){

      file1<<" "<<d.narad[i][o];//запис імен учасників наради

      o++;

     }

     file1<<endl;

i++; 

}

i=0;

file1<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n";

file1<<" ------------------------------ЖУРНАЛ ВIДРДЖЕНЬ------------------------\n";

file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n\n";

file1<<"                               КЕРIВНИКА                 \n\n";

while(b.podia[i]!=""){

file1<<b.podia[i]<<" з "<<int(b.chasBoss[i][0]/(24*60))<<" числa ";

file1<<" до "<<int(b.chasBoss[i][1]/(24*60))<<" числa "<<endl;

i++; 

}

file1<<"                               ПРАЦIВНИКА                \n\n";

     i=0;

while(c.name[i]!=""){

file1<<c.name[i]<<" з "<<int(c.poizdky[i][0]/(24*60))<<" числa ";

file1<<" до "<<int(c.poizdky[i][1]/(24*60))<<" числa "<<endl;

i++; 

}

 

}

 

void Sort(time &a, Boss &b,  Prac &c, Calendar &d){//функція сортування

int n=0;

  while(d.tel[n]!="")n++;//знаходження довжини заповненого масиву

for(int j=0;j<n;j++){ // алгоритм сортування

            for(int i=0;i<n;i++){

                    if(d.tell[i][0]>d.tell[i+1][0] && i!=n-1){//звірення за часом запису

                                    int tmp;

                                    tmp=d.tell[i+1][0];//перестановка інформації між записами

                                    d.tell[i+1][0]=d.tell[i][0];

                                    d.tell[i][0]=tmp;

                                    string t;

                                    t=d.tel[i+1];

                                    d.tel[i+1]=d.tel[i];

                                    d.tel[i]=t;

                                    tmp=d.tell[i+1][1];

                                    d.tell[i+1][1]=d.tell[i][1];

                                    d.tell[i][1]=tmp;

                                    }

                    }

            }

n=0;

  while(d.vidvid[n]!="")n++;

  for(int j=0;j<n;j++){ // алгоритм сортування

            for(int i=0;i<n;i++){

                    if(d.vidvidd[i][0]>d.vidvidd[i+1][0] && i!=n-1){

                                    int tmp;

                                    tmp=d.vidvidd[i+1][0];

                                   d.vidvidd[i+1][0]=d.vidvidd[i][0];

                                    d.vidvidd[i][0]=tmp;

                                    string t;

                                    t=d.vidvid[i+1];

                                  d.vidvid[i+1]=d.vidvid[i];

                                    d.vidvid[i]=t;

                                   

                    }

            }

 

} n=0;

  while(b.podia[n]!="")n++;

for(int j=0;j<n;j++){ // алгоритм сортування

            for(int i=0;i<n;i++){

                    if(b.chasBoss[i][0]>b.chasBoss[i+1][0] && i!=n-1){

                                    int tmp;

                                    tmp=b.chasBoss[i+1][0];

                                    b.chasBoss[i+1][0]=b.chasBoss[i][0];

                                    b.chasBoss[i][0]=tmp;

                                    string t;

                                    t=b.podia[i+1];

                                    b.podia[i+1]=b.podia[i];

                                    b.podia[i]=t;

                                    tmp=b.chasBoss[i+1][1];

                                    b.chasBoss[i+1][1]=b.chasBoss[i][1];

                                    b.chasBoss[i][1]=tmp;

Информация о работе Система автоматизації функцій секретаря