/* The program gets details about payment and manage them */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
typedef struct
{
char name;
int pay;
} details;
/* Reading details */
details ReadPay()
{
details st;
printf("\nReading pay:\n\n");
printf("Name: ");
flushall();
gets(st.name);
printf("Pay: ");
scanf("%d", &st.pay);
return st;
}
/* Print all details about paying */
void PrintDetails(details s)
{
printf("name: %s", s.name);
printf("pay: %d", s.pay);
}
/* Add details of one pay */
details *AddPay(details *arr, int *cptr)
{
(*cptr)++;
arr = (details*)realloc(arr, sizeof(details)*(*cptr));
if (arr=NULL)
{
printf("Failed to allocate memory...\n");
exit(1);
}
arr = ReadPay();
return arr;
}
/* Delete details of one pay */
void DelPay(details *arr, int *cptr)
{
int num;
(*cptr)--;
if (*cptr<0)
{
printf("\nNo details to delete...");
getch();
return;
}
printf("\nEnter Pay number to delete(0-%d):", *cptr);
scanf("%d", &num);
if (num<0 || num>=*cptr)
{
printf("Wrong value...\n");
return;
}
arr = arr;
}
/* Printing the details of paying */
void ShowList(details *arr, int counter)
{
int i;
if (counter<=0)
printf("\nNo details to show...");
for (i=0 ; i<counter ; i++)
PrintDetails(arr);
getch();
}
/* Printing menu */
void PrintMenu()
{
clrscr();
printf("The pay program menu: \n\n");
printf("a. Add new payment\n");
printf("d. Delete a payment\n");
printf("s. Show all pay\n");
printf("e. Exit\n");
}
void main()
{
details *var = NULL;
int counter=0;
char option;
do
{
PrintMenu();
option = getch();
switch (option)
{
case 'a': var = AddPay(var, &counter);
break;
case 'd': DelPay(var, &counter);
break;
case 's': ShowList(var, counter);
break;
case 'e': printf("GoodBye...\n");
break;
default : printf("Wrong Key...");
}
} while (option != 'e');
if (var != NULL)
free(var);
}