اذهب إلى المحتوى
  • 0

مشكلة الميثود creatOrder لاتجمع قيمة الفاتورة شكل صحيح

RAA

السؤال

انشئت ميثود create order ومن المفترض بعد ما بيختار العميل الطلبات بتترسل معلومات العميل المدخلة والطلبات المختارة الى هذه الميثود وحساب السعر الاجمالي 

ولكن المشكلة انو بتطبع الطلب الاخير اللي اختارو العميل ما بتطبع كل الطلبات وايضا ما بتحسب السعر الاجمالي ايش الحل؟

بتاريخ 12 ساعات قال RAA:

انشئت ميثود create order ومن المفترض بعد ما بيختار العميل الطلبات بتترسل معلومات العميل المدخلة والطلبات المختارة الى هذه الميثود وحساب السعر الاجمالي 

ولكن المشكلة انو بتطبع الطلب الاخير اللي اختارو العميل ما بتطبع كل الطلبات وايضا ما بتحسب السعر الاجمالي ايش الحل؟

//main class 
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
 
public class SuperMarket {
    
    public static void main(String[] args) throws IOException 
    {
        
          Scanner input = new Scanner (System.in);    
       //Customer class part
        
        Scanner readIn = new Scanner (System.in);
        
        ArrayList<Customer> customers = new ArrayList<>();
        Customer cr= new Customer();
        Invoices text=new Invoices();
        Product p =new Product();   
       
        int choice = 0;
        
        do {
            System.out.println("\n----------------------------");
            System.out.println("1- Enter (1) to add new Customer");
            System.out.println("2- Enter (2) to add products");
            System.out.println("3- Enter (3) to see the Invoice");
            System.out.println("4- Enter (4) to exit");
            System.out.println(">>>> Enter your choice :");
            
            String name = null;
                int number = 0;
                String email = null;
            
            
            choice=readIn.nextInt();
            if (choice==1){
                
                readIn.nextLine();
                System.out.println("Enter Customer name : ");
                 name = readIn.nextLine();
                System.out.println("Enter Customer number : ");
                number = readIn.nextInt();
                readIn.nextLine();
                System.out.println("Enter Customer email : ");
                email = readIn.nextLine();
                cr = new Customer(name,number,email);
                
                cr.WritingInFile();
            } 
       
      //Product and invoice class part
       if (choice==2){
      
      ArrayList<Product> list = new ArrayList<>();
      Product p1 = new Product("Apple","Fruits and Vegetables section",340,15.5);
      Product p2 = new Product("Saudi coffee","Roaster section",451,35.25);
      Product p3 = new Product("Chocolate","Sweets section",562,40);
      Product p4 = new Product("Spanish Nuts Pie","Bakery section",673,70);
      Product p5 = new Product("Rasberry jam","Canned section",784,28);
      Product p6 = new Product("carrot","Fruits and Vegetables section",341,20);
      Product p7 = new Product("Nuts","Roaster section",452,25);
      Product p8 = new Product("Candies","Sweets section",563,45);
      Product p9 = new Product("French bakery","Bakery section",674,60);
      Product p10 = new Product("Mushrooms","Canned section",785,35);
      Product p11 = new Product("watermelon","Fruits and Vegetables section",342,10);
      Product p12 = new Product("Roasted coffee","Roaster section",453,80);
      Product p13 = new Product("Biscuit","Sweets section",564,30);
      Product p14 = new Product("Corn bread","Bakery section",675,39);
      Product p15 = new Product("White honey","Canned section",786,58.75);
      
      System.out.println();
      list.add(p1);
      list.add(p2);
      list.add(p3);
      list.add(p4);
      list.add(p5);
      list.add(p6);
      list.add(p7);
      list.add(p8);
      list.add(p9);
      list.add(p10);
      list.add(p11);
      list.add(p12);
      list.add(p13);
      list.add(p14);
      list.add(p15);
       
       int select = 0;
      
        
        do{
            System.out.println("To display the list of all products, please select the number -1-");
            System.out.println("To search for a product and its availability, please choose the number -2-");
            System.out.println("To select specific products, please choose the number -3-");
            System.out.println("To complete the order and purchase please choose the number -4-");
            System.out.println("To exit please choose the number -5-");
            System.out.println(">>>>> Enter your choice:");
            select = input.nextInt();
            switch(select){
                case 1:
                    System.out.println("-----Products List-----\n"+list.toString());
                    break;
                case 2:               System.out.println("Dear customer, enter the name of the product you want to search for, and upon completion, enter the word Done");

        String ProductName = input.next();

        while (!"Done".equals(ProductName)) {
            String pe = Product.Search(list, ProductName);

            

            System.out.println("Dear customer, enter the name of the product you want to search for, and upon completion, enter the word done");
            ProductName = input.next();

        }
                  break;
                case 3:
                    System.out.println("Dear customer, enter the ID of the product you want to choose, and when finished, enter the number 0");

        int ProductID = input.nextInt();

        while (ProductID != 0) {
            p = Product.SelectProducts(list, ProductID);

            

            System.out.println("Dear customer, enter the ID of the product you want to choose, and when finished, enter the number 0");
            ProductID = input.nextInt();

        }
                  break;
                case 4:
                 //Product p = new Product();
                 Invoices bill = new Invoices(cr,p);
                 System.out.print(bill);
                    break;
               
                    
       


            }
        
            System.out.println("\n----------------------------");
        
        }while (select!=5);
        
       }
       if (choice==3){
                
          Invoices bill = new Invoices(cr,p);
                 System.out.print(bill);
                    
          
        }
        
        }while(choice!=4);
    System.out.println("\nThank you for shopping from the \"one click\" supermarket");
    }
}


