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

Создать базу из трех сотрудников, где будут храниться их имена - C++

Восстановить пароль Регистрация
 
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
12.07.2014, 05:53     Создать базу из трех сотрудников, где будут храниться их имена #1
суть задачи: нужно создать базу из трех сотрудников, где будут храниться их имена, з.п, должности, дата приема на работу. должность должна быть в перечислении выражена, при чем пользователь должен ввести только первую букву должности, а на выходе должность должна быть написана полностью. все остальное структуры. все значения должны вводиться пользователем а потом выводиться на экран. вот что я набросала, но оно, естессно, не работает. кошмар на улице вязов. объясните где ошибки.

C++ (Qt)
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
#include <iostream>
using namespace std;
 
struct employee 
{
    char empl[15];
    double salary;
    etype post;
    date data; 
 
};
struct date
{
    int day, month, year;
};
enum etype 
{
    laborer, secretary, manager, accountant, executive, researcher
};
int main()
{
    employee empl_1, empl_2, empl_3;
    char ch = '/', s;
    cout << "name of the employee 1, salary, date of employment (xx/xx/xxxx), post (1-st letter)" << endl;
    cin >> empl_1.empl >> empl_1.salary >> empl_1.data.day >> ch >> empl_1.data.month >> ch >> empl_1.data.year >> s;
     switch(s)
    {
     case 'l':{empl_1.post=laborer;break;}
    case 's':{empl_1.post=secretary;break;}
    case 'm':{empl_1.post=manager;break;}
    case 'a':{empl_1.post=accountant;break;}
    case 'e':{empl_1.post=executive;break;}
    case 'r':{empl_1.post=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "name of the employee 2, salary, date of employment, post (1-st letter)" << endl;
    cin >> empl_2.empl >> empl_2.salary >> empl_2.data.day >> ch >> empl_2.data.month >> ch >> empl_2.data.year >> s;
     switch(s)
    {
     case 'l':{empl_2.post=laborer;break;}
    case 's':{empl_2.post=secretary;break;}
    case 'm':{empl_2.post=manager;break;}
    case 'a':{empl_2.post=accountant;break;}
    case 'e':{empl_2.post=executive;break;}
    case 'r':{empl_2.post=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "name of the employee 3, salary, date of employment, post (1-st letter)" << endl;
    cin >> empl_3.empl >> empl_3.salary >> empl_3.data.day >> ch >> empl_3.data.month >> ch >> empl_3.data.year >> s;
     switch(s)
    {
     case 'l':{empl_3.post=laborer;break;}
    case 's':{empl_3.post=secretary;break;}
    case 'm':{empl_3.post=manager;break;}
    case 'a':{empl_3.post=accountant;break;}
    case 'e':{empl_3.post=executive;break;}
    case 'r':{empl_3.post=researcher;break;}
    default:cout << "Не корректный ввод";
    }
 
    cout << "1-st employee " <<  empl_1.empl << ", " << empl_1.salary << "$, " << empl_1.data.day << ch << empl_1.data.month << ch << empl_1.data.year << "date of employment, " << endl;
    cout << "post" << endl;
          switch(empl_1.post)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    };
    cout << "2-nd employee " <<  empl_2.empl << ", " << empl_2.salary << "$, " << empl_2.data.day << ch << empl_2.data.month << ch << empl_2.data.year << "date of employment, " << endl;
    cout << "post" << endl;
          switch(empl_2.post)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    };
          cout << "3-rd employee " <<  empl_3.empl << ", " << empl_3.salary << "$, " << empl_3.data.day << ch << empl_3.data.month << ch << empl_3.data.year << "date of employment, " << endl;  
    cout << "post" << endl;
          switch(empl_3.post)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    };
    system ("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
12.07.2014, 09:56     Создать базу из трех сотрудников, где будут храниться их имена #2
Ваш вариант прекрасно работает, только перенесите в начало (перед struct employee)
C++
1
2
3
4
5
6
7
8
9
10
struct date
{
    int day, month, year;
};
enum etype 
{
    laborer, secretary, manager, accountant, executive, researcher
};
struct employee
{ ....
olper
12.07.2014, 12:45
  #3

Не по теме:

Цитата Сообщение от Pari Посмотреть сообщение
не работает
Лучше различать "не работает" и "не собирается"("не компилируется", "не линкуется").

И еще, я бы подумал над функцией
C++
1
void SetEmployee (employee & empl);
мне кажется она бы не помешала, возможно с какими-то изменениями в сигнатуре, но точно не помешала бы.
Хотя бы для читаемости

Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
12.07.2014, 13:32  [ТС]     Создать базу из трех сотрудников, где будут храниться их имена #4
Цитата Сообщение от olper Посмотреть сообщение
мне кажется она бы не помешала, возможно с какими-то изменениями в сигнатуре, но точно не помешала бы.
Хотя бы для читаемости
я еще не знаю что такое void) только пару недель программированием занимаюсь по учебнику, пока что впереди)

Добавлено через 5 минут
а кто-нибудь может подсказать, как сделать программу не такой большой, поубирать эти многократные switch, но с учетом того, что я знаю только циклы и структуры?
olper
24 / 24 / 11
Регистрация: 02.12.2013
Сообщений: 75
12.07.2014, 14:22     Создать базу из трех сотрудников, где будут храниться их имена #5
Цитата Сообщение от Pari Посмотреть сообщение
кто-нибудь может подсказать
Цитата Сообщение от Pari Посмотреть сообщение
я знаю только циклы и структуры
C++
1
employee empls[3];
подойдет для подсказки?
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
12.07.2014, 15:30  [ТС]     Создать базу из трех сотрудников, где будут храниться их имена #6
Цитата Сообщение от olper Посмотреть сообщение
подойдет для подсказки?
не поняла

Добавлено через 25 минут
я только знаю что это массив, но как с ним работать еще не знаю. и зачем?..
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
12.07.2014, 15:46     Создать базу из трех сотрудников, где будут храниться их имена #7
Цитата Сообщение от Pari Посмотреть сообщение
я еще не знаю что такое void) только пару недель программированием занимаюсь по учебнику, пока что впереди)
Что это за учебник такой, где про базовые типы рассказывается после структкр, перечислений и прочего?
olper
24 / 24 / 11
Регистрация: 02.12.2013
Сообщений: 75
12.07.2014, 15:51     Создать базу из трех сотрудников, где будут храниться их имена #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    for (int empl_number=0;empl_number<3;++empl_number)
    {       
        employee &empl = empls[empl_number];
        char ch = '/', s;
        cout << "name of the employee "<<(empl_number+1)<<", salary, date of employment (xx/xx/xxxx), post (1-st letter)" << endl;
        cin >> empl.empl >> empl.salary >> empl.data.day >> ch >> empl.data.month >> ch >> empl.data.year >> s;
        switch(s)
        {
        case 'l':{empl.post=laborer;break;}
        case 's':{empl.post=secretary;break;}
        case 'm':{empl.post=manager;break;}
        case 'a':{empl.post=accountant;break;}
        case 'e':{empl.post=executive;break;}
        case 'r':{empl.post=researcher;break;}
        default:cout << "Не корректный ввод";
        }
    }
