Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursova_robota_opis.doc
Скачиваний:
3
Добавлен:
20.09.2019
Размер:
2.76 Mб
Скачать

Додаток б Блок схеми

Функція void vvod()

Функція void vvid_stud()

Функція void vvid_vucl()

Функція void vivod()

Функція void vivod_vucl()

Функція void vivod_stud()

Функція void redahuvannia()

Функція void redahuvannia_vucl()

Функція void redahuvannia_stud()

Функція void stup_zarp()

Функція void docent()

Функція void ser_bal_stup()

Функція void save_file()

Функція void imena_file()

Функція void redahuvannia()

Функція void redahuvannia_vucl()

Функція void redahuvannia_stud()

Функція void main()

ВИХІД

default()

Додаток в. Лістинг програми

#include "StdAfx.h"

#include "iostream"

#include "fstream"

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <windows.h>

#include<iomanip>

using namespace std;// Оголошуємо простір імен

struct teacher // Опис структури викладачів

{

int name; // Факультет

char imia[20]; // Прізвище

int posada; // Посада

float zarplata; // Зарплата

};

struct student // опис структури студентів

{

int name; // факультет

char imia[20]; // Прізвище

float ser_bal; // Середній бал

float stup; // Стипендія

};

struct facultet // Структура, яка об'єднує структури викладачів, та студентів

{

teacher vucl; // Структура викладачів

student stud[20];// Структура студентів

};

facultet tab[40]; // Масив викладачів та студентів

const int L=100; // Кількість записів в файлі

char c; // Символьна змінна

int n=0,k=0; // Стовпці таблиці

void vvid_vucl (facultet tab[]);//Прототип функції вводу викладачів

void vvid_stud (facultet tab[]);//Прототип функції вводу студентів

void vvid(facultet tab[]);//Прототип функції вводу

void vivod_stud(facultet tab[]);//Прототип функції виводу викладачів

void vivod_vucl(facultet tab[]);//Прототип функції виводу студентів

void vivod(facultet tab[]);//Прототип функції виводу

void vudalennia_vucl (facultet tab[]);//Прототип функції видалення викладачів

void vudalennia_stud (facultet tab[]);//Прототип функції видалення студентів

void vudalennia (facultet tab[]);//Прототип функції видалення

void redahuvannia_stud (facultet tab[]);//Прототип функції редагування студентів

void redahuvannia_vucl (facultet tab[]);//Прототип функції редагування викладачів

void redahuvannia (facultet tab[]);//Прототип функції редагування

void stup_zarp (facultet tab[]);//Прототип функції виводу суммарного фонду стипендії і зарплати на факультеті

void docent (facultet tab[]);//Прототип функції виводу викладачів доцентів на факальтеті

void ser_bal_stup (facultet tab[]);//Прототип функції виводу студентів з найнижчим середнім балом і стипендією

void save_file (facultet tab[]);//Прототип функції збереження в текстовий файл

void imena_file (facultet tab[]);//Прототип функції збереження імен студентів та викладачів впорядкованих за алфавітом

void main() // Головна програма

{

while (c!='0')

{

system("cls"); // Очищаємо екран

// Виводимо головне меню

cout <<" --------------------------------------------------------------------" <<endl;

cout <<"| KYRSOVA ROBOTA |" <<endl;

cout <<"| Vukanav - student grypu #_53 |" <<endl;

cout <<"| Andrii Yuschik |" <<endl;

cout <<" --------------------------------------------------------------------" <<endl;

cout <<"| Oblik informacii pro vucladachiv ta studenti |" <<endl;

cout <<" --------------------------------------------------------------------" <<endl;

cout <<"|_______________________________MENU_________________________________|" <<endl;

cout <<"| |" <<endl;

cout <<"| 1. Vvid danuh |" <<endl;

cout <<"| 2. Vuvestu dani |" <<endl;

cout <<"| 3. Vudalutu zapus |" <<endl;

cout <<"| 4. Redahuvatu dani |" <<endl;

cout <<"| 5. Sumarnui fond stupendiyi i zarplatu na zadanomy faculteti |" <<endl;

cout <<"| 6. Vuvid vukladachiv docenyiv na zadanomy faculteti |" <<endl;

cout <<"| 7. Vuvid studentiv z naimenshum serednim balom i stupendiyeyu |" <<endl;

cout <<"| 8. Zapus v fail |" <<endl;

cout <<"| 9. Zapus v fail prizvusch vukladachiv i studentiv |" <<endl;

cout <<"| |" <<endl;

cout <<"| 0. Vyhid z programu |" <<endl;

cout <<" --------------------------------------------------------------------" <<endl;

cout <<"\n Vash vybir : " ; cin>>c; // Зчитуємо введений пункт меню

system ("cls"); // Очищаємо екран

switch (c) // Використовуємо оператор варіанту

{

case '1': vvid (tab);getch(); break; // Ввід даних

case '2': vivod (tab); getch(); break; // Вивід даних

case '3': vudalennia (tab); getch(); break;//Видалення даних

case '4': redahuvannia (tab); getch(); break;// Редагування даних

case '5': stup_zarp (tab); getch(); break; // Визначеня стипендії і зарплати на факультеті

case '6': docent (tab); getch(); break;// Вивід доцентів на факультеті

case '7': ser_bal_stup (tab); getch(); break;//Вивід студентів з найнижчим середнім балом і стипендією

case '8': save_file (tab); getch(); break;// Збереження в файл

case '9': imena_file (tab); getch(); break;// Збереження імен в файл

case '0':

{

system("cls"); // Очищаємо екран

cout<<("\n\n\n\n\n\n\n"); //Відступи

cout << " THE END !!!"; getch(); break; // Повідомлення про кінець роботи програми

}

default: cout<<"\n\n\t Takogo punkty nemae !";getch(); break; // Повідомлення про неправильний ввід

}

}

}

