Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Гостевая книга ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Эмулятор микроп... 65535
Бип из системно... 62637
Организация зап... 59823
Invision Power ... 59451
Приложение «Про... 58710
Оператор выбора... 57815
Модуль Forms 57737
Подключение Mic... 57076
Создание отчето... 57027
ТЕХНОЛОГИИ ДОСТ... 53313
Программируемая... 51111
Пример работы с... 49201
Имитационное мо... 48794
21 ошибка прогр... 43554
Реклама
Смотрите подробности ремонт стиральных машин в одинцово тут. .
Крафт пакет купить бумажные крафт пакеты.
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

Пользователей: 13,043
новичок: G_S_A
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Метод конечных разностей для интерполяции/экстраполяции на Delphi
Моделирование автомойки на GPSS + Отчет + Блок схемы
Моделирование информационно-поисковой библиографической системы на gpss ...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании

База данных на паскале
БД без графического интерфейса и диалогового меню.
Используется для хранения информации о восхождениях в гору,каждое восхождение содержит список имен и адресов учувствовавших в нем.
UNIT1.PAS - меню выбора действия.
UNIT2.PAS - удаление,добавление,изменение эл-тов,запись,чтение их файла.

Unit1.pas
unit Unit1;
interface
{структура списка аресов и имен}
type list = ^Tlist;
Tlist=record
name:string;
addr:string;
next:list; {указатель на след элемент}
end;
{конец структуры}
{структура восхождений}
type Base = ^BD;
BD=record
beg_rise,end_rise:string;
mnt_name:string;
mnt_hg:string;
cntr:string;
rgn:string;
indx:integer;
names_addr:list; {указатель на список имен и адресов}
Next : base; {указатель на след элемент}
{конец структуры}
end;
{----------------------------------------------------------}
var
count,i:integer;str_temp:string;int_temp:integer;pntr_temp:pointer;
{счетчик записей,просто счетчик,временная строковая переменная,временная целочисленная переменная,временный указатель}
BList,p:base;q:list;
{указатели на списки}
f1:text;
{текстовый файл}
procedure Add; {добавление ел-та}
procedure Show; {вывод на экран}
procedure change; {изменение}
procedure delete(param:integer); {удаление}
procedure reindex; {реиндексирование записей}
procedure save_to_f; {сохранение в файл}
procedure read_from_f; {чтение из файла}
implementation
procedure Add;
begin
count:=count+1; {увеличение счетчика записей}
new(p); {выделение памяти}
p^.indx:=count; {индексирование записей}
{далее заполение всех полей}
write('Begin of rising:');
readln(str_temp);
p^.beg_rise:=str_Temp;
write('End of rising:');
readln(str_temp);
p^.end_rise:=str_temp;
write('Mount name:');
readln(str_temp);
p^.mnt_name:=str_temp;
write('Mount higth:');
readln(str_temp);
p^.mnt_hg:=str_temp;
write('Contry:');
readln(str_temp);
p^.cntr:=str_temp;
write('Region:');
readln(str_temp);
p^.rgn:=str_temp;
{создание списка имен и адресоов}
writeln('Enter names and adres of mens or type DONE');
while true do {цикл выполняется всегда}
begin
write('Name:');
readln(str_temp);
if str_temp='done' then {если введенная строка = done то выходим из цикла}
begin
{три строчки нижу надо обязательно делать перед выходом,иначе нарушится порядок построения структуры}
writeln('Add complete.');
p^.Next:=Blist;
Blist:=p;
exit;
end;
new(q); {если все таки слово было не done то выделяем память под новый элемент списка имен и адресов}
q^.name:=str_temp;
write('Addres:');
readln(str_temp);
{три строчки нижу это элементы создания структуры,если прочтешь как создаются списки,то поймешь зачем они нужны}
q^.addr:=str_temp;
q^.next:=p^.names_addr;
p^.names_addr:=q;
end;
writeln('Add complete.');
{две строчки ниже опять же для структуры}
p^.Next:=Blist;
Blist:=p;
reindex; {реиндексирование}
end;
{----------------------------------------------------------}
procedure show;
begin
p:=blist; {для того что бы указатель р,которым мы будем перемещаться по списку указывал на его первый лемент}
if blist=nil then {если список пуст}
begin
writeln('Base empty');
exit;
end;
while p <> nil do {до тех пор пока список не пустой}
begin
{ниже вывод информации о восхождении}
writeln('Begin of rising:',p^.beg_rise);
writeln('End of rising:',p^.end_rise);
writeln('Mount name:',p^.mnt_name);
writeln('Mount hight:',p^.mnt_hg);
writeln('Country:',p^.cntr);
writeln('Region:',p^.rgn);
{нижу вывод информации о именах и адресах}
q:=p^.names_addr; {передаем указателю q адрес начала списка адресов и имен}
writeln('Name-Adres.');
while q <> nil do {цикл будет до тех пор пока список адресов не пуст}
begin
write(q^.name,'-',q^.addr);
if q^.next=nil then {если текущий элемент последний}
writeln('.') {то выведем точку}
else
write(',');
q:=q^.next; {переход к след эл-ту списка адресов}
end;
writeln('Index:',p^.indx);
p:=p^.next; {переход к след элементу списка восхождений}
end;
end;
{----------------------------------------------------------}
procedure change;
begin
p:=blist;
if blist=nil then
begin
writeln('Base empty');
exit;
end;
{перезаполнение полей восхождения}
write('Index of rising:');
readln(int_temp);
while p^.indx<>int_temp do
p:=p^.next;
write('Begin of rising:');
readln(str_temp);
p^.beg_rise:=str_Temp;
write('End of rising:');
readln(str_temp);
p^.end_rise:=str_temp;
write('Mount name:');
readln(str_temp);
p^.mnt_name:=str_temp;
write('Mount higth:');
readln(str_temp);
p^.mnt_hg:=str_temp;
write('Contry:');
readln(str_temp);
p^.cntr:=str_temp;
write('Region:');
readln(str_temp);
p^.rgn:=str_temp;
writeln('Enter names and adres of mens or type DONE');
{удаление старого списка имен и адресов}
while p^.names_addr<>nil do
begin
q:=p^.names_addr;
p^.names_addr:=p^.names_addr^.next;
dispose(q);
end;
{создание нового,все как и в процедуре эдд}
while true do
begin
write('Name:');
readln(str_temp);
if str_temp='done' then
begin
writeln('Add complete.');
exit;
end;
new(q);
q^.name:=str_temp;
write('Addres:');
readln(str_temp);
q^.addr:=str_temp;
q^.next:=p^.names_addr;
p^.names_addr:=q;
end;
writeln('Change complete.');
end;
{----------------------------------------------------------}
procedure delete;
var pntr_temp:base;
begin
if blist=nil then
begin
writeln('Base empty');
exit;
end;
p:=blist;
if param=p^.indx then {если эл-т с нужным индексом стоит первым}
begin
blist:=blist^.next;
while p^.names_addr<>nil do {удаление списка адресов и имен этой записи}
begin
q:=p^.names_addr;
p^.names_addr:=p^.names_addr^.next;
dispose(q);
end;
dispose(p); {удаление самого эл-та}
count:=count-1;
reindex;
writeln('Delete comlete');
exit
end;
{ниже если непервым}
while p^.indx<>param do {листаем до нужного}
begin
pntr_temp:=p;
p:=p^.next;
end;
{а дальше все как и в первом случае}
pntr_temp^.next:=p^.next;
while p^.names_addr<>nil do
begin
q:=p^.names_addr;
p^.names_addr:=p^.names_addr^.next;
dispose(q);
end;
dispose(p);
count:=count-1;
reindex;
writeln('Delete comlete');
end;
{----------------------------------------------------------}
procedure reindex; {тут все просто до безобразия}
begin
p:=blist;
for i:=1 to count do
begin
p^.indx:=i;
p:=p^.next;
end;
end;
{----------------------------------------------------------}
procedure save_to_f;
begin
assign(f1,'base.dat');
rewrite(f1);
p:=blist;
for i:=1 to count do
begin
{пишем в файл информацию о восзождении}
writeln(f1,p^.beg_rise);
writeln(f1,p^.end_rise);
writeln(f1,p^.mnt_name);
writeln(f1,p^.mnt_hg);
writeln(f1,p^.cntr);
writeln(f1,p^.rgn);
q:=p^.names_addr;
while q<>nil do
begin
{пишем имена и адреса}
writeln(f1,q^.name);
writeln(f1,q^.addr);
q:=q^.next;
end;
{это нужно для чтения}
writeln(f1,'end');
p:=p^.next;
end;
close(f1);
writeln('Save complete');
end;
{----------------------------------------------------------}
procedure read_from_f;
begin
assign(f1,'base.dat');
reset(f1);
while count<>0 do {удаляем все предыдущие записи из памяти что бы не навлеч гнев ктулху}
delete(count);
p:=blist;
while not eof(f1) do
begin
{до тех пор,пока файл не закончился будем делать практически то же самое что и в простом добавлении}
new(p);
readln(f1,str_temp);
p^.beg_rise:=str_temp;
readln(f1,str_temp);
p^.end_rise:=str_temp;
readln(f1,str_temp);
p^.mnt_name:=str_temp;
readln(f1,str_temp);
p^.mnt_hg:=str_temp;
readln(f1,str_temp);
p^.cntr:=str_temp;
readln(f1,str_temp);
p^.rgn:=str_temp;
{после этого автоматом читаются имена и адреса}
while str_temp<>'end' do {если в файле найдется енд,то будет переход к следующему восхождению}
begin
new(q);
readln(f1,str_temp);
{четыре строчки ниже - это маленькие костыли}
if str_temp='end' then
begin
dispose(q);
break;
end;
{ну а дальше все по структуре списков}
q^.name:=str_temp;
readln(f1,str_temp);
q^.addr:=str_temp;
q^.next:=p^.names_addr;
p^.names_addr:=q;
end;
p^.Next:=Blist;
Blist:=p;
count:=count+1;
reindex;
end;
writeln('Read complete');
close(f1);
end;
end.





