Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <fstream>
- #include <iostream>
- using namespace std;
- struct abonent {
- int id;
- char fio[2000];
- char adres[2000];
- char telefon[2000];
- abonent *next;
- };
- struct tarif {
- int id;
- char name[2000];
- float cena_min;
- float cena_min_mejgorod;
- tarif *next;
- };
- struct tdate {
- int year;
- int month;
- int day;
- };
- struct dogovor {
- int id;
- int id_abonent;
- int id_tarif;
- tdate date;
- int tip_telephone;
- int lgota;
- dogovor *next;
- };
- struct razgovor {
- int id;
- int dlitelnost;
- int tip;
- int id_abonent;
- tdate date;
- razgovor *next;
- };
- class systemATC {
- private:
- abonent *headListAbonent;
- tarif *headListTarif;
- dogovor *headListDogovor;
- razgovor *headListRazgovor;
- int id_abonent, id_tarif, id_dogovor, id_razgovor;
- public:
- systemATC() {
- this->headListAbonent = NULL;
- this->headListTarif = NULL;
- this->headListDogovor = NULL;
- this->headListRazgovor = NULL;
- this->id_abonent = 0;
- this->id_tarif = 0;
- this->id_dogovor = 0;
- this->id_razgovor = 0;
- }
- ~systemATC() {}
- void addAbonent(){
- abonent *n = (abonent*)malloc(sizeof(abonent)*100);
- n->id = this->id_abonent++;
- cin.get();
- printf("Input fio\n");
- cin.getline(n->fio, 100);
- printf("Input Adres\n");
- cin.getline(n->adres, 100);
- printf("Input telephone\n");
- cin.getline(n->telefon, 100);
- n->next = this->headListAbonent;
- this->headListAbonent = n;
- printf("Abonent add id: %d\n", n->id);
- return;
- }
- void addTarif(){
- tarif *n = (tarif*)malloc(sizeof(tarif)*100);
- cin.get();
- n->id = this->id_tarif++;
- printf("Input name\n");
- cin.getline(n->name, 100);
- printf("Input cena min\n");
- if(!scanf("%f", &n->cena_min)) {
- printf("Invalid cena!\n");
- return;
- }
- printf("Input cena min mejgorod\n");
- if(!scanf("%f", &n->cena_min_mejgorod)) {
- printf("Invalid cena!\n");
- return;
- }
- n->next = this->headListTarif;
- this->headListTarif = n;
- printf("Tarif Add id: %d\n", n->id);
- return;
- }
- void addDogovor() {
- dogovor *n = (dogovor*)malloc(sizeof(dogovor)*100);
- cin.get();
- n->id = this->id_dogovor++;
- while(true) {
- printf("Input id abonent\n");
- if(!scanf("%d", &n->id_abonent)) {
- printf("Invalid id abonent!\n");
- return;
- };
- if(this->isAbonent(n->id_abonent)){
- break;
- } else {
- printf("Not id abonent\n");
- }
- }
- if(this->isDogovorAbonentId(n->id_abonent)) {
- printf("Mojno zaklushit tolko 1 dogovor na 1 abonenta!\n");
- return;
- }
- while(true) {
- printf("Input id tarif\n");
- if(!scanf("%d", &n->id_tarif)) {
- printf("Invalid id tarif!\n");
- return;
- }
- if(n->id_tarif == -1) {
- break;
- }
- if(this->isTarif(n->id_tarif)){
- break;
- } else {
- printf("Not id tarif\n");
- }
- }
- while(true) {
- printf("Input data year.month.day\n");
- if(!scanf("%d.%d.%d", &n->date.year, &n->date.month, &n->date.day)) {
- cin.get();
- printf("Invalid date\n");
- return;
- }
- if(n->date.year == -1 || n->date.month == -1 || n->date.day == -1) {
- break;
- }
- if(this->isDate(n->date.year, n->date.month, n->date.day)) {
- break;
- } else {
- printf("Invalid date!\n");
- }
- }
- printf("Input tip_telephone(0 or 1)\n");
- while(true) {
- if(!scanf("%d", &n->tip_telephone)) {
- printf("Invalid tip!\n");
- return;
- }
- if((n->tip_telephone == 1) || (n->tip_telephone == 0)) {
- break;
- } else {
- printf("Error input tip!\n");
- }
- }
- printf("Input lgota(0 or 1)\n");
- while(true) {
- if(!scanf("%d", &n->lgota)) {
- printf("Invalid tip!\n");
- return;
- }
- if((n->lgota == 1) || (n->lgota == 0)) {
- break;
- } else {
- printf("Error input lgota!\n");
- }
- }
- n->next = this->headListDogovor;
- this->headListDogovor = n;
- printf("Dogovor add id: %d\n", n->id);
- return;
- }
- void addRazgovor() {
- razgovor *n = (razgovor*)malloc(sizeof(razgovor)*100);
- cin.get();
- n->id = this->id_razgovor++;
- printf("Input dlitelnost\n");
- if(!scanf("%d", &n->dlitelnost)) {
- printf("Invalid dlitelnost!\n");
- return;
- }
- n->dlitelnost = abs(n->dlitelnost);
- printf("Input tip\n");
- while(true) {
- if(!scanf("%d", &n->tip)) {
- printf("Invalid tip!\n");
- return;
- }
- if((n->tip == 1) || (n->tip == 0)) {
- break;
- } else {
- printf("Error input tip!\n");
- }
- }
- while(true) {
- printf("Input id abonent\n");
- if(!scanf("%d", &n->id_abonent)) {
- printf("Invalid tip!\n");
- return;
- }
- if(n->id_abonent == -1) {
- break;
- }
- if(this->isAbonent(n->id_abonent)){
- break;
- } else {
- printf("Not id abonent\n");
- }
- }
- while(true) {
- printf("Input data year.month.day\n");
- if(!scanf("%d.%d.%d", &n->date.year, &n->date.month, &n->date.day)) {
- printf("Invalid tip!\n");
- return;
- }
- if(n->date.year == -1 || n->date.month == -1 || n->date.day == -1) {
- break;
- }
- if(this->isDate(n->date.year, n->date.month, n->date.day)) {
- break;
- } else {
- printf("Invalid date!\n");
- }
- }
- n->next = this->headListRazgovor;
- this->headListRazgovor = n;
- printf("Razgovor add id: %d\n", n->id);
- return;
- }
- void printAbonent() {
- abonent *root = this->headListAbonent;
- while(root) {
- if(root == NULL) return;
- printf("Abonent id = %d\nFio: %s\nAdres: %s\nTelephone: %s\n",
- root->id,
- root->fio,
- root->adres,
- root->telefon);
- root = root->next;
- }
- return;
- }
- void printAbonentToId(int id){
- if(!this->isAbonent(id)) {
- printf("Not abonent");
- return;
- } else {
- abonent *root = this->headListAbonent;
- while (root) {
- if(root->id == id) {
- printf("Abonent id = %d\nFio: %s\nAdres: %s\nTelephone: %s\n",
- root->id,
- root->fio,
- root->adres,
- root->telefon);
- return;
- }
- }
- }
- return;
- }
- void printTarif() {
- tarif *root = this->headListTarif;
- while(root) {
- if(root == NULL) return;
- printf("Tarif id = %d\nName: %s\nCena min: %0.2f\nCena min Mejgorod: %0.2f\n",
- root->id,
- root->name,
- root->cena_min,
- root->cena_min_mejgorod);
- root = root->next;
- }
- return;
- }
- void printDogovor() {
- dogovor *root = this->headListDogovor;
- while (root) {
- if(root == NULL) return;
- printf("Dogovor id = %d\nId abonent: %d\nId tarif: %d\nDate: %d.%d.%d\nTip telephone: %d\nLgota: %d\n",
- root->id,
- root->id_abonent,
- root->id_tarif,
- root->date.year,
- root->date.month,
- root->date.day,
- root->tip_telephone,
- root->lgota);
- root = root->next;
- }
- return;
- }
- void printRazgovor() {
- razgovor *root = this->headListRazgovor;
- while(root) {
- printf("Razgovor id = %d\nDlitelnost: %d\nTip: %d\nId abonent: %d\nDate: %d.%d.%d\n",
- root->id,
- root->dlitelnost,
- root->tip,
- root->id_abonent,
- root->date.year,
- root->date.month,
- root->date.day);
- root = root->next;
- }
- return;
- }
- bool isAbonent(int id) {
- abonent *root = this->headListAbonent;
- while(root){
- if(root->id == id)
- return true;
- root = root->next;
- }
- return false;
- }
- bool isTarif(int id) {
- tarif *root = this->headListTarif;
- while(root){
- if(root->id == id)
- return true;
- root = root->next;
- }
- return false;
- }
- bool isDogovor(int id) {
- dogovor *root = this->headListDogovor;
- while(root){
- if(root->id == id)
- return true;
- root = root->next;
- }
- return false;
- }
- bool isDogovorAbonentId(int id) {
- dogovor *root = this->headListDogovor;
- while(root){
- if(root->id_abonent == id)
- return true;
- root = root->next;
- }
- return false;
- }
- bool isRazgovorAbonentId(int id) {
- razgovor *root = this->headListRazgovor;
- while(root){
- if(root->id_abonent == id)
- return true;
- root = root->next;
- }
- return false;
- }
- bool isDogovorTarifId(int id) {
- dogovor *root = this->headListDogovor;
- while(root){
- if(root->id_tarif == id)
- return true;
- root = root->next;
- }
- return false;
- }
- bool isDate(int year, int month, int day) {
- if((year > 1000) && (year < 3000) && (month >= 1) && (month <= 12) && (day >= 1) && (day <= 31)){
- return true;
- } else {
- return false;
- }
- }
- void removeAbonent(abonent *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- if(this->isDogovorAbonentId(root->id)) {
- printf("Nelza udalit abonenta imeushego dogovor\n");
- return;
- }
- root = root->next;
- printf("Delete Abonent Id = %d\n", id);
- return;
- }
- this->removeAbonent(root->next, id);
- }
- void removeTarif(tarif *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- if(this->isDogovorTarifId(root->id)) {
- printf("nevosmogno udalit tarif, else na nego imeetsa dogovor\n");
- return;
- }
- root = root->next;
- printf("Delete Tarif Id = %d\n", id);
- return;
- }
- this->removeTarif(root->next, id);
- }
- void removeDogovor(dogovor *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- if(this->isRazgovorAbonentId(root->id_abonent)) {
- printf("nevosmogno udalit dogovor, else u abonenta est razgovors!\n");
- }
- root = root->next;
- printf("Delete Dogovor Id = %d\n", id);
- return;
- }
- this->removeDogovor(root->next, id);
- }
- void removeRazgovor(razgovor *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- root = root->next;
- printf("Delete Razgovor Id = %d\n", id);
- return;
- }
- this->removeRazgovor(root->next, id);
- }
- void editAbonent(abonent *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- printf("\nEdit Abonent id = %d\nFio: %s\nAdres: %s\nTelephone: %s\n",
- root->id,
- root->fio,
- root->adres,
- root->telefon);
- cin.get();
- printf("Input fio\n");
- cin.getline(root->fio, 100);
- printf("Input Adres\n");
- cin.getline(root->adres, 100);
- printf("Input telephone\n");
- cin.getline(root->telefon, 100);
- printf("Abonent id: %d good edit\n", root->id);
- return;
- }
- this->editAbonent(root->next, id);
- }
- void editTarif(tarif *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- printf("\nEdit Tarif id = %d\nName: %s\nCena min: %0.2f\nCena min Mejgorod: %0.2f\n",
- root->id,
- root->name,
- root->cena_min,
- root->cena_min_mejgorod);
- cin.get();
- printf("Input name\n");
- cin.getline(root->name, 100);
- printf("Input cena min\n");
- if(!scanf("%f", &root->cena_min)) {
- printf("Invalid cena!\n");
- return;
- }
- printf("Input cena min mejgorod\n");
- if(!scanf("%f", &root->cena_min_mejgorod)) {
- printf("Invalid cena!\n");
- return;
- }
- printf("Tarif id: %d good edit\n", root->id);
- return;
- }
- this->editTarif(root->next, id);
- }
- void editDogovor(dogovor *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- printf("Edit Dogovor id = %d\nId abonent: %d\nId tarif: %d\nDate: %d.%d.%d\nTip telephone: %d\nLgota: %d\n",
- root->id,
- root->id_abonent,
- root->id_tarif,
- root->date.year,
- root->date.month,
- root->date.day,
- root->tip_telephone,
- root->lgota);
- while(true) {
- printf("Input id abonent\n");
- if(!scanf("%d", &root->id_abonent)) {
- printf("Invalid id abonent!\n");
- return;
- };
- if(this->isAbonent(root->id_abonent)){
- break;
- } else {
- printf("Not id abonent\n");
- }
- }
- while(true) {
- printf("Input id tarif\n");
- if(!scanf("%d", &root->id_tarif)) {
- printf("Invalid id tarif!\n");
- return;
- }
- if(root->id_tarif == -1) {
- break;
- }
- if(this->isTarif(root->id_tarif)){
- break;
- } else {
- printf("Not id tarif\n");
- }
- }
- while(true) {
- printf("Input data year.month.day\n");
- if(!scanf("%d.%d.%d", &root->date.year, &root->date.month, &root->date.day)) {
- cin.get();
- printf("Invalid date\n");
- return;
- }
- if(root->date.year == -1 || root->date.month == -1 || root->date.day == -1) {
- break;
- }
- if(this->isDate(root->date.year, root->date.month, root->date.day)) {
- break;
- } else {
- printf("Invalid date!\n");
- }
- }
- printf("Input tip_telephone(0 or 1)\n");
- while(true) {
- if(!scanf("%d", &root->tip_telephone)) {
- printf("Invalid tip!\n");
- return;
- }
- if((root->tip_telephone == 1) || (root->tip_telephone == 0)) {
- break;
- } else {
- printf("Error input tip!\n");
- }
- }
- printf("Input lgota(0 or 1)\n");
- while(true) {
- if(!scanf("%d", &root->lgota)) {
- printf("Invalid tip!\n");
- return;
- }
- if((root->lgota == 1) || (root->lgota == 0)) {
- break;
- } else {
- printf("Error input lgota!\n");
- }
- }
- printf("dogovor id: %d good edit\n", root->id);
- return;
- }
- this->editDogovor(root->next, id);
- }
- void editRazgovor(razgovor *&root, int id) {
- if(root == NULL)
- return;
- if(root->id == id) {
- printf("Edit Razgovor id = %d\nDlitelnost: %d\nTip: %d\nId abonent: %d\nDate: %d.%d.%d\n",
- root->id,
- root->dlitelnost,
- root->tip,
- root->id_abonent,
- root->date.year,
- root->date.month,
- root->date.day);
- cin.get();
- printf("Input dlitelnost\n");
- if(!scanf("%d", &root->dlitelnost)) {
- printf("Invalid dlitelnost!\n");
- return;
- }
- printf("Input tip\n");
- while(true) {
- if(!scanf("%d", &root->tip)) {
- printf("Invalid tip!\n");
- return;
- }
- if((root->tip == 1) || (root->tip == 0)) {
- break;
- } else {
- printf("Error input tip!\n");
- }
- }
- while(true) {
- printf("Input id abonent\n");
- if(!scanf("%d", &root->id_abonent)) {
- printf("Invalid tip!\n");
- return;
- }
- if(root->id_abonent == -1) {
- break;
- }
- if(this->isAbonent(root->id_abonent)){
- break;
- } else {
- printf("Not id abonent\n");
- }
- }
- while(true) {
- printf("Input data year.month.day\n");
- if(!scanf("%d.%d.%d", &root->date.year, &root->date.month, &root->date.day)) {
- printf("Invalid tip!\n");
- return;
- }
- if(root->date.year == -1 || root->date.month == -1 || root->date.day == -1) {
- break;
- }
- if(this->isDate(root->date.year, root->date.month, root->date.day)) {
- break;
- } else {
- printf("Invalid date!\n");
- }
- }
- printf("Razgovor id: %d good edit\n", root->id);
- return;
- }
- this->editRazgovor(root->next, id);
- }
- void searchAbonent(char data[]) {
- abonent *root = this->headListAbonent;
- while(root != NULL) {
- if(!strcmp(root->fio, data) || !strcmp(root->adres, data) || !strcmp(root->telefon, data)) {
- this->printAbonentToId(root->id);
- }
- root = root->next;
- }
- return;
- }
- void searchTarif(char name[]) {
- tarif *root = this->headListTarif;
- while(root) {
- if(!strcmp(root->name, name)) {
- printf("Tarif id = %d\nName: %s\nCena min: %0.2f\nCena min Mejgorod: %0.2f\n",
- root->id,
- root->name,
- root->cena_min,
- root->cena_min_mejgorod);
- }
- root = root->next;
- }
- return;
- }
- tarif* getTarif(int id) {
- tarif *root = this->headListTarif;
- while(root) {
- if(root->id == id) {
- return root;
- }
- root = root->next;
- }
- return NULL;
- }
- dogovor* getDogovorIdAbonent(int id) {
- dogovor *root = this->headListDogovor;
- while(root) {
- if(root->id_abonent == id) {
- return root;
- }
- root = root->next;
- }
- return NULL;
- }
- void statAbonentMonth() {
- if(!this->headListAbonent ||
- !this->headListDogovor ||
- !this->headListRazgovor ||
- !this->headListTarif) {
- printf("Not data!\n");
- return;
- }
- int id;
- printf("Input Abonent Id:\n");
- scanf("%d", &id);
- abonent *rootAbonent = this->headListAbonent;
- dogovor *rootDogovor = NULL;
- tarif *rootTarif = NULL;
- razgovor *rootRazgovor = NULL;
- float month[15], cena;
- while(rootAbonent) {
- if(rootAbonent->id == id) {
- for(int i = 1; i <= 12; i++) {
- month[i] = 0;
- }
- rootDogovor = this->getDogovorIdAbonent(rootAbonent->id);
- rootTarif = this->getTarif(rootDogovor->id_tarif);
- rootRazgovor = this->headListRazgovor;
- printf("Abonent ID = %d | FIO: %s | telefon: %s | tip telefon: %d | lgota: %d |\n",
- rootAbonent->id,
- rootAbonent->fio,
- rootAbonent->telefon,
- rootDogovor->tip_telephone,
- rootDogovor->lgota);
- while(rootRazgovor) {
- if(rootRazgovor->id_abonent == rootAbonent->id) {
- if((bool)rootRazgovor->tip) {
- cena = rootTarif->cena_min_mejgorod;
- } else {
- cena = rootTarif->cena_min;
- }
- if((bool)rootDogovor->tip_telephone) {
- cena = cena * 0.6;
- }
- if((bool)rootDogovor->lgota) {
- cena = cena * 0.5;
- }
- month[rootRazgovor->date.month] += cena * rootRazgovor->dlitelnost/60;
- printf("Razgovor id: %d tip: %d, dlitelnost: %d, date: %d.%d.%d, cena: %0.2f\n",
- rootRazgovor->id,
- rootRazgovor->tip,
- rootRazgovor->dlitelnost,
- rootRazgovor->date.year,
- rootRazgovor->date.month,
- rootRazgovor->date.day,
- cena * rootRazgovor->dlitelnost / 60);
- }
- rootRazgovor = rootRazgovor->next;
- }
- for(int i = 1; i <= 12; i++) {
- printf("Month %d = %0.2f\n",
- i,
- month[i]);
- }
- }
- rootAbonent = rootAbonent->next;
- }
- return;
- }
- int countAbonent() {
- abonent *root = this->headListAbonent;
- int i = 0;
- while(root) {
- i++;
- root = root->next;
- }
- return i;
- }
- int countTarif() {
- tarif *root = this->headListTarif;
- int i = 0;
- while(root) {
- i++;
- root = root->next;
- }
- return i;
- }
- int countDogovor() {
- dogovor *root = this->headListDogovor;
- int i = 0;
- while(root) {
- i++;
- root = root->next;
- }
- return i;
- }
- int countRazgovor() {
- razgovor *root = this->headListRazgovor;
- int i = 0;
- while(root) {
- i++;
- root = root->next;
- }
- return i;
- }
- void load() {
- ifstream file;
- char fileName[100];
- printf("Vvedite path to file base ATC to load >> ");
- cin >> fileName;
- // file.open("I:/1.txt", ios::in);
- file.open(fileName, ios::in);
- int n;
- file >> n;
- for(int i = 0; i < n; i++) {
- abonent *root = (abonent*)malloc(sizeof(abonent));
- file >> root->id;
- file.get();
- file.getline(root->fio, sizeof(root->fio));
- file.getline(root->adres, sizeof(root->adres));
- file.getline(root->telefon, sizeof(root->telefon));
- root->next = this->headListAbonent;
- this->headListAbonent = root;
- }
- this->id_abonent = this->headListAbonent->id + 1;
- file >> n;
- for(int i = 0; i < n; i++) {
- tarif *root = (tarif*)malloc(sizeof(tarif));
- file >> root->id;
- file.get();
- file.getline(root->name, sizeof(root->name));
- file >> root->cena_min;
- file >> root->cena_min_mejgorod;
- root->next = this->headListTarif;
- this->headListTarif = root;
- }
- this->id_tarif = this->headListTarif->id + 1;
- file >> n;
- for(int i = 0; i < n; i++) {
- dogovor *root = (dogovor*)malloc(sizeof(dogovor));
- file >> root->id;
- file >> root->id_abonent;
- file >> root->id_tarif;
- file >> root->date.year;
- file >> root->date.month;
- file >> root->date.day;
- file >> root->tip_telephone;
- file >> root->lgota;
- root->next = this->headListDogovor;
- this->headListDogovor = root;
- }
- this->id_dogovor = this->headListDogovor->id + 1;
- file >> n;
- for(int i = 0; i < n; i++) {
- razgovor *root = (razgovor*)malloc(sizeof(razgovor));
- file >> root->id;
- file >> root->dlitelnost;
- file >> root->tip;
- file >> root->id_abonent;
- file >> root->date.year;
- file >> root->date.month;
- file >> root->date.day;
- root->next = this->headListRazgovor;
- this->headListRazgovor = root;
- }
- this->id_razgovor = this->headListRazgovor->id;
- printf("Base load!\n");
- file.close();
- }
- void save() {
- ofstream file;
- char fileName[100];
- printf("Vvedite path to file base ATC to save >> ");
- cin >> fileName;
- // file.open("I:/.txt", ios::out);
- file.open(fileName, ios::out);
- file << this->countAbonent() << endl;
- abonent *rootAb = this->headListAbonent;
- while(rootAb) {
- file << rootAb->id << endl;
- file << rootAb->fio << endl;
- file << rootAb->adres << endl;
- file << rootAb->telefon << endl;
- rootAb = rootAb->next;
- }
- file << this->countTarif() << endl;
- tarif *rootTa = this->headListTarif;
- while(rootTa) {
- file << rootTa->id << endl;
- file << rootTa->name << endl;
- file << rootTa->cena_min << endl;
- file << rootTa->cena_min_mejgorod << endl;
- rootTa = rootTa->next;
- }
- file << this->countDogovor() << endl;
- dogovor *rootDo = this->headListDogovor;
- while(rootDo) {
- file << rootDo->id << endl;
- file << rootDo->id_abonent << endl;
- file << rootDo->id_tarif << endl;
- file << rootDo->date.year << endl;
- file << rootDo->date.month << endl;
- file << rootDo->date.day << endl;
- file << rootDo->tip_telephone << endl;
- file << rootDo->lgota << endl;
- rootDo = rootDo->next;
- }
- file << this->countRazgovor() << endl;
- razgovor *rootRa = this->headListRazgovor;
- while(rootRa) {
- file << rootRa->id << endl;
- file << rootRa->dlitelnost << endl;
- file << rootRa->tip << endl;
- file << rootRa->id_abonent << endl;
- file << rootRa->date.year << endl;
- file << rootRa->date.month << endl;
- file << rootRa->date.day << endl;
- rootRa = rootRa->next;
- }
- printf("Base save!\n");
- }
- void help(int act) {
- printf("Select the action:\n");
- switch(act) {
- case 0:
- printf("1 - Abonent\n2 - Tarif\n3 - Dogovor\n4 - Razgovor\n5 - Statistic\n6 - Base\n0 - exit\n");
- break;
- case 1:
- printf("1 - add abonent\n2 - print abonent\n3 - remove abonent\n4 - print to id abonent\n5 - search abonent input fio or adres or telefon:\n6 - edit abonent\n0 - exit\n");
- break;
- case 2:
- printf("1 - add tarif\n2 - print tarif\n3 - remove tarif\n4 - edit tarif\n5 - search tarif to name:\n0 - exit\n");
- break;
- case 3:
- printf("1 - add dogovor\n2 - print dogovor\n3 - remove dogovor\n4 - edit dogovor\n0 - exit\n");
- break;
- case 4:
- printf("1 - add razgovor\n2 - print razgovor\n3 - remove razgovor\n4 - edit razgovor\n0 - exit\n");
- break;
- case 5:
- printf("1- load\n2 - save\n");
- default:
- break;
- };
- return;
- }
- void start() {
- printf("Welcome to ATC!\n");
- int act, tmp;
- char tmp1[2000];
- while(true) {
- this->help(0);
- printf(">> ");
- if(scanf("%d", &act)) {
- switch(act) {
- case 1:
- cin.clear();
- this->help(1);
- printf("Abonent >> ");
- if(scanf("%d", &act)) {
- switch(act) {
- case 1:
- this->addAbonent();
- break;
- case 2:
- this->printAbonent();
- break;
- case 3:
- printf("Input Id Abonent to remove:\n");
- scanf("%d", &tmp);
- this->removeAbonent(this->headListAbonent, tmp);
- break;
- case 4:
- printf("Input id Abonent:\n");
- scanf("%d", &tmp);
- this->printAbonentToId(tmp);
- break;
- case 5:
- cin.get();
- printf("Input fio or adres or telefon:\n");
- cin.getline(tmp1, 100);
- this->searchAbonent(tmp1);
- break;
- case 6:
- printf("Input id Abonent to edit:\n");
- scanf("%d", &tmp);
- this->editAbonent(this->headListAbonent, tmp);
- break;
- case 0:
- break;
- default:
- printf("Invalid act\n");
- break;
- }
- }
- break;
- case 2:
- this->help(2);
- printf("Tarif >> ");
- if(scanf("%d", &act)) {
- switch(act) {
- case 1:
- this->addTarif();
- break;
- case 2:
- this->printTarif();
- break;
- case 3:
- printf("Input Id Tarif to remove:\n");
- scanf("%d", &tmp);
- this->removeTarif(this->headListTarif, tmp);
- break;
- case 4:
- printf("Input Id Tarif to edit:\n");
- scanf("%d", &tmp);
- this->editTarif(this->headListTarif, tmp);
- break;
- case 5:
- cin.get();
- printf("Input name Tarif:\n");
- cin.getline(tmp1, 100);
- this->searchTarif(tmp1);
- break;
- case 0:
- break;
- default:
- printf("Invalid act\n");
- break;
- }
- }
- break;
- case 3:
- this->help(3);
- printf("Dogovor >> ");
- if(scanf("%d", &act)) {
- switch(act) {
- case 1:
- this->addDogovor();
- break;
- case 2:
- this->printDogovor();
- break;
- case 3:
- printf("Input Id Dogovor to remove:\n");
- scanf("%d", &tmp);
- this->removeDogovor(this->headListDogovor, tmp);
- break;
- case 4:
- printf("Input Id Dogovor to edit:\n");
- scanf("%d", &tmp);
- this->editDogovor(this->headListDogovor, tmp);
- break;
- case 0:
- break;
- default:
- printf("Invalid act\n");
- break;
- }
- }
- break;
- case 4:
- this->help(4);
- printf("Razgovor >> ");
- if(scanf("%d", &act)) {
- switch(act) {
- case 1:
- this->addRazgovor();
- break;
- case 2:
- this->printRazgovor();
- break;
- case 3:
- printf("Input Id Razgovor to remove:\n");
- scanf("%d", &tmp);
- this->removeRazgovor(this->headListRazgovor, tmp);
- break;
- case 4:
- printf("Input Id Razgovor to edit:\n");
- scanf("%d", &tmp);
- this->editRazgovor(this->headListRazgovor, tmp);
- break;
- case 0:
- break;
- default:
- printf("Invalid act\n");
- break;
- }
- }
- break;
- case 5:
- this->statAbonentMonth();
- break;
- case 6:
- this->help(5);
- printf("Base >> ");
- if(scanf("%d", &act)) {
- switch(act) {
- case 1:
- this->load();
- break;
- case 2:
- this->save();
- break;
- case 0:
- break;
- default:
- printf("Invalid act\n");
- break;
- }
- }
- break;
- case 0:
- printf("Bye!\n");
- return;
- break;
- default:
- printf("Invalid act\n");
- break;
- }
- }
- }
- }
- };
- int main() {
- systemATC sys[10];
- int act = 0;
- while(1) {
- printf("ATC NUM(1 to 5), exit(0) >> ");
- if(!scanf("%d", &act)) {
- printf("Invalid ACT!\n");
- return 0;
- }
- if(act == 0) {
- printf("Bye!\n");
- return 0;
- }
- if((act > 5) || (act < 0)) {
- printf("Invalid!\n");
- continue;
- }
- sys[act].start();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement