Автор работы: Пользователь скрыл имя, 23 Марта 2013 в 10:59, курсовая работа
В данной курсовой работе приведена программа, которая применяется для подсчёта сведений о сроках хранения лекарства. Здесь был использован метод структурного программирования для облегчения написания и отладки программы, а также повышения ее наглядности и читаемости. Целью написания данной работы было получение и закрепление практических навыков разработки алгоритмов различными методами.
ВВЕДЕНИЕ 3
1. УСЛОВИЕ И ПОСТАНОВКА ЗАДАЧИ 4
1.1. Входная информация 4
1.2. Выходная информация 5
1.3. Промежуточная информация 6
2. ФОРМАЛИЗАЦИЯ ЗАДАЧИ 7
3. АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ 8
3.1. Словесный алгоритм 8
3.2. Логическая схема алгоритма 9
3.3. Описание логической схемы 16
4. СОСТАВЛЕНИЕ ПРОГРАММЫ РЕШЕНИЯ ЗАДАЧИ 17
5. КОНТРОЛЬНЫЙ ПРИМЕР 22
ЗАКЛЮЧЕНИЕ 25
Если значение вспомогательной переменной k=3, то выполнятся процедура OBNOVIT_DANNIE – процедура изменения списка файла. Номер изменяемой строки обозначим через переменную numrec. Введем значение этой переменной и установим указатель на позицию по указанному номеру записи. Введем старое значение записи (numrec). Затем выведем запись и перейдем на следующую позицию, потом вернемся на прежнюю позицию. Зададим новое значение записи. Используя процедуру ADD_NEWINF изменим запись и закроем файл.
При значении переменной k=4 выполняется процедура DOBAVIT_DANNIE. Процедура DOBAVIT_DANNIE выполняет задачу дополнения в список лекарств. Для этого установим текущую позицию в конец файла (seek), введем данные в файл. На экране появится надпись: «Изменяемый файл данных имеет … записей» (процедура filesize). Закрываем измененный файл.
Для поиска в файле по номеру группы и семестру вводим значение переменной k=5, тогда выполняется процедура POISK_PO_NOMERU_GR. В этой процедуре используем новые переменные: maska – переменная, которая принимает значения заданному номеру группы, rez_find – переменная результата, принимает значения «false» и «true» в тех случаях, когда заданный номер группы не найден (false) процедура будет выполняться до тех пор, пока введенный номер не будет найден (т.е. до конца записей файла). Если название номера не найдено, на экране появится: «нет данной записи». Если номер будет найден, на экран выведется таблица с полями записей и их значениями, внизу этой таблицы в строке будет записано количество записей для заданного пользователем. Закрываем файл.
Значение переменной k=0 программа завершается.
Программа для курсовой работы составлена на языке Турбо Паскаль. Для решения поставленной задачи использовались стандартные процедуры и функция языка.
program nagruzka;
uses crt;
type
stprepod=string[15];
stnogruppi=string[3];
stpredmet=string[12];
stlekcii=integer;
stpraktiki=integer;
stlabi=integer;
stzachet=string[3];
stekzamen=string[3];
recbook=record
pr:stprepod;
gr:stnogruppi;
pred:stpredmet;
lek:stlekcii;
prak:stpraktiki;
lab:stlabi;
zach:stzachet;
ege:stekzamen;
end;
var
bookfile:file of recbook;
work:recbook;
count, lcount, pcount, lbcount, vcount, i:integer;
vid:byte;
end_menu:boolean;
name:string[12];
procedure name_file;
begin
writeln('Введите имя файла данных: ');
readln(name);
end;
procedure add_newinf;
begin
writeln('Ввод записи ', filepos(bookfile)+1);
with work do
begin
write('Преподаватель: ');
readln(pr);
write('№ группы: ');
readln(gr);
write('Предмет ');
readln(pred);
write('Лекции (часов): ');
readln(lek);
write('Практика (часов): ');
readln(prak);
write('Лабораторные (часов): ');
readln(lab);
write('Зачет (Да/Нет): ');
readln(zach);
write('Экзамен (Да/Нет): ');
readln(ege);
write(bookfile, work);
end;
end;
procedure new_file;
var ind, count:integer;
begin
name_file;
assign(bookfile, name);
rewrite(bookfile);
writeln('Создание записи файла "', name, '"!');
writeln('Введите число записей в списке: ');
readln(count);
for ind:=1 to count do add_newinf;
lcount:=count;
pcount:=count;
lbcount:=count;
vcount:=count;
writeln('Создание файла данных завершена.');
writeln('Фаил данных имеет ', filesize(bookfile), ' записей');
close(bookfile);
end;
procedure vyvod_iz_faila;
begin
read (bookfile, work);
with work do
begin
write ('Запись ', filepos(bookfile), '-го номера: ');
i:=lek+lab+prak;
lcount:=lcount+lek;
pcount:=pcount+prak;
lbcount:=lbcount+lab;
vcount:=vcount+i;
writeln;
writeln('Группа: ', gr);
writeln('_____________________
writeln('| № | Предмет | Преподаватель | Аудиторные часы | итого | экз. |');
writeln('| | | |______|_______|______| | |');
writeln('| | | | лек. | прак. | лаб. | | |');
writeln('_____________________
writeln('|',filepos(bookfile):
writeln('| Всего |
|
|',lcount:6,'|',pcount:7,'|',
writeln('_____________________
end;
end;
procedure vyvod_vsey_inf;
begin
name_file;
assign(bookfile, name);
{$I-}
reset(bookfile);
{$I+}
if ioresult=0 then
begin
seek(bookfile, 0);
writeln('Вывод списка сдачи экзамена из файла "', name, '"');
while (not eof (bookfile)) do vyvod_iz_faila;
end
else writeln('Фаила с именем ', name, ' на диске нет');
end;
procedure obnovit_dannie;
var numrec:longint;
begin
name_file;
assign(bookfile, name);
{$I-}
reset(bookfile);
{$I+}
if ioresult=0 then
begin
write('Укажите номер
readln(numrec);
seek(bookfile, numrec-1);
writeln('- старое значение записи');
vyvod_iz_faila;
seek(bookfile, numrec-1);
writeln('Задаем новое значение ', numrec, '-й записи');
add_newinf;
close(bookfile);
end
else writeln('Фаила с именем ', name, ' на диске нет');
end;
procedure dobavit_dannie;
begin
name_file;
assign(bookfile, name);
{$I-}
reset(bookfile);
{$I+}
if ioresult=0 then
begin
seek(bookfile, filesize(bookfile));
add_newinf;
writeln('Измененный фаил данных имеет ', filesize(bookfile), ' записей');
close(bookfile);
end
else writeln('Фаила с именем ', name, ' на диске нет');
end;
procedure poisk_po_nomeru_gr;
var maska:stnogruppi;
rez_find:boolean;
countrec:integer;
begin
name_file;
assign(bookfile, name);
{$I-}
reset (bookfile);
{$I+}
if ioresult=0 then
begin
writeln('Введите Номер группы для поиска: ');
readln(maska);
rez_find:=false;
countrec:=0;
while (not eof (bookfile)) do
begin
read (bookfile, work);
with work do if pos(maska, gr)<>0 then
begin
rez_find:=true;
inc(countrec);
i:=lek+lab+prak;
lcount:=lcount+lek;
pcount:=pcount+prak;
lbcount:=lbcount+lab;
vcount:=vcount+i;
writeln('Учебная нагрузка по группе ',gr);
writeln('_____________________
writeln('| № | Предмет | Преподаватель | Аудиторные часы | итого | экз. |');
writeln('| | | |______|_______|______| | |');
writeln('| | | | лек. | прак. | лаб. | | |');
writeln('_____________________
writeln('|',filepos(bookfile):
writeln('| Всего |
|
|',lcount:6,'|',pcount:7,'|',
writeln('_____________________
end;
end;
if rez_find then writeln('Число записей для ', maska, ' = ', countrec)
else writeln('Такого файла не существует!');
close(bookfile);
end
else writeln('Фаила с именем', name, 'на диске нет');
end;
begin
clrscr;
repeat
writeln('-=Учебная нагрузка=-');
writeln('Выберите вид работы:');
writeln('| 1-создание нового файла');
writeln('| 2-просмотр списка сдачи экзамена');
writeln('| 3-изменение списка');
writeln('| 4-дополнение в список');
writeln('| 5-поиск');
writeln('| 0-завершение работы');
writeln(' - Ваш выбор!');
readln(vid);
case vid of
1:new_file;
2:vyvod_vsey_inf;
3:obnovit_dannie;
4:dobavit_dannie;
5:poisk_po_nomeru_gr;
0:end_menu:=true;
end;
writeln('Для продолжения нажмите Enter');
readln;
clrscr;
until end_menu;
end.
В данном разделе курсовой работы представлены исходные значения величин и значения результатов, полученных с помощью разработанной программы.
При запуске программы, находящиеся в рабочей зоне посредствам строки меню RUN или комбинацией клавиш(Ctrl+F9) мы имеем возможность проверить нашу программу.
При запуске программы на экран выводится меню задач для файла:
Пользователю предлагается выбрать один из 6 вариантов. При выборе варианта «1», пользователь создает файл со сводными данными групп по проведенным часам. Далее идет запрос: количество записей в списке, после чего вводим данные, которые нужно ввести.
При вводе цифры 2 выполняется процедура просмотра списка из файла:
Если имя файла по какой либо причине введено не правильно, то
выводится сообщение:
Нажатие на клавишу с номером 3 выполняется процедура изменение списка:
4 – процедура дополнение в список:
5 – процедура поиска по номеру группы:
0 – завершение работы:
Заключение
В процессе выполнения данной курсовой работы, разработана программа для сборки данных групп по проведенным часам. В данной курсовой работе использован метод структурного программирования для облегчения написания и отладки программы, а также повышения ее наглядности и читаемости.
Представленная программа реализована на языке программирования Borland Pascal версии 7.0. Язык Borland Pascal 7.0 - это один из самых мощных языков для ЭВМ типа IBM PC/AT, работающий в среде операционной системы DOS, сочетающий в себе как мощность низкоуровневых языков программирования, так и структурированность с надежностью, присущих языкам высокого уровня.
Для реализации данного алгоритма был выбран язык программирования - Turbo Pascal, для ЭВМ типа IBM, работающих в среде операционной системы MS DOS. Программа составлена верно, что подтверждается контрольным примером .
СПИСОК ЛИТЕРАТУРЫ
Информация о работе Составление программ для решения задач на языке программирования Turbo Pascal