Использование динамических списков-сотрудники

Автор работы: Пользователь скрыл имя, 11 Мая 2014 в 18:14, курсовая работа

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

При разработке прикладного программного обеспечения паскаль позволяет выполнить проект в короткие сроки, предоставляя для этого множество функций и процедур для оперирования стандартными типами данных. Удобство программирования, представленное языком, не имеет аналогов. Данная тенденция сохранилась и в последующих редакциях и модификаций паскаля, например, - Delphi.
Целью данного курсового проекта является разработка программного обеспечения для ведения штатного расписания сотрудников с возможностью сохранения данных на диск и отображения величины заработных плат в виде графика.

Содержание

Введение 4
1 Постановка задачи на разработку программы 5
2 Состав и структура исходных данных и результатов 6
3 Методы решения задач 7
4 Описание программы 8
5 Методика отладки программы 13
6 Руководство пользователя 14
Заключение 16
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 17

Прикрепленные файлы: 1 файл

Пояснительная записка.docx

— 295.08 Кб (Скачать документ)

Титульный лист

 

Лист задания

 

Содержание

 

 

 

Введение

Язык программирования «Pascal» был разработан Н. Виртом первоначально для целей обучения программированию вообще. С этой точки зрения Паскаль имеет некоторое преимущество перед однотипными языками - такими, как, например, язык Си.

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

При разработке прикладного программного обеспечения паскаль позволяет выполнить проект в короткие сроки, предоставляя для этого множество функций и процедур для оперирования стандартными типами данных. Удобство программирования, представленное языком, не имеет аналогов. Данная тенденция сохранилась и в последующих редакциях и модификаций паскаля, например, - Delphi.

Целью данного курсового проекта является разработка программного обеспечения для ведения штатного расписания сотрудников с возможностью сохранения данных на диск и отображения величины заработных плат в виде графика.

 

1 Постановка задачи на разработку программы

 

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

– ввод данных,

– запись данных в файл,

– чтение данных из файла,

– вывод данных на экран,

– дополнение данных,

– удаление данных,

– сортировка данных,

– построение диаграммы по данным из файла и вывод ее на экран.

Для сортировки данных и построения диаграммы использовать вычисляемое поле (можно выполнять сортировку дополнительно по любому другому полю по усмотрению разработчика).

 

 

2 Состав и структура исходных данных и результатов

 

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

Таблица 1 – Состав и структура исходных данных

Имя переменной

Назначение

Тип

Ограничения

Num

Штатный номер сотрудника

Integer

От 0 до 32767

FIO

ФИО сотрудника

String

Не более 255 символов

WORK

Должность сотрудника

String

Не более 255 символов

OKL

Оклад сотрудника

Real

>0

Perc

Процент надбавки для сотрудника

Real

>0


 

 

3 Методы решения задач

 

Для сортировки списка сотрудника используется вычисляемое поле «Заработная плата», которое вычисляется по формуле:

.

Для выполнения сортировки используется сортировка методом «пузырька». Данный метод выполняется в цикле, пока происходит обмен элементов. Условием выхода из цикла является отсутствие перестановок. Так как производится проход по односвязному списку, то для уменьшения количества обращений обмен элементов производится путем обмена информационной части найденного указателя и следующего элемента с использованием промежуточных переменных.

Вывод диаграммы на экран осуществляется с помощью стандартных функций графической подсистемы, предоставляемых модулем Graph.

 

4 Описание программы

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

В файле исходного текста основной программы осуществляется подключение разработанного модуля и вызов процедуры «меню»:

program kr;

uses m_unit;

begin

  menu;

  clear_s;

end.

 

В модуле «m_unit» описаны следующие процедуры:

  • procedure menu   ;
  • procedure init_s ;
  • procedure new_s  ;
  • procedure view_s ;
  • procedure del_s  ;
  • procedure get_s  ;
  • procedure out_s  ;
  • procedure draw_s ;
  • procedure sort_s ;
  • procedure clear_s;
  • procedure show_s.

Процедура menu осуществляет вывод на экран пунктов меню и предоставляет пользователю выбор действия. Выбор пользователя осуществляется нажатием функциональных клавиш:

procedure menu;

var

  ch:Char;

