В паметта за съхраняване на таблицата се използва структура сортиран списък



Дата18.01.2017
Размер32.6 Kb.

  1. Задание

Да се състави програма, която поддържа електронна таблица с редове – записи с по две символни и три числови полета данните да се въвеждат от клавиатурата и да се записват в файл. Програмата подрежда редовете по азбучен ред на символното поле.

В паметта за съхраняване на таблицата се използва структура – сортиран списък.

Името на файла да се задава като параметър от командния ред при стартиране на програмата.

Проектирани функции на С++ да се запишат в библиотечен модул ххх.lib.

Да се документират: структурата на програмата, текстът и предназначението на проектираните функции, интерфейсът на програмата с потребителя.



  1. Реализация на програмата

Програмата е реализирана с файла наречен Diction.CPP, които съдържа един основен клас “ Diction”, реализиращ всички операции за работа с речника:

Съществуват два базови указателя: Diction *next, Diction *first и седем функции от тип public. За работа с тези данни са реализирани следните функции:
void add (); добавя нова дума в записа

void change (); променя думата или нейната дескрипция в записа

void del (); изтрива стара дума в записа

void print (); отпечатва на екрана целия запис

void load (); зарежда записа в паметта

void save (); създава и обновява файла Diction.txt

void sort (); сортира текущия запис
Сортирането в програмата е реализирано по метода на мехурчето.
В главната програма (т.е. void main ()) е реализирано меню за изпълнение на желаната операция, която се вика от потребителя. Към функциите void void change ();, void del (); са добавени подменюта за доопределяне на желаната операция. Съответно:
към void change()

Програмата изисква поредния номер на думата за промяна. Изписва на екрана избраната и прави потребителско питане за цмена на самата дума или за нейното значение. Ако съществува грешка на номера на въведената дума в менюто е реализирана операция стъпка назад.


към void del()

Тук програмата изисква пореден номер както в по горната, но тук не съществува възможност за връщане назад при грешка.

Останалите функции са скрити за потребителя или в програма е реализиран код за известие, че функцията вече е изпълнена.
Цялостен код на програмата:
#include

#include

#include

#include

#include

#include

#include
class Diction

{

private:



char word[30];

char descr[100];

Diction *next;

Diction *first;

public:

Diction()



{ first=NULL; }
void add();

void change();

void del();

void print();

void load();

void save();

void sort();

};

//========================================



void Diction::add()

{

Diction *cur;


clrscr();

cur = new Diction;

cout<<" Input the word :";

cin>>cur->word;

cout<<" Input the descr :";

cin>>cur->descr;

cur->next=first;

first=cur;

}

//========================================



void Diction::change()

{

unsigned i,N;



Diction *ptr;
cout<

cin>>N;


ptr=first;

for(i=1;i

if((ptr=ptr->next)==NULL)

{

cout<<" There not information to this number"<<



endl<<" Choice again low number !";

getch();


break;

}

if(ptr!=NULL)



{

cout<<" You select that word :"<

cout<word<<" "

<<" "<
descr<

cout<<" 1. Word"<

<<" 2. Description"<
<<" 3. Return"<
<<"Enter your choice for change: ";

cin>>i;


switch(i)

{

case 1:



cout<<" New word:";

cin>>ptr->word;

break;

case 2:


cout<<" New descr:";

cin>>ptr->descr;

break;

case 3:


return;

break;


}

}

}



//========================================

void Diction::del()

{

unsigned i,N;



Diction *ptr1,*ptr2;
cout<<" Input the number of word for delete:";

cin>>N;


ptr1=first;

for(i=1;i

{

ptr2=ptr1;



if((ptr1=ptr1->next)==NULL)

{

cout<<" There not information to this word's number"<<



endl<<" Choice again low number !";

getch();


break;

}

}



if(ptr1!=NULL)

{

ptr2->next=ptr1->next;



delete(ptr1);

}

}



//========================================

void Diction::print()

{

Diction *ptr3;



int k,i=1;
ptr3=first;

clrscr();

while(ptr3!=NULL)

{

cout<
word<<" "<
descr<

for(k=0;k<=79;k++)cout<<"-";

cout<

if((i%8)==0)

{

cout<

getch();

clrscr();

}

i++;


ptr3=ptr3->next;

}

getch();



}

//========================================

void Diction::load()

{

Diction *ptr4;


first=NULL;

ifstream fout("Dict.txt",ios::in);

while(fout)

{

ptr4=new Diction;



fout>>ptr4->word

>>ptr4->descr;

ptr4->next=first;

first=ptr4;

}

cout<

delay(2000);

}

//========================================



void Diction::save()

{

Diction *ptr5;


ptr5=first;

ofstream fin("Dict.txt",ios::out);

while(ptr5!=NULL)

{

fin<


word

<descr

<

ptr5=ptr5->next;

}

cout<

delay(2000);

}

//========================================



void Diction::sort()

{

int i = 0;



int l = 0;

Diction *temp;

char tempword[30];

char tempdescr[100];


temp=first;

while(temp!=NULL)

{

temp=temp->next;



i++;

}

if (i>1)



for (l=0;l<=i;l++)

{

temp=first;



while (temp->next!=NULL)

{

if (strcmp(temp->word,temp->next->word)>0)



{

strcpy(tempword,temp->next->word);

strcpy(tempdescr,temp->next->descr);
strcpy(temp->next->word,temp->word);

strcpy(temp->next->descr,temp->descr);


strcpy(temp->word,tempword);

strcpy(temp->descr,tempdescr);


};

temp=temp->next;

}

};

cout<

delay(2000);

}

//========================================



void main()

{

Diction book;



int i;
while(1)

{

clrscr();



cout<

cout<<" 1. Add new word"<

cout<<" 2. Change the description of word"<

cout<<" 3. Delete word"<

cout<<" 4. View the whole diction"<

cout<<" 5. Load the Dict.txt"<

cout<<" 6. Save the Dict.txt"<

cout<<" 7. Sort dictionary"<

cout<<" 8. Exit"<

cout<<" Enter your choice: ";

cin>>i;

switch(i)



{

case 1:


book.add();

break;


case 2:

book.change();

break;

case 3:


book.del();

break;


case 4:

book.print();

break;

case 5:


book.load();

break;


case 6:

book.save();

break;

case 7:


book.sort();

break;


case 8:

exit(0);


break;

}

}



}


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница