Официальный сайт студ.городка НГТУ
Программирование и БД » [c++]меню. 

#1  15.04.07 19:56

[c++]меню.

Выложите, пожалуйста, сюда код простенького меню на c++. Сильно заумного ничего не надо. Просто нужно к курсовой.

Offline

#2  15.04.07 22:11

Re: [c++]меню.

printf("Выберите пункт меню:\n");
printf("1. Добавить нового упыря\n");
printf("2. Редактировать упыря\n");
printf("3. Удалить упыря\n");
printf("4. Выйти из живодерни\n");
scanf("%d", &сhoise);

PS гадом буду, но меню написал

Исправлено Malkolm (17.04.07 09:53)

Offline

#3  15.04.07 22:11

Re: [c++]меню.

Уж не долозяну ли? :)

Offline

#4  16.04.07 02:32

Re: [c++]меню.

Malkolm, scanf("%d", &Choise); забыл :D

Offline

#5  16.04.07 10:15

Re: [c++]меню.

Andron_ написал(а):

Malkolm, scanf("%d", &Choise); забыл :D

Вообще то дырявый вариант для ввода, но для моего меню сойдет.

Исправлено Malkolm (16.04.07 10:18)

Offline

#6  16.04.07 18:02

Re: [c++]меню.

Нет, это для курсовой Лауферман. Я в инете посмотрел, там так все сложно, в моей работе не это главное, поэтому такое и не требуется! Линии, тени и прочее. Не для меня в общем.

Offline

#7  17.04.07 00:34

Re: [c++]меню.

Malkolm, \n забыл :))))))

Offline

#8  17.04.07 00:39

Re: [c++]меню.

если именно на с++ надо, то связку printf/scanf смени на cout/cin ;)

Offline

#9  17.04.07 07:49

Re: [c++]меню.

Дональдак написал(а):

Нет, это для курсовой Лауферман. Я в инете посмотрел, там так все сложно, в моей работе не это главное, поэтому такое и не требуется! Линии, тени и прочее. Не для меня в общем.

Ну тогда пользуй аццкое меню Malkolm,a.

Offline

#10  17.04.07 09:53

Re: [c++]меню.

efferson написал(а):

Malkolm, \n забыл :))))))

точно

Offline

#11  17.04.07 16:07

Re: [c++]меню.

Интересно, автора удовлетворил ответ?

Offline

#12  17.04.07 18:29

Re: [c++]меню.

для курсового Лауферман наверняка

Offline

#13  17.04.07 18:32

Re: [c++]меню.

аццкое меню Malkolm,a

В нетленку :)))

Offline

#14  17.04.07 19:32

Re: [c++]меню.

До такого меню я и сам дошел. Сегодня Лауферман сказала, что на сервере выложит модуль с меню, который по ее представлениям самый лучший для такой задачи, так что можно сказать, что вопрос решен.

Offline

#15  17.04.07 23:48

Re: [c++]меню.

расскажи потом, что она выложила

Offline

#16  19.04.07 19:44

Re: [c++]меню.

Была программа по работе со списками (студенты у нее делали, чтобы защиту курсовой автоматом получить), где было такое меню. его и рекомендовала.

Код::

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define LEFT 75
#define EXIT 27
#define RIGHT 77

int MENU (char **m)
{
int n, x=3, y;

for (y=0; strcmp(m[y],NULL)!=0; y++);

textbackground(1);
textcolor(14);
clrscr();

for (n=0;n<y;n++)
 {
 gotoxy(x+n*10,1);
 cprintf("%s",m[n]);
 }

n=0;
while(1)
 {
 char c;
 gotoxy(x+n*10,1);
 textbackground(0);
 cprintf("%s",m[n]);
 textbackground(1);
 c=getch();
 gotoxy(x+n*10,1);
 cprintf("%s", m[n]);

 switch(c)
 {
 case'\r': window(1,1,80,45);clrscr(); return(n);
 case EXIT: window(1,1,80,45);return(-1);
 case LEFT: if (n != 0) n--;else n = y-1;break;
 case RIGHT: n++; if (n == y)n = 0; break;
 }
}
}

