Witam, moglibyście ocenić mój pierwszy program taki funkcjonalny. Macie jakieś pomysły jak zrobić sortowanie?
#include <iostream>
#include <vector>
#include <windows.h>
#include <string>
#include <fstream>
using namespace std;
fstream plik;
class Event
{
int hour, minute;
string name;
int value;
public:
bool wrong=false;
Event(string n="", int h=0, int m=0)
{
minute=m;
hour =h;
name = n;
}
void add()
{
string name1;
int hour1, minute1;
cout <<endl << "Event name: " ;
cin >> name1;
cout <<endl << "Event hour: " ;
cin >> hour1;
cout <<endl << "Event minute: ";
cin>> minute1;
if (name1!="" && hour1>=0 && hour1<=24 && minute1>=0 && minute1<=60)
{
if (hour1==24)
hour1=0;
if (minute1==60)
{
minute1=0;
hour1=hour1+1;
}
name = name1;
hour=hour1;
minute=minute1;
value=hour*60+minute;
wrong=false;
plik.open("Data.txt", ios::out | ios::app) ;
plik << " " << name << " at ";
if (hour<10)
plik <<"0"<<hour;
else
plik << hour;
plik << ":";
if(minute<10)
plik <<"0"<<minute;
else
plik <<minute;
plik<<endl;
}
else
{
wrong=true;
}
}
void display()
{
cout << " " << name << " at ";
if (hour<10)
cout <<"0"<<hour;
else
cout << hour;
cout << ":";
if(minute<10)
cout <<"0"<<minute;
else
cout <<minute;
cout<<endl;
}
int getValue()
{
return value;
}
void edit()
{
int select; string name2; int hour2,minute2;
cout << "Editing an element" << endl << "1. Edit name" << endl << "2.Edit time" << endl << "Select: ";
cin >> select;
if (select==1)
{
cout << "Current name: " << name << endl << "New name: ";
cin >> name2;
if (name2!="") name=name2;
else cout << "Wrong name! Try again!" << endl;
}
if (select==2)
{
cout<<endl << "Current hour: " << hour << endl << "New hour: ";
cin>> hour2;
cout<<endl << "Current minute: " << minute << endl << "New minute: ";
cin >> minute2;
if (hour2>=0 && hour2<=24 && minute2>=0 && minute2<=60)
{
hour=hour2;
minute=minute2;
}
else cout << "Wrong time! Try again!" << endl;
} // if select 2
}// edit
};
int main()
{
bool created=false;
vector<Event> evs;
char choice, cho;
int createdItem;
do
{
cout<<"---------------------------"<<endl;
for (int i=0; i<evs.size() ;)
{
if (created==true)
{
createdItem=i;
evs[i].display() ;
i++;
}
else if (created==false)
break;
else
cout << "Something got wrong!";
}
cout<<"---------------------------"<<endl<<endl ;
cout << "Main Menu" << endl<<endl;
cout << "1. Add an event" << endl;
cout << "2. Pop an event" << endl;
cout << "3. Edit an event" << endl;
cout << "4. Clear all events" << endl;
cout << "5. End the program" << endl;
cout << "Your choice: ";
cin >> choice;
switch (choice)
{
case '1':
{
do
{
Event ev1;
ev1.add();
if (ev1.wrong==false)
{
evs.push_back(ev1);
created=true;
system ("cls");
cout << "1.Continue adding events " << endl;
cout << "2.Back to main menu" << endl;
cout << "Your choice: ";
cin >> cho;
}
else
{
cout << "Error! Wrong values! Try again!" << endl;
Sleep(1000);
system("cls");
break;
}
}
while (cho=='1');
}
break;
case '2':
evs.pop_back();
break;
case '3':
{
int elem;
system("cls");
cout << "Which element: ";
cin >> elem;
if (elem-1<=createdItem)
evs[elem-1].edit();
else cout << "This element doesn't exist." << endl;
}
break;
case '4':
{
evs.clear();
created=false;
createdItem=0;
}
break;
case '5':
{
plik.close() ;
plik.clear() ;
return 0;
}
}
system("cls");
}
while (choice!=5);
return 0;
}