السلام عليكــم ورحمـة الله وبركاتــه ،،
أتمنى من العزيز الجبار أن تكونوا بألف خير
أما بعد..
قصدتكم في مساعدة وأتمنى أن أجد لديكم الحل ..مطلوب منا في الجامعة عمل برنامج شرائي لشركة بترول لديها عدد من الزبائن وهم عبارة عن شركات , ومجموعة من المواد البترولية ..
قمت بعمل البرنامج حسب المطلوب الا انه تواجهني مشكلة في فرعين شبيهين من البرنامج.
المهم حينما يفتح البرنامج تظهر قائمة لها عدة أقسام.
A, B, C, D,E,
A تعبئة طلب شراء مادة بترولية . يسأل المستخدم عن رقم الزبون , يفحص اذا ما كان موجود في سجلات الزبائن ثم يكمل بالسؤال عن رقم المادة ويتأكد أيضا من وجودة في سجل المواد ثم يسأل عن الكمية المطلوبة ويأتي بسعر الليتر من سجلات المواد أيضا ويحسب لنا ناتج الكمية المطلوبة من المادة مع اضافة الضريبة والحسم حسب الشروط الموضوعة للتخفيض.
في B تظهر لائحة الزبائن .لائحة الزبائن معمولة أيضا من ملف cpp الى ملف txt.
C لائحة المواد بنفس طريقة B
المشكلة هنا في D و E
اذا عرفت الحل لـ D يسهل علي حل الآخر.
خيار D هو عبارة عن اضافة زبون جديد من البرنامج. سأضع الكود وأشرح المشكلة بالضبط ..
void skapakund ()
{
char namn[30]=" ", adress[40]=" ";//deklaration av strängvariablar kundnamn och adress
int kundnr;//deklaration av integer kund nummer
cout<<"Ange Kundnamn: ";
cin.getline(namn,29);
cin.get();
cout<<endl<<"Ange adress: ";
cin.getline(adress,39);
cin.get();
cout<<endl<<" Kundnummer: ";
cin>>kundnr;
cin.get();
ofstream utfil ("kundregister.txt",ios::app);
utfil<<namn<<endl<<adress<<endl<<kundnr<<endl;
utfil.close();
cin.clear();
cin.get();
}
كما هو ظاهر في الكود .. يطلب الاسم ثم العنوان ورقم العضوية .. كما أعرف انه يكفي وضع cin.getline(namn,29);
بعدما يظهر السؤال عن الاسم الا انه لا يظهر لي مكان لكتابة الاسم الا حينما أكتب cin.get();
المهم قمت بهذا كي يتوقف البرنامج وينتظرني حتى املأ الاسم ثم نفس الحالة مع العنوان.. حينما أصل الى رقم العضوية بالرغم من اني وضعت cin.get();
لا ينتظر البرنامج لكي أملا الرقم انما تطهر مباشرة الى جانبه القائمة الرئيسية للبرنامج وتكرر أكثر من مرة والى جانب اختيار حرف من القائمة رسالة خيار خاطئ .. على عدد المرات التي تكررت فيه القائمة ما عدا المرة الأخيرة يفسح لي المجال لاختيار خيار جديد ..
كثرت الكلام ولا أعرف ان كنت قد أوصلت الفكرة لكم .. جربت حسب نصيحة الدكتور استخدام cin.clear أو ignore
الا أن النتيجة كانت هي ذاتها..
أتمنى مساعدتكم واذا احتجتم لأ تفسير وتفاصيل أخرى موجودة ان شاء الله
تحياتي لكم
أختكم في الله
غربة


