Обработка динамических массивов структур данных

Автор работы: Пользователь скрыл имя, 25 Ноября 2011 в 21:59, курсовая работа

Краткое описание

адание: обработка информации о работниках
а) создать массив (не менее 10 записей) со следующей структурой:
-Фамилия и инициалы работника;
-название занимаемой должности;
-год поступления на работу;
б) реализовать следующие действия:
-отсортировать записи в алфавитном порядке.
-вывести на дисплей фамилии работников, чей стаж работы в организации превышает значение, введенной с клавиатуры.
-если таких работников нет, вывести на дисплей соответствующее сообщение.
















Реализация алгоритма программы

Общая схема алгоритма

Содержание работы

Введение…………………………………………………………………….
Постановка задачи………………………………………………….......
Реализация алгоритма программы………………………………........
Общая схема алгоритма……………………………………………….
Алгоритм работы процедуры ввода данных………………………..
Алгоритм работы процедуры вывода данных...……………………….
Алгоритм работы процедуры вывода фамилии о работниках, чей стаж работы превышает значение, введенное с клавиатуры…………
Алгоритм процедуры сортировки………………………………………
2.6 Алгоритм работы процедуры «writef»………………………………...
2.7 Алгоритм работы процедуры «readf»…………………………………...
2.8 Алгоритм работы функции «main»……………………………………...
2.9 Стандартные процедуры и функции, используемые в программе……
3. Анализ результата…………………………………………………………
Заключение…………………………………………………………………...
Список литературы…………………………………………………………..
Приложение А………………………………………………………………..
Приложение Б………………………………………………………………...
Приложение В………………………………………………

Содержимое работы - 1 файл

моя прелесть.doc

— 1.96 Мб (Скачать файл)

    Цикл  продолжается до тех пор, пока массив не отсортируется в алфавитном порядке.

    1.     Завершение процедуры (Блок 11).

    2.6 Алгоритм  работы процедуры «writef».

     На  основе анализа задачи и выбора метода ее решения составлен алгоритм работы функции сортировки массива, представленный в приложении А (Блок-схема процедуры «writef» расположен в приложении А6)

       В данной функции «writef» сохранение введенного массив в файл. Опишем работу процедуры сохранения по блок-схеме. 

     1. Начало процедуры сохранения (Блок 1)

     2. Создается  файл WORKER с расширением txt (Блок 3)

     3. В цикле от 0 до последнего элемента  массива (Блок 4)

     4. Записываются данные в файл (Блок 5)

     5. Закрывается файл (Блок 6)

     6. Завершение процедуры сохранения (Блок 7).     

    1. Алгоритм работы процедуры  «readf».
 

       На  основе анализа задачи и выбора метода ее решения составлен алгоритм работы функции сортировки массива, представленный в приложении А (Блок-схема процедуры считывания с файла «readf» расположен в приложении А7).Эта функция реализует считывание с файла данных.

       Опишем  работу процедуры считывания с файла  по блок-схеме.

  1. Начало процедуры считывания с файла (Блок 1)
  2. Переменная t принимает значение WORKER (Блок 3)
  3. Размер массива принимает значение 0 (Блок 4)
  4. Открывается файл WORKER (Блок 5)
  5. В цикле  пока не конец файла считывается файл и увеличивается шаг на единицу (Блоки 6-8)
  6. Создается массив со структурой WORKER (Блок 10)
  7. Открывается файл WORKER с расширением txt (Блок 11)
  8. В цикле от 0 до конца размера массива происходит считывание с файла (Блоки 13-14)
  9. Происходит закрытие (Блоки 15-16)
  10. Завершение процедуры считывания с файла (Блок 17). 
 

    2.8 Алгоритм  работы функции «main» 

     На  основе анализа задачи и выбора метода ее решения составлен алгоритм работы функции сортировки массива, представленный в приложении А (Блок-схема процедуры «main» расположен в приложении А8).

     Программа на языке С++ состоит их функций, описаний и директив препроцессора. Одна из функций  должна иметь имя main. Выполнение программы начинается с первого оператора этой функции.

     Как правило, функция используется для  вычисления какого-либо значения, поэтому  перед именем функции указывается  его тип.

     1. Начало процедуры Main (Блок 1)

     2. Булева переменная vyhod принимает значение «ложь» (Блок 2)

     3. Переменная i принимает целочисленный тип. (Блок 3)

     4. В цикле пока vyhod принимает значение «истина» (Блок 4)

     5. Выводится меню пользователя (Блоки  6-12)

     6. Вводят значение переменной i, т.е команду выбора пункта меню пользователя.(Блок 14)

     7. Если i=1, то выполняется процедура «vvod» (Блоки 15-16)

     8. Если i=2, то выполняется процедура «readf». (Блоки 17-18)

     9. Если i=3, то выполняется процедура «vyvod» (Блоки 19-20)

     10. Если i=4, то выполняются процедуры «sortirovka»   и «vyvod» (Блоки 21-22)

     11. Если i=5, то выполняется процедура «vyvod_rabotnik»  (Блоки 23-24)

     12. Если i=6, то выполняется процедура «writef»  (Блоки 25-26)

     13. Если i=7, то выполняется процедура «break» (Блоки 27-28)

     14. Завершение процедуры «main» (Блок 30).  

     2.9 Стандартные процедуры и функции, используемые в программе. 

     В процессе разработки программы были использованы модули: conio.h, iostream.h.

     Заголовочный  файл «iostream.h» содержит описание набора классов для управления вводом/выводом. В нем определены стандартные объекты-потоки cin и cout.

      Модуль conio.h предназначен для работы с экраном в текстовом режиме. В нем хранятся функции для очистки экрана, изменения цвета текста и фона, атрибутов текста, процедуры для буферизированного и не буферизированного ввода с клавиатуры. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    3. Анализ результата 

    В результате работы программы был  сформирован список сведений о работниках, состоящий из фамилии и инициалов работника, года поступления, занимаемой должности. Над списком стало возможно произвести все необходимые действия, заданные по условию выполнения задачи. Листинг программы представлен в приложении Б. Результат выполнения программы представлен в приложении В. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

      Заключение 

           В процессе выполнения индивидуального задания и отчета по курсовой работе я ознакомился со способами обработки динамических массивов структур данных.

       Анализируя  полученное задание, я выбрала метод решения поставленной задачи, на основе которого получил алгоритмы в виде блок-схем. Преимущество блок-схем состоит в их наглядности. Кодирование алгоритмов осуществлено на языке программирования Borland C++ Builder. Листинг программы представлен в приложении Б.

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

       Недостатками  программы являются:

       - при вводе в командной строке  меню некорректных данных, для  которых не предусмотрены действия, программа работать не будет. 
 
 
 
 
 
 
 
 
 
 

     Список  литературы

    1. Программирование на языке высокого уровня / Т.А.Павловская
    2. Карпов Б., Баранов Т.

    С++: специальный  справочник – СПб: Питер, 2003

    1. Пахомов Б.И.

    С/С++ и Borland C++ Builder для начинающих.

    1. Конспект лекций по программированию на ЯВУ.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 
 
