Страница 1 из 1

Нужно доделать программу (ООП)

Добавлено: 21 апр 2013, 21:04
Olokov
Привет Всем. Очень требуется Ваша помощь.
Нужно дописать два метода: сортировку по разным полям класса и поиск нужной информации за конкретным признаком.
Добавление, редактирование, удаление и вывод информации на экран я уже сделал. Все задания делаются к базе данных. Очень Вас прошу, если нужно заплатить деньги, я не против, просто нужно сдать курсовую работу.

Вот сам код:

Код: Выделить всё

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

class CashBox
{
  private:
    static int count;
    int number;
    enum {max=15};
    char Name[max];
    char departure_date[max];
    char departure_time[max];
    char arrival_date[max];
    char arrival_time[max];
    int price;
  public:
    static int getCount()
        { return count; }
    static void setCount(int c)
        { count = c; }
    void setNumber(int n)
        { number = n; }
    void get()
    {
      number=CashBox::getCount()+1;
      CashBox::setCount(number);
      cout<<"\Bbedit Name: "; gets(Name);
      cout<<"\Press Date of Departure: "; gets(departure_date);
      cout<<"\Press Time of Departure: "; gets(departure_time);
      cout<<"\Press Date of Arrival: "; gets(arrival_date);
      cout<<"\Press Time of Arrival: "; gets(arrival_time);
      cout<<"\Bbedit price: "; cin>>price;
    }

    void show() const
    {
      printf("\n%2d %15s %8s %8s %8s %8s %10d",number, Name, departure_date, departure_time, arrival_date, arrival_time, price);
    }

};

class DataBase
{
    private:
        CashBox CB[100];
        int i;
    public:
        DataBase() : i(0)
            {}
        void add()
        {
            //CB[i] = new CashBox;
            CB[i++].get();
        }
        void del()
        {
            int n;
            cout<<"\nWitch number you want to delete? ";
            cin>>n;
            for(int j=n-1; j<CashBox::getCount()-1; j++)
            {
                CB[j] = CB[j+1];
                CB[j].setNumber(j+1);
            }
            delete &CB[i--];
            CashBox::setCount( CashBox::getCount()-1 );
        }
        void show() const
        {
            for(int j=0; j<CashBox::getCount(); j++)
                CB[j].show();
        }
        void edit()
        {
            int n;
            cout<<"\nWitch number you want to edit? ";
            cin>>n;
            CB[n-1].get();
            CB[n-1].setNumber(n);
            CashBox::setCount(CashBox::getCount()-1);
        }
};

int CashBox::count = 0;

int main()
{
  clrscr();
  DataBase db;
  char choice;

  do{
    cout<<"\nAdd record-a \nDelete record-d ";
    cout<<"\nShow records-s \nEdit records-e \nQuit-q\n";
    cin>>choice;
    switch(choice)
    {
       case 'a': db.add();
                break;

       case 'd': db.del();
                break;

       case 's': db.show();
                break;

       case 'e': db.edit();
                break;

       case 'q': cout<<"\nCreated by Andrew";
         cout<<"\nPress any key to exit!";
         getch();
         exit(1);

       case 'c': clrscr(); break;
       default : cout<<"\nUnknown command!\n";
    }

    //cout<<"\nContinue(y/n)? ";
    //cin>>choice;
  }while(choice);
  
  getch();
  return 0;
}
 
Или Файл - http://www.mediafire.com/?2yul3uc9q22p31s

Re: Нужно доделать программу (ООП)

Добавлено: 25 апр 2013, 17:27
Romeo
1. Зачем нужно статическое поле count в CashBox, если есть поле i в классе DataBase, которое как раз и хранит количество объектов типа CashBox?
2. Сомневаюсь, что del работает правильно, так он пытается динамически удалить данные, которые не создавались динамически.
3. В чём именно проблема написать поиск? Нужен просто цикл по всем объектам типа CashBox и сравнение какого поля с введённым пользователем значением.
4. Когда разберёмся с поиском, пристумим к сортировке. Здесь чуть сложнее, но тоже ничего страшного.

Готов помогать именно в таком режиме. Дописывать код не стану даже за деньги. Я считаю, что человек должен получить знания в университете, а не купить оценку за деньги.