In this C Project source code series we are going to create a School Billing Management System.School Building System is a C programming project, which is console-based that doesn't use graphics. The school billing system can be used as a college project for students who are interested in C programming.
The billing operations will be two types of accounts one for staff and the second for teachers.
The data storage in this project uses a file handling method, data structures, and functions. You can insert, modify, search and delete the records of both types of accounts, and the user can get a better understanding of the C language through this program.
Fees of the student, fee dues, and salary-related information will be displayed in the window. You can make the entry of the current month first while executing the program
Student Module consist of Add Student record, view record, Fee details
Teacher Module also consist of Add teacher Info,Edit, salary details
Complete code for School Billing System with C
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<windows.h> struct dat//for date(month and day { int d,m;//d=day,m=month }; int clscanf();//check class (1-12) struct student { struct dat dt; float f,fine,tot,adv,due;//f=fee char n[50]; int r,c;//roll and class } stud,s; struct teacher { struct dat dt; char n[50]; float sal,adv,tot; int id,no; } tech,t; int chkdat(int,int);// for checking date void addrec(int);//for adding records void modrec(int);//for modifying records void searchrec(int);//for searching records void delrec(int);//for deleting records void salary(int);//for the calculation of salary of teacher and staff FILE *fs,*ft;//file declaration int mm,dd;//mm=month, dd=day void ext();//for exiting void main(void) { int i,j,k; for(i=0; i<80; i++) { printf("\xdb"); } printf("\n"); for(i=0; i<80; i++) { printf("\xdb"); } system("color 9a"); printf(" \t_______________________________________________________\n"); printf("\t| |\n"); printf("\t|**WELCOME TO C PROGRAM SCHOOL BILLING SYSTEM PROJECT|**\n"); printf("\n\t| |\n"); printf("\t ______________________________________________________\n"); printf("\t| DEVELOPED BY RRTutors |\n"); printf(" \t________________________________________________________\n"); printf("\t| ***************************************** |\n"); printf("\t| ***************************************** |\n"); printf(" \t_______________________________________________________\n"); printf("\n\tPLEASE ENTER ANY KEY TO CONTINUE"); for(i=0; i<5; i++) { printf("."); Sleep(500);//after printing one . another comes after 0.5 seconds } getch(); system("cls");//clears the screen printf("\n"); for(i=0; i<80; i++) { printf("\xdb"); } system("color 6b"); printf("\n\n\t** WELCOME TO C PROGRAM SCHOOL BILLING SYSTEM PROJECT **\n\n\n"); for(i=0; i<80; i++) { printf("\xdb"); } printf("\nPLEASE ENTER ANY KEY TO START\n"); for(i=0; i<5; i++) { printf("."); Sleep(500); } fflush(stdin); getch(); system("cls"); system("color 0f");//1st is for back ground color and second is for text color printf("\n\t\tPLEASE ENTER CURRENT DATE\nmm dd\n "); scanf("%d%d",&mm,&dd); mm=chkdat(mm,dd); start(); } void start() { int i,j;//j is for selection of account type system("cls"); printf("\n\t\tPLEASE ENTER ACCOUNT TYPE"); printf("\n\t\t1:: Student"); printf("\n\t\t2:: Teachers and Staffs"); printf("\n\t\t3:: Exit"); printf("\n\t\tAccount type choice "); fflush(stdin); scanf("%d",&j); switch (j) { case 3: ext(); case 1: { system("cls"); printf("\n\t\tPLEASE ENTER THE CHOICE"); printf("\n\t\t1:: Add record"); printf("\n\t\t2:: Search record"); printf("\n\t\t3:: Modify record"); printf("\n\t\t4:: Delete record"); printf("\n\t\t5:: Calculate fee"); printf("\n\t\t6:: Exit"); printf("\n\n Enter choice "); fflush(stdin); scanf("%d",&i); switch (i) { case 1: addrec(j);//function call start();//function call case 2: searchrec(j); start(); case 3: modrec(j); start(); case 4: delrec(j); start(); case 5: fee(mm); start(); case 6: ext(); default : { printf("\n\n\tInvalid entry!!"); printf("\n\nTo Account Type\n\n\t"); system("pause"); start(); } } } case 2: { system("cls"); printf("\n\t\tPLEASE ENTER THE CHOICE"); printf("\n\t\t1:: Add record"); printf("\n\t\t2:: Search record"); printf("\n\t\t3:: Modify record"); printf("\n\t\t4:: Delete record"); printf("\n\t\t5:: Calculate Salary"); printf("\n\t\t6:: Exit"); printf("\n\n Enter choice "); fflush(stdin); scanf("%d",&i); switch (i) { case 1: addrec(j); start(); case 2: searchrec(j); start(); case 3: modrec(j); start(); case 4: delrec(j); case 5: salary(mm); start(); case 6: ext(); default : { printf("\n\n\tInvalid entry!!"); printf("\n\nTo Account Type\n\n\t"); system("pause"); start(); } } } default : { printf("\n\n\tInvalid entry!!"); printf("\n\nTo Account Type\n\n\t"); system("pause"); start(); } } } void addrec(int j) { int dif,cdat,ddat,month=0;//cdat=month till which fee is cleared float ff;//used in calculatin of fee of different class char c='y'; system("cls"); printf("\n\t******************************************************************"); printf("\n\t *************************** "); printf("\n\t********************* ADD RECORD *******************"); printf("\n\t *************************** "); printf("\n\t******************************************************************"); if (j==1) { while(c=='y'||c=='Y') { int a=1; printf("\n\nEnter the name of student: "); fflush(stdin); scanf("%[^\n]",stud.n); printf("\nEnter the class: "); fflush(stdin); stud.c=clscanf(); printf("\nEnter the Roll No.:"); fflush(stdin); scanf("%2d",&stud.r); printf("\nEnter month and day till which fee is paid:"); fflush(stdin); scanf("%2d%2d",&cdat,&ddat); cdat=chkdat(cdat,ddat); stud.dt.m=cdat; ff=stud.c/10.0; stud.f=1000*(1+ff);//fee of different classes dif=mm-stud.dt.m;//months of fee left to be paid stud.fine=(dif*stud.f)*1/100; stud.due=(dif)*stud.f;//fees left to be paid if(dif==1) { stud.tot=stud.f; stud.fine=0; } else { stud.tot=stud.fine+stud.due; }//for calculation of total fee fs=fopen("student","ab+");//opening a binary file in apend mode fwrite(&stud,sizeof(stud),1,fs); fclose(fs); printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } if (j==2) { while(c=='y'||c=='Y') { int a=1; printf("\n\nEnter name of teacher/staff:" ); fflush(stdin); scanf("%[^\n]",tech.n); printf("\nEnter teacher/staff id: "); fflush(stdin); scanf("%d",&tech.id); printf("\nEnter number of class/shift per month:: "); scanf("%d",&tech.no); fflush(stdin); printf("\nEnter month and day till which salary is paid::"); scanf("%d %d",&tech.dt.m,&tech.dt.d); cdat=chkdat(cdat,ddat); tech.dt.m=cdat; tech.sal=tech.no*500; tech.adv=(tech.dt.m-mm-1)*tech.sal; if (tech.adv<0) tech.adv=0; tech.tot=tech.sal; ft=fopen("teacher","ab+"); fwrite(&tech,sizeof(tech),1,ft); fclose(ft); printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } fflush(stdin); printf("\n\n"); system("pause"); } } void searchrec(int j) { char name[50],namet[50]; int a=1,choice; char c='y'; if (j==1) { while(c=='y'||c=='Y') { int a=1; system("cls"); printf("\n\t******************************************************************"); printf("\n\t *************************** "); printf("\n\t********************* SEARCH RECORD *******************"); printf("\n\t *************************** "); printf("\n\t******************************************************************"); printf("\n\n\t\tPLEASE CHOOSE SEARCH TYPE::"); printf("\n\n\t\t1::Search by name::"); printf("\n\n\t\t2::Search by class::"); printf("\n\n\t\t3::Search by rollno::"); printf("\n\n\t\t4::Exit"); printf("\n\n\t\t::Enter your choice:: "); fflush(stdin); scanf("%d",&choice); if (choice==1) { a=1; printf("\n\nEnter name of student to search: "); fflush(stdin); scanf("%[^\n]",name); fs=fopen("student","rb"); while(fread(&stud,sizeof(stud),1,fs)==1) { if (strcmpi(name,stud.n)==0) { a=0; printf("\nname = %s",stud.n); printf("\nclass = %d",stud.c); printf("\nroll no = %d",stud.r); printf("\nmonthy fee =%.2f",stud.f); printf("\nlast fee paid in month =%2d",stud.dt.m); printf("\n due=%.2f",stud.due); printf("\n fine=%.2f",stud.fine); printf("\n total=%.2f\n\n",stud.tot); } } if (a==1) printf("\n\nRECORD NOT FOUND"); printf("\n\n"); system("pause"); fflush(stdin); fclose(fs); } else if (choice==2) { int cl; a=1; printf("\n\nEnter class of student to search: "); fflush(stdin); cl=clscanf(); fs=fopen("student","rb"); while(fread(&stud,sizeof(stud),1,fs)==1) { if (stud.c==cl) { a=0; printf("\nname = %s",stud.n); printf("\nclass = %d",stud.c); printf("\nroll no = %d",stud.r); printf("\nmonthy fee =%.2f",stud.f); printf("\nlast fee paid in month =%2d",stud.dt.m); printf("\n due=%.2f",stud.due); printf("\n fine=%.2f",stud.fine); printf("\n total=%.2f",stud.tot); } } if (a==1) printf("\n\nRECORD NOT FOUND"); printf("\n\n"); system("pause"); fflush(stdin); fclose(fs); } else if (choice==3) { int rll; a=1; printf("\n\nEnter roll of student to search: "); fflush(stdin); rll=clscanf(); fs=fopen("student","rb"); while(fread(&stud,sizeof(stud),1,fs)==1) { if (strcmpi(name,stud.n)==0) { a=0; printf("\nname = %s",stud.n); printf("\nclass = %d",stud.c); printf("\nroll no = %d",stud.r); printf("\nmonthy fee =%.2f",stud.f); printf("\nlast fee paid in month =%2d",stud.dt.m); printf("\n due=%.2f",stud.due); printf("\n fine=%.2f",stud.fine); printf("\n total=%.2f",stud.tot); } } if (a==1) printf("\n\nRECORD NOT FOUND"); printf("\n\n"); system("pause"); fflush(stdin); fclose(fs); } else if(choice==4) { ext(); } else { printf("\n\n\n\t\tINVALID ENTRY!!!!\n\n\t\t"); system("pause"); searchrec(1); } printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } if (j==2) { while(c=='y'||c=='Y') { int a=1; printf("\n\nname of teacher/staff to search: "); fflush(stdin); scanf("%[^\n]",namet); ft=fopen("teacher","rb"); while(fread(&tech,sizeof(tech),1,ft)==1) { if (strcmp(namet,tech.n)==0) { a=0; printf("\nname = %s",tech.n); printf("\nteacher/staff id = %d",tech.id); printf("\nmonth till when salary is paid =%d",tech.dt.m); printf("\nmonthy salary = %.2f",tech.sal); printf("\nadvance paid = %.2f",tech.adv); } } if (a==1) printf("\n\nRECORD NOT FOUND"); printf("\n\n"); system("pause"); fflush(stdin); fclose(ft); printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } } void modrec(int j) { char name[50]; int a=1,choice,cl,rolno; char c='y'; if (j==1) { while(c=='y'||c=='Y') { system("cls"); printf("\n\t******************************************************************"); printf("\n\t *************************** "); printf("\n\t********************* MODIFY RECORD *******************"); printf("\n\t *************************** "); printf("\n\t******************************************************************"); printf("\n\n\t\tPLEASE CHOOSE MODIFY TYPE::"); printf("\n\n\t\t1::Modify by name::"); printf("\n\n\t\t2::Modify by name &class::"); printf("\n\n\t\t3::Modify by name,class & rollno::"); printf("\n\n\t\t4::Exit"); printf("\n\n\t\t::Enter your choice:: "); fflush(stdin); scanf("%d",&choice); if (choice==1) { int a=0; printf("\n\nenter name of student to modify: "); fflush(stdin); scanf("%[^\n]",name); fs=fopen("student","rb+"); while(fread(&stud,sizeof(stud),1,fs)==1) { a=1; if (strcmpi(name,stud.n)==0) { a=0; printf("\nenter new name of student: "); fflush(stdin); scanf("%[^\n]",stud.n); printf("\nenter new class of student: "); fflush(stdin); stud.c=clscanf(); printf("\nenter new roll of student: "); fflush(stdin); scanf("%d",&stud.r); fseek(fs,-sizeof(stud),SEEK_CUR); fwrite(&stud,sizeof(stud),1,fs); fclose(fs); } } if (a==1) printf("\n\nRECORDS NOT FOUND"); else printf("\n\nRECORDS SUCCESSFULLY MODIFIED"); printf("\n\n"); system("pause"); } else if (choice==2) { int a=0; printf("\n\nenter name of student to modify: "); fflush(stdin); scanf("%[^\n]",name); printf("\n\nenter class of student to modify: "); fflush(stdin); cl=clscanf(); fs=fopen("student","rb+"); while(fread(&stud,sizeof(stud),1,fs)==1) { a=1; if (strcmpi(name,stud.n)==0 && cl==stud.c) { a=0; printf("\nenter new name of student: "); fflush(stdin); scanf("%[^\n]",stud.n); printf("\nenter new class of student: "); fflush(stdin); stud.c=clscanf(); printf("\nenter new roll of student: "); fflush(stdin); scanf("%d",&stud.r); fseek(fs,-sizeof(stud),SEEK_CUR); fwrite(&stud,sizeof(stud),1,fs); fclose(fs); } } if (a==1) printf("\n\nRECORDS NOT FOUND"); else printf("\n\nRECORDS SUCCESSFULLY MODIFIED"); printf("\n\n"); system("pause"); } else if (choice==3) { int a=0; printf("\n\nenter name of student to modify: "); fflush(stdin); scanf("%[^\n]",name); printf("\n\nenter class of student to modify: "); fflush(stdin); cl=clscanf(); printf("\n\nenter roll of student to modify: "); fflush(stdin); scanf("%d",&rolno); fs=fopen("student","rb+"); while(fread(&stud,sizeof(stud),1,fs)==1) { a=1; if (strcmpi(name,stud.n)==0 && cl==stud.c &&rolno==stud.r) { a=0; printf("\nenter new name of student: "); fflush(stdin); scanf("%[^\n]",stud.n); printf("\nenter new class of student: "); fflush(stdin); stud.c=clscanf(); printf("\nenter new roll of student: "); fflush(stdin); scanf("%d",&stud.r); fseek(fs,-sizeof(stud),SEEK_CUR); fwrite(&stud,sizeof(stud),1,fs); fclose(fs); } } if (a==1) printf("\n\nRECORDS NOT FOUND"); else printf("\n\nRECORDS SUCCESSFULLY MODIFIED"); printf("\n\n"); system("pause"); } else if (choice==4) ext(); else { printf("\n\n\n\t\tINVALID ENTRY!!!!\n\n\t\t"); system("pause"); modrec(1); } printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } if (j==2) { while(c=='y'||c=='Y') { int a=1; printf("enter name of teacher to modify: "); fflush(stdin); scanf("%[^\n]",name); ft=fopen("teacher","rb+"); while(fread(&tech,sizeof(tech),1,ft)==1) { if (strcmpi(name,tech.n)==0) { a=0; printf("\nenter new name of teacher: "); fflush(stdin); scanf("%[^\n]",tech.n); printf("\nenter new id of teacher: "); fflush(stdin); scanf("%d",&tech.id); fseek(ft,-sizeof(tech),SEEK_CUR); fwrite(&tech,sizeof(tech),1,ft); fclose(ft); } } if (a==1) printf("\n\nRECORD NOT FOUND"); else printf("\n\nRECORD SUCCESSFULLY MODIFIED"); printf("\n\n"); system("pause"); fflush(stdin); printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } } void delrec(int j) { system("cls"); printf("\n\t******************************************************************"); printf("\n\t *************************** "); printf("\n\t********************* DELETE RECORD *******************"); printf("\n\t *************************** "); printf("\n\t******************************************************************"); FILE *temp,*t1; int a=1; char name[50],c='y'; if (j==1) { while(c=='y'||c=='Y') { int a=1; printf("\n\nenter name of student to delete: "); fflush(stdin); scanf("%[^\n]",name); fs=fopen("student","rb"); temp=fopen("tempfile","wb");//opening of temporary file for deleting process while (fread(&stud,sizeof(stud),1,fs)==1) { if (strcmp(stud.n,name)==0) { a=0; continue; } else { fwrite(&stud,sizeof(stud),1,temp); } } if (a==1) printf("\n\nRECORD NOT FOUND"); else printf("\n\nRECORD SUCCESSFULLY DELETED"); printf("\n\n"); system("pause"); fflush(stdin); fclose(fs); fclose(temp); system("del student");/*all data except the data to be deleted in student were 1st moved to temp and data in student was deleted*/ system("ren tempfile, student");//renaming temp to student printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } if (j==2) { a=1; char namet[50]; while(c=='y'||c=='Y') { printf("\n\nEnter name of teacher to delete record: "); fflush(stdin); scanf("%[^\n]",namet); ft=fopen("teacher","rb"); t1=fopen("tempfile1","wb"); while (fread(&tech,sizeof(tech),1,ft)==1) { if (strcmp(tech.n,namet)==0) { a=0; continue; } else { fwrite(&tech,sizeof(tech),1,t1); } } if (a==1) printf("\n\nRECORD NOT FOUND"); else printf("\n\nRECORD SUCCESSFULLY DELETED"); printf("\n\n"); system("pause"); fflush(stdin); fclose(ft); fclose(t1); system("del teacher"); system("ren tempfile1, teacher"); printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } } void salary(int mm) { system("cls"); printf("\n\t******************************************************************"); printf("\n\t *************************** "); printf("\n\t********************* SALARY *******************"); printf("\n\t *************************** "); printf("\n\t******************************************************************"); FILE *f,*t; int a=1,day; char name[50],c='y'; int month,dif,id; while(c=='y'||c=='Y') { int a=1; fflush(stdin); printf("\n\nEnter name:: "); scanf("%[^\n]",name); printf("\n\nEnter ID:: "); scanf("%d",&id); f=fopen("teacher","rb+"); t=fopen("te","wb+"); while(fread(&tech,sizeof(tech),1,f)==1)//file opened { if(strcmp(tech.n,name)==0 )//name entered is compared to the existing name in file { float lsal; a=0; printf("\n\nEnter the month till which salary is to be paid:: "); fflush(stdin); scanf("%d",&month); month=chkdat(month,day); tech.adv=(month-mm-1)*tech.sal; if (tech.adv<0) tech.adv=0; lsal=mm-tech.dt.m;//months of salary left to be paid if(lsal<0) lsal=0; tech.tot=tech.adv+tech.sal*(1+lsal); if(month==tech.dt.m) tech.tot=0; printf("\nmonthy salary left to be paid:: %.2f",lsal); printf("\ntotal :: %.2f",tech.tot); printf("\nadvance :: %.2f",tech.adv); tech.dt.m=month; fwrite(&tech,sizeof(tech),1,t); fclose(f); fclose(t); if (a==1) printf("\n\nRECORD NOT FOUND"); printf("\n\n"); system("pause"); fflush(stdin); system("del teacher"); system("ren te, teacher"); } } printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } void fee(int mm) { system("cls"); printf("\n\t******************************************************************"); printf("\n\t *************************** "); printf("\n\t********************* FEE *******************"); printf("\n\t *************************** "); printf("\n\t******************************************************************"); FILE *f,*t; int a=0; char name[50],c='y'; int clas, roll,month,dif; while(c=='y'||c=='Y') { int a=1,day=0; fflush(stdin); printf("\n\nEnter name:: "); scanf("%[^\n]",name); printf("\n\nEnter class:: "); fflush(stdin); clas=clscanf(); printf("\n\nEnter roll:: "); fflush(stdin); scanf("%d",&roll); f=fopen("student","rb+"); t=fopen("te","wb"); while(fread(&stud,sizeof(stud),1,f)==1) { if(strcmp(stud.n,name)==0 && clas==stud.c && roll==stud.r) { a=0; printf("\n\nEnter the month till which fee to be paid:: "); fflush(stdin); scanf("%d",&month); month=chkdat(month,day); dif=mm-stud.dt.m; stud.fine=(dif*stud.f)*0.01; stud.due=(dif)*stud.f; if (stud.fine<0) stud.fine=0; if (stud.due<0) stud.due=0; if (stud.tot<0) stud.tot=0; stud.tot=stud.fine+stud.due+stud.adv; printf("\nfine :: %.2f",stud.fine); printf("\ndue :: %.2f",stud.due); printf("\ntotal :: %.2f",stud.tot); printf("\nadvance :: %.2f",stud.adv); stud.dt.m=month; stud.tot=0; stud.fine=0; stud.due=0; fwrite(&stud,sizeof(stud),1,t); } } if (a==1) printf("\n\nRECORD NOT FOUND"); printf("\n\n"); system("pause"); fflush(stdin); fclose(f); fclose(t); system("del student"); system("ren te, student"); printf("\n\nDo you want to continue with the process(press y or Y"); fflush(stdin); c=getch(); } getch(); } void ext() { int i; system("color 0c"); printf("\n\n\t\t Thank you for using C Program School Billing System Project\n\n"); system("pause"); system("cls"); printf("\n\n\t\t\t Exiting\n\n"); for(i=1; i<=80; i++) { Sleep(50); printf("*"); } exit(0); } int chkdat(int mnt,int dnt) { int mon,day; if (mnt>12 || mnt<1 || dnt<1 || dnt>32) { MessageBox(0,"Invalid Date!\nEnter Again","Error!",0); fflush(stdin); scanf("%d%d",&mon,&day); mon=chkdat(mon,day); } else return (mnt); } int clscanf() { int mnt,mon; fflush(stdin); scanf("%d",&mnt); if (mnt>12 ||mnt<1) { MessageBox(0,"Invalid Class!\nEnter Class","Error!!",0); fflush(stdin); mon=clscanf(); } else return mnt; } |
Article Contributed By :
|
|
|
|
3298 Views |