Open In App

Telecom Billing System in C

In this article, we are going to create a basic Telecom Billing System using the C programming language. This system allows users to perform operations such as adding new customer records, viewing the list of records, modifying existing records, viewing payment details, searching for specific records, and deleting records.

What is a Telecom Billing System?

Telecom service is one of the biggest services having millions of users and the data managed by these companies are quite large so, we need some software system to efficiently manage this data.



A telecom billing system is a digital system to keeps track of user, their service usage and their pending bill. It is able to store and manage data of multiple users and helps the telecom provider automate the billing of the services from the customer.

Operations Offered by Telecom Billing System

The following are the operations and functionalities offered by the telecom billing system.



 

Prerequisites: This project requires you to have a basic understanding of the C programming language concepts such as arrays, strings, structs, etc.

Components of the Telecom Billing System Program

The telecom billing system is divided into multiple components each performing a specific task.

Necessary Libraries

We will use the following libraries:

  1. <stdio.h>: For Input and Output
  2. <string.h>: For String Manipulation

Both of these are standard libraries that come bundled with the C compiler.

Data Structure to Hold Customer Information




// Structure to hold customer information
struct Customer {
    char name[50];
    char phoneNumber[15];
    float usage;
    float totalBill;
};
  
// Global array to store customer data
struct Customer customers[100];
  
// Global variable to keep track of the number of customers
int customerCount = 0;

addRecord(): Function to Add New Customer Record




// Function to add a new customer record
void addRecord()
{
    if (customerCount < 100) {
        printf("\nEnter name: ");
        scanf(" %[^\n]s", customers[customerCount].name);
        printf("Enter phone number: ");
        scanf("%s", customers[customerCount].phoneNumber);
        printf("Enter usage (in minutes): ");
        scanf("%f", &customers[customerCount].usage);
        customers[customerCount].totalBill
            = customers[customerCount].usage * 0.1;
        customerCount++;
        printf("\nRecord added successfully!\n");
    }
    else {
        printf("\nMaximum number of records reached!\n");
    }
}

viewRecords(): Function to Display Customer Records




// Function to view the list of customer records
void viewRecords()
{
    printf("\nName\tPhone Number\tUsage(min)\tTotal "
           "Bill($)\n");
    for (int i = 0; i < customerCount; i++) {
        printf("%s\t%s\t%.2f\t\t%.2f\n", customers[i].name,
               customers[i].phoneNumber, customers[i].usage,
               customers[i].totalBill);
    }
}

modifyRecord(): Modifying Customer Records by Phone Number




// Function to modify a customer record
void modifyRecord(char phoneNumber[])
{
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber)
            == 0) {
            printf(
                "\nEnter new usage (in minutes) for %s: ",
                customers[i].name);
            scanf("%f", &customers[i].usage);
            customers[i].totalBill
                = customers[i].usage * 0.1;
            printf("\nRecord modified successfully!\n");
            return;
        }
    }
    printf("\nRecord not found!\n");
}

viewPayments(): Viewing Payment for a Customer by Phone Number




// Function to view payment for a customer
void viewPayment(char phoneNumber[])
{
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber)
            == 0) {
            printf("\nTotal Bill for %s: $%.2f\n",
                   customers[i].name,
                   customers[i].totalBill);
            return;
        }
    }
    printf("\nRecord not found!\n");
}

searchRecord(): Searching for a Customer Record by Phone Number




void searchRecord(char phoneNumber[]) {
    printf("\nName\tPhone Number\tUsage(min)\tTotal Bill($)\n");
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber) == 0) {
            printf("%s\t%s\t%.2f\t\t%.2f\n", customers[i].name, customers[i].phoneNumber, customers[i].usage, customers[i].totalBill);
            return;
        }
    }
    printf("\nRecord not found!\n");
}

deleteRecord(): Deleting a Customer Record by Phone Number




void deleteRecord(char phoneNumber[]) {
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber) == 0) {
            for (int j = i; j < customerCount - 1; j++) {
                customers[j] = customers[j + 1];
            }
            customerCount--;
            printf("\nRecord deleted successfully!\n");
            return;
        }
    }
    printf("\nRecord not found!\n");
}

Main Function

The main function handles the primary control of the program.




