Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  Billing
Language: C/C++
Code:
 #include<stdio.h>
 #include<conio.h>
 #include<stdlib.h>

 void input();
 void writefile();
 void search();
 void output();

 struct date{
        int month;
        int day;
        int year;
        };

  struct account {
     int number;
     char name[100];
     int acct_no;
     float mobile_no;
     char street[100];
     char city[100];
     char acct_type;
     float oldbalance;
     float newbalance;
     float payment;
     struct date lastpayment;
  }customer;
  int tl,sl,ts;
 void main()
     {
       int i,n;
       char ch;
       clrscr();

       _setcursortype(_NOCURSOR);
       printf("   CUSTOMER BILLING SYSTEM:\n\n");
       printf("===============================\n");
       printf("\n1:    to add account on list\n");
       printf("2:    to search customer account\n");
       printf("3:    exit\n");
       printf("\n================================\n");
       do{
            printf("\nselect what do you want to do?");
            ch=getche();
       }while(ch<='0' || ch>'3');
       switch(ch){
          case '1':
               clrscr();
               printf("\nhow many customer accounts?");
               scanf("%d",&n);
               for(i=0;i<n;i++){
                    input();
                    if(customer.payment>0)
                         customer.acct_type=(customer.payment<0.1*customer.oldbalance)? 'O': 'D';
                    else
                         customer.acct_type=(customer.oldbalance>0)?'D' : 'C';
                    customer.newbalance=customer.oldbalance - customer.payment;
                    writefile();
               }
               main();
          case '2':
               clrscr();
               printf("search by what?\n");
               printf("\n1 --- search by customer number\n");
               printf("2 --- search by customer name\n");
               search();
               ch=getche();
               main();
          case '3':
               clrscr();
               delay(700);
               textcolor(RED);
               gotoxy(25,25);
               cprintf("\nA PROJECT BY BIDUR & SUJAN");
               delay(1500);
               exit(1);
       }
 }


   void input()
     {
       FILE *fp=fopen("bidur.dat","rb");
       fseek (fp,0,SEEK_END);
       tl=ftell(fp);
       sl=sizeof(customer);
       ts=tl/sl;
       fseek(fp,(ts-1)*sl,SEEK_SET);
       fread(&customer,sizeof(customer),1,fp);
       printf("\ncustomer no:%d\n",++customer.number);
       fclose(fp);
       printf("         Account number:");
       scanf("%d",&customer.acct_no);
       printf("\n       Name:");
       scanf("%s",customer.name);
       printf("\n       mobile no:");
       scanf("%f",&customer.mobile_no);
       printf("         Street:");
       scanf("%s",customer.street);
       printf("         City:");
       scanf("%s",customer.city);
       printf("         Previous balance:");
       scanf("%f",&customer.oldbalance);
       printf("         Current payment:");
       scanf("%f",&customer.payment);
       printf("         Payment date(mm/dd/yyyy):");
       scanf("%d/%d/%d",&customer.lastpayment.month,&customer.lastpayment.day,&customer.lastpayment.year);
       return;
   }

   void writefile()
   {
       FILE *fp;
       fp=fopen("bidur.dat","ab");
       fwrite(&customer,sizeof(customer),1,fp);
       fclose(fp);
       return;
   }

   void search()
   {
      char ch;
      char nam[100];
      int n,i,m=1;
      FILE *fp;
      fp=fopen("bidur.dat","rb");
      do{
          printf("\nenter your choice:");
          ch=getche();
      }while(ch!='1' && ch!='2');
      switch(ch){
           case '1':
              fseek(fp,0,SEEK_END);
              tl=ftell(fp);
              sl=sizeof(customer);
              ts=tl/sl;
              do{
               printf("\nchoose customer number:");
               scanf("%d",&n);
               if(n<=0 || n>ts)
               printf("\nenter correct\n");
               else{
                   fseek(fp,(n-1)*sl,SEEK_SET);
                   fread(&customer,sl,1,fp);
                   output();
               }
               printf("\n\nagain?(y/n)");
               ch=getche();
              }while(ch=='y');
              fclose(fp);
              break;
           case '2':
              fseek(fp,0,SEEK_END);
              tl=ftell(fp);
              sl=sizeof(customer);
              ts=tl/sl;
              fseek(fp,(ts-1)*sl,SEEK_SET);
              fread(&customer,sizeof(customer),1,fp);
              n=customer.number;

              do{
               printf("\nenter the name:");
               scanf("%s",nam);
               fseek(fp,0,SEEK_SET);
               for(i=1;i<=n;i++)
               {
                    fread(&customer,sizeof(customer),1,fp);
                    if(strcmp(customer.name,nam)==0)
                    {
                    output();
                    m=0;
                    break;
                    }
               }
               if(m!=0)
               printf("\n\ndoesn't exist\n");
               printf("\nanother?(y/n)");
               ch=getche();
              }while(ch=='y');
              fclose(fp);
           }
           return;
      }



   void output()
      {
        printf("\n\n    Customer no    :%d\n",customer.number);
        printf("    Name         :%s\n",customer.name);
        printf("    Mobile no      :%.f\n",customer.mobile_no);
        printf("    Account number :%d\n",customer.acct_no);
        printf("    Street         :%s\n",customer.street);
        printf("    City           :%s\n",customer.city);
        printf("    Old balance    :%.2f\n",customer.oldbalance);
        printf("    Current payment:%.2f\n",customer.payment);
        printf("    New balance    :%.2f\n",customer.newbalance);
        printf("    Payment date   :%d/%d/%d\n\n",customer.lastpayment.month,customer.lastpayment.day,customer.lastpayment.year);
        printf("    Account status :");
        textcolor(128+RED);
        switch(customer.acct_type)
           {
           case 'C':
           cprintf("CURRENT\n\n");
           break;
           case 'O':
           cprintf("OVERDUE\n\n");
           break;
           case 'D':
           cprintf("DELINQUENT\n\n");
           break;
           default:
           cprintf("ERROR\\n\n");
           }
           textcolor(WHITE);
           return;
        }














Comments: