Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ графическое меню

Автор: nastena 8.12.2009 0:11

Здравствуйте!!! Прошу вашей помощи по теме графика! помогите, очень вас прошу, немного украсить меню программы..очень очень нужно))))!!!! плиззззз!!
нужно, чтобы красиво появлялись пункты меню....и заглавие вылетало.....очень прошу..программу написать написала, а как с графикой быть не знаю((((



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 8.12.2009 0:44

Цитата(nastena @ 7.12.2009 20:11) *
программу написать написала, а как с графикой быть не знаю((((
Да уж, написала.. Ты вообще что-нибудь про отступы слышала? Теперь ее всю форматировать, чтобы посмотреть? Кроме прочего, она не компилируется..

Ты имеешь в виду, что тебе нужно переделать меню с текстового на графику?

Автор: nastena 8.12.2009 8:48

программа рабочая!!!!!!!!!! и компил-ся!!!!!!! я говорю, что нужно добавить немного графики в меню и все!

Автор: Lapp 8.12.2009 10:11

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

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

Ответь только без крика, ладно?

Автор: nastena 8.12.2009 19:32

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

Автор: Lapp 8.12.2009 22:59

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

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

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

Покажи, как ты делала фон. И вообще, если что-то спрашиваешь - спрашивай конкретно. Никто не сможет угадать, чего ты там написала. А в программировании все зависит от одного бита..

Автор: volvo 8.12.2009 23:34

Цитата
сделать полосочку, стрелками управлять, а не циферками
http://volvo71.narod.ru/menus.htm#menu_text_mode я выкладывал реализацию меню, если тебя интересует... Как графический, так и текстовый вариант. Приведенное на сайте меню отображается по выбору пользователя: горизонтально или вертикально. Комментарии присутствуют. Разобраться (при желании) несложно. Без желания, разумеется, разобраться не получится никогда.

Автор: nastena 9.12.2009 19:50

вот, что я сделала..... (Показать/Скрыть)


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

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


Автор: Lapp 10.12.2009 0:11

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

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

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

И еще раз, главное: научись разговаривать, а не говорить свое только. В разговоре по крайней мере половина - это слушать.