Форум программистов, компьютерный форум CyberForum.ru

Написать программу – электронную базу данных, хранящую информацию об абонентах телефонной компании - C++

Восстановить пароль Регистрация
 
Pavel_2011
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 66
13.04.2014, 20:23     Написать программу – электронную базу данных, хранящую информацию об абонентах телефонной компании #1
Ребята, напишите до конца программу. Не могу понять, как сделать сортировку. Нужно, чтобы после каждого пункта был вывод. Т.е. нужно вести улицу, я ввожу и он сразу распечатывает людей, который живут на этой улице. По телефону также. Исправьте ошибки в программе. если они конечно есть и сделайте, как она должна работать программа.

Условие программы:

1. Написать программу – электронную базу данных, хранящую информацию об абонентах телефонной компании. Каждый абонент компании описывается следующими полями: номер телефона, фамилия, имя, отчество, улица, дом, квартира. Программа должна выполнять следующие действия:
• ввод с клавиатуры данных не менее чем о 8 людях (в массив структур);
• вывод данных об абонентах, чей номер начинается с заданных четырех цифр (цифры вводятся с клавиатуры);
• вывод данных о людях, проживающих на улице, название которой вводится пользователем с клавиатуры;
• упорядочить данные массива по номерам телефонов в порядке возрастания и вывести все данные массива на экран.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>
#include <windows.h>
#include <string.h>
#include <iomanip>
using namespace std;
 
const int nmax=100;
struct person //Объявление структуры
{
    char   fam[30], //Фамилия
               name[25], //Имя
               otch[25], //отчество
               street[30], //Улица
               phone[12];
    int   house, flat;//номер дома, квартиры, номер телефона
};
 
int vvod(person spisok[], int n)
{ 
  int  i=0;
  cout<<"Введите фамилию абонента: ";
  while(cin>>spisok[i].fam,strcmp(spisok[i].fam,"end")!=0&&i<n)
   {
     cout<<"Введите имя: "; SetConsoleCP(1251); cin>>spisok[i].name; SetConsoleCP(866);
     cout<<"Введите отчество: "; SetConsoleCP(1251); cin>>spisok[i].otch;SetConsoleCP(866);
     cout<<"Введите улицу: "; SetConsoleCP(1251); cin>>spisok[i].street; SetConsoleCP(866);
     cout<<"Введите номер дома: ";SetConsoleCP(1251); cin>>spisok[i].house; SetConsoleCP(866);
     cout<<"Введите номер квартиры: ";SetConsoleCP(1251); cin>>spisok[i].flat;SetConsoleCP(866);
     cout<<"Введите номер телефона: ";SetConsoleCP(1251); cin>>spisok[i].phone;SetConsoleCP(866);
     i++;
     if(i<n) cout<<"Введите следующую фамилию: ";
     else break;
   }
  if (i<=n) return i;
  return n;
 }
 
void print(person spisok[], int n)
 
{SetConsoleCP(866);
 cout<<"Исходная информация об абонентах"<<endl;
 cout<<setw(13)<<left<<"Фамилия"<<setw(13)<<"Имя"<<
 setw(13)<<"Отчество"<<setw(12)<<"Улица"<<setw(7)<<"Дом"<<
 setw(8)<<"Квартира"<<setw(5)<<"Телефон"<<endl;
 for (int i=0; i<n; i++)
 {
    cout<<setw(13)<<spisok[i].fam<<setw(13)<<
  spisok[i].name<<setw(13)<<spisok[i].otch<<setw(12)<<spisok[i].street<<setw(7)<< spisok[i].house <<setw(8)
 << spisok[i].flat<<setw(5)<< spisok[i].phone <<endl;   
 }
}
 
 
//Функция выводит данные об абонентах, проживающих на улице, 
//название которой вводится с клавиатуры
void dataStreet(char streetname[],person spisok[], int n)
{SetConsoleCP(866);
for (int i=0;i<n; i++)
    if (strcmp(spisok[i].street, streetname)==0) 
        cout<<setw(25)<<spisok[i].fam<<setw(20)<<spisok[i].name<<setw(25)
        <<spisok[i].otch<<setw(30)
        <<spisok[i].street<<setw(4)<<spisok[i].house<<setw(4)
        <<spisok[i].flat<<setw(10)<<spisok[i].phone<<endl;
}
 
//Функция сортировки данных массива по телефону 
void sortPhone(person spisok[], int n) //порядке (пузырек)
{ person z;
 bool fl;
 do
    { fl=1; //Флаг поднять
      for  (int i=0; i<n-1;i++)
        if(strcmp(spisok[i].phone,spisok[i+1].phone)>0)
    //Если они расположены не верно, то переставляем их местами
        {   
            z=spisok[i];
            spisok[i]=spisok[i+1];
            spisok[i+1]=z;
            fl=0; //Флаг опустить
            }
    }
    while (!fl); //Если флаг не опускался, то массив отсортирован
}
 
void printNumber(person spisok[], int n, char phonenum[])
{
    char search[4];
    for (int i=0;i<n; i++){
        for (int j=0;j<4;j++) search[j]=spisok[i].phone[j];
    if (strcmp(search, phonenum)==0) 
        cout<<
        setw(25)<<spisok[i].fam<<setw(20)<<spisok[i].name<<setw(25)<<spisok[i].otch<<setw(30)<<spisok[i].street<<setw(4)<<spisok[i].house<<setw(4)<<spisok[i].flat<<setw(10)<<spisok[i].phone<<endl;
    }
}
 
void main()
{
  setlocale(LC_ALL, "Russian");
  const int nmax=100; //Максимальный размер массива 
  person spisok[nmax];
  int i=0, n; //Число абонентов
  cout<<"Введите число абонентов от 1 до "<<nmax<<endl;
  cin>>n;
  int k= vvod(spisok,n);
  SetConsoleCP(866);
  print(spisok,k);
  char streetname[30],phonenum[4]; 
  cout<<"Введите первые 4 цифры"<<endl;
  cin>>phonenum;
  printNumber(spisok, k,phonenum);
  cout<<"Введите название улицы для поиска абонентов"<<endl;
  cin>>streetname;
  cout<<" Абоненты, проживающие на улице "<<streetname<<endl;
  dataStreet(streetname, spisok, k);
  
    //сортировка массива данных по Телефону
  sortPhone(spisok,k);
    //Вывод отсортированного массива на экран
  print(spisok,k);
  system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 20:23     Написать программу – электронную базу данных, хранящую информацию об абонентах телефонной компании
Посмотрите здесь:

C++ Программа, которая согласно запросу пользователя выводит информацию об абонентах
Написать программу, которая, согласно запросу пользователя, выводит информацию об абонентах C++
C++ Задача: написать программу электронной телефонной книги
C++ Составить программу, хранящую телефонный справочник и обеспечивающую выдачу телефона по фамилии
Для телефонной компании составить список клиентов, который должен содержать: C++
C++ Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию.З клавиатуры вводится имя компании, год основания
Написать программу, выдающую информацию об указанных данных C++
Составить данные об абонентах телефонной сети C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 19:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru