台灣最大程式設計社群網站
線上人數
1224
 
會員總數:240874
討論主題:186645
歡迎您免費加入會員
討論區列表 >> C# >> 依據項目計算價格
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
依據項目計算價格
價值 : 100 QP  點閱數:317 回應數:6

樓主

hqqex
初學者
50 17
642 23
發送站內信

主項目{1:15}

子項目{A:15,B:20,C:10}

1+A=30
1+B=35
1+C=35
1+A+B=45
1+A+C=40
1+A+B+C=55
(B跟C單價不相同,但配上1時定價就相同了)
子項目最少選一樣,最多可以全選.

當子項目少時,可以列出所有組合,在去比對,但如果有10個子項目,這樣土法煉鋼好像不是很好,請問是否有辦法解決這樣的問題?



搜尋相關Tags的文章: [ 計算 ] , [ 商業邏輯 ] , [ 邏輯 ] ,
本篇文章發表於2017-03-14 19:53
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

QZ_CHUNG
檢舉此回應
我也還新手,以下是我初步的想法:

我會在項目使用CheckBox,
結算時判斷子項目CheckBox打勾的數量
若CheckBox打勾的數量為0時,則表示沒選任何子項目,跳出至少要選一項子項目的警告

最後將主項目和有打勾的子項目數字相加

非單點時,有例外的再用if去寫(如1+C=35、1+A+B=45)
if(checkboxB.check && checkboxA.check)
{
price = 45;
}


本篇文章回覆於2017-03-15 17:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

hqqex
檢舉此回應
一開始有這樣想,不過當子項目越多時,這樣判斷會寫不完,

目前是列出3個子項目,所以組合有7種,這樣寫if是可以的
1+A=30
1+B=35
1+C=35
1+A+B=45
1+A+C=40
1+A+B+C=55
1+B+C=45

要是子項目有10個,這樣if是不是會寫到天荒地老.
ABCDEFGHIJ
本篇文章回覆於2017-03-15 21:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

QZ_CHUNG
檢舉此回應
僅有在例外的狀況才寫,並不是全部都有寫

例如:1 + A = 30 (15+15 = 30 ) 這種程式加起來不會錯的就不用if

或是如果你是有限定規格,例如:有B就折價5元

也可以先用if(主項目有打勾 && 子項目B有打勾)
{
總金額 = 總金額 -5;
}

這樣以後遇到B時的if就可以省去了

畢竟是例外,所以個人覺得一定要有if,只是訂立的規則會決定if多還少而已

本篇文章回覆於2017-03-16 08:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

Daimom
捐贈 VP 給 Daimom 檢舉此回應
1+A=30 A=15
1+B=35 B=20
1+C=35 C=20
1+A+B=45 A=15,B=15
1+A+C=40 A=15,C=10
1+A+B+C=55 A=15,B=15,c=10

你說 (B跟C單價不相同,但配上1時定價就相同了)
我看不出來下面的條件有相同欸
本篇文章回覆於2017-03-16 09:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

Eucalyptus
檢舉此回應
因為你的命題沒有一定的邏輯性,所以土法煉鋼是免不了的
本篇文章回覆於2017-03-16 11:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

hqqex
檢舉此回應
試了幾天,效果不佳,用土法煉鋼了。
本篇文章回覆於2017-03-22 14:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.