Помощь - Поиск - Пользователи - Календарь
Полная версия: графическое меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nastena
Здравствуйте!!! Прошу вашей помощи по теме графика! помогите, очень вас прошу, немного украсить меню программы..очень очень нужно))))!!!! плиззззз!!
нужно, чтобы красиво появлялись пункты меню....и заглавие вылетало.....очень прошу..программу написать написала, а как с графикой быть не знаю((((



program biblioteka;
uses crt;
const n=100;
label menu;
type knigi=record
janr:string[12];
avtor:string[20];
nazvanie:string[30];
izdatelstvo:string[15];
god_izdaniya:word;
end;
var
zap:knigi;
z1,z:array[1..n] of knigi;
jan:string[12];
av:string[20];
m,l,l1:integer;
s:real;
procedure vvod(var a:array of knigi; var l:integer);
var i:integer;
ff:file of knigi;
begin
Assign(ff,'C:\tp7\bin\knigi.dat');
reset(ff);
i:=1;
while not eof (ff) do
begin
read(ff,a[i]);
i:=i+1;
end;
l:=i-1;
close(ff);
end;
procedure vvod_KL(var a:knigi);
var
ff:file of knigi;
begin
writeln('введите жанр');
readln(a.janr);
writeln('введите автора*');
readln(a.avtor);
writeln('введите название');
readln(a.Nazvanie);
writeln('введите издательство');
readln(a.izdatelstvo);
writeln('введите год издания');
readln(a.god_izdaniya);

Assign(ff, 'C:\tp7\bin\knigi.dat');
Rewrite(ff);
write(ff,a);
close(ff);
end;
procedure Vivod(var zap:knigi);
var
k:knigi;
f:file of knigi;
i:integer;
begin
vvod(z,l);
l:=l+1;
z[l]:=zap;
Assign(f, 'C:\tp7\bin\knigi.dat');
rewrite(f);
for i:=1 to l do
write(f,z[i]);
Close(f);
end;

procedure Vvod_fl(var zap:knigi);
var
name:string;
k:knigi;
f:text;
ff:file of knigi;
i:integer;
begin
gotoxy(15,23);
write('введите имя файла: ');
readln(name);
writeln;
Assign(f,name );
Vvod(z,l);
Assign(ff,'C:\tp7\bin\knigi.dat');
Rewrite(ff);
Reset(f);
for i:=1 to l do
write(ff,z[i]);
while not Eof(f) do
begin
Read(f,zap.janr);
write(zap.janr);
Read(f,zap.avtor);
write(zap.avtor);
Read(f,zap.nazvanie);
write(zap.nazvanie);
Read(f,zap.izdatelstvo);
write(zap.izdatelstvo);
Readln(f,zap.god_izdaniya);
write(zap.god_izdaniya);
writeln;
write(ff,zap);
end;
Close(f);
Close(ff);
end;

procedure vivod_sp(var a:array of knigi; k:integer);
var i:integer;
begin
for i:=1 to k do
begin
write(a[i].janr);
write('*',a[i].avtor);
write(a[i].nazvanie);
write(a[i].izdatelstvo,' ');
write(a[i].god_izdaniya);
writeln;
end;
end;

procedure janr;
var j,i:integer;
m:string[12];
begin
write('какой жанр вы желаете увидеть? ');
readln(m);
vvod(z,l);
for j:=1 to l do
for i:=1 to l-j do
begin
if z[i].avtor>z[i+1].avtor then
begin
zap:=z[i];
z[i]:=z[i+1];
z[i+1]:=zap;
end;
end;
l1:=0;
for i:=1 to l do
if z[i].janr=m then
begin
l1:=l1+1;
z1[l1]:=z[i];
end;

j:=0;
av:=z1[1].avtor;
for i:=1 to l1 do
begin
if z1[i].avtor=av then
begin
j:=j+1;
end
else
begin
writeln(' Количество книг = ',j);
j:=1;
av:=z1[i].avtor;
end;
{write(z[i].janr); }
write(j,'. ');
write(z1[i].avtor);
write(z1[i].nazvanie);
write(z1[i].izdatelstvo,' ');
write(z1[i].god_izdaniya);
writeln;
end;
writeln(' Количество книг = ',j);
end;

pocedure avtor;
var i:integer;
s,ss:string[20];
begin
write('Какого автора вы желаете увидеть? ');
readln(s);
vvod(z,l);
for i:=1 to l do
begin
ss:=z[i].avtor;
if s=ss then
begin
write(z[i].janr);
write(z[i].avtor);
write(z[i].nazvanie);
write(z[i].izdatelstvo,' ');
write(z[i].god_izdaniya);
writeln;
end;
end;end;

procedure nazvanie;
var i:integer;
m:string[30];
begin
write('Какое название книги желаете увидеть? ');
readln(m);
vvod(z,l);
for i:=1 to l do
begin
if z[i].nazvanie=m then
begin
write(z[i].janr);
write(z[i].avtor);
write(z[i].nazvanie);
write(z[i].izdatelstvo,' ');
write(z[i].god_izdaniya);
writeln;
end;
end;end;

procedure izdatelstvo;
var i:integer;
m:string[15];
begin
write('Какое издательство хотите увидеть? ');
read(m);
vvod(z,l);
for i:=1 to l do
begin
if z[i].izdatelstvo=m then;
begin
write(z[i].janr);
write(z[i].avtor);
write(z[i].nazvanie);
write(z[i].izdatelstvo,' ');
write(z[i].god_izdaniya);
writeln;
end;
end;end;

procedure god_izdaniya;
var i:integer;
m:word;
begin
write('Какой год издания желаете увидеть');
read(m);
vvod(z,l);
for i:=1 to l do
begin
if z[i].god_izdaniya=m then
begin
write(z[i].janr);
write(z[i].avtor);
write(z[i].nazvanie);
write(z[i].izdatelstvo,' ');
write(z[i].god_izdaniya);
writeln;
end;
end;end;


begin
menu:
clrscr;
gotoxy(25,1);
writeln('Библиотека*');
gotoxy(15,3);
write('1.выборка по жанру');
gotoxy(15,5);
write('2.выборка по автору');
gotoxy(15,7);
write('3.выборка по издательству');
gotoxy(15,9);
write('4.ввод с клавиатуры');
gotoxy(15,11);
write('5.ввод из файла');
gotoxy(15,13);
write('6.вывод всего списка записей');
gotoxy(15,15);
write('7.удаление записей');
gotoxy(15,17);
write('8.выход');
gotoxy(15,21);
readln(m);

case m of
1:janr;
2:avtor;
3:izdatelstvo;
4:Vvod_KL(zap);
5:Vvod_fl(zap);
6: begin
vvod(z,l);
Vivod_sp(z,l);
end;
7:writeln('удаление записей');
8:halt;
end;
write('для выхода нажмите <Enter>');
readln;
goto menu;
end.
Lapp
Цитата(nastena @ 7.12.2009 20:11) *
программу написать написала, а как с графикой быть не знаю((((
Да уж, написала.. Ты вообще что-нибудь про отступы слышала? Теперь ее всю форматировать, чтобы посмотреть? Кроме прочего, она не компилируется..

Ты имеешь в виду, что тебе нужно переделать меню с текстового на графику?
nastena
программа рабочая!!!!!!!!!! и компил-ся!!!!!!! я говорю, что нужно добавить немного графики в меню и все!
Lapp
Цитата(nastena @ 8.12.2009 4:48) *
программа рабочая!!!!!!!!!! и компил-ся!!!!!!!
Ты чего кричишь?
Если хочется поупражнять голосовые связки - иди на хоровой форум. norespect.gif
Жду извинений..
Вот, посмотри: Нажмите для просмотра прикрепленного файла
я не знаю, где ты потеряла букву "r", только в том состоянии, как ты ее выложила, программа не компилируется.

Цитата
я говорю, что нужно добавить немного графики в меню и все!
Что в твоем понимании означает "добавить немного графики"? Ответь нормально на вопрос, который я уже задавал: тебе нужно перевести меню в графический режим или просто украсить? Сделать полосочку, стрелками управлять, а не циферками - так, да?
Или все-таки в граф.режиме надо делать?

Ответь только без крика, ладно?
nastena
сожалею, если накричала на вас, но это было не так! а насчет графики нужно, как вы сказали, сделать полосочку, стрелками управлять, а не циферками. я делала фон сегодня , но почему то весь экран становился серым((( помогите плиз)
Lapp
Цитата(nastena @ 8.12.2009 15:32) *
сожалею, если накричала на вас, но это было не так!
что значит "не так"? При разговоре свой способ выражения крика, при письме - свой. Выломай клавишу с восклицательным знаком у себя на клаве, иначе она тебе еще не раз навредит..

Цитата
а насчет графики нужно, как вы сказали, сделать полосочку, стрелками управлять, а не циферками. я делала фон сегодня , но почему то весь экран становился серым((( помогите плиз)
То есть все-таки речь идет не о графическом меню, а о текстовом (извини, но название вводит в заблуждение).
Текстовых меню тут делалось великое множество, но я что-то сейчас не смог ничего путного найти. Если будешь искать - не используй ничего типа "граф", иначе получишь не то.

Вообще-то, для таких вещей есть Turbo Vision. Но если хочешь, могу помочь сделать..

Покажи, как ты делала фон. И вообще, если что-то спрашиваешь - спрашивай конкретно. Никто не сможет угадать, чего ты там написала. А в программировании все зависит от одного бита..
volvo
Цитата
сделать полосочку, стрелками управлять, а не циферками
Здесь я выкладывал реализацию меню, если тебя интересует... Как графический, так и текстовый вариант. Приведенное на сайте меню отображается по выбору пользователя: горизонтально или вертикально. Комментарии присутствуют. Разобраться (при желании) несложно. Без желания, разумеется, разобраться не получится никогда.
nastena
вот, что я сделала..... (Показать/Скрыть)


вот только для того, чтобы у меня работали мои процедуры, я их должна послностью переделать в граф режим????...помогите плиз с оформлением меню

М
просьба не вставлять в мессадж большие коды повторно. Lapp

Lapp
Цитата(nastena @ 9.12.2009 15:50) *
вот, что я сделала.....
...
вот только для того, чтобы у меня работали мои процедуры, я их должна послностью переделать в граф режим????...помогите плиз с оформлением меню
Супер. Вывела несколько строчек в графике - вот, что ты сделала.
Теперь о том, чего ты НЕ сделала.
1. Ты не послушала моих слов о том, что графика тебе НЕ НУЖНА. Тебе что, слово что ли нравится, что так к ней пристала?
2. Ты совершенно не вняла совету volvo.

А теперь, что небе НУЖНО сделать:
1. перестать говорить о себе, начать слушать;
2. не выкладывать заново гигантские программы, если изменила несколько строчек (смотреть жутко неудобно);
3. когда выкладываешь код, нужно заботиться о правильной кодировке;
4. меню нужно делать ОТДЕЛЬНО.

Отложи в сторону свою замечательную программу. Если ты хочешь меню - оно ДОЛЖНО быть отдельной процедурой. Напиши отдельную программу для создания/тестирования/отладки меню, и только, когда она БУДЕТ ГОТОВА - подключай процедуру к своей программе. Меню можешь либо взять по ссылке volvo, либо сделать сама с помощью Форума.

И еще раз, главное: научись разговаривать, а не говорить свое только. В разговоре по крайней мере половина - это слушать.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.