// Функція виводу даних

void vivod(facultet tab[])

{

char ch; // Символьна змінна

int otvet=0; // Цілочисельна змінна

int p=0;//Лічильник

cout<<endl;// Відступ

cout<<"\n Pereitu do vuvody danuh ? y- TAK n- HI : "; // Запит на роботу програми

cin>>ch;// Зчитуємо відповідь

if(ch=='y'||ch=='Y')// Якщо відповідь ТАК

{

system ("cls");//Очищаємо екран

cout<<"\n\t\t Kogo vuvestu ? "<<endl;//Питаємо кого саме вивести

cout<<endl;// Відступ

cout<<"1. Vucladachiv"<<endl;//Викладачів

cout<<"2. Studentiv"<<endl;//Студентів

cout<<endl;// Відступ

cout<<"\n Vash vubir : ";

cin>>otvet;//Зчитуємо відповідь

if (otvet==1)//Якщо відповідь 1

{

vivod_vucl(tab);//Викликаємо функцію виводу викладачів

p++;//Лічильник +1

}

if (otvet==2)

{

vivod_stud(tab);//Викликаємо функцію виводу студентів

p++;//Лічильник +1

}

if (p==0)//Якщо лічильник =0

{

system ("cls");//Очищаємо екран

cout<<"\n\n\n\t\t Nepravulnui vvid "<<endl;//Повідомляємо про неправильний ввід

}

}

}

//Функція вводу студентів

void vvid_stud (facultet tab[])

{

int i,j; // Рядки таблиці

char h;//Символьна змінна

do//Виконуємо

{

system ("cls");//Очищаємо екран

cout<<"\t\t\t\t Zapus "<<k+1<<"."<<endl;//Виводимо номер запису

do//Виконуємо

{

//Просимо про ввід факультета

cout<<"\n\n\t Facultet : "<<endl;

cout <<" 1. Programuvannia"<<endl;

cout <<" 2. Buhgalter"<<endl;

cout <<" 3. SiS_admin"<<endl;

cout <<" 4. Tehnolog"<<endl;

cout <<" 5. Financu"<<endl;

cout <<" Vash vubir : ";

cin>>tab[i].stud[j].name;//Зчитуємо факультет

}

//Виконуємо поки факультет буде вибрано з запропонованих варіантів

while ((tab[i].stud[j].name>5)||tab[i].stud[j].name<1);

cout<<"\n Prizvusche : ";

cin>>tab[i].stud[j].imia;//Зчитуємо прізвище

do//Виконуємо

{

cout<<"\n Serednii bal : ";

cin>>tab[i].stud[j].ser_bal;//Зчитуємо середній бал

}

// Виконуємо поки середній бал буде вищим за 5 і нижчим за 1

while ((tab[i].stud[j].ser_bal>5)||(tab[i].stud[j].ser_bal<1));

cout<<"\n Stupendiya : ";

cin>>tab[i].stud[j].stup;//Зчитуємо стипендію

k++;//Збільшуємо кількість рядків

j++;

cout<<"\n\n Prodovjutu vvid studentiv ? y- TAK n- HI : ";//Питаємо про продовження

cin>>h; //Зчитуємо відповідь

}

// Виконуємо поки натиснута клавіша Y

while (h=='y'||h=='Y');

}

// Функція вводу викладачів

void vvid_vucl (facultet tab[])

{

int i,j; // Рядки таблиці

char h; // Символьна змінна

do //Виконуємо

{

system ("cls");// Очищаємо екран

cout<<"\t\t\t\t Zapus "<<n+1<<"."<<endl;//Виводимо номер запису

do//Виконуємо

{

// Відображаємо факультети для вводу

cout<<"\n\t Facultet : "<<endl;

cout <<" 1. Programuvannia"<<endl;

cout <<" 2. Buhgalter"<<endl;

cout <<" 3. SiS_admin"<<endl;

cout <<" 4. Tehnolog"<<endl;

cout <<" 5. Financu"<<endl;

cout <<" Vash vubir : ";

cin>>tab[i].vucl.name; // Зчитуємо введене значення

}

//Виконуємо поки значення факультету буде більше за 5 і менше 1

while ((tab[i].vucl.name>5)||tab[i].vucl.name<1);

cout<<endl;//Відступ

cout <<" Prizvusche : ";

cin>>tab[i].vucl.imia;//Зчитуємо прізвище

cout<<endl;//Відступ

do//Виконуємо

{

//Виводимо посади для вибору

cout<<"\t Posada : "<<endl;

cout <<" 1. Docent"<<endl;

cout <<" 2. Profesor"<<endl;

cout <<" 3. Asustent"<<endl;

cout <<" 4. StVucladach"<<endl;

cout <<" Vash vubir : ";

cin>>tab[i].vucl.posada;//Зчитуємо посаду

}

//Виконуємо поки посада буде більша 4 і менша 1

while ((tab[i].vucl.posada>4)||tab[i].vucl.posada<1);

cout<<endl;//Відступ

cout <<"\n Zarplata : ";

cin>>tab[i].vucl.zarplata;//Зчитуємо зарплату

n++;//Збільшуємо кількість записів на 1

i++;

cout<<"\n\n Prodovjutu vvid vucladachiv ? y- TAK n- HI : ";//Питаємо про продовження вводу

cin>>h;//Зчитуємо відповідь

}

// Виконуємо поки натиснута клавіша Y

while (h=='y'||h=='Y');

}

