Added login, account management, sample relations
This commit is contained in:
parent
3ead05e585
commit
a0585a883b
1 changed files with 202 additions and 50 deletions
250
DBAppV2.cpp
250
DBAppV2.cpp
|
@ -1,35 +1,18 @@
|
||||||
//#include <iostream>
|
//#include <iostream>
|
||||||
#include "User.h"
|
#include "User.h"
|
||||||
|
#include "Parser.h"
|
||||||
|
#include "DBEngine.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
//Global objects used through the app
|
||||||
|
DBEngine engine;
|
||||||
vector<User> users;
|
vector<User> users;
|
||||||
|
vector<Board> boards;
|
||||||
// struct loginCredentials
|
vector<Message> mesages;
|
||||||
// {
|
vector<Group> groups;
|
||||||
// string name;
|
vector<Article> articles;
|
||||||
// string password;
|
User currentUser;
|
||||||
|
|
||||||
// loginCredentials(string n, string p)
|
|
||||||
// {
|
|
||||||
// name = n;
|
|
||||||
// password = p;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// };
|
|
||||||
|
|
||||||
|
|
||||||
void yourAccount()
|
|
||||||
{
|
|
||||||
cout<<"*********************************"<<endl;
|
|
||||||
cout<<"Your Account"<<endl;
|
|
||||||
cout<<"*********************************\n"<<endl;
|
|
||||||
cout<<"\n\nname: JOHN CENA"<<endl;
|
|
||||||
cout<<"other stuff related to this user\n\n"<<endl;
|
|
||||||
cout<<"0. Return to main menu"<<endl;
|
|
||||||
cout<<"\n\nEnter choice:";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void goToBoard()
|
void goToBoard()
|
||||||
{
|
{
|
||||||
|
@ -67,16 +50,6 @@ void boardMenu()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void showMessages()
|
|
||||||
{
|
|
||||||
cout<<"Messages will be displayed soon"<<endl;
|
|
||||||
//do some stuff to display messages
|
|
||||||
|
|
||||||
cout<<"\n0. Return to main menu"<<endl;
|
|
||||||
cout<<"\n\nEnter choice:";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void showGroups()
|
void showGroups()
|
||||||
{
|
{
|
||||||
cout<<"Groups will be displayed soon"<<endl;
|
cout<<"Groups will be displayed soon"<<endl;
|
||||||
|
@ -135,8 +108,6 @@ void newAccount()
|
||||||
|
|
||||||
void mainMenu()
|
void mainMenu()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
cout<<"\n\n***************"<<endl;
|
cout<<"\n\n***************"<<endl;
|
||||||
cout<<"** Main Menu **"<<endl;
|
cout<<"** Main Menu **"<<endl;
|
||||||
cout<<"***************\n"<<endl;
|
cout<<"***************\n"<<endl;
|
||||||
|
@ -154,6 +125,7 @@ bool verifyCredentials(string n, string p)
|
||||||
{
|
{
|
||||||
if (users[i].getName() == n && users[i].getPassword() == p)
|
if (users[i].getName() == n && users[i].getPassword() == p)
|
||||||
{
|
{
|
||||||
|
currentUser = users[i];
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,6 +185,126 @@ void startMenu()
|
||||||
cout<<"Enter choice: ";
|
cout<<"Enter choice: ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void changeUsername()
|
||||||
|
{
|
||||||
|
cout<<"Enter new username: "<<endl;
|
||||||
|
string newName;
|
||||||
|
cin >> newName;
|
||||||
|
currentUser.setName(newName);
|
||||||
|
//Have it update the relation here
|
||||||
|
cout << "\nName successfully changed!\n" << endl;
|
||||||
|
mainMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void changePassword()
|
||||||
|
{
|
||||||
|
cout<<"Enter new password: "<<endl;
|
||||||
|
string newPassword;
|
||||||
|
cin >> newPassword;
|
||||||
|
currentUser.setPassword(newPassword);
|
||||||
|
//Have it update the relation here
|
||||||
|
cout << "\nPassword successfully changed!\n" << endl;
|
||||||
|
mainMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void changePhone()
|
||||||
|
{
|
||||||
|
cout<<"Enter new phone number: "<<endl;
|
||||||
|
string newPhoneNumber;
|
||||||
|
cin >> newPhoneNumber;
|
||||||
|
currentUser.setPhone(newPhoneNumber);
|
||||||
|
//Have it update the relation here
|
||||||
|
cout << "\nPhone Number successfully changed!\n" << endl;
|
||||||
|
mainMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void changeFax()
|
||||||
|
{
|
||||||
|
cout<<"Enter new fax number: "<<endl;
|
||||||
|
string newFaxNumber;
|
||||||
|
cin >> newFaxNumber;
|
||||||
|
currentUser.setFax(newFaxNumber);
|
||||||
|
//Have it update the relation here
|
||||||
|
cout << "\nFax Number successfully changed!\n" << endl;
|
||||||
|
mainMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void changePostal()
|
||||||
|
{
|
||||||
|
cout<<"Enter new fax number: "<<endl;
|
||||||
|
string newPostalNumber;
|
||||||
|
cin >> newPostalNumber;
|
||||||
|
currentUser.setPostal(newPostalNumber);
|
||||||
|
//Have it update the relation here
|
||||||
|
cout << "\nPostal Number successfully changed!\n" << endl;
|
||||||
|
mainMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void editAccountMenu()
|
||||||
|
{
|
||||||
|
cout<<"*********************************"<<endl;
|
||||||
|
cout<<"Edit Account"<<endl;
|
||||||
|
cout<<"*********************************\n"<<endl;
|
||||||
|
|
||||||
|
cout<<"0. Change Username"<<endl;
|
||||||
|
cout<<"1. Change Password"<<endl;
|
||||||
|
cout<<"2. Change Phone Number"<<endl;
|
||||||
|
cout<<"3. Change Fax Number"<<endl;
|
||||||
|
cout<<"4. Change Postal Number"<<endl;
|
||||||
|
cout<<"5. Back to Main Menu"<<endl;
|
||||||
|
cout<<"\n\nEnter choice:";
|
||||||
|
|
||||||
|
int choice;
|
||||||
|
cin >> choice;
|
||||||
|
switch(choice)
|
||||||
|
{
|
||||||
|
case 0: changeUsername(); break;
|
||||||
|
case 1: changePassword(); break;
|
||||||
|
case 2: changePhone(); break;
|
||||||
|
case 3: changeFax(); break;
|
||||||
|
case 4: changePostal(); break;
|
||||||
|
case 5: mainMenu(); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void yourAccount()
|
||||||
|
{
|
||||||
|
cout<<"*********************************"<<endl;
|
||||||
|
cout<<"Your Account"<<endl;
|
||||||
|
cout<<"*********************************\n"<<endl;
|
||||||
|
cout<<"\nName: "<< currentUser.getName() <<endl;
|
||||||
|
cout<<"\nPassword: "<< currentUser.getPassword() <<endl;
|
||||||
|
cout<<"\nPhone: "<< currentUser.getPhoneNumber() <<endl;
|
||||||
|
cout<<"\nFax: "<< currentUser.getFaxNumber() <<endl;
|
||||||
|
cout<<"\nPostal: "<< currentUser.getPostalAddress() <<endl;
|
||||||
|
cout<<"\n1.Edit Account"<<endl;
|
||||||
|
cout<<"\n0. Return to main menu"<<endl;
|
||||||
|
cout<<"\n\nEnter choice:";
|
||||||
|
|
||||||
|
int choice;
|
||||||
|
cin >> choice;
|
||||||
|
switch(choice)
|
||||||
|
{
|
||||||
|
case 0: mainMenu(); break;
|
||||||
|
case 1: editAccountMenu(); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void showMessages()
|
||||||
|
{
|
||||||
|
//Causing seg fault
|
||||||
|
// Relation temp = engine.getTableFromName("Messages");
|
||||||
|
//temp.display();
|
||||||
|
cout<<"\n\n0. Return to main menu"<<endl;
|
||||||
|
cout<<"\n\nEnter choice:";
|
||||||
|
|
||||||
|
int choice;
|
||||||
|
cin >> choice;
|
||||||
|
switch(choice)
|
||||||
|
{
|
||||||
|
case 0: mainMenu(); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void eventHandler(int choice)
|
void eventHandler(int choice)
|
||||||
{
|
{
|
||||||
|
@ -233,26 +325,86 @@ void eventHandler(int choice)
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
//needs to load all the relations - at least the user relation
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
User u0("JOHN_CENA", "UberWrestling", "111-222-3333", "444-555-6666", "77432", true);
|
|
||||||
User u1("user1", "gig'em!", "111-222-3333", "444-555-6666", "77432", false);
|
|
||||||
|
|
||||||
User u2("user1", "gig'em!", "111-222-3333", "444-555-6666", "77432", false);
|
|
||||||
User u3("user2", "gig'em!", "111-222-3333", "444-555-6666", "77432", false);
|
|
||||||
User u4("user3", "gig'em!", "111-222-3333", "444-555-6666", "77432", false);
|
|
||||||
|
|
||||||
|
//Hard Coded Sample Tuples
|
||||||
|
User u0("JOHN_CENA", "UberWrestling", "111-222-3333", "444-555-6666", "76432", true);
|
||||||
|
User u1("Lo Wang", "Rice", "098-765-4321", "454-455-1923", "45123", false);
|
||||||
|
User u2("Duke", "Nukem", "123-456-7890", "464-555-5431", "12362", false);
|
||||||
|
User u3("Caleb", "Blood", "107-293-4856", "474-655-3421", "42231", false);
|
||||||
|
User u4("Taggert", "Green", "666-666-6666", "484-755-6317", "66666", false);
|
||||||
users.push_back(u0);
|
users.push_back(u0);
|
||||||
users.push_back(u1);
|
users.push_back(u1);
|
||||||
users.push_back(u2);
|
users.push_back(u2);
|
||||||
users.push_back(u3);
|
users.push_back(u3);
|
||||||
users.push_back(u4);
|
users.push_back(u4);
|
||||||
|
|
||||||
|
Message m0("JOHN_CENA", "Duke", "10/6/2015", "Who's champ?");
|
||||||
|
Message m1("Taggert", "Caleb", "12/24/1997", "I'm faster");
|
||||||
|
Message m2("Caleb", "Lo Wang", "4/13/1998", "Extra crispy");
|
||||||
|
mesages.push_back(m0);
|
||||||
|
mesages.push_back(m1);
|
||||||
|
mesages.push_back(m2);
|
||||||
|
|
||||||
|
//User Relation & Attributes
|
||||||
|
Attribute userAt1("Name", "VARCHAR(20)", true);
|
||||||
|
Attribute userAt2("Phone Number", "VARCHAR(20)", false);
|
||||||
|
Attribute userAt3("Fax Number", "VARCHAR(20)", false);
|
||||||
|
Attribute userAt4("Postal Address", "VARCHAR(20)", false);
|
||||||
|
vector<Attribute> userAttributes;
|
||||||
|
userAttributes.push_back(userAt1);
|
||||||
|
userAttributes.push_back(userAt2);
|
||||||
|
userAttributes.push_back(userAt3);
|
||||||
|
userAttributes.push_back(userAt4);
|
||||||
|
Relation userRelation("User Relation", userAttributes);
|
||||||
|
|
||||||
|
for(int i = 0 ; i < users.size(); ++i) {
|
||||||
|
userRelation.insertTuple(users[i].getInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
//Message Relation & Attributes
|
||||||
|
Attribute messageAt1("Sender", "VARCHAR(20)", true);
|
||||||
|
Attribute messageAt2("Receiver", "VARCHAR(20)", false);
|
||||||
|
Attribute messageAt3("Time Stamp", "VARCHAR(20)", false);
|
||||||
|
Attribute messageAt4("Text", "VARCHAR(20)", false);
|
||||||
|
vector<Attribute> messageAttributes;
|
||||||
|
messageAttributes.push_back(messageAt1);
|
||||||
|
messageAttributes.push_back(messageAt2);
|
||||||
|
messageAttributes.push_back(messageAt3);
|
||||||
|
messageAttributes.push_back(messageAt4);
|
||||||
|
Relation messageRelation("Messages", messageAttributes);
|
||||||
|
|
||||||
|
for(int i = 0 ; i < mesages.size(); ++i) {
|
||||||
|
messageRelation.insertTuple(mesages[i].getInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
//Board Relation & Attributes
|
||||||
|
Attribute boardAt1("Name", "VARCHAR(20)", true);
|
||||||
|
Attribute boardAt2("Description", "VARCHAR(20)", false);
|
||||||
|
Attribute boardAt3("Group", "VARCHAR(20)", false);
|
||||||
|
vector<Attribute> boardAttributes;
|
||||||
|
boardAttributes.push_back(boardAt1);
|
||||||
|
boardAttributes.push_back(boardAt2);
|
||||||
|
boardAttributes.push_back(boardAt3);
|
||||||
|
Relation boardRelation("Board Relation", boardAttributes);
|
||||||
|
|
||||||
|
//Group Relation & Attributes
|
||||||
|
Attribute groupAt1("Name", "VARCHAR(20)", true);
|
||||||
|
Attribute groupAt2("Description", "VARCHAR(20)", false);
|
||||||
|
vector<Attribute> groupAttributes;
|
||||||
|
groupAttributes.push_back(groupAt1);
|
||||||
|
groupAttributes.push_back(groupAt2);
|
||||||
|
Relation groupRelation("Group Relation", groupAttributes);
|
||||||
|
|
||||||
|
//Article Relation & Attributes
|
||||||
|
Attribute articleAt1("Author", "VARCHAR(20)", true);
|
||||||
|
Attribute articleAt2("Time Stamp", "VARCHAR(20)", false);
|
||||||
|
Attribute articleAt3("Length", "VARCHAR(20)", false);
|
||||||
|
vector<Attribute> articleAttributes;
|
||||||
|
articleAttributes.push_back(articleAt1);
|
||||||
|
articleAttributes.push_back(articleAt2);
|
||||||
|
articleAttributes.push_back(articleAt3);
|
||||||
|
Relation articleRelation("Article Relation", articleAttributes);
|
||||||
|
|
||||||
DBEngine v8;
|
|
||||||
|
|
||||||
|
|
||||||
cout<<"***************************************"<<endl;
|
cout<<"***************************************"<<endl;
|
||||||
|
|
Reference in a new issue