Mini project Department Store System using C
This mini-project features department stores using the C Programming language. The project consists of the following features
- Calculate Bill
- Add Goods
- Edit Goods
- Display All
- Search using Code, Rate and Quantity
- Delete Goods
- Exit from program
This project is a learning milestone for a beginner who wants to step into programming in C with the help of projects. If you are looking for other mini-projects, follow the link below:-
Here is List of Mini projects in C
Source Code
#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include<windows.h> #define ANS 15 #define ACS 4 COORD coord={0,0}; // this is global variable //center of axis is set to the top left cornor of the screen void gotoxy(int x,int y) { coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } /*declaration of checking functions*/ void c_code(char[]); int check(char[]); /*structure declaration*/ typedef struct{ char name[ANS],code[ACS]; float rate; int quantity; }rec; rec item; /*declaration of display functions*/ void curser(int); void dbill(); void d_mainmenu(); void display(rec *,int,int); void window(int,int,int,int); void dis_con(); void d_search(); void highlight(int,int); /*declaration of main menu functions*/ void bill() ; void edit(); void add(); void del(); void exit(); /*declaration of display submenu functions*/ void d_code(); void d_rate(); void d_quan(); void d_all(); /*start of main*/ int main() { d_mainmenu(); return 0; } void d_mainmenu() { int i; char ch; const char *menu[]={" Calculate Bill"," Add Goods"," Edit Goods"," Display All "," Search", " Delete Goods"," Exit"}; system("cls"); //textbackground(11); //textcolor(0); //_setcursortype(_NOCURSOR); window(25,50,20,32); gotoxy(33,18);printf("MAIN MENU"); for (i=0;i<=6;i++){ gotoxy(30,22+i+1);printf("%s\n\n\n",menu[i]);} curser(7); } void d_search() { char ch; int i; const char *menu[]={" By Code"," By Rate"," By Quantity"," Back to main menu"}; system("cls"); //textbackground(11); //textcolor(0); window(25,50,20,32); gotoxy(33,18);printf("SEARCH MENU"); for (i=0;i<=3;i++){ gotoxy(30,22+i+1);printf("%s\n\n\n",menu[i]);} curser(4); } /*function for cursor movement*/ void curser(int no) { int count=1; char ch='0'; gotoxy(30,23); while(1){ switch(ch){ case 80: count++; if (count==no+1) count=1; break; case 72: count--; if(count==0) count=no; break; } highlight(no,count); ch=getch(); if(ch=='\r'){ if(no==7){ if (count==1) bill() ; else if(count==2) add(); else if(count==3) edit(); else if (count==4) d_all(); else if (count==5) d_search(); else if (count==6) del(); else exit(0); } if(no==4){ if (count==1) d_code(); else if (count==2)d_rate(); else if (count==3) d_quan(); else d_mainmenu(); } } } } void highlight(int no,int count) { if (no==4){ //textbackground(11); //textcolor(0); gotoxy(30,23);printf(" By Code "); gotoxy(30,24);printf(" By Rate "); gotoxy(30,25);printf(" By Quantity "); gotoxy(30,26);printf(" Back to main menu"); //textcolor(0); //textbackground(2); switch (count) { case 1: gotoxy(30,23); printf(" - By Code "); break; case 2: gotoxy(30,24); printf(" - By Rate "); break; case 3: gotoxy(30,25); printf(" - By Quantity "); break; case 4: gotoxy(30,26); printf(" - Back to main menu"); break; } } if(no==7){ //textbackground(11); //textcolor(0); gotoxy (30,23);printf(" Calculate Bill "); gotoxy (30,24);printf(" Add Goods "); gotoxy (30,25);printf(" Edit Goods "); gotoxy (30,26);printf(" Display All "); gotoxy (30,27);printf(" Search "); gotoxy (30,28);printf(" Delete Goods "); gotoxy (30,29);printf(" Exit "); //textcolor(0); //textbackground(2); switch(count){ case 1: gotoxy (30,23); printf(" - Calculate Bill "); break; case 2: gotoxy (30,24); printf(" - Add Goods "); break; case 3: gotoxy (30,25); printf(" - Edit Goods "); break; case 4: gotoxy (30,26); printf(" - Display All "); break; case 5: gotoxy (30,27); printf(" - Search "); break; case 6: gotoxy (30,28); printf(" - Delete Goods "); break; case 7: gotoxy (30,29); printf(" - Exit "); break; } } } void bill() { char x[4]={0}; int j=29,q=0,size=0,i=1; float total=0,gtotal=0; FILE *file; file=fopen("record.txt","r+b"); rewind(file); system("cls"); dbill(); gotoxy(26,15);printf("enter \"end\" to finish input"); while(1){ gotoxy(25,18);printf(" "); gotoxy(25,19);printf(" "); gotoxy(25,18);printf("enter item code:"); scanf("%s",x); if(strcmp(x,"end")==0) break; gotoxy(25,19);printf("enter quantity:"); scanf("%d",&q); rewind(file); while(fread(&item,sizeof(item),1,file)){ if((strcmp(item.code,x)==0)){ total=item.rate*q; gotoxy(11,j);printf("%4d",i); printf("%9s",item.name); printf("%13d",q); printf("%15.2f",item.rate); printf("%13.2f",total); gtotal=gtotal+total; size=sizeof(item); item.quantity=item.quantity-q; j+=2; i++; fseek(file,-size,SEEK_CUR);fwrite(&item,sizeof(item),1,file); break; } } } if(gtotal!=0){ gotoxy(30,j+5); printf("TOTAL AMOUNT = NRs. %6.2f",gtotal); } fclose(file); getch(); d_mainmenu(); } /*function to display bill window*/ void dbill() { int i; gotoxy(20,10); //; for (i=1;i<=10;i++) printf("*"); printf(" * FASHION WEAR * "); for (i=1;i<=10;i++) printf("*"); printf("\n\n"); gotoxy(30,11);printf("Departmental Store"); //textcolor(1); gotoxy(32,25);printf("CUSTOMER'S BILL") ; //textcolor(8); gotoxy(13,27);printf("SN. Item Name Quantity Rate Total"); } /*function to add records*/ void add () { FILE *file; char y[ACS],x[12]; system("cls"); //textbackground(11); //textcolor(0); gotoxy(25,25);printf("Enter new record(Y/N)?"); while(toupper(getche())=='Y'){ system("cls"); file=fopen("record.txt","ab"); c_code(y); strcpy(item.code,y); gotoxy(22,28);printf("Enter rate of the item:"); scanf("%f",&item.rate); gotoxy(22,30);printf("Enter quantity of the item:"); scanf("%d",&item.quantity); gotoxy(22,32);printf("Enter name of the item:"); scanf("%s",item.name); fseek(file,0,SEEK_END);fwrite(&item,sizeof(item),1,file); fclose(file); gotoxy(22,34);printf("Enter new record(Y/N)?"); } d_mainmenu(); } /*function to check availability of code*/ void c_code(char y[]) { int flag; FILE *file; file=fopen("record.txt","rb"); while(1){ system("cls"); window(20,58,23,36); gotoxy(32,18);printf(" ADD ARTICLES ") ; flag=1; rewind(file); gotoxy(22,25);printf("Enter new code of the article:"); scanf(" %[^\n]",y); while(fread(&item,sizeof(item),1,file)==1){ if (strcmp(y,item.code)==0){ flag=0; gotoxy(26,30);printf("code already exists"); gotoxy(29,32);printf("enter again");getch(); break; } } if (flag==1) break; } } /*function for editing*/ void edit() { int flag=0,choice; char x[ACS],y[ACS]; FILE *file; int size; system("cls"); //textcolor(0); //textbackground(11); window(20,63,20,46); gotoxy(35,18);printf("EDIT RECORDS"); ; gotoxy(25,23);printf("enter item code: "); scanf("%s",x); flag=check(x); if(flag==0){ file=fopen("record.txt","r+b"); rewind(file); while (fread(&item,sizeof (item),1,file)){ if(strcmp(item.code,x)==0){ //textcolor(0); gotoxy(25,27);printf("name = %s",item.name); gotoxy(25,28);printf("code = %s",item.code); gotoxy(25,29);printf("rate = %g",item.rate); gotoxy(25,30);printf("quantity = %d",item.quantity); gotoxy(25,32);; printf("do you want to edit this record(y/n):"); fflush(file); if(toupper(getche())=='Y'){ //textcolor(0); gotoxy(25,34); printf("1- edit name "); gotoxy(25,35); printf("2- edit code "); gotoxy(25,36); printf("3- edit rate "); gotoxy(25,37); printf("4- edit quantity "); gotoxy(25,39); ; printf(" enter your choice(1, 2, 3, 4) "); scanf("%d",&choice); switch(choice){ case 1: system("cls"); window(23,48,20,40); gotoxy(35,18);printf("EDIT RECORDS"); gotoxy(25,24); printf(" enter new name: "); scanf("%s",item.name); size=sizeof(item); fseek(file,-size,SEEK_CUR);fwrite(&item,sizeof(item),1,file); break; case 2: system("cls"); window(23,65,20,40); gotoxy(35,18);printf("EDIT RECORDS"); gotoxy(25,24); c_code(y); strcpy(item.code,y); size=sizeof(item); fseek(file,-size,SEEK_CUR);fwrite(&item,sizeof(item),1,file); break; case 3: system("cls"); window(23,65,20,40); gotoxy(35,18);printf("EDIT RECORDS"); gotoxy(25,24); printf(" enter new rate: "); scanf("%f",&item.rate); size=sizeof(item); fseek(file,-size,SEEK_CUR);fwrite(&item,sizeof(item),1,file); break; case 4: system("cls"); window(23,65,20,40); gotoxy(35,18);printf("EDIT RECORDS"); gotoxy(25,24); printf(" enter new quantity: "); scanf("%d",&item.quantity); size=sizeof(item); fseek(file,-size,1);fwrite(&item,sizeof(item),1,file); break; } gotoxy(27,30);printf("--- item edited---"); break; } } } } if (flag==1){ gotoxy(32,30);printf("item does not exist"); gotoxy(36,32);printf("TRY ABGAIN"); } getch(); fclose(file); d_mainmenu(); } /*function to display all records*/ void d_all() { int i,j=1; FILE *file; dis_con(); file=fopen("record.txt","rb"); rewind(file); i=26; fflush(file); while(fread(&item,sizeof(item),1,file)){ display(&item,i,j); i++; j++; if ((j%20)==0){ gotoxy(27,47);/*textcolor(0)*/;printf("press any key to see more..........."); getch(); system("cls"); dis_con(); i=26; continue; } } getch(); if (i==26) { gotoxy(24,30); printf("-- no articles found --"); } getch(); fclose(file); d_mainmenu(); } /*function to display by quantity*/ void d_quan() { int i,j=1; int a,b; FILE *file; dis_con(); file=fopen("record.txt","rb"); rewind(file); i=26; gotoxy(16,20);;printf("enter lower range: "); scanf("%d",&a); gotoxy(16,21);printf("enter upper range:"); scanf("%d",&b); fflush(file); while(fread(&item,sizeof(item),1,file)){ if((item.quantity>=a)&&(item.quantity<=b)){ display(&item,i,j); i++; j++; if ((j%20)==0){ gotoxy(27,47);printf("press any key to see more..........."); getch(); system("cls"); dis_con(); i=26; continue; } } } getch(); if (i==26){ gotoxy(28,30); printf(" no item found "); } getch(); d_search(); fclose(file); } /*function to display by rate*/ void d_rate(){ int i,j=1; float a,b; FILE *file; dis_con(); file=fopen("record.txt","rb"); rewind(file); i=26; gotoxy(16,20);;printf("enter lower range: "); scanf("%f",&a); gotoxy(16,21);printf("enter upper range: "); scanf("%f",&b); fflush(file); while(fread(&item,sizeof(item),1,file)){ if((item.rate>=a)&&(item.rate<=b)){ display(&item,i,j); i++; j++; if ((j%20)==0){ gotoxy(27,47);printf("press any key to see more..........."); getch(); system("cls"); dis_con(); i=26; continue; } } } getch(); if (i==26){ gotoxy(28,30); printf(" no item found "); } getch(); fclose(file); d_search(); } /*function to display by code*/ void d_code() { int i,j=1; char x[4]={0}; FILE *file; dis_con(); file=fopen("record.txt","rb"); rewind(file); i=26; gotoxy(16,20);;printf("enter item code: "); scanf("%s",x); fflush(file); while(fread(&item,sizeof(item),1,file)){ if((strcmp(item.code,x)==0)){ display(&item,i,j); i++; j++; break; } } if (i==26){ gotoxy(28,30); printf("no item found"); } getch(); fclose(file); d_search(); } /*function to display window for item display*/ void dis_con() { int i; system("cls"); gotoxy(20,10); ; for (i=1;i<=10;i++) printf("*"); printf(" * FASHION WEAR * "); for (i=1;i<=10;i++) printf("*"); printf("\n\n"); gotoxy(30,11);printf("Departmental Store"); //textcolor(1); gotoxy(32,17);printf("RECORDS") ; //textcolor(8); gotoxy(18,23);printf ("SN Item Name Item Code Rate Quantity"); } /*function to display in screen*/ void display(rec *item,int i,int j) { gotoxy(16,i);//textcolor(13); printf("%4d",j); printf("%9s",item->name); printf("%12s",item->code); printf("%14.2f",item->rate); printf("%11d",item->quantity); } /*function to delete records*/ void del() { int flag; char x[ANS]; FILE *file,*file1; system("cls"); //textbackground(11); //textcolor(0); window(23,51,25,34); gotoxy(29,18);printf("DELETE ARTICLES"); gotoxy(27,27);printf("enter item code: "); scanf("%s",x); flag=check(x); if(flag==0){ file1=fopen("record1.txt","ab"); file=fopen("record.txt","rb"); rewind(file); while (fread(&item,sizeof (item),1,file)){ if(strcmp(item.code,x)!=0) fwrite(&item,sizeof(item),1,file1); } gotoxy(27,29);printf("---item deleted---"); remove("record.txt"); rename("record1.txt","record.txt"); } if (flag==1){ gotoxy(25,29);printf("---item does not exist---"); gotoxy(30,31);printf("TRY AGAIN"); } fclose(file1); fclose(file); getch(); d_mainmenu(); } /*function to check validity of code while editing and deleting*/ int check(char x[ANS]) { FILE *file; int flag=1; file=fopen("record.txt","rb"); rewind(file); while (fread(&item,sizeof (item),1,file)){ if(strcmp(item.code,x)==0){ flag=0; break; } } fclose(file); return flag; } /*function to display box*/ void window(int a,int b,int c,int d) { int i; system("cls"); gotoxy(20,10); //textcolor(1); for (i=1;i<=10;i++) printf("*"); printf(" * FASHION WEAR * "); for (i=1;i<=10;i++) printf("*"); printf("\n\n"); gotoxy(30,11);printf("Departmental Store"); //textcolor(4); for (i=a;i<=b;i++){ gotoxy(i,17);printf("\xcd"); gotoxy(i,19);printf("\xcd"); gotoxy(i,c);printf("\xcd"); gotoxy(i,d);printf("\xcd"); } gotoxy(a,17);printf("\xc9"); gotoxy(a,18);printf("\xba"); gotoxy(a,19);printf("\xc8"); gotoxy(b,17);printf("\xbb"); gotoxy(b,18);printf("\xba"); gotoxy(b,19);printf("\xbc"); //textcolor(4); for(i=c;i<=d;i++){ gotoxy(a,i);printf("\xba"); gotoxy(b,i);printf("\xba"); } gotoxy(a,c);printf("\xc9"); gotoxy(a,d);printf("\xc8"); gotoxy(b,c);printf("\xbb"); gotoxy(b,d);printf("\xbc"); //textbackground(11); //textcolor(0); }
You can download the source code here.