TELEPHONE DIRECTORY SYSTEM PROJECT#include <stdio.h>
#include <conio.h> #include <string.h> #include <process.h> #include <ctype.h> #include <dos.h> #include <dir.h> #include <fstream.h> // CLASS HAVING THE RECORD OF CUSTOMER class customer { char ph[10]; char name[30]; char add[40]; char type; public : void append(); void display(); void deleter(); void modify(); void list(); void help(); }cust; // FUNCTION TO DISPLAY THE MESSAGE AT THE BOTTOM OF THE SCREEN void message(char mess[80]) { int l,d; l=strlen(mess); d=l/2; gotoxy(2,24); textcolor(WHITE+BLINK); textbackground(BLACK); cprintf(" "); gotoxy(40-d,24); clreol(); cprintf("%s",mess); textcolor(BLACK); textbackground(WHITE); } // MAIN FUNCTION HAVING THE MAIN MENU void main() { textcolor(BLACK); textbackground(WHITE); char ch,ch1; while(1) { clrscr(); textcolor(WHITE); textbackground(BLACK); gotoxy(25,5); cprintf("MAHANAGAR TELEPHONE NIGAM LTD."); textcolor(BLACK); textbackground(WHITE); gotoxy(25,8); cout<<" D - Display a Bill"; gotoxy(25,10); cout<<" L - List of customers"; gotoxy(25,12); cout<<" H - Help"; gotoxy(25,14); cout<<" M - Modify a record"; gotoxy(25,16); cout<<" Q - Quit"; message("Select your choice"); gotoxy(40,18); ch =getch(); ch = toupper(ch); switch(ch) { case ('Q') : textcolor(WHITE); textbackground(BLACK); clrscr(); exit(1); case ('D') : cust.display(); break; case ('L') : cust.list(); break; case ('H') : cust.help(); break; case ('M') : ch1 = 'A' ; while(ch1 != 'Q') { clrscr(); textcolor(WHITE); textbackground(BLACK); gotoxy(25,5); cprintf("MAHANAGAR TELEPHONE NIGAM LTD."); textcolor(BLACK); textbackground(WHITE); gotoxy(25,9); cout<<" A - Append a record"; gotoxy(25,11); cout<<" D - Delete a record"; gotoxy(25,13); cout<<" M - Change a record"; gotoxy(25,15); cout<<" Q - Quit"; message("Select your option"); ch1 = getch(); ch1 = toupper(ch1); switch(ch1) { case ('A') : cust.append(); break; case ('D') : cust.deleter(); break; case ('M') : cust.modify(); break; } } } } } // FUNCTION TO ADD THE CUSTOMER RECORD IN THE FILE void customer :: append() { char choice; fstream fp; fp.open("tphone.dat", ios::app); if (!fp) { cout<<"Unable to open FILE."; getch(); return; } while(1) { clrscr(); gotoxy(3,3); cout<<"Customer Record #"; message("Enter the customer record"); while(1) { message("Enter the name"); gotoxy(3,5); cout<<"Name : "; gotoxy(25,5); gets(name); if(strlen(name)==0) { gotoxy(2,23); clreol(); textcolor(WHITE+BLINK); textbackground(BLACK); cprintf("Name cannot be left blank\a"); textcolor(BLACK); } else break; } while(1) { message("Enter the address"); gotoxy(3,6); cout<<"Address : "; gotoxy(25,6); gets(add); if (strlen(add) != 0) break; } while(1) { gotoxy(3,7); cout<<"Assigned Ph. No. : "; gotoxy(25,7); cin>>ph; if (ph != 0 ) break; else { gotoxy(25,7); clreol(); } } message("Enter O for Office and R for residential phone"); gotoxy(3,8); cout<<"catagory ( O/R ) : "; cin>>type; gotoxy(4,10); cout<<"1 : Save & Exit 2 : Save & Cont. 0 : Exit without save"; gotoxy(4,11); cout<<"? "; cin>>choice; switch(choice) { case ('1') : fp.write((char *) this,sizeof(cust)); fp.close(); return; case ('2') : fp.write((char *) this,sizeof(cust)); break; case ('0') : fp.close(); return; default : fp.close(); return; } } } // FUNCTION TO DISPLAY THE CUSTOMER RECORD AND CALCULATE THE BILL void customer :: display() { char p[10]; char choice; int found=0; int no; float bill=0.0, tax=0.0, fine=0.0, bbill=0.0, abill=0.0; fstream fp; fp.open("tphone.dat", ios::in); if (!fp) { cout<<"Unable to open a file"; getch(); fp.close(); return; } while(choice != '0') { clrscr(); gotoxy(3,20); cout<<"Please enter the Phone No. "; cin>>p; if (!strcmp(p,"0")) return; found = 0; fp.seekg(0); while (fp.read((char *)this ,sizeof(cust))) { if (found==1) break; if (!strcmp(ph,p)) { clrscr(); gotoxy(28,2); textcolor(BLACK+BLINK) ; textbackground(WHITE); cprintf("MAHANAGAR TELEPHONE BILL"); textcolor(WHITE); textbackground(BLACK); gotoxy(3,4); cout<<"Name : "; cout<<name; gotoxy(35,5); cout<<"Address : "; cout<<add; gotoxy(35,4); cout<<"Assigned Ph. No. : "; cout<<ph; gotoxy(3,5); cout<<"Catagory ( O/R ) : "; cout<<type; gotoxy(23,8); cout<<"___________"; gotoxy(10,8); cout<<"No. of calls "; cin>>no; if ( no <= 150 ) bill = 0 ; else { no = no - 150; if (toupper(type) == 'O') bill = no * 1.00 ; else bill = no * .80; } gotoxy(10,9); cout<<"Bill"; gotoxy(70,9); cout<<bill; tax = (5*bill)/100; gotoxy(10,10 ); cout<<"5% Tax"; gotoxy(70,10); cout<<tax; gotoxy(10,11); cout<<"Duties"; gotoxy(70,11); cout<<"100"; int dd,mm,yy; struct date d; // Getting system Date getdate(&d); dd = d.da_day; mm = d.da_mon; yy = d.da_year; gotoxy(10,15) ; cout<<"TOTAL BILL before " ; cout<<dd<<"/"<<mm<<"/"<<yy; bbill = bill+tax+100; gotoxy(70,15); cout<<bbill; gotoxy(10,17); cout<<"Late Fine"; fine = (bbill*5)/100; gotoxy(70,17); cout<<fine; gotoxy(10,21); cout<<"TOTAL BILL after "; cout<<dd<<"/"<<mm<<"/"<<yy; abill = bbill+fine; gotoxy(70,21); cout<<abill; found = 1; message("Press a Key"); getch(); } } message("Enter 1 or 2 to cont."); gotoxy(4,22); cout<<"1 : Cont. 0 : Exit "; cout<<"? "; cin>>choice; switch(choice) { case ('1') : break; case ('0') : return; default : return; } } fp.close(); } // FUNCTION TO DISPLAY THE LIST OF THE CUSTOMERS void customer :: list() { clrscr(); fstream fp; int r; fp.open("tphone.dat", ios::in); if (!fp) { cout<<"Unable to open"; getch(); fp.close(); return; } gotoxy(35,2); cout<<"List of Customers"; gotoxy(35,3); cout<<"*****************"; gotoxy(5,4); cout<<"Name"; gotoxy(40,4); cout<<"Phone No."; gotoxy(65,4); cout<<"Catagory"; gotoxy(1,5); cout<<"*******************************************************************************"; r=6; while (fp.read((char *) this, sizeof(cust))) { if (r >= 21) { message("Press a key"); getch(); clrscr(); gotoxy(35,2); cout<<"List of customers"; gotoxy(35,3); cout<<"*****************"; gotoxy(5,4); cout<<"Name"; gotoxy(40,4); cout<<"Phone No."; gotoxy(65,4); cout<<"Catagory"; gotoxy(1,5); cout<<"*******************************************************************************"; r=6; } gotoxy(5,r); cout<<name; gotoxy(40,r); cout<<ph; gotoxy(65,r); if (toupper(cust.type) == 'O') cout<<"Office"; else cout<<"Residential"; r++; } message("Press a key"); getch(); fp.close(); } // FUNCTION TO DELETE THE RECORD OF CUSTOMER FROM THE FILE void customer :: deleter() { char ch; char p[10]; fstream temp,fp; fp.open("tphone.dat", ios::in); if (!fp) { cout<<"Unable to open Telephone file"; getch(); fp.close(); return; } temp.open("temp.dat", ios::out); if (!temp) { cout<<"Unable to open Temporary file"; getch(); temp.close(); return; } clrscr(); gotoxy(5,3); cout<<"Enter the Phone No. to be deleted : "; cin>>p; if(!strcmp(p,"0")) return; int found=0; while (fp.read((char *) this, sizeof(cust))) { if (!strcmp(p,ph)) { found = 1; gotoxy(5,5); cout<<"Name "<<name; gotoxy(5,6); cout<<"Address " <<add; gotoxy(5,7); cout<<"Catagory "<<type; gotoxy(6,10); cout<<"Delete this record (Y/N) "; cin>>ch; if (toupper(ch) == 'N') temp.write((char *) this,sizeof(cust)); } else temp.write((char *) this,sizeof(cust)); } fp.close(); temp.close(); if (toupper(ch) == 'N') return; if (!found) { cout<<"\n\nTelephone no. not found"; getch(); return; } fp.open("tphone.dat", ios::out); temp.open("temp.dat", ios::in); while (temp.read((char *) this, sizeof(cust))) fp.write((char *) this, sizeof(cust)); fp.close(); temp.close(); } // FUNCTION TO MODIFY THE RECORD OF CUSTOMER FROM THE FILE void customer :: modify() { char ch; char p[10]; fstream temp,fp; fp.open("tphone.dat", ios::in); if (!fp) { cout<<"Unable to open Telephone file"; getch(); fp.close(); return; } temp.open("temp.dat", ios::out); if (!temp) { cout<<"Unable to open Temporary file"; getch(); temp.close(); return; } clrscr(); gotoxy(5,3); cout<<"Enter the Phone No. to be Modify : "; cin>>p; if(!strcmp(ph,"0")) return; int found=0; while (fp.read((char *) this, sizeof(cust))) { if (!strcmp(p,ph)) { found = 1; gotoxy(5,5); cout<<"Name "<<name; gotoxy(5,6); cout<<"Address " <<add; gotoxy(5,7); cout<<"Catagory "<<type; gotoxy(6,10); cout<<"Modify this record (Y/N) "; cin>>ch; if (toupper(ch) == 'Y') { gotoxy(3,13); cout<<"Customer Record #"; message("Enter the customer record"); while(1) { gotoxy(3,15); cout<<"Name : "; gets(name); if (strlen(name) != 0) break; } gotoxy(3,16); cout<<"Address : "; gets(add); while(1) { gotoxy(3,17); cout<<"Assigned Ph. No. : "; cin>>ph; if (ph != 0 ) break; } message("Enter O for Office and R for residential phone"); gotoxy(3,18); cout<<"catagory ( O/R ) : "; cin>>type; } } temp.write((char *) this,sizeof(cust)); } fp.close(); temp.close(); if (toupper(ch) == 'N') return; if (!found) { cout<<"\n\nTelephone no. not found"; getch(); return; } fp.open("tphone.dat", ios::out); temp.open("temp.dat", ios::in); while (temp.read((char *) this, sizeof(cust))) fp.write((char *) this, sizeof(cust)); fp.close(); temp.close(); } // FUNCTION TO DISPLAY THE DISCRIPTION FOR THE PROJECT WORKING void customer :: help() { clrscr(); gotoxy(35,2); textcolor(WHITE + BLINK); textbackground(BLACK); cprintf(" HELP "); textcolor(BLACK); textbackground(WHITE); gotoxy(8,5); cout<<"This software is used to create a telephone bill for the customers. "; gotoxy(8,7); cout<<"There are two catagories of the customers. First catagories is of"; gotoxy(8,9); cout<<"Residential phones and second catagories is of Office phones. Both"; gotoxy(8,11); cout<<"the catagories have different charges of the telephone bill. Charges"; gotoxy(8,13); cout<<"of residential phones are 80 Paise per call and Charges of Office "; gotoxy(8,15); cout<<"office phones are Rs. 1 per call. 150 call are free for each catogory"; gotoxy(8,17); cout<<"Total bill for is equal to 5% tax plus 100 rupees charges for other"; gotoxy(8,19); cout<<"charges. If bill is not paid before the paticular date then penalty "; gotoxy(8,21); cout<<"should also be given."; getch(); } |
Scope of the programIt is the complete telephone directory management software is so designed as to ease the work load of telephone operating professionals. The main feature includes provision to append a record, modify a record or even to delete a record. This software helps you to track all the required data of a telephone customer. .
This program will store the information of clients and their details in the system. It will also store the information about billing details. This system provides security by granting access rights for changing the sensitive data to administrator only. Customized search options are also available in this system. This system can generate all kinds of reports as per the user’s requirements. As this is generic software it can be used by a wide variety of outlets to automate the process of manually maintaining the records related to the subject of maintaining the records. This project is basically updating the manual telephone directory management system to automated inventory system so that organization can manage their record in efficient and organized form. System Requirements:-• Required processor: Pentium 90 MHz or faster(for effective working of software)
• Required RAM :256MB or more • 25 MB of available hard-disk space for installation. • CD-ROM drive (only for installation).(Or USB port) • At least 1,024x768 display (1,280x800 recommended) Header FILES INCLUDEDIosream.h-includes functions to carry on input and output functions
Stdio.h- For the use of C standard input/output library Conio.h-Console input/output-used to create text user interfaces String.h-To execute operations involving the sequence of characters Process.h-It contains functions declarations used in threads and processes Ctype.h-Includes several functions useful for testing and mapping characters Dos.h-includes functions to handle interrupts,producing sounds,date and time functions,etc. Fstream.h-To operate files in different modes(input, output, append,etc) Dir.h-Directory control routines-contains functions to regulate different directories |