20-01-2016, 02:35 PM
#include <iostream>
#include <string>
#include <fstream>
//this is taken straight from the it420 joke code to make sure all
//headers are referenced. Code surrounded by these slashes
//are used to show what code was taken from the it420 client file
//
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>
#define SERVER_PORT htons(63513)
using namespace std;
void customerFunction(void);
void AddCust(void);
void DeleteCust(void);
void ViewCust(void);
void invoiceFunction(void);
void invoiceChange(int);
void inventoryFunction(void);
void AddInv();
void DeleteInv();
void ViewInv();
void getSocket(void);
//created a global variable so i am able to use this variable in all the functions
//again, im not sure if this is a legit way of doing it since this is usually inside
//the main
int clientSock;
//char receivedStr[1000];
int main()
{
clientSock=socket(AF_INET,SOCK_STREAM, 0);
sockaddr_in serverAddress;
serverAddress.sin_family=AF_INET;
serverAddress.sin_port=SERVER_PORT;
serverAddress.sin_addr.s_addr=inet_addr("128.235.44.71");
connect(clientSock, (struct sockaddr*)&serverAddress, sizeof(struct sockaddr));
//main menu...prints out what to choose from on screen
int myChoice;
cout << string(50, '\n');
string menuChoices[] = {"Customer Information","Inventory Information","Invoice Information","Exit"}; //Choices for the menu
cout<<"Please choose an option"<<endl;
for (int i=0;i<4;i++)
{
cout<<i+1<<"\t\t"<<menuChoices[i]<<endl; //Prints every choice in the menu
}
cout<<"(Please enter a number): ";
cin>>myChoice; //get the choice
//calls necessary functions depending on choice made
switch (myChoice)
{
case 1:
customerFunction();
break;
case 2:
inventoryFunction();
break;
case 3:
invoiceFunction();
break;
case 4:
break;
}
//close(clientSock);
return 0;
}
//the next three functions are the functions calls straight from the main menu
//this function gets called from the main menu. Prompts user if they want to
//add delete or return to main menu. There choice then calls another function
//but i was thinking it might be possible to just leave it all in one function?
void customerFunction()
{
send(clientSock, "Client currently in Customer Function", 500, 0);
close(clientSock);
//customer menu with choices to choose from
cout << string(50, '\n'); //clear screen with blank spaces
int CustChoice;
cout<<endl;
cout<<"What would you like to do?"<<endl;
cout<<"1. Add Customer"<<endl;
cout<<"2. Delete Customer"<<endl;
cout<<"3. View All Customers"<<endl;
cout<<"4. Main Menu"<<endl;
cin>>CustChoice;
//calls specific functions depending on choice made
//these functions in return should send out SQL data to the server
switch (CustChoice)
{
case 1:
AddCust();
break;
case 2:
DeleteCust();
break;
case 3:
ViewCust();
break;
case 4:
cout<<"Back to main menu"<<endl;
//close(clientSock);
main(); //go back to main which is the main menu
break;
}
}
//from main menu
void invoiceFunction()
{
//this does not work
send(clientSock, "Client currently in Invoice Function", 500, 0);
cout << string(50, '\n'); //clear screen with blank spaces
int InvChoice;
cout<<endl;
cout<<"What would you like to do?"<<endl;
cout<<"1. Create"<<endl;
cout<<"2. Search"<<endl;
cout<<"3. Main Menu"<<endl;
cin>>InvChoice;
//calls necessary functions to do action
switch (InvChoice)
{
case 1:
invoiceChange(InvChoice);
break;
case 2:
invoiceChange(InvChoice);
break;
case 3:
main();
break;
}
close(clientSock);
}
//from main menu
void inventoryFunction()
{
cout << string(50, '\n'); //clear screen with blank spaces
int InvChoice;
cout<<endl;
cout<<"What would you like to do?"<<endl;
cout<<"1. Add"<<endl;
cout<<"2. Delete"<<endl;
cout<<"3. View"<<endl;
cout<<"4. Main Menu"<<endl;
cin>>InvChoice;
//calls necessary functions to do action
switch (InvChoice)
{
case 1:
AddInv();
break;
case 2:
DeleteInv();
break;
case 3:
ViewInv();
break;
case 4:
main();
break;
}
}
//these remaining functions are the sub functions being called
//to send SQL data to the server
//I didnt fully code all of it yet since my main concern is getting the sockets working
void AddCust()
{
cout << string(50, '\n'); //clear screen with blank spaces
string lastName;
string firstName;
string StreetAddress;
string city;
string state;
int zipcode;
int phoneNumber;
cout<<"Please fill out the appropriate fields:"<<endl;
cin.ignore();
cout<<"Last Name: ";
getline(cin,lastName);
cout<<"First Name: ";
getline(cin,firstName);
cout<<"Street Address: ";
getline(cin,StreetAddress);
cout<<"City: ";
getline(cin,city);
cout<<"State: ";
getline(cin,state);
cout<<"Zipcode: ";
cin>>zipcode;
cout<<"Phone Number: ";
cin>>phoneNumber;
}
void DeleteCust()
{
//getSocket();
//send(clientSock, "I am here to delete a customer", 500, 0);
cout<<"chose to delete customer";
//close(clientSock);
}
void ViewCust()
{
cout<<"chose to view customer";
}
void invoiceChange(int num)
{
if(num==1)
{
cout<<"Chose to Create"<<endl;
}
else
{
cout<<"Chose to Search"<<endl;
}
}
//not fully developed
void AddInv()
{
}
void DeleteInv()
{
}
void ViewInv()
{
} Edit & Run