Приложение Б

(обязательное)

#include<iostream.h>                                                                                                        

#include<fstream.h>                                                                                                          

#include<conio.h>

using namespace std; 

int chrtoint(char a){

int temp=0;

if(a=='A'||a=='a'){temp=1;};

if(a=='B'||a=='b'){temp=2;};

if(a=='C'||a=='c'){temp=3;};

if(a=='D'||a=='d'){temp=4;};

if(a=='E'||a=='e'){temp=5;};

if(a=='F'||a=='f'){temp=6;};

if(a=='G'||a=='g'){temp=7;};

if(a=='H'||a=='h'){temp=8;};

if(a=='I'||a=='i'){temp=9;};

if(a=='J'||a=='j'){temp=10;};

if(a=='K'||a=='k'){temp=11;};

if(a=='L'||a=='l'){temp=12;};

if(a=='M'||a=='m'){temp=13;};

if(a=='N'||a=='n'){temp=14;};

if(a=='O'||a=='o'){temp=15;};

if(a=='P'||a=='p'){temp=16;};

if(a=='Q'||a=='q'){temp=17;};

if(a=='R'||a=='r'){temp=18;};

if(a=='S'||a=='s'){temp=19;};

if(a=='T'||a=='t'){temp=20;};

if(a=='U'||a=='u'){temp=21;};

if(a=='V'||a=='v'){temp=22;};

if(a=='W'||a=='w'){temp=23;};

if(a=='X'||a=='x'){temp=24;};

if(a=='Y'||a=='y'){temp=25;};

if(a=='Z'||a=='z'){temp=26;};

return temp;}; 

struct WORKER{

char fam[256];

char inic[256];

char dolzh[256];

int god;}; 

int razmer_massiva=0;

WORKER *mass=new WORKER[razmer_massiva];

Приложение  Б

(продолжение)

void vvod(){

clrscr();

cout<<"Vvedite kolichestvo zapisey:"<<endl;

cin>>razmer_massiva;

mass=new WORKER[razmer_massiva];

for(int i=0;i<razmer_massiva;i++){

clrscr();

cout<<"Vvedite familiu i inicyaly "<<" "<<i+1<<" rabotnika:"<<endl;

cin>>mass[i].fam>>mass[i].inic;

cout<<"Vvedite dolzhnost' "<<" "<<i+1<<" rabotnika:"<<endl;

cin>>mass[i].dolzh;

cout<<"Vvedite god postupleniya na rabotu "<<" "<<i+1<<" rabotnika:"<<endl;

cin>>mass[i].god;};

}; 

void vyvod(){

clrscr();

cout<<"Vash massiv"<<endl;

for(int i=0;i<razmer_massiva;i++){

cout<<mass[i].fam<<" "<<mass[i].inic<<endl;

cout<<mass[i].dolzh<<endl;

cout<<mass[i].god<<endl;};

system("pause");}; 

void vyvod_rabotnik(){

clrscr();

cout<<"Vvedite stazh:"<<endl;

int g;

cin>>g;

g=2010-g;

bool b=false;

for(int i=0;i<razmer_massiva;i++){

if(mass[i].god<g){

b=true;

cout<<mass[i].fam<<endl;};

};

if(b==false){cout<<"Rabotnikov s takim stazhem net."<<endl;};

system("pause");}; 
 

 

Приложение  Б

(продолжение)

void sortirovka(){

WORKER temp;

for(int k=1;k<razmer_massiva;k++){

for(int i=1;i<razmer_massiva;i++){

temp=mass[i-1];

int a=chrtoint(mass[i-1].fam[0]);

int b=chrtoint(mass[i].fam[0]);

if(a>b){

mass[i-1]=mass[i];

mass[i]=temp;};

};

};

}; 

void writef(){

ofstream file;

file.open("WORKER.txt",ios::binary);

Информация о работе Обработка динамических массивов структур данных