- •Розділ 1. Постановка задачі
- •1.1 Уточнена постановка задачі на розробку програмного забезпечення
- •1.2 Розробка структури бази даних
- •Структури програми
- •Розділ 2. Опис розробки програми
- •2.1. Описання глобальних змінних
- •Глобальні змінні програми
- •2.2. Описання модулів програми
- •Функції, які використовуються в програмі
- •2.3. Описання алгоритму задачі
- •Розділ 3. Тестування програмного забезпечення
- •3.1 Аналіз результатів тестування
- •Висновок
- •Список інформаційних джерел
- •Додаток а Технічне завдання
- •Додаток б Блок схеми
- •Додаток в. Лістинг програми
Додаток б Блок схеми
Функція 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 |
|
Зауваження до роботи
Підсумкова оцінка
Керівник практики