Программа «Словарь» (телефонный справочник)
Дейтл Х. М., Дейтл П.Дж. Как программировать на С. — Москва, «Бином», 2004, — 799 с. Cout << rus («Список отсортирован. Нажмите „l“ для промотра всех контактов.»); Поменять номера местами, если не в порядке возрастания. Вызов программы Программа запускается с помощью C++ Builder. Case 'e': cout <
Программа «Словарь» (телефонный справочник) (реферат, курсовая, диплом, контрольная)
Техническое задание на разработку программы Словарь — это индексируемая структура данных, доступ к элементам которой выполняется только по индексу (ключу). Элемент словаря состоит из ключа и связанного с ключом значения. Пример словаря: русско-английский словарь, элементы которого содержат слово на русском языке (ключ) и перевод слова на английский язык, например, {[список], list}. Для хранения словаря в оперативной памяти использовать динамический массив.
Операции словаря:
• создание пустого словаря;
• добавление элемента в словарь;
• исключение элемента из словаря;
• поиск элемента словаря по ключу;
• изменение значения элемента;
• вывод словаря в порядке возрастания ключей.
Описание работы программы
1.Общие сведения Программа «Словарь» (телефонный справочник) Для запуска необходима программа C++ Builder 6 или более новая.
1.1 Язык программирования C++.
2. Функциональное назначение программы В программе предусмотрено считывание словаря в начале работы программы из текстового файла и запись словаря в файл перед завершением работы программы. Элементом словаря является абонент телефонной сети (номер телефона, ФИО, паспортные данные). Поле «номер телефона» является ключом. ФИО и паспортные данные являются значением элемента словаря.
3. Описание логической структуры программы Структура Contact включает в себя строки, содержащие данные пользователей.
4.Технические средства, которые используются при работе программы Для запуска программы требуется ЭВМ с процессором архитектуры x86 в стандартном окружении.
5. Вызов программы Программа запускается с помощью C++ Builder.
6.Входные данные При запуске программы пользователю будет предложено ввести число, соответствующее нужной операции. Список операций и соответствующих им чисел выводится при запуске.
7.Выходные данные Выходные данные зависят от выбора операции. Если вывод в файл выведет всё содержимое словаря в файл, поиск вернёт все данные по ключу или сообщение об ошибке, а добавление в словарь сообщит об успешности операции.
1) Страуструп Бьерн. «Программирование: принципы и практика использования C++, исправленное издание». Москва, Издательство: «Бином», 2011. -1136 с.
2) Андреева Л. П. «Программирование для ЭВМ. Указания для выполнения лабораторных работ», Москва, МИРЭА, 2012 — 16 с.
3) Савич У., «Программирование на С++ во всей полноте», Санкт-Петербург, издательство «Питер», 2005, — 784 с.
4) Дейтл Х. М., Дейтл П.Дж. Как программировать на С. — Москва, «Бином», 2004, — 799 с.
программа словарь файл абонент
Приложения Текст программы Демонстрационная работа к программе «Словарь» .
Задача: В демонстрационной программе предусмотреть считывание словаря в начале работы программы из текстового файла и запись словаря в файл перед завершением работы программы. Элементом словаря является абонент телефонной сети (номер телефона, ФИО, паспортные данные). Поле «номер телефона» является ключом. ФИО и паспортные данные являются значением элемента словаря.
*/
#include
#include
#include
using namespace std;
string rus (char s[]);
struct Contact {
string number, name, pass;
};
Contact contactList[10 000];
int rec_num = 0;
int num_entries;
void ReadFile () {
fstream input («PhoneData.txt»);
while (!input.eof () && !input.fail ()){
input >> contactList[rec_num]. number
>> contactList[rec_num]. name;
contactList[rec_num].pass;
rec_num++;
}
cout << rus («Книга прочтена.») << endl;
num_entries = rec_num;
input.close ();
return;
}
void StoreFile () {
ofstream F («PhoneData.txt»);
rec_num = 0;
while (rec_num < num_entries){
F << contactList[rec_num]. number << ««
<< contactList[rec_num]. name << ««
<< contactList[rec_num]. pass << «» << endl;
rec_num++;
}
cout << rus («Телефонная книга сохранена») << endl;
return;
}
void add_name (string number, string name, string pass){
contactList[num_entries]. number = number;
contactList[num_entries]. name = name;
contactList[num_entries]. pass = pass;
num_entries++;
return;
}
void retrieve_number (string number){
for (int i = 0; i < num_entries; i++) {
cout << rus («Телефонный номер: «)<<< endl<<
rus («Имя: «) << contactList[i]. name << endl
<< rus («Паспорт: «) << contactList[i]. pass << endl;
return; }
cout << rus («Номер не найден») << endl;
return;
}
void sortList () {
int i;
Contact temp;
for (int j=0; j < num_entries; j++) {
for (i = j+1; i < num_entries; i++) {
//Поменять номера местами, если не в порядке возрастания
temp = contactList[j];
contactList[j] = contactList[i];
contactList[i] = temp;
} }
cout << rus («Список отсортирован. Нажмите „l“ для промотра всех контактов.»);
}
void listAllContacts () {
int i = 0;
while (i < num_entries) {
cout << «— «<< contactList[i]. name << ««
<< contactList[i]. number << endl
<< «— «<< contactList[i]. pass << endl << endl;
i++;
} }
void del_number (string number, int rec_num = 0){
int i=0;
contactList[rec_num] = contactList[rec_num+1];
return;}
void remake (string number, string name, string pass){
int i=0;
cout<
cin>>number>>pass;
return;}
int main (){
string name, number, pass;
string FileName;
char command;
FileName = «PhoneData.txt» ;
ReadFile ();
cout << rus («Используйте:»)<
<<
<<
<<
<<
<<
<<
<<
<
cin >> command;
while (command ≠ 'q'){
switch (command){
case 'e': cout << rus («Введите телефонный номер: «); cin >> number;
cout << rus («Введите ФИО: «); cin. ignore (); getline (cin, name);
cout << rus («Введите номер паспорта: «);
cin>>pass;
add_name (number, name, pass); break;
case 'f': cout<
cin >> number; retrieve_number (number); break;
case 's': sortList (); break;
case 'l': listAllContacts (); break;
case 'd': cout<> number;
del_number (number); break;
case 'r': cout<
cin>> number; remake (number, name, pass); break;
}
cout << rus («Команда: «); cin >> command;
}
StoreFile ();
cout << rus («Готово!»);
return 0;
}
// перевод кодировки Windows в Dos
string rus (char s[])
{
string t;
t=s;
int i=0;
while (s[i]≠0)
{
if (s[i]>='А'&& s[i]<='п') t[i]-=64;
if (s[i]>='р'&& s[i]<='я') t[i]-=16;
if (s[i]=='Ё') t[i]=240;
if (s[i]=='ё') t[i]=241;
i++;
}
return t;
}