//product class
import java.util.ArrayList;



public class Product 
{
   
   private  String productsName;
   private  String productsType;
   private  int productsID;
   private  double productsPrice;
   private Object list;

    
    
    public Product()
    {
        
        productsName= null;
        productsType= null;
        productsID = 0;
        productsPrice = 0.0;
    }
    
    public Product(String productsName,String productsType,int productsID,double productsPrice)
    {
        
        this.productsName = productsName;
        this.productsType = productsType;
        this.productsID = productsID;
        this.productsPrice = productsPrice;
    }

    Product(Product product0) {
        
    }
    
    public void setproductsName(String productsName)
    {
        this.productsName = productsName;
    }
    
   public void setproductsType(String productsType)
    {
        this.productsType = productsType;
    }
   
    
   public void setproductsID(int productsID)
    {
        this.productsID = productsID;
    } 
   
  public void setproductsPrice(int productsPrice)
    {
        this.productsPrice = productsPrice;
    } 

  public String getproductsName()
  {
      return this.productsName;
  }
  
   public String getproductsType()
    {
        return this.productsType;
    }
  
public int getproductsID()
  {
      return this.productsID;
  }

public double getproductsPrice()
  {
      return this.productsPrice;
  }


public String toString()

{
  String str = "\nProducts name : " + productsName + 
          "\nProducts type: " + productsType + 
          "\nProducts ID: " + productsID  +
                  "\n Products price: "+productsPrice+"SR";
   return str;
}
public static String Search(ArrayList<Product> list,String productsName)
{
  for(int i =0; i<list.size();i++) 
  {
    String currentProductName = list.get(i).getproductsName();  
    
    if(productsName.equals(currentProductName))
    {
      System.out.println("This product is available");
      System.out.println("informations related to this product:\n" + list.get(i));
                return currentProductName;
                   
    }
  }
  
   System.out.println("Sorry,this product is not available"); 
   return null;
}
 
public static Product SelectProducts(ArrayList<Product> list, int productsID) {

        for (int i = 0; i < list.size(); i++) {

            Product currentProduct = list.get(i);
            int currentProductID = currentProduct.getproductsID();
            if (productsID == currentProductID) {
                System.out.println("informations related to this product ID:\n" + list.get(i));
                return currentProduct;
            }
        }
        System.out.println("Sorry but this product ID is wrong");
        return null;

    }


}

//customer class
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Customer {
    String name;
    int number;
    String email;
  
    private String nameOfCustomer;
    private int phoneNumber;
    private String emailCustomer;

    public Customer() {
        this.nameOfCustomer="";
        this.phoneNumber=0;
        this.emailCustomer="";
        
    }

    public Customer(String nameOfCustomer, int phoneNumber, String emailCustomer) {
        this.nameOfCustomer = nameOfCustomer;
        this.phoneNumber = phoneNumber;
        this.emailCustomer = emailCustomer;
    }

    Customer(Customer customer0) {
       
    }

    public String getNameOfCustomer() {
        return nameOfCustomer;
    }

    public int getPhoneNumber() {
        return phoneNumber;
    }

    public String getEmailCustomer() {
        return emailCustomer;
    }

    public void setNameOfCustomer(String nameOfCustomer) {
        this.nameOfCustomer = nameOfCustomer;
    }

    public void setPhoneNumber(int phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public void setEmailCustomer(String emailCustomer) {
        this.emailCustomer = emailCustomer;
    }
    
    public String toString(){
        String data;
        data="Customer name : "+this.nameOfCustomer+"\nCustomer phone number : "+this.phoneNumber+
                "\nCustomer email : "+this.emailCustomer;
        return data;
    }
    public void WritingInFile() throws IOException{
        FileWriter myFile= new FileWriter("Customer information.txt",true);
        PrintWriter write= new PrintWriter(myFile);
        
        write.print(this.nameOfCustomer+"\t");
        write.print(this.phoneNumber+"\t");
        write.print(this.emailCustomer+"\t");
        
        write.close(); 
    }
    
    public void displayInformation() throws FileNotFoundException{
        
        System.out.println("Customer name\t phone number\t Customer email");
        File file = new File("Customer information.txt");
        Scanner readIn = new Scanner(file);
        
        while(readIn.hasNext()){
            String line =readIn.nextLine();
            System.out.println(line);
        }
        readIn.close();
    }
}

//invoices class
import java.util.ArrayList;


public class Invoices {


    private static int ArrayList;
   private double total=0;
     Customer customer;
     Product product;
    //Product product;
    //Customer Customer1;
    
    public Invoices (Product product0,int total0,Customer customer0){
    
    this.product = new Product(product0);
    this.total=total;
    this.customer= new Customer(customer0);
    }
    public Invoices(){
        
        this.product=null;
        this.total=0;
        this.customer=null;
    }
    
    public Invoices(Customer c,Product p ){
        customer = c;
        product = p;
    }

   

    public Product getProduct() {
        return new Product (product);
    }

    public void setProduct(Product product) {
        this.product = new Product (product);
    }
    public double gettotal()
    {
        return  total;
    }
    
    public void settotal(int total) {
        this.total = total;
    }
    
    
    public Customer getCustomer() {
        return new Customer (customer);
    }

    public void setCustomer(Customer customer) {
        this.customer = new Customer (customer);
    }
    
    public String toString(){
        String text="Invoices information :\n"
                    +"Customer information :"+ customer
                    +"\nThe products :\n"+  product 
                    +"\nThe total price :" + total ;
        return text;
       
        
    }

   public void creatOrder(ArrayList<Product> list1, ArrayList<Product> list2) {
  
  
  for (int i = 0; i < list1.size(); i++) {

    int currentProductID1 = list1.get(i).getproductsID();

    for (int j = 0; j < list2.size(); j++) {


      int currentProductID2 = list2.get(j).getproductsID();

      if (currentProductID1 == currentProductID2) 
      {
        total +=list2.get(i).getproductsPrice();
//list1.get(i).getproductsPrice();
        break ;
      }
    }

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

سبب الخطأ هو الوصول للقائمة الثانية عن طريقة الدليل i وليس j

 total +=list2.get(i).getproductsPrice();
             ^^^^^^^^
               
total +=list2.get(j).getproductsPrice();

الآن سيعمل جميع قيمة المنتجات بشكل صحيح. 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعات قال Wael Aljamal:

سبب الخطأ هو الوصول للقائمة الثانية عن طريقة الدليل i وليس j


 total +=list2.get(i).getproductsPrice();
             ^^^^^^^^
               
total +=list2.get(j).getproductsPrice();

الآن سيعمل جميع قيمة المنتجات بشكل صحيح. 

وطيب ومشكلة عدم طباعة المنتجات كاملة اللي اختارها العميل؟ فقط بيطبع المنتج الاخير اللي اختارو العميل

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 25 دقائق مضت قال RAA:

وطيب ومشكلة عدم طباعة المنتجات كاملة اللي اختارها العميل؟ فقط بيطبع المنتج الاخير اللي اختارو العميل

عليك شرح المشكلة بالتفصيل، مثلاً تقولين أن دالة displayInformation تطبع بيانات مستخدم واحد. وأكتب البيانات في الدالة WritingInFile.

تمام، حاولت تمرير true كمعامل ثاني لدالة FileWriter ليعمل append.

لكن تستعملين print writer من دون append

FileWriter myFile= new FileWriter("Customer information.txt",true);


PrintWriter write= new PrintWriter(myFile,true);
                                       ^^^^^^^^^^

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

من المفترض  انو لما ينتهي العميل من ادخال البيانات حقتو واختيار الطلبات تترسل المعلومات لل createOrder ولما بستدعيها حتتطبع معلومات العميل والمنتجات المختارة والسعر الاجمالي للمنتجات 

بيطبع معلومات العميل ولكن المشكلة انو ما بيطبع جميع المنتجات اللي اختارها العميل ولا بيحسب مجموع السعر الكلي للمنتجات المختارة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال RAA:

من المفترض  انو لما ينتهي العميل من ادخال البيانات حقتو واختيار الطلبات تترسل المعلومات لل createOrder ولما بستدعيها حتتطبع معلومات العميل والمنتجات المختارة والسعر الاجمالي للمنتجات 

بيطبع معلومات العميل ولكن المشكلة انو ما بيطبع جميع المنتجات اللي اختارها العميل ولا بيحسب مجموع السعر الكلي للمنتجات المختارة

هل نجحت إضافة البيانات؟

الملف نصي يمكنك فتحه لرؤية ما يحوي من بيانات و تتبع الإضافة فيه

الملف الذي تحفظين به البيانات اسمه Customer information.txt يتوجب أن تجديه ضمن ملفات المشروع.

  • لا أرى استدعاء للدالة creatOrder
  • ربما تستخدمين متغير من نوع Product وتخزنين به جميع ما يدخله الزبون لذلك لا يحفظ جميع المنتجات تأكدي من ذلك (عليك تعريف قائمة تضيفين إليها كل منتج يقوم الزبون باختياره)
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Wael Aljamal:

هل نجحت إضافة البيانات؟

الملف نصي يمكنك فتحه لرؤية ما يحوي من بيانات و تتبع الإضافة فيه

الملف الذي تحفظين به البيانات اسمه Customer information.txt يتوجب أن تجديه ضمن ملفات المشروع.

  • لا أرى استدعاء للدالة creatOrder
  • ربما تستخدمين متغير من نوع Product وتخزنين به جميع ما يدخله الزبون لذلك لا يحفظ جميع المنتجات تأكدي من ذلك (عليك تعريف قائمة تضيفين إليها كل منتج يقوم الزبون باختياره)

بالنسبة للملف تبع customers ايوا موجود وبيشتغل معايا وبشوف بيانات العميل

بالنسبة لاستدعاء الدالة CreateOrder هيا case 4 في main class

 

بتاريخ 9 دقائق مضت قال Wael Aljamal:

هل نجحت إضافة البيانات؟

الملف نصي يمكنك فتحه لرؤية ما يحوي من بيانات و تتبع الإضافة فيه

الملف الذي تحفظين به البيانات اسمه Customer information.txt يتوجب أن تجديه ضمن ملفات المشروع.

  • لا أرى استدعاء للدالة creatOrder
  • ربما تستخدمين متغير من نوع Product وتخزنين به جميع ما يدخله الزبون لذلك لا يحفظ جميع المنتجات تأكدي من ذلك (عليك تعريف قائمة تضيفين إليها كل منتج يقوم الزبون باختياره)

 

بتاريخ 9 دقائق مضت قال Wael Aljamal:

هل نجحت إضافة البيانات؟

الملف نصي يمكنك فتحه لرؤية ما يحوي من بيانات و تتبع الإضافة فيه

الملف الذي تحفظين به البيانات اسمه Customer information.txt يتوجب أن تجديه ضمن ملفات المشروع.

  • لا أرى استدعاء للدالة creatOrder
  • ربما تستخدمين متغير من نوع Product وتخزنين به جميع ما يدخله الزبون لذلك لا يحفظ جميع المنتجات تأكدي من ذلك (عليك تعريف قائمة تضيفين إليها كل منتج يقوم الزبون باختياره)

بالنسبة للنقطة الاخيرة

اعملها كذا 

Arraylist<Product>list2?

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 11 دقائق مضت قال RAA:

Arraylist<Product>list2?

عليك تجميع المنتجات التي يختارهم العميل في قائمة بهذا النمط نعم

case 4:
                 //Product p = new Product();
                 Invoices bill = new Invoices(cr,p);
                 System.out.print(bill);
                    break;

لم أجد شيء

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Wael Aljamal:

عليك تجميع المنتجات التي يختارهم العميل في قائمة بهذا النمط نعم


case 4:
                 //Product p = new Product();
                 Invoices bill = new Invoices(cr,p);
                 System.out.print(bill);
                    break;

لم أجد شيء

كيف استدعيها طيب؟

بتاريخ الآن قال RAA:

كيف استدعيها طيب؟

وبالنسبة للقائمة فين حتكون في كلاس البرودكت او في الميثود الخاصة CreateOrder?

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال RAA:

كيف استدعيها طيب؟

وبالنسبة للقائمة فين حتكون في كلاس البرودكت او في الميثود الخاصة CreateOrder?

تجميع المنتجات التي يختارها الزبون ضمن حلقة while مثلاً.

CreateOrder لديك تقوم بجمع فاتورة فقط، ولكن اسمها شيء آخر لا أفهم الارتباط بينهم..

ملاحظة:

في حال لديك مصفوفة بمنتجات يمكن حساب كلفتهم بالمرور على القائمة مباشرة 

public int calculateTotal(ArrayList<Product> choosedList) {
      ^^^^  ^^^^^^^^^^^^^^                    ^^^^^^^^^ 
	int total = 0;
    for (int i = 0; i < choosedList.size(); i++) {
    total += choosedList.get(i).getproductsPrice();
  }
  return total;
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...