void main()
{
int menu, num, menu2;
FILE *fstream;
char f_name[15];
char *ss[]={"Write","Delete","Print_f","Print_l","Statis","Obnovlen","EXIT",NULL};
clrscr();

puts("Enter file name");
gets(f_name);

if((fstream=fopen(f_name,"rb+"))==NULL)
 {
 if((fstream=fopen(f_name,"wb+"))==NULL)
  {
  fprintf(stderr,"Cannot open input file.\n");
  return;
  }
 }

 for(;;)
 {
 menu=MENU(ss) + 1;

 switch(menu)
 {
 case 1:
  fclose(fstream);  fstream=fopen(f_name,"wb+");

  break;
  case 2:

  break;
  case 3:

  break;
  case 4:

  break;
  case 5:

  break;
  case 6:

  break;
  case 7:
  fclose(fstream);
  exit(1);
  }
 }
}

Offline

#17  19.04.07 22:56

Re: [c++]меню.

Дональдак написал(а):

Была программа по работе со списками (студенты у нее делали, чтобы защиту курсовой автоматом получить), где было такое меню. его и рекомендовала.

А не легче уж маленький класс менюшек реализовать?

Offline

#18  20.04.07 20:16

Re: [c++]меню.

В ftp://bobik.hostel.nstu.ru/upload menu.h и menu.cpp
Можешь посмотреть написано с классами и исключениями, не оч сложно вроде.

Offline

#19  21.04.07 14:08

Re: [c++]меню.

Да я не с городка, у меня туда доступа нет!

Offline

#20  22.04.07 10:23

Re: [c++]меню.

Код::

// menu.h

#ifndef MENU_H
#define MENU_H

#include <string>	// Класс строк
#include <iomanip>	// манипуляторы
#include <iostream>	// Потоки ввода/вывода
#include <vector>	// STL Класс вектор

using namespace std;

//#include "except.h"	// Классы Исключений


class Menu{	// Класс Меню
	char*name;		// Имя меню
	vector<char*> vc;	// Пункты
public:
    Menu(char*nm=" Menu"/*Имя меню*/, char**pp_=NULL/*массив пунктов-строк*/) throw(MemExcept&);
    
    int operator()()/* const throw(OverFlowExcept&,IExcept&)*/;	// Меню
    int add(const char*pc)/* throw(MemExcept&)*/;			// Добавление пункта
    
    ~Menu();
};

#endif

Код::

// menu.cpp
	// Консольное меню
#include "menu.h"

// Конструтор Меню
Menu::Menu(char*nm, char**pp_)// throw(MemExcept&) 
{
//  try{
  name=new char[strlen(nm)+1];
  strcpy(name,nm);
  vc.reserve(10);
  if(!pp_)return;
  for(int k=0;pp_[k]!=NULL;k++) 
    vc.push_back(strcpy(new char[strlen(pp_[k])+1], pp_[k]));
 
 // }catch(bad_alloc&) {throw MemExcept("Error: vid. pamyati Menu");}
}
	// Деструктор
Menu::~Menu()
{
 delete name;
 vector<char*>::iterator it=vc.begin();
//  while(it!=vc.end()) {delete *it; *it=0;}	
// vector сам удаляет своё содержимо почему-то
}

	// Вывод меню и запрос действий у пользователя
int Menu::operator()()// const throw(OverFlowExcept&,IExcept&) 			// Меню
{
  int act, n;
  cout<<name<<'('<<vc.size()<<')'<<endl;
  
  vector<char*>::const_iterator it=vc.begin();
  for(n=0;it!=vc.end();it++,n++)
    cout<<setw(2)<<n<<": "<<*it<<endl;
  cout<<"Input act, please>";
  cin>>act;
  if(act<0||act>=n)return(-1);// throw(OverFlowExcept("Incorrect choise"));
  return act;	// Возвращает номер выбранного действия
}

	// Добавление пункта в конец меню
int Menu::add(const char*pc)// throw(MemExcept&)
{
 try{
 vc.push_back(strcpy(new char[strlen(pc)+1], pc));
 return vc.size()-1;
 }catch(bad_alloc&){ return (-1); /*throw MemExcept("Error: vid. pamyati Menu");*/}
}

Я там убрал выбрасывание исключений, а то ещё надо было бы подключать мою иерархию классов Исключений, которая не нужна. Если что подправь ещё, я не тестил.

Исправлено Jeka (22.04.07 10:28)

Offline

#21  22.04.07 18:48

Re: [c++]меню.

Спасибо большое!

Offline

Программирование и БД » [c++]меню. 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.054 сек.
Выполнено 11 запросов.