Abstract
A telecom billing system is a software that manages data and processes to
calculate and send invoices for telecom services. It also tracks usage,
collects payments, and generates financial reports. 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
keep 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.
Introduction
Telecom billing system improves the data collection technique and helps the
admins control the billing system well. It has the following advantages:
Telecom billing systems help ensure customer satisfaction.
They help reduce manual errors and aint billing disputes.
They help accelerate payment collections.
They help improve the customer experience.
The telecom billing system so given in the project can do the following tasks:
Add New Record: Add new customer record.
View List of Records: View all the records at a glance.
Modify Record: Modification of an already existing record.
View Payment: View the bill for a given customer.
Delete Record: The deletion of a record from the memory.
Literature review
This project requires you to have a basic understanding of the C
programming language concepts such as arrays, strings, structures, etc. the
consideration of preparation of bill is that for every 1 minute 0.1rs is charged.
The following libraries are used
1. <stdio.h>: For Input and Output
2. <string.h>: For String Manipulation
System design
Implementation
int 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");
}
return 0;
}
addRecord() is a function to add new customer record. It checks if
the current number of customers given by customerCount is less than
100 ensuring there’s space for a new record. The function prompts the
user to enter the customer’s name, phone number, usage in minutes. It
calculates the total bill for the customer by multiplying their usage in
minutes by 0.1. After adding the record, customerCount is incremented by
1.If maximum records is reached then it notifies the user.
viewRecords() function
int 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);
}
}
The function named viewRecords() is responsible for displaying the list of
customer records. It uses a loop to iterate through each customer
record .Within the loop, it prints the name, phone number, usage in minutes,
and total bill for each customer.
int 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");
}
This function searchRecord responsible for searching for a customer record
based on their phone number. It takes a char array phoneNumber as a
parameter which is used to identify the customer. It uses a loop to iterate
through each customer record. Within the loop it checks if the phone number
of the current customer matches the provided phoneNumber. If a matching
phone number is found it prints the information of the customer including
name, phone number, usage in minutes, total bill. It displays output to the
user either displaying the customer record or informing them if the record
was not found.
Source code
#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
int 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
int 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
int 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
int 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
int 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
int 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;
Testing and results
Conclusion
The telecom billing system helps us to understand how to work with various structure variable and how
combination of lots of sub modules can form a complete program. Its application is in the convenience
of the users.
References
rev.io
Wikipedia.com
geeksforgeeks.org
insights.encora.com
cloudblue.com
quora.com