unit2.pas
program Project2;
uses
Unit1;
var c:byte;
i,j:integer;
procedure MenuAction(param:byte); {процедура распознавания действия}
begin
if param=10 then
add;
if param=11 then
show;
if param=12 then
change;
if param=13 then
begin
write('Enter index:');
readln(int_temp);
delete(int_temp);
end;
if param=14 then
save_to_f;
if param=15 then
read_from_f;
end;
begin
BList:=nil; {так надо для структуры,почитай списки}
while c<>16 do {до тех пор пока ты не введешь 12 цикл будет выполняться}
begin
readln(c);
menuaction(c);
end;

end.



Опубликовал Kest December 03 2009 23:31:58 · 0 Комментариев · 10221 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Trojan [Исходник ...
DelphiXIsoDemo1
isoCanvas (Редакт...
Книга по Delphi (...
Indy in Depth Глу...
XPATComponents
В.Понамарев - COM...
Assembler. Практикум
Turbo Pascal for ...
Ehlib
Интерактивный инт...
База для Allsubmi...
Delphi 7: Для про...
Allsubmitter 4.7 ...
Delphi 2006 - Спр...
PHP 5. Практика с...
mp3tag
HTMLredaktor
SODA [Исходник на...
AddPage [Исходник...

Топ загрузок
Приложение Клие... 100333
Delphi 7 Enterp... 79846
Converter AMR<-... 20025
Borland C++Buil... 10823
GPSS World Stud... 9748
Borland Delphi ... 7849
Turbo Pascal fo... 6910
Visual Studio 2... 4926
Калькулятор [Ис... 4128
FreeSMS v1.3.1 3488
Случайные статьи
Реализация модели ...
Двоичные файлы Web...
Процессы теплопров...
Рекурсивное вычисл...
Управляющий термин...
ГЛАВА 8. ОТЛАДКА ...
Как расколоть орешек
Windows 98 - как р...
name(А,L)
Структура программы
Неупорядоченные сп...
Ва-Банк - вот лучш...
Вам захотелось чег...
Эмуляция директивы...
Элементарные примеры
Как правильно раск...
Задание нетипизиро...
Случаи применения ...
Тип документа XHTM...
Исходные положения...
Получи www.anythin...
Ответы см
Нерешенные вопросы
Translucent File S...
Анализ продвижения...
Статистика



Друзья сайта
Программы, игры
Интернет магазин холодильников бирюса birysa.xyz.

Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?