//Функція вводу

void vvid (facultet tab[])

{

char ch;//Символьна змінна

int otvet,p=0;//Лічильник обнуляємо

cout<<"\n Rozpochaty vvedennia danuh ? y- TAK n- HI : ";//Запрошуємо до виконання функції

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Якщо відповідь Y виконуємо

{

system("cls");//Очищаємо екран

//Питаємо кого вводити

cout<<"\n\t\t Kogo vvestu ? "<<endl;

cout<<endl;//Відступ

cout<<" 1. Vucladachiv"<<endl;

cout<<" 2. Studentiv"<<endl;

cout<<"\n Vash vubir : ";

cin>>otvet;//Зчитуємо відповідь

if (otvet==1)//Якщо відповідь 1

{

vvid_vucl (tab);//Викликаємо функцію вводу викладачів

p++;//Лічильник +1

}

if (otvet==2)//Якщо відповідь 2

{

vvid_stud (tab);//Викликаємо функцію вводу студентів

p++;//Лічильник +1

}

if (p==0) //Якщо лічильник =0

{

system ("cls");//Очищаємо екран

cout<<"\n\n\n\t\t Nepravulnui vvid "<<endl;//повідомляємо про неправильний ввід

}

}

}

//Функція виводу студентів

void vivod_stud(facultet tab[])

{

int i,j; // Рядки таблиці

int l,fl;//Змінні цілочисельного типу

student temp;//Змінна типу Студент

l=k-1;

do//Виконуємо

{

fl=0;//Обнуляємо флажок

for (j=0;j<l;j++)//Рухаємось по рядках

//Якщо поточне значення факультета більше за наступне

if (tab[i].stud[j].name>tab[i].stud[j+1].name)

{

//Проводимо обмін з значеннями

temp=tab[i].stud[j];

tab[i].stud[j]=tab[i].stud[j+1];

tab[i].stud[j+1]=temp;

fl=1;//Флажок присвоюємо 1

}

l--;//Зменшуємо рядки на 1

}

while(fl==1);//Виконуємо доки значення флажка рівне 1

system ("cls");//Очищаємо екран

cout<<endl;//Робимо відступ

//Виводимо поля таблиці

cout<<" _____________________________STYDENTU________________________"<<endl;

cout<<" | N_ | FACULTET | FIO | SEREDNII BAL | STUPENDIYA |"<<endl;

cout<<" -------------------------------------------------------------"<<endl;

for (j=0;j<k;j++)//Рухаємось по рядках таблиці

{

cout<<" |"<<setw(2)<<j+1<<" |";//Виводимо номер запису

switch (tab[i].stud[j].name)

{

case 1: cout <<" Programuvannia "; break;//Виводимо факультет

case 2: cout <<" Buhgalter "; break;//Виводимо факультет

case 3: cout <<" SiS_admin "; break;//Виводимо факультет

case 4: cout <<" Tehnolog "; break;//Виводимо факультет

case 5: cout <<" Financu "; break;//Виводимо факультет

}

//Виводимо прізвище, середній бал, стипенідю студента

cout<<tab[i].stud[j].imia<<setw(19)<<tab[i].stud[j].ser_bal<<setw(21)<<tab[i].stud[j].stup<<"\n";

cout<<" -------------------------------------------------------------"<<endl;

}

cout<<endl;//Відступ

}

//функція виводу викладачів

void vivod_vucl(facultet tab[])

{

int i,j; // Рядки таблиці

int l,fl;//Змінні цілочисельного типу

facultet temp;//Змінна типу Факультет

l=n-1;

do//Виконуємо

{

fl=0;//Обнуляємо флажок

for (i=0;i<l;i++)//Рухаємось по рядках

//Якщо поточне значення факультета більше за попереднє

if (tab[i].vucl.name>tab[i+1].vucl.name)

{

//Виконуємо обмін значеннями

temp=tab[i];

tab[i]=tab[i+1];

tab[i+1]=temp;

fl=1;//Значенню флажка присвоюємо 1

}

l--;//Зменшуємо рядок таблиці

}

while(fl==1);//Виконуємо поки значення флажка буде рівне 1

system ("cls");//Очищаємо екран

cout<<endl;//Відступ

//Виводимо рядки таблиці

cout<<" ______________________________VUCLADACHI_____________________"<<endl;

cout<<" | N_ | FACULTET | FIO | POSADA | ZARPLATA |"<<endl;

cout<<" -------------------------------------------------------------"<<endl;

for (i=0;i<n;i++)//Рухаємось по рядках

{

cout<<" |"<<setw(2)<<i+1<<" |";//Виводимо номер запису

switch (tab[i].vucl.name)

{

case 1: cout <<"Programuvannia "; break;//Виводимо факультет

case 2: cout <<"Buhgalter "; break;//Виводимо факультет

case 3: cout <<"SiS_admin "; break;//Виводимо факультет

case 4: cout <<"Tehnolog "; break;//Виводимо факультет

case 5: cout <<"Financu "; break;//Виводимо факультет

}

cout<<tab[i].vucl.imia<<setw(17)<<" ";//Виводимо прізвище викладача

switch (tab[i].vucl.posada)

{

case 1: cout <<"Docent "; break;//Виводимо посаду

case 2: cout <<"Profesor "; break;//Виводимо посаду

case 3: cout <<"Asustent "; break;//Виводимо посаду

case 4: cout <<"StVucladach "; break;//Виводимо посаду

}

cout<<tab[i].vucl.zarplata<<"\n";//Виводимо зарплату

cout<<" ------------------------------------------------------------"<<endl;

}

cout<<endl;//Відступ

}