begin

  Init_s;

  repeat

    textcolor(11);  

    TextBackground(1);  

    clrscr;

   

    writeln('F1.Новый  F2.Просмотр F3.Удалить F4.Диаграмма F5.Открыть F6.Сохранить ESC-Выход');

    ch :=ReadKey;

    if (ch=#27) then exit;

    if (ch = #0) then

    begin

      ch :=ReadKey;

    end;

    case ch of

      #59:new_s  ;

      #60:view_s ;

      #61:del_s  ;

      #62:draw_s ;

      #63:get_s  ;

      #64:out_s  ;

    end;

  until ch = #27;

end;

 

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

procedure new_s;  {Процедура добавления сотрудника в список}

var

  tmp,ends:m_rec;

begin

  clrscr;

  textcolor(10); {зел цвет}

  if Head = Nil then

  begin

    new(head);

    head^.next := NIL;

    tmp := head;

  end

  else

  begin

    tmp := Head;

    while (tmp^.Next<>NIL) do

    begin

      tmp := tmp^.Next;

    end;

    ends:=tmp;

    new(tmp);

    ends^.next := tmp;

    tmp^.Next := NIL;

  end;

{Заполним поля структуры} 

  { Num  :Integer;

    FIO  :string;

    WORK :string;

    OKL  :real;

    Perc :real;

  }

 

  write('Номер сотрудника:');

  readln(tmp^.Num);

  write('ФИО:');

  readln(tmp^.FIO);

  write('Должность:');

  readln(tmp^.Work);

  write('Оклад:');

  readln(tmp^.OKL);

  write('Надбавка(%):');

  readln(tmp^.Perc);

 

  { Для автотестов}

  {  tmp^.Num  :=1;  

    tmp^.FIO  := 'asdasd';

    tmp^.WORK := '123aasdsdasd';

    tmp^.OKL  :=123;

    tmp^.Perc :=1;

  }

 

 

  textcolor(14);  

  writeln('Добавлена запись:');

  textcolor(10);  

 

{Шапка} 

  writeln('╔════╦════════════════════╦════════════════════╦════════╦═════╦════════╗');

  textcolor(10);  

  write('║');textcolor(13);write(' N  ');

  textcolor(10);

  write('║');textcolor(13);write(' ФИО сотрудника     ');

  textcolor(10);

  write('║');textcolor(13);write('    Должность       ');

  textcolor(10);

  write('║');textcolor(13);write('  Оклад ');

  textcolor(10);

  write('║');textcolor(13);write('  %  ');

  textcolor(10);

  write('║');textcolor(13);write('  ЗП    ');

  textcolor(10);

  writeln('║');

 

 

 

{вывод текущей записи}   

  writeln('╠════╬════════════════════╬════════════════════╬════════╬═════╬════════╣');

  textcolor(10);  

  write('║');textcolor(15);write(tmp^.num:4);

  textcolor(10);

  write('║');textcolor(15);write(tmp^.FIO:20);

  textcolor(10);

  write('║');textcolor(15);write(tmp^.Work:20);

  textcolor(10);

  write('║');textcolor(15);write(tmp^.OKL:8:2);

  textcolor(10);

  write('║');textcolor(15);write(tmp^.Perc:5:2);

  textcolor(10);

  write('║');textcolor(15);write((tmp^.OKL*(1+0.01*tmp^.Perc)):8:2);

  textcolor(10);

  writeln('║');

 

 

{подвал} 

  writeln('╚════╩════════════════════╩════════════════════╩════════╩═════╩════════╝');

 

  textcolor(11);  

 

  write('Для продолжения нажмите любую клавишу');

  readkey;

 

end;

 

Процедура сортировки sort_s осуществляет проход по списку со сравнением текущего элемента и следующего. Сравнение происходит по вычисляемому полю «Заработная плата». Если данное поле у текущего элемента больше, чем у следующего, то происходит обмен информационными частями между указателями. Проход списка с целью сортировки осуществляется до тех пор, пока имеются перестановки. Если после прохода не было перестановок, цикл завершается и список считается отсортированным.

procedure sort_s; {Процедура сортировки списка по ЗП}

var

  t1,t2:m_rec;

  HaveChange:boolean;

  Num  :Integer;

  FIO  :string;

  WORK :string;

  OKL  :real;

  Perc :real;

begin

 

  HaveChange:=true;

  while HaveChange do

  begin

    HaveChange:=false;

    t1:=head;

    while t1^.next<>nil do

    begin

      t2:=t1^.next;

      if ((t1^.OKL*(1+0.01*t1^.Perc)) > (t2^.OKL*(1+0.01*t1^.Perc))) then

      begin

        HaveChange:=true;

       

        Num  := t1^.NUM;

        FIO  := t1^.FIO;

        WORK := t1^.WORK;

        OKL  := t1^.OKL;

        Perc := t1^.Perc;

       

        t1^.NUM:=t2^.NUM;;

        t1^.FIO:=t2^.FIO;;

        t1^.WORK:=t2^.WORK;

        t1^.OKL:=t2^.OKL;

        t1^.Perc:=t2^.Perc;

       

        t2^.NUM:=NUM;;

        t2^.FIO:=FIO;;

        t2^.WORK:=WORK;

        t2^.OKL:=OKL;

        t2^.Perc:=Perc;

       

      end;

      t1:=t1^.next;

    end;

 

  end;

end;

 

Полный текст программы приведен в приложении А.

Схема алгоритма программы приведена в приложении Б.

 

5 Методика отладки программы

 

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

Результаты тестирования приведены в приложении В.

 

6 Руководство пользователя

 

При запуске программы пользователь видит на экране горизонтальное меню выбора действий. Выбор пункта меню осуществляется при помощи функциональных клавиш F1-F6, выход из программы осуществляется по нажатию клавиши «ESC» (см. рисунок 1).

Рисунок 1 – Окно программы при старте.

Для оперирования информацией о сотрудниках используются клавиши:

  • F1. Добавление сотрудника в список;
  • F2. Просмотр списка сотрудников;
  • F3. Удаление сотрудника из списка.

При добавлении нового сотрудника на экран выводится подсказка о вводимой информации. После ввода всех полей на экран выводится в табличном виде внесенная информация (см. рисунок 2).

Рисунок 2 – Добавление нового сотрудника.

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

 

Заключение

 

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

 

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Климова Л.М. PASCAL 7.0 Практическое программирование. Решение типовых задач. - М.: КУДИЦ-ОБРАЗ, 2000.

2. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. -М.: Наука, 1987.

3. Аладьев В.З., Тупало В.Г. Turbo-Pascal для всех. - Киев: Технiка, 1993.

4. Белецкий, Ян. Турбо Паскаль с графикой для персональных компьютеров. - М.: Машиностроение, 1991.

5. Джонс Ж., Харроу К. Решение задач с системой Турбо Паскаль. -М.: Финансы и статистика, 1991.

6. Епанешников А.М. Программирование в среде Turbo Pascal 7.0. -М.: Диалог-МИФИ, 1996.

7. Климов Ю.С. Программирование в среде Turbo-Pascal 6.0. - Мн.: выш. шк., 1992.

8. Сергиевский М.В. Язык, среда программирования. - М.: Машиностроение, 1994.

9. Турбо Паскаль 7.0. -Киев: торгово-издательское бюро BHV, 1995.

10. Фаронов В.В. Турбо Паскаль 7.0. начальный курс. - М.: "Нолидж", 1997.

11. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. - М.: "Нолидж", 1997.

 

Приложение А

 

 

 

 

 

 

 

Приложение А

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

Исходный текст программы

 

program kr;

uses m_unit,crt;

begin

  menu;

  clear_s;

end.

 

unit m_unit;

 

interface

 

type

 

  m_rec = ^my_record;

  my_record = record

    Num  :Integer;

    FIO  :string;

    WORK :string;

    OKL  :real;

    Perc :real;

    Next  :m_rec;

  end;

 

procedure menu   ; {Процедура вывода меню}

procedure init_s ; {Процедура производит при старте заполнение начальных параметров}

procedure new_s  ; {Процедура добавления сотрудника в список}

procedure view_s ; {Процедура просмотра списка сотрудников}

procedure del_s  ; {Процедура удаления сотрудника из списка}

procedure get_s  ; {Процедура загрузки списка сотрудников из файла}

procedure out_s  ; {Процедура сохранения списка в файл}

procedure draw_s ; {Процедура вывода диаграммы на экран}

procedure sort_s ; {Процедура сортировки списка по ЗП}

procedure clear_s; {Процедура очищает список}

procedure show_s ; {Процедура прорисовки диаграммы}

var

  Head:m_rec;      {Указатель на начало списка}

  SeekFil:string;  {Имя текущего файла}

implementation

 

uses crt,graph;

procedure init_s; {Процедура производит при старте заполнение начальных параметров}

begin

  Head:=NIL;      {Список иначально пуст}

  SeekFil:='New.bin';

end;

 

procedure menu;

var

  ch:Char;

begin

  Init_s;

  repeat

    textcolor(11);  

    TextBackground(1);  

    clrscr;

   

    writeln('F1.Новый  F2.Просмотр F3.Удалить F4.Диаграмма F5.Открыть F6.Сохранить ESC-Выход');

Информация о работе Использование динамических списков-сотрудники