если не нравится
C++
1
employee &empl = empls[empl_number];
можно вместо "empl" писать "empls[empl_number]", а строчку с ужасным "&" удалить вообще
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 15:54     Создать базу из трех сотрудников, где будут храниться их имена
Еще ссылки по теме:

Создать список отделов и вычислить общую сумму заработной платы сотрудников каждого отдела C++
При помощи структуры ввести имена и оклады троих сотрудников C++
Работа со списками (создать список сотрудников) C++

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

Или воспользуйтесь поиском по форуму:
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
12.07.2014, 15:54  [ТС]     Создать базу из трех сотрудников, где будут храниться их имена #9
Цитата Сообщение от orange_fox Посмотреть сообщение
Что это за учебник такой, где про базовые типы рассказывается после структкр, перечислений и прочего?
Лафоре ООП, далее по заглавию идут функции, потом объекты и классы а уже потом массивы и строки. зато объясняется достаточно толково.

Добавлено через 1 минуту
Цитата Сообщение от olper Посмотреть сообщение
можно вместо "empl" писать "empls[empl_number]", а строчку с ужасным "&" удалить вообще
спасибо
Yandex
Объявления
12.07.2014, 15:54     Создать базу из трех сотрудников, где будут храниться их имена
Ответ Создать тему
Опции темы

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