//Функція видалення запису з викладачів

void vudalennia_vucl (facultet tab[])

{

int i;

int nomer1;//Змінна цілочисельного типу

system("cls");//Очищаємо екран

vivod_vucl(tab);//Викликаємо функцію виводу викладачів

//Запрошуємо до вводу рядку таблиці

cout<<"\n\n Vvedit nomer riadka, yakui potribno vudalutu : ";

cin>>nomer1;//Зчитуєме

if (nomer1>n)//Якщо введено значення більше ніж записів

{

system("cls");//Очищаємо екран

cout<<"\n\n Nepravulnui vvid " ;//Повідомляємо про неправильний ввід

}

else//В іншому винадку

{

for (i=nomer1;i<=n;i++)//Рухаємось по рядку

{

tab[i-1]=tab[i];//Видаляємо запис

}

n=n-1;//Зменшуємо рядок на 1

}

system("cls");//Очищаємо екран

cout<<"\n\n\n\t\t Zapus vudaleno ";//Повідомляємо про те, що запис видалено

}

//Функція видалення запису з студентів

void vudalennia_stud (facultet tab[])

{

int i,j; // Рядки таблиці

int nomer2;//Змінна цілочисельного типу

system("cls");//Очищаємо екран

vivod_stud(tab);//Викликаємо функцію виводу студентів

//Запрошуємо до вводу рядка

cout<<"\n\n Vvedit nomer riadka, yakui potribno vudalutu : ";

cin>>nomer2;//Зчитуємо рядок

if (nomer2>k)//Якщо номер рядка більший ніж їх є

{

system("cls");//Очищаємо екран

cout<<"\n\n Nepravulnui vvid " ;//Повідомляємо про неправильний ввід

}

else//В іншому випадку

{

for (j=nomer2;j<=k;j++)//Рухаємось по рядку

{

tab[i].stud[j-1]=tab[i].stud[j];//Видаляємо рядок

}

k=k-1;//Зменшуємо кількість записів

}

system("cls");//Очищаємо екран

cout<<"\n\n\n\t\t Zapus vudaleno ";//Повідомляємо про те, що запис видалено

}

//Функція видалення

void vudalennia (facultet tab[])

{

int i,j; // Рядки таблиці

char ch;//Змінна символьного типу

int otvet;//Змінна цілочисельного типу

int p=0;//Лічильник, який дорівнює 0

//Питаємо, чи почати роботу функції

cout<<"\n Pereitu do vudalennia danuh ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Якщо відповідь Y

{

system ("cls");//Очищаємо екран

//Питаємо що потрібно видалити

cout<<"\n\t\t\t Sho vudalutu ?"<<endl;

cout<<endl;

cout<<"1. Zapus z vucladachiv"<<endl;

cout<<"2. Zapus z studentiv"<<endl;

cin>>otvet;//Зчитуємо відповідь

if (otvet==1)//якщо відповідь 1

{

vudalennia_vucl (tab);//Викликаємо функцію видалення викладачів

p++;//Лічильни збільшуємо на 1

}

if (otvet==2)//якщо відповідь 2

{

vudalennia_stud (tab);//Викликаємо функцію видалення студентів

p++;//Лічильник збільшуємо на 1

}

if (p==0) //Якщо лічильник рівний 0

{

system ("cls");//Очищаємо екран

cout<<"\n\n\n\t\t Nepravulnui vvid "<<endl;//Повідомляємо про неправильний ввід

}

}

}

//Функція редагування студентів

void redahuvannia_stud (facultet tab[])

