Encountering several problems, you will constantly see me on here begging for help. Im very very new to C
. Doing a program with about 5 functions for a school based assessment. The program is coupled with a problem definition for problems encountered in an imaginary business. There are five functions so far.
Function 1: MembershipInfo
stores membership information for the company (which is like a club with a subscription/membership system)
Function 2: SelectService
is supposed to display and prompt the user to choose various services that can be offered to them. It uses a struct and and an array and various ifs. The if statement does not run, or doesn't show up on the console after being built successfully.
Function 3: payment'
calculates the full cost a member is to pay based on his/her membership type. The calculation outputs 0.0000
.
Function 4: is like function 1
but caters for a customer who wishes to uses some of the services on an hourly rate without becoming a member. The calculations on this output 0.0000
as well.
Function 5: MemberExp
is supposed to keep track of the date in which a member's membership expires and alert the user. I suppose I would have to somehow collect group the date from each member in function 1 at the time of there registration and compare it with the date when their membership expires. I have an float variable known as pay-plan used to calculate the full cost. It is the amount of months one wishes to be a member for.
I am using Xcode
on El Capitan
.
My Code
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
struct MembershipInfo{
float regfee;
int set;
float payplan;
char cust_fname[20];
char cust_lname[20];
char memtype[20];
char date[20];
};
/*Functions */
void MembershipInfo();
void Payment();
void SelectService();
void MemberExp();
void Accomodation();
int q;
int x=0;
int set;
float memcost;
float Fullcost;
char selection[20];
/*MAIN FUNCTION */
int main()
{
char decision[20];
printf("Are you registering a member or is it accomodation?, type in lowercase \n");
scanf( "%s" , decision);
if ( strcmp (decision, "member") ==0)
{
MembershipInfo();
}
else {
( strcmp(decision, "accomodation") ==0);
Accomodation();
}
MemberExp();
}
/* Function used to store membership information */
void MembershipInfo()
{
struct MembershipInfo member[x];
printf("Press 1 to continue or any other character to cancel \n ");
scanf( "%d", &set);
if (set==1) {
while (set==1) {
x++ ;
printf( "Please enter the first name of member\n");
scanf( "%s", member[x].cust_fname);
printf( "Please enter the last name of member\n");
scanf( "%s", member[x].cust_lname);
printf( "Please enter Membership type:\n Silver\n Gold\n Platinum\n");
scanf( "%s", member[x].memtype);
SelectService();
printf("Please enter payment plan\n"); /* An integer value from 1 to 12 which determines how much months are being paid for */
scanf( "%f", &member[x].payplan);
Payment();
printf("Do you have another member to register? Type 1 to continue or any number to End\n");
scanf( "%d", &set);
}
main();
}
main();
}
/* Function used to calculate the amount to be paid by each member */
void Payment()
{
struct MembershipInfo member[x];
if (strcmp(member[x].memtype, "Silver") ==0) {
memcost = 100;
if (strcmp(member[x].memtype, "Gold") ==0) {
memcost = 180;
if (strcmp(member[x].memtype, "Platinum") ==0) {
memcost = 300;
}
}
}
Fullcost = memcost * member[x].payplan ;
printf(" The Full cost is %f \n", Fullcost);
}
/* Function to Select Services for Members */
void SelectService()
{
struct MembershipInfo member[x];
if (strcmp(member[x].memtype, "Silver") ==0) {
printf("Check");
}
}
/*Function to determine Membership Expiration*/
void MemberExp()
{
}
void Accomodation()
{
struct Accomodationinfo{
char ac_fname[20];
char ac_lname[20];
int hours;
char date[30];
char selection[20];
int Fullcost; //Full Cost is an integer and not a float because hours will be rounded off and therefore customer will pay a rounded off value
};
struct Accomodationinfo customer[x];
printf("Press 1 to continue or any other number to cancel \n");
scanf( "%d" , &set);
if (set==1) {
while (set==1){
x++;
printf("Please enter customer's first name \n");
scanf( "%s", customer[x].ac_fname);
printf("Please enter customer's last name \n");
scanf( "%s" , customer[x].ac_lname);
printf("You have either the Gym, Sports Centres, or Music Studio available\n");
scanf( "%s" , customer[x].selection);
printf("How many hours?\n");
scanf( "%d", &customer[x].hours);
customer[x].Fullcost = customer[x].hours * 8;
printf("The full cost is %f per hour \n" , Fullcost );
getchar();
printf( "%s %s will have access to %s for %d hours \n", customer[x].ac_fname, customer[x].ac_lname , customer[x].selection, &customer[x].hours );
getchar();
printf("Do you have another customer for accomodation? Press 1 to continue or any other number to return to main \n ");
scanf( "%d" , &set);
}
main();
}
main();
}
void SelectService()
{
if (strcmp(Members[x].memtype, "Silver") ==0)
{
printf( "You have available any three of the following(Notice the casino is not available):\n");
printf( "Swimming Pools \n Spas \n Bars \n Arcade\n Sports Centres\n Resource Room\n Theatre\n Gym\n Food Courts\n Music Studio\n");
for (q=0; q<4; q=q+1) {
printf( "Please enter selection\n");
scanf( "%s" , selection[q]);
printf( "Your chosen selections are %s , %s and %s\n" , selection[1], selection[2], selection[3]);
}
if (strcmp(Members[x].memtype, "Gold") ==0) {
printf( "You have available any five of the following\n");
printf( "Casino \n Swimming Pools \n Spas \n Bars \n Arcade\n Sports Centres\n Resource Room\n Theatre\n Gym\n Food Courts\n Music Studio\n");
for (q=0; q<6; q=q+1) {
printf( "Please enter selection\n");
scanf( "%s" , &selection[q]);
}
if (strcmp(Members[x].memtype, "Platinum") ==0) {
printf( "You have all services available");
}
}
}
}
EDIT: The program keeps skipping over the function SelectService idk
. Idk
how to make this clearer. Try running it in your own compilers and access the problem?
the following code incorporates the comments, cleanly compiles, and is one possible implementation.
You will probably want to add more features
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_DATE_LEN (30)
#define MAX_MEMBERS (100)
#define MAX_BUFFER_LEN (20)
#define COST_PER_HOUR (8)
struct MembershipInfo_t
{
float regfee;
int set;
unsigned payplan;
char cust_fname[ MAX_BUFFER_LEN ];
char cust_lname[ MAX_BUFFER_LEN ];
char memtype[ MAX_BUFFER_LEN ];
char date[ MAX_BUFFER_LEN ];
};
// prototypes
void processMembershipInfo( void );
void Payment( void );
void SelectService( void );
void MemberExp( void );
void processAccommodation( void );
//global data
struct MembershipInfo_t Members[ MAX_MEMBERS ];
int numMembers = 0;
int q;
int x=0;
int set;
unsigned memcost;
unsigned Fullcost;
char selection[ MAX_BUFFER_LEN ];
/*MAIN FUNCTION */
int main( void )
{
int done = 0;
while( !done && (x < MAX_MEMBERS) )
{
// clear stdin
int ch;
while( (ch = getchar()) != EOF && '\n' != ch );
// display menu
printf( "\nm: Member processing");
printf( "\na: Accommodiation processing:");
printf( "\nq: quit");
printf( "\n");
// get user menu selection
int choice = 0;
choice = getchar();
// process the user menu choice
switch( tolower(choice) )
{
case 'a':
processAccommodation();
break;
case 'm':
processMembershipInfo();
break;
case 'q':
done = 1;
break;
default:
printf( "\n %c is not a valid entry\n", (char)choice);
break;
} // end switch
if( !done ) x++; // step to next member entry in Members[] array
} // end while
if( x )
{// then some members entered
MemberExp();
}
return 0;
} // end function main()
/* Function used to store membership information */
void processMembershipInfo()
{
printf( "Please enter the first name of member\n");
scanf( " %19s", Members[x].cust_fname);
printf( "Please enter the last name of member\n");
scanf( " %19s", Members[x].cust_lname);
printf( "Please enter Membership type:\n Silver\n Gold\n Platinum\n");
scanf( " %19s", Members[x].memtype);
SelectService();
do
{
printf("Please enter payment plan range: 1...12 months\n"); /* An integer value from 1 to 12 which determines how much months are being paid for */
scanf( "%u", &Members[x].payplan);
} while( (1 > Members[x].payplan) && (12 < Members[x].payplan) );
Payment();
} // end function: processMembershipInfo
/* Function used to calculate the amount to be paid by each member */
void Payment()
{
if (strcmp(Members[x].memtype, "Silver") ==0)
{
memcost = 100;
}
else if (strcmp(Members[x].memtype, "Gold") ==0)
{
memcost = 180;
}
else if (strcmp(Members[x].memtype, "Platinum") ==0)
{
memcost = 300;
}
Fullcost = memcost * Members[x].payplan ;
printf(" The Full cost is %u \n", Fullcost);
} // end function: Payment
/* Function to Select Services for Members */
void SelectService()
{
if (strcmp(Members[x].memtype, "Silver") ==0)
{
printf("Check");
}
}
/*Function to determine Membership Expiration*/
void MemberExp()
{
}
struct Accomodationinfo
{
char ac_fname[ MAX_BUFFER_LEN ];
char ac_lname[ MAX_BUFFER_LEN ];
unsigned hours;
char date[ MAX_DATE_LEN ];
char selection[ MAX_BUFFER_LEN ];
unsigned Fullcost; //Full Cost is an integer and not a float because hours will be rounded off and therefore customer will pay a rounded off value
};
void processAccommodation()
{
struct Accomodationinfo customer;
printf("Press 1 to continue or any other number to cancel \n");
printf("Please enter customer's first name \n");
scanf( " %19s", customer.ac_fname);
printf("Please enter customer's last name \n");
scanf( " %19s" , customer.ac_lname);
printf("You have either the Gym, Sports Centres, or Music Studio available\n");
scanf( " %19s" , customer.selection);
printf("How many hours?\n");
scanf( "%u", &customer.hours);
customer.Fullcost = customer.hours * COST_PER_HOUR;
printf("The full cost is $%u at $%u per hour \n", Fullcost, COST_PER_HOUR );
printf( "%s %s will have access to %s for %u hours \n",
customer.ac_fname,
customer.ac_lname ,
customer.selection,
customer.hours );
} // end function: processAccommodation
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.