Нужен пример создания меню - C (СИ)
Формулировка задачи:
как можно создать начальное меню на Си какие для этого используются функции??
желательно на простом примере
заранее спасибо
Решение задачи: «Нужен пример создания меню»
textual
Листинг программы
#include <iostream> /*включение в программу заголовочного файла потоков ввода/вывода */
#include <conio> /*содержит функции очистуи экрана*/
#include <stdio> /*включение для форматного ввода/вывода текста*/
#include <windows> /*подключение библиотеки для корректной работы руссктх шрифтов*/
char bufRus[256]; /*инициализация таблицы символов*/
char* r(const char* text) /* создание функции для отображения русских шрифтов*/
{
CharToOem(text, bufRus);
return bufRus;
}
typedef struct
{ /*определение структуры кошки*/
char poroda[10];
int koll;
int cena;
int vozr;
}koshki;
/*начало main*/
main ()
{
int i,j,i1,k,kol,x,y; /*объявление переменных*/
int menu; /*объявление переменной для работы с меню*/
koshki *b;
k=1;
/*proverka na to chtobi ne bilo vvedeno*/
/*porod bolshe chem mojet rabotat programma*/
while (k == 1)
{
cout << r("\nВведите количество пород\n");
cin >> kol;
if (kol>100)
{
cout << r("Программа не может работать с таким количеством данных");
k=1; /*если число меньше 100,то программа выходит из цикла*/
}
else k=0;/*если число больше то программа уходит в цикл*/
}
for (i=0; i<kol ; i++)
{
clrscr();
cout << r("\nВведите породу \n");
gets (b[i].poroda); /*ввод названия пород кошек*/
cout << r("введите количество котят\n");
cin >> b[i].koll; /*ввод количество кошек*/
cout << r("введите возраст котят\n");
cin >> b[i].vozr; /*ввод возраста котят*/
cout << r("введите цену за одного котенка\n");
cin >> b[i].cena; /*ввод цены за одного кота*/
}
clrscr(); /*очистка экрана*/
/*вывод полученной таблицы*/
cout << "\n+---+-----------+-----------+---------------+--------+\n";
cout << "\n| # |\tmodel\t| vozrast | kolichestvo | cena |\n";
cout << "\n+---+-----------+-----------+---------------+--------+\n";
i=0;
while (i<kol)
{
printf ( "|%3d| %10s| %10d| %14d|%8d|\n", i+1,
b[i].poroda,
b[i].vozr,
b[i].koll,
b[i].cena);
i++;
}
menu = 1;
for (i1=0; menu!=0; i1 = i1) /*выход из цикла возможен только если с*/
{ /*клавиатуры будет введен 0*/
clrscr();
// !!!!!!!!!! ВОТ ТУТ НАЧИНАЕТЬСЯ РЕАЛИЗАЦИЯ МЕНЮ, С ФУНКЦИЕЙ SWITCH ( ).....
cout << r("\n\n\aЧто вы хотите страшного сделать с таблицей:");
cout << r("\n- для редактирования нажмите - 1");
cout << r("\n- для просмотра таблицы нажмите - 2");
cout << r("\n- для показа статистики нажмите - 3");
cout << r("\n- для добавки доболнительных записей в таблицу нажмите - 4");
cout << r("\n- для выхода введите - '0' ");
cin >> menu;
switch (menu)
{
case 1:
/*redaktirovanie tablici*/
clrscr ();
{
for (k = 1; k!=0; k=k)
{ clrscr();
cout << "\n+---+-----------+-----------+---------------+--------+\n";
cout << "\n| # |\tmodel\t| vozrast | kolichestvo | cena |\n";
cout << "\n+---+-----------+-----------+---------------+--------+\n";
i=0;
while (i<kol)
{
printf ( "|%3d| %10s| %10d| %14d|%8d|\n", i+1,
b[i].poroda,
b[i].vozr,
b[i].koll,
b[i].cena);
i++;
}
cout << r("\nдял редактирования введите первую цифру - номер столбца\n");
cout << r("а вторая цифра номер строки\n");
cout << r("для выхода введите - '0 и 0' ");
cin >>x>>y;/*получение номер столбца и номера строки которые необходимо изменить*/
switch(x)
{
case 1:
{ /*изменение названия вида*/
cout << r("\n Введите новое название вида кошки ")<<r("строки - ")
<<b[y-1].poroda;
gets(b[y-1].poroda);
clrscr();
break;
}
case 2:
{ /*изменения возраста котов*/
cout <<r("\n Введите новый возраст ккотят в строку ")<<y;
cin >> (b[y-1].vozr);
clrscr();
break;
}
case 3:
{ /*изменение количество котов*/
cout <<r("\n Введите новое количество котят породы ")
<<b[y-1].poroda;
cin >>(b[y-1].koll);
clrscr();
break;
}
case 4:
{ /*изменение цены за одного кота*/
cout <<r("\n Введите цену цену за одного котенка породы ")
<<b[y-1].poroda;
cin >>(b[y-1].cena);
clrscr();
break;
}
case 0:
{ /*выход из редактирования таблицы*/
k = 0;
break;
}
} }
case 2:
/*prosmotr tablici*/
{
clrscr();
cout << "\n+---+-----------+-----------+---------------+--------+\n";
cout << "\n| # |\tmodel\t| vozrast | kolichestvo | cena |\n";
cout << "\n+---+-----------+-----------+---------------+--------+\n";
i=0;
while (i<kol)
{
printf ( "|%3d| %10s| %10d| %14d|%8d|\n", i+1,
b[i].poroda,
b[i].vozr,
b[i].koll,
b[i][BASH][/BASH].cena);
i++;
}
cout <<r("\n для выхода нажмите любую клавишу...");
getch();
clrscr();
break;
}
case 3:
/*ccozdanie statistici*/
{ clrscr();
x=0; y=0;
for (i=0; i < kol; i++)
{
x = x + (b[i].koll*b[i].cena); /*подсчет суммы при продаже всех котят*/
y = y + b[i].koll; /*подсчет количества котят, всго*/
}
cout <<r("\n Всего разных видов котят - ")<<kol;
cout <<r("\n общее количество котят выставленнызх на продажу - ")<<y;
cout <<r("\n Сумма при продаже всех котят - ")<<x;
cout <<r("\n для выхода нажмите любую клавишу...");
getch ();
break;
}
case 4:
/*!dobovlenie novih zapisey v tablicu!*/
{
y = kol;
cout <<r("\n сколько вы хотите добавить записей? ");
cin >> kol;
for (i = y; i <y + kol; i++) /*добавление новых записей к существующим в таблице*/
{
clrscr;
cout << "\n vvedite porodu \n";
gets (b[i].poroda);
cout << "vvedite kolichestvo kotiat\n";
cin >> b[i].koll;
cout << "vvedite vozrast kotiatka\n";
cin >> b[i].vozr;
cout << "vvedite cenu za kotianku\n";
cin >> b[i].cena;
}
kol=y+kol;
clrscr(); /*очистка экрана и вывод таблицы*/
cout << "\n+---+-----------+-----------+---------------+--------+\n";
cout << "\n| # |\tmodel\t| vozrast | kolichestvo | cena |\n";
cout << "\n+---+-----------+-----------+---------------+--------+\n";
i=0;
while (i<kol)
{
printf ( "|%3d| %10s| %10d| %14d|%8d|\n", i+1,
b[i].poroda,
b[i].vozr,
b[i].koll,
b[i].cena);
i++;
}
cout <<r("\n для выхода нажмите любую клавишу...");
getch ();
clrscr();
break;
}
}
break;
}
}
return 0; /*показывает успешное завершение*/
/*конец main*/
}