Автор работы: Пользователь скрыл имя, 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
Підготовка наради
Даний пункт реалізується наступним чином: спочатку вводиться час проведення наради, потім звіряється цей час із журналом, якщо актовий зал вільний, тоді вводяться ім’я учасників наради. При введені ім’я учасників наради провіряється чи не введене ім’я двічі, а також чи не є даний працівник у відряжденні.
Вивести операції
Виводить перелік всіх пунктів меню.
Вихід
Виходить із програми в наслідок переривання циклу.
Вивести журнали на екран
За дану операцію відповідає вищезгадана функція screan() (Табл. 4. 7).
Пошук події за днем
За дану операцію відповідає вищезгадана функція pushuk() (Табл. 4. 9).
Видалення всіх подій з пам'яті
Дана функція видаляє перший запис із кожного масиву, таким чином всі функції будуть бачити порожній масив, лічильникам записів присвоює нуль та очищає файл із записаними журналами.
Після закінчення роботи кожного з меню пункту (за винятком «Вихід») програма сортує та записує в файл журнали, виводить на екран список пунктів меню.
ВИСНОВКИ ТА ПРОПОЗИЦІЇ
В результаті виконаної роботи було розроблено програмне забезпечення, що моделює систему автоматизації окремих функцій секретаря фірми - формування та підтримку календаря фірми і контроль позначених у ньому подій. Серед основних функцій системи передбачено уточнення (актуалізація) календаря, видачу за запитом користувача всієї інформації про календарні події, включаючи зручний перегляд подій, запланованих на певний день або період дня.
При розробці програми було використано такі базові принципи об’єктно-орієнтовані принципи створення програмних продуктів як клас, об’єкти, успадкування класів, робота із файловими потоками тощо.
Проведена декомпозиція із детальним аналізом функціонування окремих блоків модельованої системи. Встановлені відповідні взаємозв’язки, інформаційні потоки.
Розроблений програмний комплекс
Проте не передбачено наступне: при введені декількох слів замість одного програма може закритись, або ввести не вірні дані, що призводить до закриття програми, при введенні символьного замість цілочисельного типу даних програма може завершити свою роботу.
Виконана програма може бути використана у навчальному процесі при вивченні курсів «Технологія комп’ютерного проектування», «Моделювання систем» у задачах повноцінного аналізу функціонування різноманітного виду систем та технологія створення програмних продуктів у аспектах конвертації програмного коду із C++ у С# із подальшою розробкою повноцінної бази даних.
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
http://www.delovodstvo.ru/
Додаток А
Лістинг програми "Система автоматизації роботи секретаря "
#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)
cout.width(2);
cout<<pro-(int(pro/(24*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)&
/*умова що провіряє чи не
зайнятий цей працівник в
throw a;//помилка
}
j++;}
}
catch(int a){//виконання виводу на екран повідомлення про помилку
i--;
cout<<"```````````````````````
cout<<" ЦЯ ЛЮДИНА ЗАЙНЯТА
В ЦЕЙ ЧАС!!! ЩОБ ВВЕСТИ НОВI
ДАНI ВИКOНАЙТЕ ОПЕРАЦIЮ ЗНОВУ!"<<
cout<<"```````````````````````
}}
};
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::
file1<<"\~~~~~~~~~~~~~~~~~~~~~
file1<<" ----------------------------
file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
while(d.tel[i]!=""){//цикл проходження журналу
file1<<d.tel[i]<<" "<<int(d.tell[i][0]/(24*60))<<
file1<<int((d.tell[i][0]-int(
file1<<d.tell[i][0]-(int(d.
file1<<" номер телефону: "<<d.tell[i][1]<<endl;//запис іншої інформації
i++ ;
}
i=0;
file1<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
file1<<" ----------------------------
file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
while(d.vidvid[i]!=""){
file1<<d.vidvid[i]<<" "<<int(d.vidvidd[i][0]/(24*60)
file1<<int((d.vidvidd[i][0]-
file1<<d.vidvidd[i][0]-(int(d.
i++;
}
i=0;
file1<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
file1<<" ------------------------------
file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
while(d.narad[i][0]!=""){
int o=0;
file1<<" з "<<int(d.naradd[i][0]/(24*60))
file1<<int((d.naradd[i][0]-
file1<<d.naradd[i][0]-(int(d.
file1<<" до "<<int(d.naradd[i][1]/(24*60))
file1<<int((d.naradd[i][1]-
file1<<d.naradd[i][1]-(int(d.
file1<<" Учасники наради: ";
while(d.narad[i][o]!=""){
file1<<" "<<d.narad[i][o];//запис імен учасників наради
o++;
}
file1<<endl;
i++;
}
i=0;
file1<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
file1<<" ------------------------------
file1<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
file1<<"
while(b.podia[i]!=""){
file1<<b.podia[i]<<" з "<<int(b.chasBoss[i][0]/(24*
file1<<" до "<<int(b.chasBoss[i][1]/(24*
i++;
}
file1<<"
i=0;
while(c.name[i]!=""){
file1<<c.name[i]<<" з "<<int(c.poizdky[i][0]/(24*60)
file1<<" до "<<int(c.poizdky[i][1]/(24*60)
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){//звірення за часом запису
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[
d.vidvid[i+1]=d.vidvid[i];
}
}
} 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.
b.podia[i]=t;