У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


create file '%s'.\n",filename);

return 1;

}

rob=first;

while(rob->next!=NULL)

{

fprintf(out,"%-3i %-15s %c %c %-14s %20s\n",++i,

rob->sPrizv,rob->cInic1,rob->cInic2,

rob->sPhone,rob->sAddr);

rob=rob->next;

}

fclose(out);

return 0;

}

int read_from_file(char *filename)

{

FILE *in;

int i;

if ((in = fopen(filename, "r"))

== NULL)

{

printf("Cannot open file '%s'.\n",filename);

return 1;

}

records=0;

rob=first;

while(!feof(in))

{

fscanf(in,"%i %15s %c %c %14s %20s\n",&i,rob->sPrizv,

&rob->cInic1,&rob->cInic2,rob->sPhone,rob->sAddr);

records++;

if (rob->next==NULL) {

rob->next= new stAbonent;

rob=rob->next;

rob->next=NULL;

} else {

rob=rob->next;

}

}

rob->next=NULL;

fclose(in);

return 0;

}

void main (void)

{

char c;

//create an empty list

records=0;

first = new stAbonent;

rob=first;

rob->next=NULL;

//read saved database

read_from_file("A");

//create backup copy

save_to_file("A.BAK");

do{

//show menu

clrscr();

printf("[ESC] - Вихiд\n");

printf("[ 1 ] - Додaти запис\n");

printf("[ 2 ] - Вилучити запис\n");

printf("[ 3 ] - Показати записи\n");

printf("[ 4 ] - Вiдмiнити останню дiю\n");

printf("------------------------\n");

printf("В базi записiв: %i\n\n",records);

showmatch();

c=getch();

switch (c)

{

case '1': {

save_to_file("A.BAK"); //create a backup copy

addrecord();

save_to_file("A");

break;

}

case '2': {

save_to_file("A.BAK"); //create a backup copy

deleterecord();

save_to_file("A");

break;

}

case '3': {

showrecords();

break;

}

case '4': {

//restore from backup

read_from_file("A.BAK");

save_to_file("A");

break;

}

}

}while(c!=0x1B);

}

Вміст файлу “А”

1 Мельничук Р В 203178 Шевченка,21

2 Будуркевич А О 435345 Чорновoла,12

3 Мельниченкo А А 453455 Вовчинецька,225

4 Ющенко Е T 566545 Тичини,11

5 Рондиль С Р 645645 Донцова,12

6 Iваночко Й П 648781 Симоненка,5

7 Козлюк I А 564564 Коновальця,45

8 Чорнописький Н М 264644 Бандери,1

9 Пiдпiльний Г М 541111 Прутська,11

10 Босий I А 232323 Шевченка,12

11 Мартинов Е Н 321331 Мазепи,243a

12 Падалкiн Й К 132323 Франка,11,кв.12

13 Козлодоев С Г 564565 Шевченка,123

Вміст файлу “В”

1 Мельничук Р В 203178 Шевченка,21

10 Босий I А 232323 Шевченка,12

3.Опис програми

Для зберігання даних в пам’яті ми використали зв’язаний список, кожен елемент якого містить інформацію про поля, а також вказівник на наступний елемент списку, або ж значення NULL, якщо запис являється останнім в списку. Список є однонаправленим, номера записів не зберігаються в структурі а вираховуються, вказівник на перший елемент списку зберігається в глобальній змінній first.

Програма складається з наступних функцій:

main() – головна функція, очищає екран, створює порожній список, зчитує дані з файлу, виводить меню і дає можливість користувачу обрати необхідну операцію. Вихід з програми відбувається по натисненню клавіші <ESC>

addrecord() – додає в кінець списку новий запис, використовуючи введені користувачем дані

deleterecord() – запитує в користувача номер запису, та у випадку вірного вводу вилучає запис з введеним номером

showrecords() – виводить на екран поточний стан бази даних

showmatch() – шукає в списку елементи що задовільняють заданій умові (номер телефона містить цифру “3” і проживає по вул..Шевченка) і виводить цю інформацію на екран та в файл

save_to_file() – записує дані з пам’яті в файл, ім’я якого передається як параметр. Якщо файла з таким іменем не існує, він створюється, якщо існує – перезаписується.

read_from_file() – зчитує дані з файла в список.

Висновки

В даній курсовій роботі розроблено програму для роботи з відомостями про абонентів АТС. Для зберігання даних в пам’яті використано списки, оскільки з даними, що зберігаються таким чином, зручно проводити операції вилучання, а також це не накладає на програму жорстких обмежень по максимальній кількості даних, що можуть оброблятись.

Програма має меню, за допомогою якого здійснюється вибір необхідної операції. Передбачено наступні режими роботи: «ввід нових даних», «вилучення», «перегляд» та «відміна останньої операції». Нові дані додаються в кінець списку. В режимі вилучення програма спитає номер запису, що необхідно вилучити. Для забезпечення можливості відновлення попереднього стану, перед кожною зміною списку, його стан фіксується в резервному файлі, звідки цю інформацію можна відновити в разі необхідності.

Інформація про кількість записів в базі даних, і про абонентів з цифрою “3” в номері телефону та проживаючих по вул. Шевченка виводиться під головним меню і оновлюється автоматично, під час будь-яких операцій з списком.

Перелік використаних літературних джерел

Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++. – Харьков: Фолио, 2002. – 500 с.

Г. Шилдт. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998. 620с.

К. Джамса. Учимся программировать на языке C++: Пер. с англ. - Москва: Мир, 1997. 320с.

ДОДАТКИ

Додаток А

Головне меню із результатами пошуку

Режим вводу нових записів

Режим вилучення записів

Режим перегляду


Сторінки: 1 2