** برنامج عام ** ( تجديد سجلات العملاء )

** برنامج عام ** ( تجديد سجلات العملاء )
- اعـد نظاماً بسيطاً لإعداد فواتير عملاء فى هذا النظام من خلال تخزين سجلات العملاء داخل منظومة من الهياكل، ويخزن كل سجل كهيكل منفرد ( اى كعنصر منظومة ) محتوياً على اسم العميل ، واسم الشارع الذى يسكن فيه ، واسم المدينة ، ورقم الحساب ، وحالة الحساب ( جارٍ أو متاخر السداد overdue ، أو مماطل delinquent ) ، والموازنة السابقة ، والمبلغ المدفوع حالياً ، والموازنة الجديدة ، وتاريخ الدفع.
- الطريقة : هى إدخال سجل كل عميل ، وتجديده بمجرد إدخاله ليعكس المبالغ المدفوعة حاليا وبعد ذلك تعرض كل السجلات المجددة مع الحالة الحالية لكل حساب والتى تعتمد على قيمة المبلغ المدفوع بالنسبة للموازنة السابقة للعميل.
* توضيح :-
1- إذا كان المبلغ المدفوع حالياً أكبر من صفر لكنه أقل من 10% من الموازنة القائمة السابقة ، حيث يكون الحساب متأخر السداد overdue
2- إذا كانت هناك موزانة قائمة ، وكان المبلغ المدفوع حالياً صفراً ، فإن الحساب يكون مماطلاً delinquent وإلا كان الحساب جارياً
* ويكون البرنامج كما يلى :-
1- حدد عدد حسابات العملاء ( أى عدد الهياكل ) المراد تشغيلها .
2- لكل حساب 000 تقرأ العناصر التالية :-
1- name 2-street 3- city
4- account number 5- previous balance 6- current balance
7- payment date
3- مع قراءة سجل كل عميل ، يتم تجديده طبقاً لما ياتى :-
- يقارن المبلغ المدفوع حالياً مع الموزانة السابقة، وذلك لتحديد الحالة المناسبة للحساب
- تحسب موزانة الحساب الجديد بطرح المبلغ المدفوع حالياً من الموزانة السابقة
4- بعد ادخال كل سجلات العملاء وتشغيلها ، نكتب المعلومات التالية كمخرجات لكل عميل:
1- name 2- account number 3- street
4- city 5- old balance 6- current balance
7- new balance 8- account status
* فيما يلى محتويات البرنامج :-
كود:
كود:
#include<stdio.h> struct date { int month; int day; int year; }; struct account { char name[50]; char street[45]; char city[60]; int acc_no; int acct_type; /* c = current , o = overdue , d = delinquent */ float oldbalance; float newbalance; float paymeny; struct date lastpayment; }
كود:
كود:
main( ) { int i ,n ; void readinput(int i ); void writeoutput(int i (; printf(“customer billing system \n\n”); printf(“how many customer are there ? “ ); scanf(“%d”,&n); for(i=0,i<n,i++) { readinput(i); if(customer[i].payment > 0 ) customer[i].acct_type = (customer[i].oldbalance < 0.1*customer[i].oldbalabce) ? ‘o’ | ‘c’; else customer[i].acct_type = (customer[i].oldbalance > 0 ) ? ‘d’ | ‘c’ ; }; for (i = 0 ; i < n ; i ++) writeoutput(i); } void readinput(int i ) { print(“\n customer no. %d\n”, i+1); printf(“ name : “ ); sccanf(“ %[ ] “,customer[ i ].name); printf(“ street : “ ) ; scanf(“% [ ] “,customer[ i ] .street); printf(“ city : “ ); scanf(“ %[ ] “,customer[ i ] .city ); printf(“ account number : “ ); scanf(%d “ , &customer[ i ] . oldbalance); printf( current payment : “); scanf(“%f”, &customer[ i ] .payment); printf(“ payment date (mm/dd/yyyy) : “); scanf(“%d / %d / %d “, &customer[ i ] .lastpayment.month, &customer[ i ] .lastpayment.day &customer[ i ] .lastpayment.year return; } void writeoutput(int i) { printf(“ name : %s”, customer[i].name); printf(“ account number : %d\n”, customer[i].acct_no); printf(“street : %s\n , customer[i].street); printf(“city : %s\n\n” , customer[i].city); printf(“old balance “ %7.2f”, customer[i].oldbalance); printf(“ current payment : %7.2f” , customer[i].payment); printf(“ new balance : %7.2f\n\ “,customer[i].newblance); printf(“ account status : “); switch ( customer[i].acct_type) { case ‘c’ printf(“ current\n\n”); break; case ‘o’ printf(“ overdue\n\n”); break; case ‘d’ printf(“ delinqunt\n\n”); break; default; printf(“ error \n\n”) } return; }