Главная страница

курсач. Бд проката автомобилей


Скачать 0.97 Mb.
НазваниеБд проката автомобилей
Дата27.02.2019
Размер0.97 Mb.
Формат файлаdocx
Имя файлакурсач.docx
ТипПояснительная записка
#69005
страница3 из 5
1   2   3   4   5

5. Разработка алгоритмов



5.1 Алгоритм программы на Pascal



5.2 Алгоритм чтения из файла

5.3 Алгоритм вывода на экран

5.4 Алгоритм записи в файл


5.5 Алгоритм добавления новой записи
5.6 Алгоритм удаления записи

5.8. Алгоритм работы Фильтра 3


Остальные фильтры работают аналогично.

6. Разработка программ



6.1 Текст программы на языке Pascal:


Основной файл

program BD_Prokata_avtomobiley;

uses crt, menu, rd, viv, wr, add, del,fil1,fil2,fil3,fil4,fil5;

var

p: byte; //номер текущей строки в меню

sp: byte; //номер текущей строки в подменю

c: char; //считанный символ

begin

read_tables;

p:=0;

textbackground(15);

textcolor(0);

main_menu(p);

repeat

repeat

c:=readkey; //считывание символа

until c in [#13,#38,#40,#27];

case c of

#38: //стрелка вверх

begin

if (p = 0) then continue;

p:=p-1;

main_menu(p);

end;

#40: //стрелка вниз

begin

if (p = 11) then continue;

p:=p+1;

main_menu(p);

end;

#13: //enter

begin

case p of

0..6: //работа с подменю для таблиц

begin

sp:=0;

sub_menu(sp);

repeat

repeat

c:=readkey; //считывание символа

until c in [#13,#38,#40,#08,#27];

case c of

#38: //стрелка вверх

begin

if (sp = 0) then continue;

sp:=sp-1;

sub_menu(sp);

end;

#40: //стрелка вниз

begin

if (sp = 3) then continue;

sp:=sp+1;

sub_menu(sp);

end;

#13: //enter

begin

case sp of

0: print_table(p); //вывод таблицы на экран

1: add_record(p); //добавление записи

2: delete_record(p); //удаление записи

3: write_table(p); //запись таблицы в файл

end;

sub_menu(sp);

end;

#27: exit; //выход из программы

end;

until (c = #08); //backspace

end;

7: f1;

8: f2;

9: f3;

10: f4;

11: f5;

end;

main_menu(p);

end;

end;

until (c = #27); //end

end.

Модуль меню
unit menu;
interface

procedure main_menu(pm:integer); //выводит основное меню на экран

procedure sub_menu(sm: integer); //выводит подменю на экран
implementation

uses crt;

procedure main_menu(pm:integer); //выводит основное меню на экран

type am = array [0..11] of string;

const items: am=('Сотрудники','Должности','Марки автомобилей','Дополнительные услуги','Автомобили','Клиенты','Прокат','Фильтр 1','Фильтр 2','Фильтр 3','Фильтр 4','Фильтр 5');

var i: byte; //счетчик

begin

clrscr;

for i:= 0 to 11 do

begin

if (i = pm) then textcolor(12);

writeln(items[i]);

if (i = pm) then textcolor(0);

end;

end;

procedure sub_menu(sm: integer); //выводит подменю на экран

type asub = array [0..3] of string;

const sub_items: asub=('Вывод на экран','Добавление записи','Удаление записи','Запись в файл');

var i: byte; //счетчик

begin

clrscr;

for i:= 0 to 3 do

begin

if (i = sm) then textcolor(12);

writeln(sub_items[i]);

if (i = sm) then textcolor(0);

end;

end;

end.

Модуль типов
unit types; //структуры

interface

type sotrudniki=record

nosot: byte;

fio: string[45];

age: byte;

pol: string[1];

adres: string[50];

phone: string[13];

pasport: string[11];

nodol: byte;

end;
doljnosti=record

nodol: byte;

dolname: string[20];

oklad: integer;

obyazanosti: string[30];

trebovaniya: string[30];

end;
markiavto=record

nomark: byte;

markname: string[10];

techchar: string[30];

opisanie: string[30];

end;
dopuslugi=record

nousl: byte;

uslname: string[10];

opisanie: string[30];

uslcena: string[10];

end;
avtomobili=record

noavto: byte;

nomark: byte;

regnum: string[10];

cuznum: string[10];

dvignum: string[10];

godvip: string[4];

probeg: string[10];

avtcena: string[10];

daycena: string[10];

dto: string[10];

nosot: byte;

specmark: string[30];

vozv: string[5];

end;
clients=record

nocli: byte;

fio: string[45];

pol: string[1];

dr: string[10];

adres: string[25];

phone: string[13];

pasport: string[11];

end;
prokat=record

datavid: string[10];

srok: string[10];

datavoz: string[10];

noavto: byte;

nocli: byte;

nousl1: byte;

nousl2: byte;

nousl3: byte;

price: longint;

oplata: string[5];

nosot: byte;

end;
var

sotmas: array [0..9] of sotrudniki; //массив с данными таблицы Сотрудники

sot: byte; //текущее кол-во записей в таблице Сотрудники
dolmas: array [0..4] of doljnosti; //массив с данными таблицы Должности

dol: byte; //текущее кол-во записей в таблице Должности
markmas: array [0..4] of markiavto; //массив с данными таблицы Марки автомобилей

mark: byte; //текущее кол-во записей в таблице Марки автомобилей
uslmas: array [0..4] of dopuslugi; //массив с данными таблицы Дополнительные услуги

usl: byte; //текущее кол-во записей в таблице Дополнительные услуги
avtomas: array [0..9] of avtomobili; //массив с данными таблицы Автомобили

avto: byte; //текущее кол-во записей в таблице Автомобили
climas: array [0..4] of clients; //массив с данными таблицы Клиенты

cli: byte; //текущее кол-во записей в таблице Клиенты
prokmas: array [0..9] of prokat; //массив с данными таблицы Прокат

prok: byte; //текущее кол-во записей в таблице Прокат

implementation

end.
Модуль чтения файлов

unit rd;

interface

procedure read_tables; //считывание таблиц
implementation

uses types,crt;

var

FILE1: file of sotrudniki;

FILE2: file of doljnosti;

FILE3: file of markiavto;

FILE4: file of dopuslugi;

FILE5: file of avtomobili;

FILE6: file of clients;

FILE7: file of prokat;
procedure read_tables; //считывание таблиц

begin
sot:=0;

dol:=0;

mark:=0;

usl:=0;

avto:=0;

cli:=0;

prok:=0;

if FileExists('Сотрудники.txt') then

begin

assign(FILE1,'Сотрудники.txt');

reset(FILE1);

while not eof(FILE1) do

begin

read(FILE1,sotmas[sot]);

sot:=sot+1;

end;

close(FILE1);

end;

if FileExists('Должности.txt') then

begin

assign(FILE2,'Должности.txt');

reset(FILE2);

while not eof(FILE2) do

begin

read(FILE2,dolmas[dol]);

dol:=dol+1;

end;

close(FILE2);

end;

if FileExists('Марки автомобилей.txt') then

begin

assign(FILE3,'Марки автомобилей.txt');

reset(FILE3);

while not eof(FILE3) do

begin

read(FILE3,markmas[mark]);

mark:=mark+1;

end;

close(FILE3);

end;

if FileExists('Дополнительные услуги.txt') then

begin

assign(FILE4,'Дополнительные услуги.txt');

reset(FILE4);

while not eof(FILE4) do

begin

read(FILE4,uslmas[usl]);

usl:=usl+1;

end;

close(FILE4);

end;

if FileExists('Автомобили.txt') then

begin

assign(FILE5,'Автомобили.txt');

reset(FILE5);

while not eof(FILE5) do

begin

read(FILE5,avtomas[avto]);

avto:=avto+1;

end;

close(FILE5);

end;

if FileExists('Клиенты.txt') then

begin

assign(FILE6,'Клиенты.txt');

reset(FILE6);

while not eof(FILE6) do

begin

read(FILE6,climas[cli]);

cli:=cli+1;

end;

close(FILE6);

end;

if FileExists('Прокат.txt') then

begin

assign(FILE7,'Прокат.txt');

reset(FILE7);

while not eof(FILE7) do

begin

read(FILE7,prokmas[prok]);

prok:=prok+1;

end;

close(FILE7);

end;

end;

end.

Модуль сохранения таблиц

unit wr;

interface

procedure write_table(n: byte); //запись таблицы в файл
implementation

uses types,crt;

var

FILE1: file of sotrudniki;

FILE2: file of doljnosti;

FILE3: file of markiavto;

FILE4: file of dopuslugi;

FILE5: file of avtomobili;

FILE6: file of clients;

FILE7: file of prokat;
procedure write_table(n: byte); //запись таблицы в файл

var

i:integer;

begin

clrscr;

writeln('Данные записываются...');

case n of

0:

begin

assign(FILE1,'Сотрудники.txt');

rewrite(FILE1);

for i:=1 to sot do

write(FILE1,sotmas[i-1]);

close(FILE1);

end;

1:

begin

assign(FILE2,'Должности.txt');

rewrite(FILE2);

for i:=1 to dol do

write(FILE2,dolmas[i-1]);

close(FILE2);

end;

2:

begin

assign(FILE3,'Марки автомобилей.txt');

rewrite(FILE3);

for i:=1 to mark do

write(FILE3,markmas[i-1]);

close(FILE3);

end;

3:

begin

assign(FILE4,'Дополнительные услуги.txt');

rewrite(FILE4);

for i:=1 to usl do

write(FILE4,uslmas[i-1]);

close(FILE4);

end;

4:

begin

assign(FILE5,'Автомобили.txt');

rewrite(FILE5);

for i:=1 to avto do

write(FILE5,avtomas[i-1]);

close(FILE5);

end;

5:

begin

assign(FILE6,'Клиенты.txt');

rewrite(FILE6);

for i:=1 to cli do

write(FILE6,climas[i-1]);

close(FILE6);

end;

6:

begin

assign(FILE7,'Прокат.txt');

rewrite(FILE7);

for i:=1 to prok do

write(FILE7,prokmas[i-1]);

close(FILE7);

end;

end;

clrscr;

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

readkey;

end;

end.

Модуль удаления записи

unit del;

interface

procedure delete_record(n: byte); //удаление записи

implementation

uses types,crt;
procedure delete_record(n: byte); //удаление записи

var x: byte; //номер записи подлежащей удалению

i: byte; //счетчик

begin

clrscr;

write('Введите номер записи, которую желаете удалить: '); readln(x);

case n of

0:

begin

if (x<=sot) and (x>0) then

begin

if (x = sot) then sot:=sot-1

else for i:= x to sot do sotmas[i-1]:=sotmas[i];

sot:=sot-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

1:

begin

if (x<=dol) and (x>0) then

begin

if (x = dol) then dol:=dol-1

else for i:= x to dol do dolmas[i-1]:=dolmas[i];

dol:=dol-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

2:

begin

if (xand (x>0) then

begin

if (x = mark) then mark:=mark-1

else for i:= x to mark do markmas[i-1]:=markmas[i];

mark:=mark-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

3:

begin

if (xand (x>0) then

begin

if (x = usl) then usl:=usl-1

else for i:= x to usl do uslmas[i-1]:=uslmas[i];

usl:=usl-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

4:

begin

if (xand (x>0) then

begin

if (x = avto) then avto:=avto-1

else for i:= x to avto do avtomas[i-1]:=avtomas[i];

avto:=avto-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

5:

begin

if (xand (x>0) then

begin

if (x = cli) then cli:=cli-1

else for i:= x to cli do climas[i-1]:=climas[i];

cli:=cli-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

6:

begin

if (x
and (x>0) then

begin

if (x = prok) then prok:=prok-1

else for i:= x to prok do prokmas[i-1]:=prokmas[i];

prok:=prok-1;

writeln('Запись удалена, нажмите любую клавишу для продолжения');

end

else writeln('Записи с таким номером не существует');

end;

end;

readkey;

end;

end.

Модуль добавления записи

unit add;

interface

procedure add_record(n: byte); //добавление записи

implementation

uses types,crt;

procedure add_record(n: byte); //добавление записи

begin

clrscr;
1   2   3   4   5


написать администратору сайта