Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Поэтапное написание задачи для всех кому интересно (VC2010Express(console) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны действительные числа http://www.cyberforum.ru/cpp-beginners/thread1159469.html
Помогите решить задание Даны действительные числа s, t. Получить f(t,-2s,1.17) + f(2.2,t,s-t), где f(a,b,c)=(2a-b-sin(c))/(5+|c|). Задание нужно решить в 2 функции. Нашел некий пример в...
C++ Компьютерная графика Люди, прошу помощи. Мне нужно создать компьютерную 3D графику. Причем для меня это выглядело так: пришел препод, сказал всего 1 фразу, - "вам надо использовать canvas", - и ушел. При этом он... http://www.cyberforum.ru/cpp-beginners/thread1159460.html
Найти сумму ряда с заданной точностью = 10 C++
Народ, что-то не пойму, что имеется в виду: Найти сумму ряда с точностью =10, общий член которого а=2*n!/(3n)! Как определяется и проверяется точность в коде? Добавлено через 56 минут...
Create class ‘Money’ for working with money sums C++
Help Create class ‘Money’ for working with money sums. Sum must be represented by array, each element of it is decimal digit. Maximum array size is 100 digits, real size is given by...
C++ Подправить код. НОД двух натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread1159428.html
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) {setlocale(LC_ALL,"Russian"); int a,b; cout<<"Введите два числа через пробел\n"; do ...
C++ Класс "Число" Имеется такая задача Класс "Число": количество цифр, основа системы исчисления. Производные: "целое" (наличие знакового разряда), "действительное" (наличие знакового разряда, длина дробной части,... подробнее

Показать сообщение отдельно
Ян_
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 9

Поэтапное написание задачи для всех кому интересно (VC2010Express(console) - C++

27.04.2014, 21:47. Просмотров 227. Ответов 0
Метки (Все метки)

Я пишу работу по учёбе и буду постепенно выкладывать что я сделал, как для критика так и для советов) буду всем вам признателен за помощь)
Итак, начнем !
Задание:
Кликните здесь для просмотра всего текста

1 . Заказ блюд в ресторане
Требования к программному обеспечению
Функциональные требования :
1 . Управление ингредиентами
1.1 . Возможность добавлять ингредиент
1.2 . Возможность удалять ингредиент (в случае если он не входит в состав какого-то блюда )
1.3 . Возможность изменить ингредиент
1.4 . Возможность просмотреть перечень всех ингредиентов
2 . Управление блюдами
2.1 . Возможность добавлять блюдо
2.2 . Возможность удалять блюдо
2.3 . Возможность изменять блюдо
2.3.1 . Возможность добавлять и удалять ингредиенты блюда
2.3.2 . Возможность изменять название блюда
2.3.3 . Возможность изменять цену блюда
2.3.4 . Возможность изменять время приготовления блюда
2.4 . Возможность просмотреть информацию о конкретном блюдо
3 . Управление заказами
3.1 . Возможность добавить заказ
3.2 . Возможность удалить заказ
3.3 . Возможность изменить заказ
3.3.1 . изменить количество блюд
3.3.2 . изменить общую стоимость
3.3.3 . изменить номер столика данного заказа
3.4 . Возможность просмотреть информацию о заказе
Нефункциональные требования :
1 . Требования к внешнему интерфейсу
1.1 . Внешний интерфейс должен быть командным
1.2 . Применение должно быть консольным
2 . Данные должны храниться в файлах после выхода из программы.
3 . Система должна обеспечить правильность введенных данных
4 . Логическая структура данных
4.1 . Информационный объект блюдо

Итак первым пунктом у меня стояло создания ингредиента,точнее списка ингредиентов.Для этой цели мне послужил класс CIngridients. Я решил для начала напихать разных ингредиенитов в файл а потом посредством конструктора оттуда тыркать в list(условие задания), и отображать. При добавлении нового ингредиента мы его добавляем в файл и добавляем в list вот код конструктора который вышел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CIngridients::CIngridients()
{
    cout<<"chose ingridients to add in dish - \n";
    FIngridients.open("Ingridients.txt",ios::in);
    int i  = 0;
    int IngrNumb;
    string h1;
    while(getline(FIngridients, h1))//считаем все строки и понита ради начнем с 0
    {
        cout<<i<<"."<<h1<<"\n";
        i++;
    }
    i = 0;
    cin>>IngrNumb;
    while(getline(FIngridients, h1))//считаем все строки и понита ради начнем с 0
    {
        if (i==IngrNumb) 
        {
            DishIngridients.push_back(h1);
 
        }
        i++;
    }
 
 
}
а вот код всей программы(там много заготовок под будушие функции, так что не судите строго)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <exception>
#include <stdio.h>
#include <windows.h>
#include <string>//если поставить библиотеку String.h тогда cin;getline посылают на йух
#include <list>
#include <cstdlib>
#include <cstdio>
#include <fstream>
//2 бибилиотеки для файлов
//#include <conio.h>
using namespace std;
fstream FIngridients; //Тут будет доступ к файлику со всеми ингридиентами(попробую реализорвать так что-бы не пропускало одинаковые)
fstream FDishes; //а тут тоже самое но с блюдами
fstream FOrders; //a тут тоже самое с заказами
fstream FSystem; //системный(буфер, временное хранилище и так далее)
 
 
class CIngridients
{
private:
public:
    list<string> DishIngridients;
    string IngridientName;
    void AddNewIngridient(string);//не по этому!!!вводить ингридиент с клавиатуры(если такого ингридиента нету тогда предложить создать его и вызвать конструктор)
    CIngridients(void);
    ~CIngridients();
//list<string>  ChangeIngridient();//как бы меняем в листе названий одно из них
void    ShowAllIngridients();
};
CIngridients::CIngridients()
{
    cout<<"chose ingridients to add in dish - \n";
    FIngridients.open("Ingridients.txt",ios::in);
    int i  = 0;
    int IngrNumb;
    string h1;
    while(getline(FIngridients, h1))//считаем все строки и понита ради начнем с 0
    {
        cout<<i<<"."<<h1<<"\n";
        i++;
    }
    i = 0;
    cin>>IngrNumb;
    while(getline(FIngridients, h1))//считаем все строки и понита ради начнем с 0
    {
        if (i==IngrNumb) 
        {
            DishIngridients.push_back(h1);
 
        }
        i++;
    }
 
 
}
CIngridients::~CIngridients(void)
{}
//list<string>  Ingridients::ChangeIngridient() пока что нечего возвращать
//{}
void    CIngridients::ShowAllIngridients()
{}
void CIngridients::AddNewIngridient(string NameIngridients)
{
 
        cout<<"Enter name of the Ingridient - \n";
    getline(cin,IngridientName);
    FIngridients.open("Ingridients.txt",ios::app);
    FIngridients<<IngridientName<<"\n";
    FIngridients.close();
    cout<<"Ingridient created. Ingridient's name - "<<IngridientName<<"\n";
    //+ добавить в лист ингридиент(если его нету в списке предложеных)
 
}
class Dish
{
private:
public:
};
class Order
{
private:
public:
};
 
int main()
{   
    SetConsoleCP (1251);
    SetConsoleOutputCP(1251);
    //FIngridients = fopen("Ingridients.txt","r+");
    CIngridients a;
    system ("pause");
    return 0;
}
Пишите отзывы критику вопросы помогу чем смогу)

Добавлено через 29 минут
Возникла вот такая вот проблема
list iterator not decrementable
происходит при попытке вывести последний элемент листа
cout<<DishIngridients.back();

Добавлено через 11 минут
проблемма была изза того что я не закрыл файл после прочтения его до конца и в лист ничего не заносилось а потом пытался из пустоты вытянуть номер последнего елемента) вот как выглядит кусок кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CIngridients::CIngridients()
{
    cout<<"chose ingridients to add in dish - \n";
    FIngridients.open("Ingridients.txt",ios::in);
    int i  = 0;
    int IngrNumb;
    string h1;
    while(getline(FIngridients, h1))//считаем все строки и понита ради начнем с 0
    {
        cout<<i<<"."<<h1<<"\n";
        i++;
    }
    FIngridients.close();
    i = 0;
    FIngridients.open("Ingridients.txt",ios::in);
    cin>>IngrNumb;
    while(getline(FIngridients, h1))//считаем все строки и понита ради начнем с 0
    {
        if (i==IngrNumb) 
        {
            DishIngridients.push_back(h1);
        }
        i++;
    }
    FIngridients.close();
    cout<<DishIngridients.front()<<"\n";
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru