Навигация
Главная
Поиск
Форум
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
Бип из системно... 58484
Invision Power ... 57571
Организация зап... 57358
Модуль Forms 56480
Создание отчето... 55025
Приложение «Про... 54661
Подключение Mic... 54519
Оператор выбора... 54286
ТЕХНОЛОГИИ ДОСТ... 51064
Программируемая... 47648
Имитационное мо... 46806
Пример работы с... 46771
21 ошибка прогр... 41846
Реклама
Сейчас на сайте
Гостей: 3
На сайте нет зарегистрированных пользователей

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

База данных студентов на Delphi + Microsoft SQL Server
Диплом RSA, ЭЦП, сертификаты, шифрование на C#
База данных склада на Delphi + Схема БД

Реклама

База данных на паскале
БД без графического интерфейса и диалогового меню.
Используется для хранения информации о восхождениях в гору,каждое восхождение содержит список имен и адресов учувствовавших в нем.
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 Комментариев · 9747 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
С# для профессион...
RxLIB
Dealer
GPSS World Studen...
Запрет гостям ск...
Технология .Net в VB
3d Tank [Исходник...
CLR via C#
Ранги для форума
Counter [Исходник...
Панель поиска
Самоучитель PHP 5...
DragMe [Исходник ...
Архив значков
Java 2. Наиболее ...
Borland C++Builde...
ICQ
TDBF
Degisy Data Acces...
Пример работы с р...

Топ загрузок
Приложение Клие... 100269
Delphi 7 Enterp... 75046
Converter AMR<-... 20016
Borland C++Buil... 10468
GPSS World Stud... 8813
Borland Delphi ... 7468
Turbo Pascal fo... 6867
Visual Studio 2... 4868
Калькулятор [Ис... 3835
FreeSMS v1.3.1 3481
Случайные статьи
Потери динамически...
Попытк обыграть си...
Связь комментариев...
Связи между таблиц...
Добавление и измен...
Управление риском
О вреде и пользе м...
Задача 3 посвящена...
Чистка монитора, п...
Яндекс учитывает м...
Integer or real ex...
Головной интерфейс...
Встроенные массивы...
клиентских машинах...
Unexpected end of ...
Фаза подтверждения
Инфраструктура моб...
Запрограммировать ...
Потоковые шифры (с...
Требования к надеж...
Управляющие сообще...
Табл. 9-7.
тег структуры
Туры в Осло, Норвегия
Установка WordPres...
Статистика



Друзья сайта
Программы, игры


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