int main()
{
    int choice;
    char phoneNumber[15];
  
    while (1) {
        displayMenu();
        printf("Enter your choice: ");
        scanf("%d", &choice);
  
        switch (choice) {
        case 1:
            addRecord();
            break;
        case 2:
            viewRecords();
            break;
        case 3:
            printf(
                "\nEnter phone number to modify record: ");
            scanf("%s", phoneNumber);
            modifyRecord(phoneNumber);
            break;
        case 4:
            printf(
                "\nEnter phone number to view payment: ");
            scanf("%s", phoneNumber);
            viewPayment(phoneNumber);
            break;
        case 5:
            printf(
                "\nEnter phone number to search record: ");
            scanf("%s", phoneNumber);
            searchRecord(phoneNumber);
            break;
        case 6:
            printf(
                "\nEnter phone number to delete record: ");
            scanf("%s", phoneNumber);
            deleteRecord(phoneNumber);
            break;
        case 7:
            return 0;
        default:
            printf("\nInvalid choice! Please try again.\n");
        }
    }
  
    return 0;
}

Finally, we implement all these components and create a complete program.

C Program to Implement Telecom Billing System




#include <stdio.h>
#include <string.h>
  
// Structure to hold customer information
struct Customer {
    char name[50];
    char phoneNumber[15];
    float usage;
    float totalBill;
};
  
struct Customer
    customers[100]; // Array to store customer data
int customerCount = 0; // Variable to keep track of the
                       // number of customers
  
// Function to add a new customer record
void addRecord()
{
    if (customerCount < 100) {
        printf("\nEnter name: ");
        scanf(" %[^\n]s", customers[customerCount].name);
        printf("Enter phone number: ");
        scanf("%s", customers[customerCount].phoneNumber);
        printf("Enter usage (in minutes): ");
        scanf("%f", &customers[customerCount].usage);
        customers[customerCount].totalBill
            = customers[customerCount].usage * 0.1;
        customerCount++;
        printf("\nRecord added successfully!\n");
    }
    else {
        printf("\nMaximum number of records reached!\n");
    }
}
  
// Function to view the list of customer records
void viewRecords()
{
    printf("\nName\tPhone Number\tUsage(min)\tTotal "
           "Bill($)\n");
    for (int i = 0; i < customerCount; i++) {
        printf("%s\t%s\t%.2f\t\t%.2f\n", customers[i].name,
               customers[i].phoneNumber, customers[i].usage,
               customers[i].totalBill);
    }
}
  
// Function to modify a customer record
void modifyRecord(char phoneNumber[])
{
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber)
            == 0) {
            printf(
                "\nEnter new usage (in minutes) for %s: ",
                customers[i].name);
            scanf("%f", &customers[i].usage);
            customers[i].totalBill
                = customers[i].usage * 0.1;
            printf("\nRecord modified successfully!\n");
            return;
        }
    }
    printf("\nRecord not found!\n");
}
  
// Function to view payment for a customer
void viewPayment(char phoneNumber[])
{
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber)
            == 0) {
            printf(
                "%s\t%s\t%.2f\t\t%.2f\n", customers[i].name,
                customers[i].phoneNumber,
                customers[i].usage, customers[i].totalBill);
            return;
        }
    }
    printf("\nRecord not found!\n");
}
  
// Function to delete a customer record
void deleteRecord(char phoneNumber[])
{
    for (int i = 0; i < customerCount; i++) {
        if (strcmp(customers[i].phoneNumber, phoneNumber)
            == 0) {
            for (int j = i; j < customerCount - 1; j++) {
                customers[j] = customers[j + 1];
            }
            customerCount--;
            printf("\nRecord deleted successfully!\n");
            return;
        }
    }
    printf("\nRecord not found!\n");
}
  
// Function to display menu options
void displayMenu()
{
    printf("\n1. Add New Record\n");
    printf("2. View List of Records\n");
    printf("3. Modify Record\n");
    printf("4. View Payment\n");
    printf("5. Delete Record\n");
    printf("6. Exit\n");
}
  
int main()
{
    int choice;
    char phoneNumber[15];
  
    while (1) {
        displayMenu();
        printf("Enter your choice: ");
        scanf("%d", &choice);
  
        switch (choice) {
        case 1:
            addRecord();
            break;
        case 2:
            viewRecords();
            break;
        case 3:
            printf(
                "\nEnter phone number to modify record: ");
            scanf("%s", phoneNumber);
            modifyRecord(phoneNumber);
            break;
        case 4:
            printf(
                "\nEnter phone number to view payment: ");
            scanf("%s", phoneNumber);
            viewPayment(phoneNumber);
            break;
        case 5:
            printf(
                "\nEnter phone number to delete record: ");
            scanf("%s", phoneNumber);
            deleteRecord(phoneNumber);
            break;
        case 6:
            return 0;
        default:
            printf("\nInvalid choice! Please try again.\n");
        }
    }
  
    return 0;
}

Output

1. Customer Dashboard

 

2. Add New Record

 

3. View Payments

 

Execution of Program


Article Tags :