Автор работы: Пользователь скрыл имя, 11 Мая 2014 в 18:14, курсовая работа
При разработке прикладного программного обеспечения паскаль позволяет выполнить проект в короткие сроки, предоставляя для этого множество функций и процедур для оперирования стандартными типами данных. Удобство программирования, представленное языком, не имеет аналогов. Данная тенденция сохранилась и в последующих редакциях и модификаций паскаля, например, - Delphi.
Целью данного курсового проекта является разработка программного обеспечения для ведения штатного расписания сотрудников с возможностью сохранения данных на диск и отображения величины заработных плат в виде графика.
Введение 4
1 Постановка задачи на разработку программы 5
2 Состав и структура исходных данных и результатов 6
3 Методы решения задач 7
4 Описание программы 8
5 Методика отладки программы 13
6 Руководство пользователя 14
Заключение 16
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 17
Титульный лист
Лист задания
Содержание
Язык программирования «Pascal» был разработан Н. Виртом первоначально для целей обучения программированию вообще. С этой точки зрения Паскаль имеет некоторое преимущество перед однотипными языками - такими, как, например, язык Си.
По своей идеологии Паскаль близок к современной методике и технологии программирования. Этот язык весьма полно отражает идеи структурного программирования, что отчетливо проявляется в основных управляющих структурах, предусмотренных в Паскале.
При разработке прикладного программного обеспечения паскаль позволяет выполнить проект в короткие сроки, предоставляя для этого множество функций и процедур для оперирования стандартными типами данных. Удобство программирования, представленное языком, не имеет аналогов. Данная тенденция сохранилась и в последующих редакциях и модификаций паскаля, например, - Delphi.
Целью данного курсового проекта является разработка программного обеспечения для ведения штатного расписания сотрудников с возможностью сохранения данных на диск и отображения величины заработных плат в виде графика.
Необходимо разработать программу, выполняющую следующие функции:
– ввод данных,
– запись данных в файл,
– чтение данных из файла,
– вывод данных на экран,
– дополнение данных,
– удаление данных,
– сортировка данных,
– построение диаграммы по данным из файла и вывод ее на экран.
Для сортировки данных и построения диаграммы использовать вычисляемое поле (можно выполнять сортировку дополнительно по любому другому полю по усмотрению разработчика).
Для хранения штатного расписания в оперативной памяти и в файле используется тип записи со структурой, представленной в таблице 1.
Таблица 1 – Состав и структура исходных данных
Имя переменной |
Назначение |
Тип |
Ограничения |
Num |
Штатный номер сотрудника |
Integer |
От 0 до 32767 |
FIO |
ФИО сотрудника |
String |
Не более 255 символов |
WORK |
Должность сотрудника |
String |
Не более 255 символов |
OKL |
Оклад сотрудника |
Real |
>0 |
Perc |
Процент надбавки для сотрудника |
Real |
>0 |
Для сортировки списка сотрудника используется вычисляемое поле «Заработная плата», которое вычисляется по формуле:
.
Для выполнения сортировки используется сортировка методом «пузырька». Данный метод выполняется в цикле, пока происходит обмен элементов. Условием выхода из цикла является отсутствие перестановок. Так как производится проход по односвязному списку, то для уменьшения количества обращений обмен элементов производится путем обмена информационной части найденного указателя и следующего элемента с использованием промежуточных переменных.
Вывод диаграммы на экран осуществляется с помощью стандартных функций графической подсистемы, предоставляемых модулем Graph.
Для реализации курсового проекта был разработан отдельный модуль, куда были вынесены все процедуры для обработки данных.
В файле исходного текста основной программы осуществляется подключение разработанного модуля и вызов процедуры «меню»:
program kr;
uses m_unit;
begin
menu;
clear_s;
end.
В модуле «m_unit» описаны следующие процедуры:
Процедура 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);
textcolor(10);
write('║');textcolor(13);
textcolor(10);
write('║');textcolor(13);
textcolor(10);
write('║');textcolor(13);
textcolor(10);
write('║');textcolor(13);
textcolor(10);
write('║');textcolor(13);
textcolor(10);
writeln('║');
{вывод текущей записи}
writeln('╠════╬═══════════════
textcolor(10);
write('║');textcolor(15);
textcolor(10);
write('║');textcolor(15);
textcolor(10);
write('║');textcolor(15);
textcolor(10);
write('║');textcolor(15);
textcolor(10);
write('║');textcolor(15);
textcolor(10);
write('║');textcolor(15);
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;
Полный текст программы приведен в приложении А.
Схема алгоритма программы приведена в приложении Б.
В результате выполнения работы была написана программа для ведения штатного расписания сотрудников. Для тестирования был подготовлен исходный набор данных. Выполнение программы показало корректную работу.
Результаты тестирования приведены в приложении В.
При запуске программы пользователь видит на экране горизонтальное меню выбора действий. Выбор пункта меню осуществляется при помощи функциональных клавиш F1-F6, выход из программы осуществляется по нажатию клавиши «ESC» (см. рисунок 1).
Рисунок 1 – Окно программы при старте.
Для оперирования информацией о сотрудниках используются клавиши:
При добавлении нового сотрудника на экран выводится подсказка о вводимой информации. После ввода всех полей на экран выводится в табличном виде внесенная информация (см. рисунок 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-Выход');
Информация о работе Использование динамических списков-сотрудники