{

int i,j; // Рядки таблиці

char r;//Змінна символьного типу

int nomer;//Змінна цілочисельного типу

//Просимо до вводу номеря рядка запису

cout <<"\n Vvedit' nomer v spusky : ";

cin>>nomer;//Зчитуємо введений рядок

if ((nomer>k)||(nomer<1))//Якщо введене значення більше значенню всіх записів таблиці і менше 1

{

system ("cls");//Очищаємо екран

cout<<"\n\n\n\t Nepravulnui vvid "<<endl;//Повідомляємо про неправильний ввід

}

else//В іншому випадку

{

system ("cls");//Очищаємо екран

//Питаємо, чи змінити значення факультета

cout<<("\n Zminutu Facultet ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Якщо ТАК

{

do//Виконуємо

{

//Виводимо факультети

cout<<"\n\t Facultet : "<<endl;

cout <<" 1. Programuvannya"<<endl;

cout <<" 2. Buhgalter"<<endl;

cout <<" 3. SiS_admin"<<endl;

cout <<" 4. Tehnolog"<<endl;

cout <<" 5. Financu"<<endl;

cout <<" Vash vubir : ";

cin>>tab[i].stud[nomer-1].name; //Зчитуємо дисципліну

}

//Повторюємо поки значення факультету буде більше 5-ти і менше 1

while ((tab[i].stud[nomer-1].name>5)||tab[i].stud[nomer-1].name<1);

}

//Питаємо про зміну прізвища

cout<<("\n Zminutu Prizvusche ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Якщо ТАК

{

cout <<"\n Prizvusche : ";

cin>>tab[i].stud[nomer-1].imia;//Зчитуємо прізвище

}

//Питаємо про зміну середнього балу

cout<<("\n Zminutu Serednii bal ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Якщо ТАК

{

do//Виконувати

{

//Ввести середній бал

cout<<"\n Serednii bal : ";

cin>>tab[i].stud[nomer-1].ser_bal;//Зчитуємо середній бал

}

//Виконуємо, поки значення середнього балу більше 5-ти, і менше 1

while ((tab[i].stud[nomer-1].ser_bal>5)||(tab[i].stud[nomer-1].ser_bal<1));

}

//Питаємо про зміну стипендії

cout<<("\n Zminutu Stupendiyu ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Якщо ТАК

{

cout<<"\n Stupendiya : ";

cin>>tab[i].stud[nomer-1].stup;//Зчитуємо значення стипендії

}

}

system ("cls");//очищаємо екран

cout<<"\n\n\t Dani vidredahovano ! "<<endl;//Повідомляємо про те, що дані відредаговано

}

//Функція редагування викладачів

void redahuvannia_vucl (facultet tab[])

{

int i,j; // Рядки таблиці

char r;//Зміння символьного типу

int nomer;//Змінна цілочисельного типу

cout <<"\n Vvedit' nomer v spusky : ";

cin>>nomer;//Зчитуємо номер в списку

if ((nomer>n)||(nomer<1))//Якщо введений номер є більшм, ніж записів в таблиці і якщо менше 1

{

system ("cls");//Очищаємо екран

cout<<"\n\n\n\t Nepravulnui vvid "<<endl;//Повідомляємо про неправильний ввід

}

else//В іншому випадку

{

system ("cls");//Очищаємо екран

//питаємо про зміну факультета

cout<<("\n Zminutu Facultet ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Відповідь ТАК

{

do//Виконувати

{

//Виводимо факультети

cout<<"\n\t Facultet : "<<endl;

cout <<" 1. Programuvannya"<<endl;

cout <<" 2. Buhgalter"<<endl;

cout <<" 3. SiS_admin"<<endl;

cout <<" 4. Tehnolog"<<endl;

cout <<" 5. Financu"<<endl;

cout <<" Vash vubir : ";

cin>>tab[nomer-1].vucl.name; //Зчитуємо факультет

}

//Повторюємо, поки значення факультету більше 5-ти і менше 1

while ((tab[nomer-1].vucl.name>5)||tab[nomer-1].vucl.name<1);

}

//Питаємо про зміну прізвища

cout<<("\n Zminutu Prizvusche ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Якщо ТАК

{

cout <<"\n Prizvusche : ";

cin>>tab[nomer-1].vucl.imia; //Зчитуємо прізвище

}

//Питаємо про зміну посади

cout<<("\n Zminutu Posady ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Якщо відповідь ТАК

{

do//Виконуємо

{

//Виводимо посади

cout<<"\n\t Posada : "<<endl;

cout <<" 1. Docent"<<endl;

cout <<" 2. Profesor"<<endl;

cout <<" 3. Asustent"<<endl;

cout <<" 4. StVucladach"<<endl;

cout <<" Vash vubir : ";

cin>>tab[nomer-1].vucl.posada;//Зчитуєпо посаду

}

//Повторюємо, доки значення посади буде більше 4 і менше 1

while ((tab[nomer-1].vucl.posada>4)||tab[nomer-1].vucl.posada<1);

}

//Питаємо про зміну зарплати

cout<<("\n Zminutu zarplaty ? y- TAK n- HI : ");

cin>>r;//Зчитуємо відповідь

if(r=='y')//Відповідь ТАК

{

cout <<"\n Zarplata : ";

cin>>tab[nomer-1].vucl.zarplata;//Зчитуємо значення зарплати

}

system ("cls");//Очищаємо екран

cout<<"\n\n\t Dani vidredahovano ! "<<endl;//Повідомляємо про те, що дані відредаговано

}

}

//функція редагування

void redahuvannia (facultet tab[])

{

char ch;//Змінна символьного типу

int otvet;//Змінна цілочисельного типу

int nomer=0;//Змінна цілочисельного типу

int p=0;//Лічильник, значення якого рівне 0

//Питаємо про початок виконання

cout<<"\n Pereitu do redahuvannia danuh ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Якщо відповідь ТАК

{

system ("cls");//Очищаємо екран

//Питаємо кого потрібно редагувати

cout<<"\n\t\t\t Kogo redahuvatu ?"<<endl;

cout<<endl;

cout<<"1. Vucladachiv"<<endl;

cout<<"2. Studentiv"<<endl;

cin>>otvet;//Зчитуємо відповідь

if (otvet==1)//Якщо відповідь 1

{

vivod_vucl(tab);//Викликаємо функцію виводу викладачів

cout<<endl;//Відступ

redahuvannia_vucl (tab);//Викликаємо функцію редагування викладачів

p++;//Лічильник +1

}

if (otvet==2)//якщо відповідь 2

{

vivod_stud(tab);//Викликаємо функцію виводу студентів

cout<<endl;//Відступ

redahuvannia_stud (tab);//Викликаємо функцію редагування студентів

p++;//Лічильник +1

}

if (p==0)//Лічильник рівний 0

{

system ("cls");//Очищаємо екран

cout<<"\n\n\t Nepravulnui vvid ! "<<endl;//Повідомляємо про неправильний ввід

}

}

}

//Функцію визначення сумарного фонду стипендії і зарплати

void stup_zarp (facultet tab[])

{

int i,j; // Рядки таблиці

char ch;//Змінна символьного типу

float zarp=0;//Змінна дійсного типу, яка буде зберігати в собі значення зарплат на факультеті

float stupen=0;//Змінна дійсного типу, яка буде зберігати в собі значення стипендії на факультеті

float zarp_stu=0;//Змінна дійсного типу, яка буде зберігати в собі значення стипендії і зарплат на факультеті

int fac;//Змінна цілого типу, яка буде приймати значення введеного факультету

//Запит на почато роботи функції

cout<<"\n Pereitu do pidrahuvannia stupendii i zarplatu ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Відповідь ТАК

{

system ("cls");//Очищаємо екран

do//Виконуємо

{

//Виводимо факультети

cout<<"\n\t Facultet : "<<endl;

cout <<" 1. Programuvannya"<<endl;

cout <<" 2. Buhgalter"<<endl;

cout <<" 3. SiS_admin"<<endl;

cout <<" 4. Tehnolog"<<endl;

cout <<" 5. Financu"<<endl;

cout <<" Vash vubir : ";

cin>>fac; //Зчитуємо факультет

}

//Повторюємо поки значення факультета більше 5-ти і менше 1

while ((fac>5)||fac<1);

for (i=0;i<n;i++)//Рухаємось по викладачах

{

if (fac==tab[i].vucl.name)//якщо введений факультет рівний поточному

{

zarp+=tab[i].vucl.zarplata;//Сусуємо значення зарплат

zarp_stu+=tab[i].vucl.zarplata;//Сумаємо зарплати

}

}

for (j=0;j<k;j++)//Рухаємось по студентах

{

if (fac==tab[i].stud[j].name)//якщо введений факультет рівний поточному

{

stupen+=tab[i].stud[j].stup;//Сусуємо значення стипендій

zarp_stu+=tab[i].stud[j].stup;//Сумаємо стипендії до зарплат

}

}

}

system ("cls");//Очищаємо екран

switch (fac)

{

case 1: cout <<"\n\t\t\t Na Faculteti Programuvannia"<<'\t'; break;//Виводимо факультет

case 2: cout <<"\n\t\t\t Na Faculteti Buhgalter"<<'\t'; break;//Виводимо факультет

case 3: cout <<"\n\t\t\t Na Faculteti SiS_admin"<<'\t'; break;//Виводимо факультет

case 4: cout <<"\n\t\t\t Na Faculteti Tehnolog"<<'\t'; break;//Виводимо факультет

case 5: cout <<"\n\t\t\t Na Faculteti Financu"<<'\t'; break;//Виводимо факультет

}

cout<<"\n\n\n";//Відступи

cout<<" Symarnui fond stupendii i zarplatu = "<<zarp_stu<<" grn"<<endl;//Виводимо значення стипендії і зарплати на факультеті

cout<<"\n\n Symarnui fond stupendii = "<<stupen<<" grn"<<endl;//Виводимо значення стипендії на факультеті

cout<<"\n\n Symarnui fond zarplatu = "<<zarp<<" grn"<<endl;//Виводимо значення зарплати на факеультеті

}

//Функція виводу кількості викладачів доцентів на факультеті

void docent (facultet tab[])

{

int i; // Рядки таблиці

char ch;//Змінна символьно типу

int docent=0;//Змінна цілочисельного типу, в якій буде зберігатися кількість викладачів доцентів

int fac;//Змінна цілочисельного типу, яка буде приймати значення факультета

//Питаємо чи почати роботу функції

cout<<"\n Pereitu do pidrahuvannia vucladachiv Docentiv ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Відповідь ТАК

{

system ("cls");//Очищаємо екран

do//Викоеуємо

{

system ("cls");//Очищаємо екран

//Виводимо факультети

cout<<"\n\t Facultet : "<<endl;

cout <<" 1. Programuvannya"<<endl;

cout <<" 2. Buhgalter"<<endl;

cout <<" 3. SiS_admin"<<endl;

cout <<" 4. Tehnolog"<<endl;

cout <<" 5. Financu"<<endl;

cout <<" Vash vubir : ";

cin>>fac; //Зчитуємо факультети

}

//Повторюємо поки значення введеного факультету більше 5-ти і менше 1

while ((fac>5)||fac<1);

for (i=0;i<n;i++)//Ріхаємось по викладачах

{

//Порівнюємо факультет з поточним і дивимось, чи за посадою викладач Доцент

if ((fac==tab[i].vucl.name)&&(tab[i].vucl.posada==1))

{

docent++;//Збільшуємо лічильник на 1

}

}

}

system ("cls");//Очищаємо екран

switch (fac)

{

case 1: cout <<"\n\t\t\t Na Faculteti Programuvannia"<<'\t'; break;//Виводимо факультет

case 2: cout <<"\n\t\t\t Na Faculteti Buhgalter"<<'\t'; break;//Виводимо факультет

case 3: cout <<"\n\t\t\t Na Faculteti SiS_admin"<<'\t'; break;//Виводимо факультет

case 4: cout <<"\n\t\t\t Na Faculteti Tehnolog"<<'\t'; break;//Виводимо факультет

case 5: cout <<"\n\t\t\t Na Faculteti Financu"<<'\t'; break;//Виводимо факультет

}

cout<<"\n\n\n";//Відступ

cout<<" Znahodiatsia "<<docent<<" vucladacha docenta"<<endl;//Виводимо підраховану кількість викладачів Доцентів

}

//Функція виводу студентів з найнижчим середній балом і стипендією

void ser_bal_stup (facultet tab[])

{

int j,i; // Рядки таблиці

char ch;//Змінна символьного типу

int p=0;//лічильник, який рівний 0

//Запит на початок роботи фанкції

cout<<"\n\t\t Pereitu do vuvody studentiv z nainujchim serednim balom";

cout<<"\n\t\t\t i stupendiyeyu ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Відповідь ТАК

{

system ("cls");//Очищаємо екран

cout<<endl;//Відступ

//Виводипо поля таблиці

cout<<" _____________________________STYDENTU________________________"<<endl;

cout<<" | N_ | FACULTET | FIO | SEREDNII BAL | STUPENDIYA |"<<endl;

cout<<" -------------------------------------------------------------"<<endl;

for (j=0;j<k;j++)//Рухаємось по студентах

{

//якщо стипендія менша 520, а середній бал рівний 4

if ((tab[i].stud[j].stup<520)&(tab[i].stud[j].ser_bal==4))

{

cout<<" |"<<setw(2)<<j+1<<" |";//Виводимо в файл номер запису

switch (tab[i].stud[j].name)

{

case 1: cout <<" Programuvannia "; break;//Виводимо в файл факультет

case 2: cout <<" Buhgalter "; break;//Виводимо в файл факультет

case 3: cout <<" SiS_admin "; break;//Виводимо в файл факультет

case 4: cout <<" Tehnolog "; break;//Виводимо в файл факультет

case 5: cout <<" Financu "; break;//Виводимо в файл факультет

}

//Виводимо в файл прізвище, середній бал, стипендію студента

cout<<tab[i].stud[j].imia<<setw(19)<<tab[i].stud[j].ser_bal<<setw(21)<<tab[i].stud[j].stup<<"\n";

cout<<" -----------------------------------------------------------------"<<endl;

}

p++;//лічильник +1

}

if(p==0)//Якщо лічильник рівний 0

{

system ("cls");//Очищаємо екран

cout<<"\n\n\n\t Danuh ne znaideno ! "<<endl;//Повідомляємо про те, що даних не знайдено

}

}

}

//Функція збереження бази в текстовий файл

void save_file (facultet tab[])

{

int i,j; // Рядки таблиці

int f1,f2;//Цілочисельні змінні, які приймають значення флажків

facultet temp1;//Змінна типу факультет

student temp;//Змінна типу студент

int w=n-1;//Цілочисельне значення рядків викладачів

int l=k-1;//Цілочисельне значення рядків студентів

char ch;//Змінна символьного типу

int p=0;//Лічильник

char file[L];//Масив записів

ofstream out;//Відкриваємо потік запису в файл

//Запит на початок роботи фанкції

cout<<"\n Pereitu do zberejennia danuh y fail ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//Відповідь ТАК

{

system ("cls");//Очищаємо екран

//Просимо про ввід директорії і імені файла

cout<<("Vvedit durectoriyu pruznachennia ta imiya faily :")<<endl;

cin>>file;//Зчитуємо

out.open(file);//Створюємо, та відкриваємо на запис файл

if(out==NULL)//Перевіряємо, чи файл створився

{

system("cls");//Очищаємо екран

cout<<endl;//Відступ

cout<<(" Fail ne stvoreno ");//Повідомляємо про те, що файл не створився

getch();//Затримка

exit(1);//Виходимо з функції

}

do//Виконуємо

{

f1=0;//Флажок рівний нулю

for (j=0;j<l;j++)//Рухаємось по рядках студентів

//Якщо поточне значення факультета більше за попереднє

if (tab[i].stud[j].name>tab[i].stud[j+1].name)

{

//Виконуємо обмін між значеннями

temp=tab[i].stud[j];

tab[i].stud[j]=tab[i].stud[j+1];

tab[i].stud[j+1]=temp;

f1=1;//значенню флажка присвоюємо 1

}

l--;//Кількість рядків зменшуємо на 1

}

//Виконуємо доки флажок буде рівний 1

while(f1==1);

out<<endl;//Відступ в файлі

//Виводомо в файл поля таблиці

out<<" ____________________________STYDENTU__________________________"<<endl;

out<<" | N_ | FACULTET | FIO | SEREDNII BAL | STUPENDIYA |"<<endl;

out<<" --------------------------------------------------------------"<<endl;

for (j=0;j<k;j++)//Рухаємось по рядках студентів

{

out<<" |"<<setw(2)<<j+1<<" |";//Виводимо в файл номер запису

switch (tab[i].stud[j].name)

{

case 1: out <<" Programuvannia "; break;//Виводимо в файл факультет

case 2: out <<" Buhgalter "; break;//Виводимо в файл факультет

case 3: out <<" SiS_admin "; break;//Виводимо в файл факультет

case 4: out <<" Tehnolog "; break;//Виводимо в файл факультет

case 5: out <<" Financu "; break;//Виводимо в файл факультет

}

//Виводимо в файл прізвище, середній бал, стипендію студента

out<<tab[i].stud[j].imia<<setw(19)<<tab[i].stud[j].ser_bal<<setw(21)<<tab[i].stud[j].stup<<"\n";

out<<" -------------------------------------------------------------"<<endl;

}

do//Виконуємо

{

f2=0;//Флажок рівний нулю

for (i=0;i<w;i++)//Рухаємось по рядках викладачів

//Якщо поточне значення факультета більше за попереднє

if (tab[i].vucl.name>tab[i+1].vucl.name)

{

//Виконуємо обмін між значеннями

temp1=tab[i];

tab[i]=tab[i+1];

tab[i+1]=temp1;

f2=1;//значенню флажка присвоюємо 1

}

w--;//Кількість рядків зменшуємо на 1

}

//Виконуємо доки флажок буде рівний 1

while(f2==1);

out<<endl;//Відступ в файлі

//Виводомо в файл поля таблиці

out<<" _____________________________VUCLADACHI_______________________"<<endl;

out<<" | N_ | FACULTET | FIO | POSADA | ZARPLATA |"<<endl;

out<<" --------------------------------------------------------------"<<endl;

for (i=0;i<n;i++)//Рухаємось по рядках викладачів

{

out<<" |"<<setw(2)<<i+1<<" |";//Виводимо в файл номер запису

switch (tab[i].vucl.name)

{

case 1: out <<"Programuvannia "; break;//Виводимо в файл факультет

case 2: out <<"Buhgalter "; break;//Виводимо в файл факультет

case 3: out <<"SiS_admin "; break;//Виводимо в файл факультет

case 4: out <<"Tehnolog "; break;//Виводимо в файл факультет

case 5: out <<"Financu "; break;//Виводимо в файл факультет

}

out<<tab[i].vucl.imia<<setw(17)<<" ";//Виводимо в файл прізвище

switch (tab[i].vucl.posada)

{

case 1: out <<"Docent "; break;//Виводимо в файл посаду

case 2: out <<"Profesor "; break;//Виводимо в файл посаду

case 3: out <<"Asustent "; break;//Виводимо в файл посаду

case 4: out <<"StVucladach "; break;//Виводимо в файл посаду

}

out<<tab[i].vucl.zarplata<<"\n";//Виводимо в файл зарплату

out<<" -------------------------------------------------------------"<<endl;

}

}

system("cls");//Очищаємо екран

cout<<endl;//Відступ

cout<<(" Fail stvoreno");//Повідомляємо про те, що файл створено

getch();//Затримка

}

//Запис впорядкованих за алфавітом імен в файл

void imena_file (facultet tab[])

{

int i,j; // Рядки таблиці

int f1,f2;//Цілочисельні змінні, які приймають значення флажків

facultet temp1;//Змінна типу факультет

student temp;//Змінна типу студент

int w=n-1;//Цілочисельне значення рядків викладачів

int l=k-1;//Цілочисельне значення рядків студентів

char ch;//Змінна символьного типу

int p=0;//Лічильник

char file[L];//Масив записів

ofstream out;//Відкриваємо потік запису в файл

//Запит на початок роботи фанкції

cout<<"\n Pereitu do zberejennia imen y fail ? y- TAK n- HI : ";

cin>>ch;//Зчитуємо відповідь

if(ch=='y'||ch=='Y')//відповідь ТАК

{

system ("cls");//Очищаємо екран

//Просимо про ввід директорії і імені файла

cout<<("Vvedit durectoriyu pruznachennia ta imiya faily :")<<endl;

cin>>file;//Зчитуємо

out.open(file);//Створюємо, та відкриваємо на запис файл

if(out==NULL)//Перевіряємо, чи файл створився

{

system("cls");//Очищаємо екран

cout<<endl;//Відступ

cout<<(" Fail ne stvoreno ");//Повідомляємо, що файл не створився

getch();//Затримка

exit(1);//Вихід

}

do//Виконувати

{

f1=0;//Значенню флажка присвоюємо значення рівне 0

for (j=0;j<l;j++)//Рухаємось по рядках студентів

//Якщо функціяповертає додатнє значення

if (strcmp(tab[i].stud[j].imia,tab[i].stud[j+1].imia)>0)

{

//Виконуємо обмін між значеннями

temp=tab[i].stud[j];

tab[i].stud[j]=tab[i].stud[j+1];

tab[i].stud[j+1]=temp;

f1=1;//Флажкові присвоюємо 1

}

l--;//Зменшуємо кількість рядків

}

while(f1==1);//Виконуємо доки значення флажка рівне 1

out<<endl;//Відступ в файлі

//Виводимо в файл поля таблиці

out<<" ________________________IMENA_STYDENTIV________________________"<<endl;

for (j=0;j<k;j++)//Рухаємось по рядках студентів

{

out<<"\t\t\t\t"<<tab[i].stud[j].imia<<"\n";//Виводимо імена студентів

}

do//Виконуємо

{

f2=0;//Значенню флажка присвоюємо значення рівне 0

for (i=0;i<w;i++)//Рухаємось по рядках викладачів

//Якщо функціяповертає додатнє значення

if (strcmp(tab[i].vucl.imia,tab[i+1].vucl.imia)>0)

{

//Виконуємо обмін між значеннями

temp1=tab[i];

tab[i]=tab[i+1];

tab[i+1]=temp1;

f2=1;//Флажкові присвоюємо 1

}

w--;//Зменшуємо кількість рядків

}

while(f2==1);//Виконуємо доки значення флажка рівне 1

out<<endl;//Відступ в файлі

//Виводимо в файл поля таблиці

out<<" _______________________IMENA_VUCLADACHIV_______________________"<<endl;

for (i=0;i<n;i++)//Рухаємось по рядках викладачів {

out<<"\t\t\t\t"<<tab[i].vucl.imia<<"\n";//Виводимо імена викладачів

}

system("cls"); //Очищаємо екран

cout<<endl; //Відступ

cout<<(" Fail stvoreno"); //Повідомляємо, що файл створено

getch(); //Затримка

}

ЛИСТ ОЦІНЮВАННЯ

Номер етапу

Назва роботи

Максимальна кількість балів

Фактично набрано

1

Отримання індивідуального завдання та розробка ПЗ

5

2

Огляд та аналіз спеціальної літератури.

Вибір середовища проектування, мови та технологій програмування.

Уточнення постановки задачі.

5

3

Розробка структурної моделі ПЗ КСУ, що розробляється:

  • математична модель;

  • розробка структури бази даних.

5

4

Розробка структури головної програми і кожного модуля окремо.

40

5

Налагодження програмного забезпечення.

5

6

Розробка тестів, аналіз результатів тестування.

5

7

Оформлення супроводжувальної документації.

5

8

Захист роботи

30

Всього балів

100

Зауваження до роботи

Підсумкова оцінка

Керівник практики

43

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]