Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //In order for program to work, these files are needed:
- //-projectmanagerlist.sfi file with one or more given line of manager details
- //-projectmemberlist.sfi file with only data is '0'
- //-projectlist.sfi file with only data is '0'
- //-tasklist.sfi file with only data is '0'
- //-subtasklist.sfi file with only data is '0'
- #include<iomanip>
- #include<iostream>
- #include<string>
- #include<stdio.h>
- #include<string.h>
- #include<windows.h>
- #include<time.h>
- #include<fstream>
- #include<assert.h>
- using namespace std;
- void createNewProject(); //Done
- void openExistingProjects();
- void createNewProjectMembers();
- void modifymember(); //Done
- void deletemember(); //Done
- void createtask(); //Done
- void edittask();
- void deletetask(); //Done
- void linktask();
- void createsubtask(); //Done
- void goOut(); //Done
- void projectManagerPage(); //Done
- void projectPage(); //Done
- void projectMemberPage(); //Done
- void updatetaskprogress(); //Done
- void viewtaskprogress(); //Done
- //Loading bar
- void loadingbar(); //Done
- //create empty file
- void createfile(); //Done
- //create default Project Manager account
- void createPMaccount(); //Done
- ///////////////////////////
- //// CLASS DECLARATION ////
- ///////////////////////////
- class project
- {
- public:
- //int projectNumber;
- string projectName;
- int sd,sm,sy;//start day,month,year
- int ed,em,ey;//end day,month,year
- float projectProgress;
- }proj;
- class task
- {
- public:
- int taskNumber;
- string taskName;
- int sd,sm,sy;
- int ed,em,ey;
- float taskProgress;
- }tsk;
- class subTask
- {
- public:
- string subTaskName;
- float subTaskProgress;
- }sbtsk;
- class projectManager
- {
- public:
- string loginName;
- string loginCode;
- }manager;
- class projectMember
- {
- public:
- string loginName;
- string loginCode;
- //int uid;
- }member;
- void loadingbar()
- {
- cout<<"LOADING ";
- for(int a=0;a<15;a++)
- {
- Sleep(800);
- cout<<".";
- }
- system("cls");
- cout<<"LOADING COMPLETE\n";
- }
- ///////////////////////////
- //// CREATE EMPTY FILE ////
- ///////////////////////////
- void createfile()
- {
- ofstream simpan;
- simpan.open("projectmanagerlist.sfi");
- simpan.close();
- simpan.open("projectmemberlist.sfi");
- simpan<<"0"<<endl;
- simpan.close();
- simpan.open("projectlist.sfi");
- simpan<<"0"<<endl;
- simpan.close();
- simpan.open("tasklist.sfi");
- simpan<<"0"<<endl;
- simpan.close();
- simpan.open("subtasklist.sfi");
- simpan<<"0"<<endl;
- simpan.close();
- }
- ////////////////////////////////////////
- //// CREATE PROJECT MANAGER ACCOUNT ////
- ////////////////////////////////////////
- void createPMaccount()
- {
- ofstream simpan;
- ifstream baca;
- baca.open("projectmanagerlist.sfi",ios::beg);
- assert(!baca.fail());
- while(!baca.eof())
- {
- baca>>manager.loginName>>manager.loginCode;
- }
- baca.close();
- //assert(!baca.fail());
- simpan.open("projectmanagerlist.sfi",ios::end|ios::app);
- cout<<"Enter Project Manager Login Name: ";
- cin>>manager.loginName;
- cout<<"Enter Project Manager Password: ";
- cin>>manager.loginCode;
- simpan<<manager.loginName<<"\t"<<manager.loginCode<<endl;
- simpan.close();
- }
- /////////////////////
- //// MAIN DRIVER ////
- /////////////////////
- int main()
- {
- //createfile(); //file is created, this function is no longer needed
- //createPMaccount(); //project manager account create, this function is no longer needed
- string name;
- string pass;
- //int retval;
- cout << "Log In\n";
- cout << "Username: ";
- cin >> name;
- cout << "Password: ";
- cin >> pass;
- ifstream baca,baca2;
- baca.open("projectmanagerlist.sfi",ios::beg);
- baca2.open("projectmemberlist.sfi",ios::beg);
- if(baca.good())
- {
- while(!baca.eof())
- {
- baca >> manager.loginName;
- baca >> manager.loginCode;
- baca2 >> member.loginName;
- baca2 >> member.loginCode;
- if(name==manager.loginName && pass==manager.loginCode)
- {
- cout<<"Welcome Project Manager "<<manager.loginName<<endl;
- Sleep(1000);
- projectManagerPage();
- }
- else if(name==member.loginName && pass==member.loginCode)
- {
- cout<<"Welcome Project Member "<<member.loginName<<endl;
- Sleep(1000);
- projectMemberPage();
- }
- else
- {
- cerr<<"Incorrect Username or Password\n";
- Sleep(3000);
- exit(0);
- }
- }
- }
- else
- {
- cerr<<"Error opening file\n";
- }
- //int i;
- //Dynamic Array
- //projectManager *manageracc = new projectManager[];
- //projectMember *memberacc = new projectMember[];
- //cout<<"Dynamic class array successfully create\n";
- //cout<<"Attempting to open files";
- //for(i=0;i<5;i++)
- //{
- // Sleep(500);
- // cout<<".";
- //}
- //assert(!baca.fail());
- //assert(!baca2.fail());
- //cout<<"\nFile opened successfully!\n";
- //i=0;//reset i value
- //ifstream ambil;
- //ambil.open("projectmanagerlist.sfi",ios::beg);
- //while(!ambil.eof())
- //{
- // ambil>>manager.loginName;
- // ambil>>manager.loginCode;
- // //strcpy(manageracc[i].loginName,manager.loginName);
- // //strcpy(manageracc[i].loginCode,manager.loginCode);
- // manageracc[i].loginName=manager.loginName;
- // manageracc[i].loginCode=manager.loginCode;
- // cout<<"Name: "<<manageracc[i].loginName<<"\t Password: "<<manageracc[i].loginCode<<endl;
- // i++;
- //}
- //int counter1=i;
- //ambil.close();
- //for(i=0;i<counter1;i++)
- //{
- // if(name==manageracc[i].loginName && pass==manageracc[i].loginCode)
- // {
- // cout<<"Access granted.\n";
- // Sleep(2000);
- // projectManagerPage();
- // }
- // else
- // {
- // cout<<"Access Denied.\n";
- // Sleep(2000);
- // exit(0);
- // }
- //}
- //ifstream baca;
- //baca.open("projectmanagerlist.sfi",ios::beg);
- //while(!baca.eof())
- //{
- // baca>>manager.loginName>>manager.loginCode;
- // manageracc[i].loginName=manager.loginName;
- // manageracc[i].loginCode=manager.loginCode;
- // cout<<"Name: "<<manageracc[i].loginName<<"\nPassword: "<<manageracc[i].loginCode<<endl;
- // i++;
- //}
- //int counter1=i;
- //baca.close();
- //i=0;//reset i value
- //ifstream baca2;
- //baca2.open("projectmemberlist.sfi",ios::beg);
- //while(!baca2.eof())
- //{
- // baca2>>member.loginName>>member.loginCode>>member.uid;
- // memberacc[i].loginName=member.loginName;
- // memberacc[i].loginCode=member.loginCode;
- // memberacc[i].uid=member.uid;
- // cout<<"Name: "<<memberacc[i].loginName<<"\nPassword: "<<memberacc[i].loginCode<<"\nUID: "<<memberacc[i].uid<<endl;
- // i++;
- //}
- //baca2.close();
- //int counter2=i;
- //int retval=0;//(1 = project manager, 2 = project member)
- //for(i=0;i<counter1;i++) // loop for manager account comparison
- //{
- // if(name==manageracc[i].loginName && pass==manageracc[i].loginCode)//(if Project Manager)do this with file and MD5
- // {
- // /*cout << "Access granted.\n";
- // Sleep(2000);
- // projectManagerPage();*/
- // retval=1;
- // }
- // //else if(member.loginName==memberacc[i].loginName && member.loginCode==memberacc[i].loginCode)
- // //{
- // // /*cout << "Access granted.\n";
- // // Sleep(2000);
- // // projectMemberPage();*/
- // // retval=2;
- // //}
- // else
- // {
- // //cout << "Access denied.\n";
- // retval=0;
- // }
- //}
- //for(i=0;i<counter2;i++)//lop for member account comparison
- //{
- // if(name==memberacc[i].loginName && pass==memberacc[i].loginCode)
- // {
- // retval=2;
- // }
- // else
- // {
- // retval=0;
- // }
- //}
- //if(retval==1)
- //{
- // cout << "Access granted.\n";
- // Sleep(2000);
- // projectManagerPage();
- //
- //}
- //else if(retval==2)
- //{
- // cout << "Access granted.\n";
- // Sleep(2000);
- // projectMemberPage();
- //}
- //else
- //{
- // cout << "Access denied.\n";
- //}
- if(name=="Jan" && pass=="Jan")/*(if Project Manager)do this with file and MD5*/
- {
- cout << "Access granted.\n";
- Sleep(1000);
- //loadingbar();
- projectManagerPage();
- }
- else if(name=="member" && pass=="member")
- {
- cout << "Access granted.\n";
- Sleep(1000);
- projectMemberPage();
- }
- else
- {
- cout << "Access denied.\n";
- }
- system("pause");
- return 0;
- }
- ////////////////////////////
- //// CREATE NEW PROJECT ////
- ////////////////////////////
- void createNewProject()
- {
- system("cls");
- cout << "Project Details\n";
- cout << "Enter Project Name: ";
- cin >> proj.projectName;
- cout << "Project Start date (dd mm yyyy): ";
- cin>>proj.sd;
- cin>>proj.sm;
- cin>>proj.sy;
- int m=1;
- while(m==1)
- {
- if(proj.sm>0 && proj.sm<13)//while Month is between 1 and 12
- {
- if(proj.sy%4==0)//if it is Leap Year
- {
- if(proj.sm==2)//if it is Leap Year and it is Februari
- {
- if(proj.sd>0 && proj.sd<=29)//Feb in Leap Year is not more than 29 days
- {
- m=0;//exit loop
- }
- else//its Leap Year & Februari, but day entered is more than 29
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- else//Its Leap Year but it is not Februari
- {
- if(proj.sm==4 || proj.sm==6 || proj.sm==9 || proj.sm==11)//It is a 30 days' month
- {
- if(proj.sd>0 && proj.sd<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- else//It is a 31 day's month
- {
- if(proj.sd>0 && proj.sd<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- }
- }
- else//It is not a Leap Year
- {
- if(proj.sm==2)//if it is not Leap Year and it is Februari
- {
- if(proj.sd>0 && proj.sd<=28)//Feb is not more than 28 days
- {
- m=0;//exit loop
- }
- else//Day entered is more than 28
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- else//Its not Leap Year and it is not Februari
- {
- if(proj.sm==4 || proj.sm==6 || proj.sm==9 || proj.sm==11)//It is a 30 days' month
- {
- if(proj.sd>0 && proj.sd<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- else//It is a 31 day's month
- {
- if(proj.sd>0 && proj.sd<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- }
- }
- }
- else//Month entered is > 13
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- m=1;//reset m value
- while(m==1)
- {
- if(proj.ey<proj.sy)//if End year is less than Start year
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- else//End year is equal or greater than Start year
- {
- if(proj.em<proj.sm)//if End month is less than Start month
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- else//End month is equal or greater than Start month
- {
- if(proj.ed<proj.sd)//if End day is less than Start day)
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- else//End DATE entered is greater than Start DATE (correct input)
- {
- if(proj.em>0 && proj.em<13)//while Month is between 1 and 12
- {
- if(proj.ey%4==0)//if it is Leap Year
- {
- if(proj.em==2)//if it is Leap Year and it is Februari
- {
- if(proj.ed>0 && proj.ed<=29)//Feb in Leap Year is not more than 29 days
- {
- m=0;//exit loop
- }
- else//its Leap Year & Februari, but day entered is more than 29
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }
- else//Its Leap Year but it is not Februari
- {
- if(proj.sm==4 || proj.sm==6 || proj.sm==9 || proj.sm==11)//It is a 30 days' month
- {
- if(proj.sd>0 && proj.sd<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }
- else//It is a 31 day's month
- {
- if(proj.ed>0 && proj.ed<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }//end of day comparison
- }//end of februari comparison
- }
- else//It is not a Leap Year
- {
- if(proj.em==2)//if it is not Leap Year and it is Februari
- {
- if(proj.ed>0 && proj.ed<=28)//Feb is not more than 28 days
- {
- m=0;//exit loop
- }
- else//Day entered is more than 28
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }
- else//Its not Leap Year and it is not Februari
- {
- if(proj.em==4 || proj.em==6 || proj.em==9 || proj.em==11)//It is a 30 days' month
- {
- if(proj.ed>0 && proj.ed<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }
- else//It is a 31 day's month
- {
- if(proj.ed>0 && proj.ed<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }//End of 30 day comparison
- }//End of Leap Year and Februari comparison
- }
- }
- else//Month entered is > 13
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> proj.ed >> proj.em >> proj.ey ;
- }
- }
- }
- }
- }
- proj.projectProgress=0.00;
- char ans='n';
- cout << "Save Project Details?(y/n) ";
- cin >> ans;
- if(ans=='y' || ans=='Y')
- {
- ofstream simpan;
- simpan.open("projectlist.sfi",ios::app);
- simpan<<proj.projectName<<"\t"<<proj.sd<<" "<<proj.sm<<" "<<proj.sy<<"\t"<<proj.ed<<" "<<proj.em<<" "<<proj.ey<<"\t"<<proj.projectProgress<<endl;
- Sleep(2000);
- projectManagerPage();
- }
- else
- {
- cout<<"Project is not saved.\n";
- Sleep(2000);
- projectManagerPage();
- }
- }
- ///////////////////////////////
- //// OPEN EXISTING PROJECT ////
- ///////////////////////////////
- void openExistingProjects()
- {
- system("cls");
- int choice;
- project *temp = new project[];//Dynamic array of project class
- int i=0;//index counter for dynamic array *temp
- ifstream ambil;
- ambil.open("projectlist.sfi",ios::beg);
- cout << "The Existing Projects:\n";
- while(!ambil.eof())
- {
- ambil >> proj.projectName;
- ambil >> proj.sd;
- ambil >> proj.sm;
- ambil >> proj.sy;
- ambil >> proj.ed;
- ambil >> proj.em;
- ambil >> proj.ey;
- ambil >> proj.projectProgress;
- cout<<"Project Number: "<<i+1<<endl;
- cout<<"Project Name: "<<proj.projectName;
- //cout<<"\nStart date: "<<proj.sd<<"/"<<proj.sm<<"/"<< proj.sy;
- //cout<<"\nEnd date: "<<proj.ed<<"/"<<proj.em<<"/"<< proj.ey;
- //cout<<"\nProject progress: "<<setprecision(2)<<proj.projectProgress<<"%"<<endl;
- //Save data temporarily to temp array;
- temp[i].projectName=proj.projectName;
- temp[i].sd=proj.sd;
- temp[i].sm=proj.sm;
- temp[i].sy=proj.sy;
- temp[i].ed=proj.ed;
- temp[i].em=proj.em;
- temp[i].ey=proj.ey;
- temp[i].projectProgress=proj.projectProgress;
- i++;
- }
- cout << "Choice: ";
- cin >> choice;
- int j;
- j = choice - 1;
- cout<<"\nProject Name: "<<temp[j].projectName;
- cout<<"\nStart date: "<<temp[j].sd;
- cout<<"/"<<temp[j].sm;
- cout<<"/"<<temp[j].sy;;
- cout<<"\nEnd date: "<<temp[j].ed;
- cout<<"/"<<temp[j].em;
- cout<<"/"<<temp[j].ey;
- cout<<"\nProject progress: "<<setprecision(2)<<temp[j].projectProgress<<"%"<<endl;
- /*string name;
- int tempsd,tempsm,tempsy,temped,tempem,tempey;
- float pp;
- temp[j].projectName=name;
- temp[j].sd=tempsd;
- temp[j].sm=tempsm;
- temp[j].sy=tempsy;
- temp[j].ed=temped;
- temp[j].em=tempem;
- temp[j].ey=tempey;
- temp[j].projectProgress=pp;*/
- char ans;
- cout<<"Continue?(y/n)";
- cin>>ans;
- if(ans=='y'||ans=='Y')
- {
- projectPage();
- }
- else
- {
- projectManagerPage();
- }
- }
- ///////////////////////////////
- //// CREATE PROJECT MEMBER ////
- ///////////////////////////////
- void createNewProjectMembers()
- {
- cout << "Create New Member\n";
- cout<< "Member Username: ";
- //cin >> member.uid;
- /*int retval = sizeof(member.uid);
- if(retval<6)
- {
- cerr<<"UID requires at least 5 characters\n";
- cout<< "Member UID: ";
- cin >> member.uid;
- retval = sizeof(member.uid);
- }*/
- cout << "Member Name: ";
- cin >> member.loginName;
- /*retval = sizeof(member.loginName);
- if(retval<6)
- {
- cerr<<"Name requires at least 5 characters\n";
- cout << "Member Name: ";
- cin >> member.loginName;
- retval = sizeof(member.loginName);
- }*/
- cout << "Member Code: ";
- cin >> member.loginCode;
- /*retval = sizeof(member.loginCode);
- if(retval<6)
- {
- cerr<<"Code requires at least 5 characters\n";
- cout << "Member Code: ";
- cin >> member.loginCode;
- retval = sizeof(member.loginCode);
- }*/
- char ans;
- cout << "Save(y/n)? ";
- cin >> ans;
- if(ans=='y'||ans=='Y')
- {
- ofstream simpan;
- simpan.open("projectmemberlist.sfi",ios::app);
- simpan << member.loginName << "\t" << member.loginCode <<endl; // "\t" <<member.uid << endl;
- cout << "Member Created!\n";
- Sleep(700);
- projectManagerPage();
- }
- else
- {
- Sleep(700);
- projectManagerPage();
- }
- }
- ///////////////////////
- //// MODIFY MEMBER ////
- ///////////////////////
- void modifymember()
- {
- int choice;
- system("cls");
- ifstream ambil;
- ambil.open("projectmemberlist.sfi");
- projectMember *temp = new projectMember[];
- int i=0,counter=0;
- while(!ambil.eof())
- {
- ambil >> temp[i].loginName;
- ambil >> temp[i].loginCode;
- //ambil >> temp[i].uid;
- counter=i;
- }
- ambil.close();
- cout<<"Member list\n";
- for(i=0;i<=counter;i++)
- {
- cout<<temp[i].loginName<<endl;
- }
- string name;
- string pass;
- cout << "Modify which member?\n";
- cin >> name;
- i=0;//reset i to 0
- while ( temp[i].loginName != name )
- {
- i++;
- }
- cout << "\n\n";
- cout << "1. Modify Name\n";
- cout << "2. Modify Code\n";
- cout << "3. View member list\n";
- cout << "4. Go to main menu\n";
- cout << "5. Exit program\n";
- cout << "Choice: ";
- cin >> choice;
- ofstream simpan;
- simpan.open("projectmemberlist.sfi",ios::app||ios::beg);
- switch(choice)
- {
- case 1:{
- int a=0;
- cin >> name;
- temp[i].loginName = name;
- while(a<i)
- {
- //skip until i
- }
- //rename temp[i].loginName to name
- cout<<"Rename successful\n";
- break;
- }
- case 2:{
- int a=0;
- cin >> pass;
- temp[i].loginCode = pass;
- while(a<i)
- {
- //skip until i
- }
- //rename temp[i].loginCode to pass
- cout<<"Recode successful\n";
- break;}
- case 3:{
- system("cls");
- modifymember();
- break;}
- case 4:{
- main();
- break;}
- case 5:{
- exit(0);}
- default:{
- exit(0);}
- }
- }
- /////////////////////////////
- //// VIEW PROJECT MEMBER ////
- /////////////////////////////
- void deletemember()
- {
- system("cls");
- int choice;
- ifstream ambil;
- ambil.open("projectmemberlist.sfi");
- projectMember *temp = new projectMember[];
- int i=0,counter=0;
- while(!ambil.eof())
- {
- ambil >> temp[i].loginName;
- ambil >> temp[i].loginCode;
- //ambil >> temp[i].uid;
- counter=i;
- }
- ambil.close();
- cout<<"Member list\n";
- for(i=0;i<=counter;i++)
- {
- cout<<temp[i].loginName<<endl;
- }
- cout << "Delete which member?\n";
- cin >> choice;
- ofstream simpan;
- simpan.open("projectmemberlist.sfi",ios::beg);
- for(i=0;i<counter;i++)
- {
- if(i==choice)
- {
- temp[i].loginName=temp[i+1].loginName;
- temp[i].loginCode=temp[i+1].loginCode;
- //temp[i].uid=temp[i+1].uid;
- simpan << temp[i].loginName <<"\t" << temp[i].loginCode <<endl; //"\t" <<temp[i].uid <<endl;
- }
- else
- {
- simpan << temp[i].loginName <<"\t" << temp[i].loginCode <<endl; //"\t" <<temp[i].uid <<endl;
- }
- }
- }
- /////////////////////
- //// CREATE TASK ////
- /////////////////////
- void createtask()
- {
- cout << "Task Details\n";
- cout << "Enter Task Number: ";
- cin >> tsk.taskNumber;
- cout << "Enter Task Name: ";
- cin >> tsk.taskName;
- cout << "Task Start date (dd mm yyyy): ";
- cin>>tsk.sd;
- cin>>tsk.sm;
- cin>>tsk.sy;
- int m=1;
- while(m==1)
- {
- if(tsk.sm>0 && tsk.sm<13)//while Month is between 1 and 12
- {
- if(tsk.sy%4==0)//if it is Leap Year
- {
- if(tsk.sm==2)//if it is Leap Year and it is Februari
- {
- if(tsk.sd>0 && tsk.sd<=29)//Feb in Leap Year is not more than 29 days
- {
- m=0;//exit loop
- }
- else//its Leap Year & Februari, but day entered is more than 29
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> tsk.sd >> tsk.sm >> tsk.sy ;
- }
- }
- else//Its Leap Year but it is not Februari
- {
- if(tsk.sm==4 || tsk.sm==6 || tsk.sm==9 || tsk.sm==11)//It is a 30 days' month
- {
- if(tsk.sd>0 && tsk.sd<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> tsk.sd >> tsk.sm >> tsk.sy ;
- }
- }
- else//It is a 31 day's month
- {
- if(tsk.sd>0 && tsk.sd<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> tsk.sd >> tsk.sm >> tsk.sy ;
- }
- }
- }
- }
- else//It is not a Leap Year
- {
- if(tsk.sm==2)//if it is not Leap Year and it is Februari
- {
- if(tsk.sd>0 && tsk.sd<=28)//Feb is not more than 28 days
- {
- m=0;//exit loop
- }
- else//Day entered is more than 28
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> tsk.sd >> tsk.sm >> tsk.sy ;
- }
- }
- else//Its not Leap Year and it is not Februari
- {
- if(tsk.sm==4 || tsk.sm==6 || tsk.sm==9 || tsk.sm==11)//It is a 30 days' month
- {
- if(tsk.sd>0 && tsk.sd<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> tsk.sd >> tsk.sm >> tsk.sy ;
- }
- }
- else//It is a 31 day's month
- {
- if(tsk.sd>0 && tsk.sd<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> proj.sd >> proj.sm >> proj.sy ;
- }
- }
- }
- }
- }
- else//Month entered is > 13
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task Start date (dd mm yyyy): ";
- cin >> tsk.sd >> tsk.sm >> tsk.sy ;
- }
- }
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- m=1;//reset m value
- while(m==1)
- {
- if(tsk.ey<tsk.sy)//if End year is less than Start year
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- else//End year is equal or greater than Start year
- {
- if(tsk.em<tsk.sm)//if End month is less than Start month
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- else//End month is equal or greater than Start month
- {
- if(tsk.ed<tsk.sd)//if End day is less than Start day)
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- else//End DATE entered is greater than Start DATE (correct input)
- {
- if(tsk.em>0 && tsk.em<13)//while Month is between 1 and 12
- {
- if(tsk.ey%4==0)//if it is Leap Year
- {
- if(tsk.em==2)//if it is Leap Year and it is Februari
- {
- if(tsk.ed>0 && tsk.ed<=29)//Feb in Leap Year is not more than 29 days
- {
- m=0;//exit loop
- }
- else//its Leap Year & Februari, but day entered is more than 29
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }
- else//Its Leap Year but it is not Februari
- {
- if(tsk.sm==4 || tsk.sm==6 || tsk.sm==9 || tsk.sm==11)//It is a 30 days' month
- {
- if(tsk.sd>0 && tsk.sd<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }
- else//It is a 31 day's month
- {
- if(tsk.ed>0 && tsk.ed<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }//end of day comparison
- }//end of februari comparison
- }
- else//It is not a Leap Year
- {
- if(tsk.em==2)//if it is not Leap Year and it is Februari
- {
- if(tsk.ed>0 && tsk.ed<=28)//Feb is not more than 28 days
- {
- m=0;//exit loop
- }
- else//Day entered is more than 28
- {
- cerr<<"Wrong date entered!\n";
- cout << "Project End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }
- else//Its not Leap Year and it is not Februari
- {
- if(tsk.em==4 || tsk.em==6 || tsk.em==9 || tsk.em==11)//It is a 30 days' month
- {
- if(tsk.ed>0 && tsk.ed<=30)//Day is between 1 and 30
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }
- else//It is a 31 day's month
- {
- if(tsk.ed>0 && tsk.ed<=31)//Day is between 1 and 31
- {
- m=0;//exit loop
- }
- else
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }//End of 30 day comparison
- }//End of Leap Year and Februari comparison
- }
- }
- else//Month entered is > 13
- {
- cerr<<"Wrong date entered!\n";
- cout << "Task End date (dd mm yyyy): ";
- cin >> tsk.ed >> tsk.em >> tsk.ey ;
- }
- }
- }
- }
- }
- tsk.taskProgress=0.00;
- char ans='n';
- cout << "Save Task Details?(y/n) ";
- cin >> ans;
- if(ans=='y' || ans=='Y')
- {
- ofstream simpan;
- simpan.open("tasklist.sfi",ios::app);
- simpan<<tsk.taskNumber<<"\t"<<tsk.taskName<<"\t"<<tsk.sd<<" "<<tsk.sm<<" "<<tsk.sy<<"\t"<<tsk.ed<<" "<<tsk.em<<" "<<tsk.ey<<"\t"<<tsk.taskProgress<<endl;
- Sleep(2000);
- projectManagerPage();
- }
- else
- {
- cout<<"Task is not saved.\n";
- Sleep(2000);
- projectManagerPage();
- }
- }
- /////////////////
- //// LOG OUT ////
- /////////////////
- void goOut()
- {
- //system("exit");//cannot exit after going through so many functions but i'll fix this.
- exit(0);//EXIT successfully
- }
- //////////////////////////////
- //// PROJECT MANAGER PAGE ////
- //////////////////////////////
- void projectManagerPage()
- {
- int choice;
- system("cls");
- cout << "Welcome Project Manager\n";
- cout << "1. Create New Project\n";
- cout << "2. Open Existing Projects\n";
- cout << "3. Create New Project Members\n";
- cout << "4. Log Out\n";
- cout << "Enter choice: ";
- cin >> choice;
- switch(choice)
- {
- case 1:
- createNewProject();
- break;
- case 2:
- openExistingProjects();
- break;
- case 3:
- createNewProjectMembers();
- break;
- case 4:
- goOut();//Logout
- default:
- exit(0);//QUIT program
- }
- }
- /////////////////////////////
- //// PROJECT MEMBER PAGE ////
- /////////////////////////////
- void projectMemberPage()
- {
- int choice=0;
- system("cls");
- cout << "Welcome Project Member\n";
- cout << "1. Update Progress of Tasks\n";
- cout << "2. View Progress of Members\n";
- cout << "3. Log Out\n";
- cout << "Choice: ";
- cin >> choice;
- switch(choice)
- {
- case 1:
- updatetaskprogress();
- break;
- case 2:
- viewtaskprogress();
- break;
- case 3:
- goOut();
- default:
- exit(0);
- }
- }
- //////////////////////////////
- //// UPDATE TASK PROGRESS ////
- //////////////////////////////
- void updatetaskprogress()
- {
- system("cls");
- ifstream ambil;
- string name;
- ambil.open("tasklist.sfi");
- cout << "List of Task:\n";
- while(!ambil.eof())
- {
- ambil >> tsk.taskNumber;
- ambil >> tsk.taskName;
- ambil >> tsk.sd >> tsk.sm >> tsk.sy;
- ambil >> tsk.ed >> tsk.em >> tsk.ey;
- ambil >> tsk.taskProgress;
- cout << tsk.taskName << "\n";
- }
- cout<<"Which task do you want to update?";
- cin>>name;
- task *temp = new task[];
- int i=0;
- int counter=0;
- float num;
- while(!ambil.eof())
- {
- ambil >> tsk.taskNumber;
- temp[i].taskNumber = tsk.taskNumber;
- ambil >> tsk.taskName;
- temp[i].taskName = tsk.taskName;
- ambil >> tsk.sd >> tsk.sm >> tsk.sy;
- temp[i].sd = tsk.sd; temp[i].sm = tsk.sm; temp[i].sy = tsk.sy;
- ambil >> tsk.ed >> tsk.em >> tsk.ey;
- temp[i].ed = tsk.ed; temp[i].em = tsk.em; temp[i].ey = tsk.ey;
- ambil >> tsk.taskProgress;
- temp[i].taskProgress = tsk.taskProgress;
- if(tsk.taskName==name)
- {
- cout << "Task Name: " << tsk.taskName <<endl;
- cout << "Task Number: " << tsk.taskNumber <<endl;
- cout << "Start date: " << tsk.sd <<"/"<<tsk.sm<<"/"<<tsk.sy<<endl;
- cout << "End date: " << tsk.ed<<"/"<<tsk.em<<"/"<<tsk.ey<<endl;
- cout << "Task progress: " << tsk.taskProgress <<"%" <<endl;
- cout << "\nEnter new task progress: ";
- cin >> num;
- temp[i].taskNumber = tsk.taskNumber;
- temp[i].taskName = tsk.taskName;
- temp[i].sd = tsk.sd; temp[i].sm = tsk.sm; temp[i].sy = tsk.sy;
- temp[i].ed = tsk.ed; temp[i].em = tsk.em; temp[i].ey = tsk.ey;
- temp[i].taskProgress = num;
- }
- else
- {
- continue;
- //read the next task list
- }
- i++;
- counter=i;
- }
- ambil.close();
- ofstream simpan;
- simpan.open("tasklist.sfi",ios::trunc);
- if(simpan.good())
- {
- for(i=0;i<counter;i++)
- {
- simpan << temp[i].taskNumber;
- simpan << temp[i].taskName;
- simpan << temp[i].sd;
- simpan << temp[i].sm;
- simpan << temp[i].sy;
- simpan << temp[i].ed;
- simpan << temp[i].em;
- simpan << temp[i].ey;
- simpan << temp[i].taskProgress;
- }
- }
- else
- {
- cerr<<"Error updating file\n";
- }
- projectMemberPage();
- }
- /////////////////////////////////////
- //// VIEW PROJECT MEMBER PROGRESS////
- /////////////////////////////////////
- void viewtaskprogress()
- {
- string name;
- system("cls");
- ifstream ambil;
- ambil.open("tasklist.sfi");
- cout << "List of Task:\n";
- while(!ambil.eof())
- {
- ambil >> tsk.taskNumber;
- ambil >> tsk.taskName;
- ambil >> tsk.sd >> tsk.sm >> tsk.sy;
- ambil >> tsk.ed >> tsk.em >> tsk.ey;
- ambil >> tsk.taskProgress;
- cout << tsk.taskName << "\n";
- }
- cout << "Which task do you want to view?\n";
- cin >> name;
- while(!ambil.eof())
- {
- ambil >> tsk.taskNumber;
- ambil >> tsk.taskName;
- ambil >> tsk.sd >> tsk.sm >> tsk.sy;
- ambil >> tsk.ed >> tsk.em >> tsk.ey;
- ambil >> tsk.taskProgress;
- if(tsk.taskName==name)
- {
- cout << "Task Name: " << tsk.taskName <<endl;
- cout << "Task Number: " << tsk.taskNumber <<endl;
- cout << "Start date: " << tsk.sd <<"/"<<tsk.sm<<"/"<<tsk.sy<<endl;
- cout << "End date: " << tsk.ed<<"/"<<tsk.em<<"/"<<tsk.ey<<endl;
- cout << "Task progress: " << tsk.taskProgress <<"%" <<endl;
- }
- else
- {
- continue;
- //read the next task list
- }
- }
- Sleep(2000);
- projectMemberPage();
- }
- ///////////////////////////
- //// PROJECT PAGE MENU ////
- ///////////////////////////
- void projectPage()
- {
- int choice;
- system("cls");
- cout << "1. Modify Project\n";
- cout << "2. Create Task\n";
- cout << "3. Edit Tasks - NOT WORKING -\n";
- cout << "4. Delete Task\n";
- cout << "5. Link Task - NOT WORKING -\n";
- cout << "6. Create Subtask \n";
- cout << "7. Assign Task - NOT WORKING -\n";
- cout << "8. Unassign Task - NOT WORKING -\n";
- cout << "Choice: ";
- cin >> choice;
- switch(choice)
- {
- case 1:
- openExistingProjects();
- break;
- case 2:
- createtask();
- break;
- case 3:
- //edittask();
- break;
- case 4:
- deletetask();
- break;
- case 5:
- //linktask();
- break;
- case 6:
- createsubtask();
- break;
- case 7:
- //assigntask();
- break;
- case 8:
- //unassigntask();
- break;
- default:
- exit(0);
- }
- }
- /////////////////////
- //// DELETE TASK ////
- /////////////////////
- void deletetask()
- {
- system("cls");
- string name;
- ifstream ambil;
- ambil.open("tasklist.sfi");
- cout << "List of Task:\n";
- while(!ambil.eof())
- {
- ambil >> tsk.taskNumber;
- ambil >> tsk.taskName;
- ambil >> tsk.sd >> tsk.sm >> tsk.sy;
- ambil >> tsk.ed >> tsk.em >> tsk.ey;
- ambil >> tsk.taskProgress;
- cout << tsk.taskName << "\n";
- }
- cout << "Which task do you want to delete?\n";
- cin >> name;
- task *temp = new task[];
- int i=0;
- int counter=0;
- char ans;
- while(!ambil.eof())
- {
- ambil >> tsk.taskNumber;
- temp[i].taskNumber = tsk.taskNumber;
- ambil >> tsk.taskName;
- temp[i].taskName = tsk.taskName;
- ambil >> tsk.sd >> tsk.sm >> tsk.sy;
- temp[i].sd = tsk.sd; temp[i].sm = tsk.sm; temp[i].sy = tsk.sy;
- ambil >> tsk.ed >> tsk.em >> tsk.ey;
- temp[i].ed = tsk.ed; temp[i].em = tsk.em; temp[i].ey = tsk.ey;
- ambil >> tsk.taskProgress;
- temp[i].taskProgress = tsk.taskProgress;
- if(tsk.taskName==name)
- {
- cout << "\n\n";
- cout << "Task Name: " << tsk.taskName <<endl;
- cout << "Task Number: " << tsk.taskNumber <<endl;
- cout << "Start date: " << tsk.sd <<"/"<<tsk.sm<<"/"<<tsk.sy<<endl;
- cout << "End date: " << tsk.ed<<"/"<<tsk.em<<"/"<<tsk.ey<<endl;
- cout << "Task progress: " << tsk.taskProgress <<"%" <<endl;
- cout << "\nDelete this task?";
- cin >> ans;
- if(ans=='y' || ans=='Y')
- {
- if(temp[i+1].taskNumber==NULL)
- {
- //discard last record
- }
- else
- {
- temp[i].taskNumber = temp[i+1].taskNumber;
- temp[i].taskName = temp[i+1].taskName;
- temp[i].sd = temp[i+1].sd; temp[i+1].sm = temp[i+1].sm; temp[i+1].sy = temp[i+1].sy;
- temp[i].ed = temp[i+1].ed; temp[i+1].em = temp[i+1].em; temp[i+1].ey = temp[i+1].ey;
- temp[i].taskProgress = temp[i+1].taskProgress;
- }
- }
- else
- {
- cout << "Deletion canceled\n";
- projectPage();
- }
- }
- else
- {
- continue;
- //read the next task list
- }
- i++;
- counter=i;
- }
- ambil.close();
- ofstream simpan;
- simpan.open("tasklist.sfi",ios::trunc);
- if(simpan.good())
- {
- for(i=0;i<counter;i++)
- {
- simpan << temp[i].taskNumber;
- simpan << temp[i].taskName;
- simpan << temp[i].sd;
- simpan << temp[i].sm;
- simpan << temp[i].sy;
- simpan << temp[i].ed;
- simpan << temp[i].em;
- simpan << temp[i].ey;
- simpan << temp[i].taskProgress;
- }
- }
- else
- {
- cerr<<"Error updating file\n";
- }
- }
- ////////////////////////
- //// CREATE SUBTASK ////
- ////////////////////////
- void createsubtask()
- {
- cout<<"Enter Subtask name: ";
- cin>> sbtsk.subTaskName;
- sbtsk.subTaskProgress=0.00;
- ofstream simpan;
- simpan.open("subtasklist.sfi");
- if(simpan.good())
- {
- simpan << sbtsk.subTaskName << "\t" << sbtsk.subTaskProgress << endl;
- Sleep(1000);
- cout << "Subtask successfully created\n";
- }
- else
- {
- cerr << "Error creating subtask..\n";
- }
- simpan.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement