2015-10-10 63 views
1

我需要優化一段我寫在C#代碼幫助。現在它非常馬虎。我需要編寫一個代碼,用於跟蹤醫院在當天的金額,具體取決於患者的數量。這裏有一些條件和細節:優化150行代碼的簡單的東西

  • 代碼以顯示病人的成本和資金在一天

enter image description here

  • 當無線電結束的款額圖像和協商在一個時間由同一患者進行,有25%的降價斷無線電圖像的價格。
  • 當病人做了諮詢,血液檢查和注射。該人在交稅後獲得10美元。
  • 的注射劑可以是30毫升,50毫升或60毫升。價格與注入產品的數量成正比。 (例如:20歲有人說需要50ml的拍攝需要支付$ 25)
  • 稅收是15%

========

下面是我的寫的代碼問題。

 int client; 
     int clientfinal = 0; 
     double injprix = 0; 
     double consprix = 0; 
     double imgradprix = 0; 
     double analyzeprix = 0; 
     double prixtot = 0; 
     double prixclient = 0; 
     double prixfinal = 0; 

     int injtaille = 0; 
     string cons, inj, imgrad, analyze; 
     Console.WriteLine("Combien a t-il de client aujourd'hui?"); 
     client = (Convert.ToInt32(Console.ReadLine())); 

     if (client > 0) 

       do //un client 
       { 
        Console.WriteLine("Quel est l'age du patient?"); 
        client = Convert.ToInt32(Console.ReadLine()); 
        if (client < 12) 
        { 
         client = 1; 
        } 
        if (client >= 12 || client <= 18) 
        { 
         client = 2; 
        } 
        if (client >= 19 || client <= 65) 
        { 
         client = 3; 
        } 
        if (client > 65) 
        { 
         client = 4; 
        } 

        Console.WriteLine("La personne a t-elle choisit une consultation?"); 
        cons = Convert.ToString(Console.ReadLine()).ToLower(); 
        Console.WriteLine("La personne a t-elle choisit une image radio?"); 
        imgrad = Convert.ToString(Console.ReadLine()).ToLower(); 
        Console.WriteLine("La personne a t-elle choisit une analyze de sang?"); 
        analyze = Convert.ToString(Console.ReadLine()).ToLower(); 
        Console.WriteLine("La personne a t-elle choisit une injection?"); 
        inj = Convert.ToString(Console.ReadLine()).ToLower(); 
        if (inj == "oui") 
        { 
         Console.WriteLine("Quel est la taille de l'injection? (30 - 50 - 60) "); 
         injtaille = Convert.ToInt32(Console.ReadLine()); 
        } 
        switch (client) 
        { 
         case 1: 
          consprix = 25; 
          imgradprix = 55; 
          analyzeprix = 28; 
          injprix = 0; 
          break; 
         case 2: 
          consprix = 32; 
          imgradprix = 65; 
          analyzeprix = 32; 
          switch (injtaille) 
          { 
           case 30: 
            injprix = 13; 
            break; 
           case 50: 
            injprix = (650/30); 
            break; 
           case 60: 
            injprix = (780/30); 
            break; 
           default: 
            Console.WriteLine("Taille d'injection inconnue."); 
            break; 
          } 
          break; 

         case 3: 
          consprix = 40; 
          imgradprix = 70; 
          analyzeprix = 40; 
          switch (injtaille) 
          { 
           case 30: 
            injprix = 13; 
            break; 
           case 50: 
            injprix = (750/30); 
            break; 
           case 60: 
            injprix = (900/30); 
            break; 
           default: 
            Console.WriteLine("Taille d'injection inconnue."); 
            break; 
          } 
          break; 

         case 4: 
          consprix = 30; 
          imgradprix = 60; 
          analyzeprix = 35; 
          switch (injtaille) 
          { 
           case 30: 
            injprix = 13; 
            break; 
           case 50: 
            injprix = (600/30); 
            break; 
           case 60: 
            injprix = (720/30); 
            break; 
           default: 
            Console.WriteLine("Taille d'injection inconnue."); 
            break; 
          } 
          break; 
        } 
       //Fin Switch 


        if (imgrad == "non") 
       { 
        imgradprix = 0; 
       } 
        if (cons == "non") 
       { 
        consprix = 0; 
       } 
        if (analyze == "non") 
       { 
        analyzeprix = 0; 
       } 
        if (inj == "non") 
       { 
        injprix = 0; 
       } 
        if (imgrad == "oui" || cons == "oui") 
        { 
         imgradprix = imgradprix * 0.75; 
        } 

        prixclient = consprix + imgradprix + analyzeprix + injprix; 
        prixclient = prixclient * 1.15; 
        if (cons == "oui" || analyze == "oui" || inj == "oui") 
        { 
         prixclient = prixclient - 10; 
        } 
        prixtot += prixclient; 
        clientfinal++; 
        prixfinal = prixtot; 
       Console.WriteLine("Prix du patient " + prixclient); 
       } while (clientfinal != client); 
     Console.WriteLine("Le prix final est" + prixfinal); 
    } 
} 

}

+0

請原諒我在編程和馬虎英語缺乏knowlege的。 –

+9

這個問題可能更適合http://codereview.stackexchange.com/ – Save

+0

謝謝你的提示,我也發佈了一個。 –

回答

0

看你的代碼,我看到的唯一問題是你有內存泄漏,因爲你分配一個事件處理程序,從來沒有去分配它。

prixtot += prixclient; 

我會建議使用的Visual Studio 2015年。它有一個分析工具出來,會給你洞察到你的代碼問題的開箱。你可以看到功能需要多長時間來執行等

MSDN上的和微軟構建安德魯·霍爾視頻是一個偉大的地方開始。 這裏有幾個環節要觀看的影片

https://channel9.msdn.com/Events/Build/2015/3-677 https://channel9.msdn.com/Events/Build/2015/3-731