Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 13
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Phần mềm chuyển đổi đơn vị trên C#?

    Mình đang định viết 1 phần mềm chuyển đổi đơn vị đo như hình:

    Ở phần mềm gồm có 2 textbox(1 textbox nhập vào giá trị và 1 textbox hiển thị kết quả) và 2 listbox (1 listbox cho người dùng chọn đơn vị đo và 1 listbox hiển thị kết quả).
    Theo các bạn mình có thể viết 1 hàm chuyển đổi như thế nào cho tiện ạ!. Xin các bạn giúp mình, cảm ơn ạ!.

  2. #2
    Mình tìm được đoạn code JavaScript này nhưng không biết vận dụng vào C#: các bạn có thể giúp mình được ko?
    Mã:
    function gObj(obj) {var theObj;if(document.all){if(typeof obj=="string"){return document.all(obj);}else{return obj.style;}}if(document.getElementById){if(typeof obj=="string"){return document.getElementById(obj);}else{return obj.style;}}return null;}
    function popMenu(inval){
        htmlVal = "";
        for (i = 0; i < allA.length; i++) {
            if (inval == allA[i][0][0]){
                htmlVal = htmlVal + "<li id='menuon'><a href='javascript:popMenu(\"" + allA[i][0][0] + "\");showSel(" + allA[i][0][1] + ");'>" + allA[i][0][0] + "</a></li> ";
            }else{
                htmlVal = htmlVal + "<li><a href='javascript:popMenu(\"" + allA[i][0][0] + "\");showSel(" + allA[i][0][1] + ");'>" + allA[i][0][0] + "</a></li> ";
            }
        }
        htmlVal = "<ul>" + htmlVal + "</ul>";
        gObj("menu").innerHTML = htmlVal;
    }
    
    var lA = new Array();
    lA[0] = new Array("Length","lA");
    lA[1] = new Array("meter","iv","iv");
    lA[2] = new Array("foot","iv*0.3048","iv/0.3048");
    lA[3] = new Array("yard","iv*0.914400","iv/0.914400");
    lA[4] = new Array("inch","iv*0.0254001","iv/0.0254001");
    lA[5] = new Array("kilometer","iv*1000","iv/1000");
    lA[6] = new Array("mile","iv*1609.35","iv/1609.35");
    lA[7] = new Array("centimeter","iv*0.01","iv/0.01");
    lA[8] = new Array("millimeter","iv*0.001","iv/0.001");
    lA[9] = new Array("micrometer","iv*0.000001","iv/0.000001");
    lA[10] = new Array("nanometer","iv*0.000000001","iv/0.000000001");
    lA[11] = new Array("light year","iv*9.46066e+15","iv/9.46066e+15");
    
    var tA = new Array();
    tA[0] = new Array("Temperature","tA");
    tA[1] = new Array("celsius","iv","iv");
    tA[2] = new Array("kelvin", "iv - 273", "iv + 273");
    tA[3] = new Array("farenheit", "5/9*(iv-32)", "9/5*iv + 32");
    
    var aA = new Array();
    aA[0] = new Array("Area","aA");
    aA[1] = new Array("square meter","iv","iv");
    aA[2] = new Array("square foot", "iv*0.0929030", "iv/0.0929030");
    aA[3] = new Array("square yard", "iv*0.836127", "iv/0.836127");
    aA[4] = new Array("square inch", "iv*0.000645160", "iv/0.000645160");
    aA[5] = new Array("square kilometer", "iv*1000000", "iv/1000000");
    aA[6] = new Array("square mile", "iv*2589990", "iv/2589990");
    aA[7] = new Array("square centimeter", "iv*0.0001", "iv/0.0001");
    aA[8] = new Array("square millimeter", "iv*0.000001", "iv/0.000001");
    aA[9] = new Array("square micrometer", "iv*0.000000000001", "iv/0.000000000001");
    aA[10] = new Array("acre", "iv*4046.86", "iv/4046.86");
    
    var vA = new Array();
    vA[0] = new Array("Volume","vA");
    vA[1] = new Array("cubic meter","iv","iv");
    vA[2] = new Array("cubic foot", "iv*0.0283168", "iv/0.0283168");
    vA[3] = new Array("cubic yard", "iv*0.764555", "iv/0.764555");
    vA[4] = new Array("cubic inch", "iv*0.0000163871", "iv/0.0000163871");
    vA[5] = new Array("cubic kilometer", "iv*1000000000", "iv/1000000000");
    vA[6] = new Array("cubic mile", "iv*4.16818e+9", "iv/4.16818e+9");
    vA[7] = new Array("cubic centimeter", "iv*0.000001", "iv/0.000001");
    vA[8] = new Array("cubic millimeter", "iv*1.0e-9", "iv/1.0e-9");
    vA[9] = new Array("liter", "iv*0.001", "iv/0.001");
    vA[10] = new Array("milliliter", "iv*0.000001", "iv/0.000001");
    vA[11] = new Array("pint", "iv*0.000473176", "iv/0.000473176");
    vA[12] = new Array("quart", "iv*0.000946353", "iv/0.000946353");
    vA[13] = new Array("gallon", "iv*0.00378541", "iv/0.00378541");
    
    var wA = new Array();
    wA[0] = new Array("Weight","wA");
    wA[1] = new Array("kilogram","iv","iv");
    wA[2] = new Array("gram", "iv*0.001", "iv/0.001");
    wA[3] = new Array("milligram", "iv*0.000001", "iv/0.000001");
    wA[4] = new Array("ton", "iv*1000", "iv/1000");
    wA[5] = new Array("pound", "iv*0.453592", "iv/0.453592");
    wA[6] = new Array("ounce", "iv*0.0283495", "iv/0.0283495");
    wA[7] = new Array("carrat", "iv*0.0002", "iv/0.0002");
    wA[8] = new Array("atomic mass unit", "iv*1.6605401999104288e-27", "iv/1.6605401999104288e-27");
    
    var mA = new Array();
    mA[0] = new Array("Time","mA");
    mA[1] = new Array("second","iv","iv");
    mA[2] = new Array("millisecond", "iv*0.001", "iv/0.001");
    mA[3] = new Array("microsecond", "iv*0.000001", "iv/0.000001");
    mA[4] = new Array("nanosecond", "iv*0.000000001", "iv/0.000000001");
    mA[5] = new Array("picosecond", "iv*0.000000000001", "iv/0.000000000001");
    mA[6] = new Array("minute", "iv*60", "iv/60");
    mA[7] = new Array("hour", "iv*3600", "iv/3600");
    mA[8] = new Array("day", "iv*86400", "iv/86400");
    mA[9] = new Array("week", "iv*604800", "iv/604800");
    mA[10] = new Array("month", "iv*2629800", "iv/2629800");
    mA[11] = new Array("year", "iv*31557600", "iv/31557600");
    
    allA = new Array(lA,tA,aA,vA,wA,mA);
    
    
    function isNum(sText){
        var ValidChars = "0123456789.-";
        var Char;
        if (sText.length < 1) return false;
        for (i = 0; i < sText.length; i++) {
            Char = sText.charAt(i);
            if (ValidChars.indexOf(Char) == -1) return false;
        }
        return true;
    }
    
    function showSel(aName){
        document.calForm.calFrom.length = 0;
        document.calForm.calTo.length = 0;
        for(i=1; i<aName.length; i++){
            document.calForm.calFrom.options[(i-1)] = new Option(aName[i][0],i);
            document.calForm.calTo.options[(i-1)] = new Option(aName[i][0],i);
        }
        document.calForm.calFrom.options[0].selected = true;
        document.calForm.calTo.options[0].selected = true;
        document.calForm.toVal.value = "";
        currentAName = aName;
        calcul();
    }
    
    function calVal(id, iv){
        eval("rv = (" + currentAName[id][2] + ");");
        return rv;
    }
    function calcul(){
        selectFrom = document.calForm.calFrom;
        selectTo = document.calForm.calTo;
        fromVal = document.calForm.fromVal.value;
        selectFromID = 0;
        selectToID = 0;
        selectFromVal = "";
        selectToVal = "";
        stdval = 0;
        for (var i = 0; i < selectFrom.options.length; i++) {
            if(selectFrom.options[i].selected) {
                selectFromID = selectFrom.options[i].value;
                selectFromVal = selectFrom.options[i].text;
            }
        }
        for (var i = 0; i < selectTo.options.length; i++) {
            if(selectTo.options[i].selected) {
                selectToID = selectTo.options[i].value;
                selectToVal = selectTo.options[i].text;
            }
        }
        if ((selectFromID>0) && (isNum(fromVal))){
            iv = parseFloat(fromVal);
            stdval = 0;
            eval("stdval = " + currentAName[selectFromID][1]+ ";");
            document.calForm.calTo.length = 0;
            for(i=1; i<currentAName.length; i++){
                tempVal = calVal(i, stdval);
                selectTo.options[(i-1)] = new Option(currentAName[i][0] + " (" + tempVal + ")",i);
                if (selectToID == i) {
                    selectTo.options[(i-1)].selected = true;
                    document.calForm.toVal.value = tempVal;
                }
            }
        }
        if ((!(isNum(fromVal)))||(selectFromID<1)){
            for(i=1; i<currentAName.length; i++){
                tempVal = calVal(i, stdval);
                selectTo.options[(i-1)] = new Option(currentAName[i][0],i);
                if (selectToID == i) {
                    selectTo.options[(i-1)].selected = true;
                    document.calForm.toVal.value = "";
                }
            }
        }
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    hhic, nhìn javascript sợ quá, làm cái này dễ mà, qua trọng là bạn biết cách chuyển nó ngoài thực tế thôi, cũng như bạn biết 1m=100cm thì bạn sẽ làm dc

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi iloveit1208
    hhic, nhìn javascript sợ quá, làm cái này dễ mà, qua trọng là bạn biết cách chuyển nó ngoài thực tế thôi, cũng như bạn biết 1m=100cm thì bạn sẽ làm dc
    Bạn có thể viết 1 hàm như trên được không ạ? Nó tại đây ạ:
    http://www.unitconverters.net/

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cái rắc rối mình gặp ở đây là chương trình yêu cầu ta có thể chuyển đổi qua lại ví dụ ta có thể chọn 1 meter thì listbox bên trái hiện tương ứng kết quả là: 1meter, 0.001kilometer, 100centimeter... và ta có thể chọn centimeter hay kilometer để chuyển đổi qua lại.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn dụng sự kiện selectedindex ở listview 1, xong hiện kết quả ở listview2 với item dc chọn
    selectedindex ở listview2 hiện số lên textbox, thế thôi mà
    ah mà bạn viết asp.net hay winform thế

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi iloveit1208
    bạn dụng sự kiện selectedindex ở listview 1, xong hiện kết quả ở listview2 với item dc chọn
    selectedindex ở listview2 hiện số lên textbox, thế thôi mà
    ah mà bạn viết asp.net hay winform thế
    Windows Form đó bạn! Cái đó mình biết rồi! ý mình là nên viết hàm chuyển đổi hay dùng database để lưu các giá trị như thế nào thôi!.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Có phải chúng ta cần thiết kế 1 file xml để định nghĩa các giá trị?
    Mã:
      <?xml version="1.0" encoding="utf-8" ?> 
    - <UnitTable>
    - <Units>
      <Unit code="1" name="Meter" symbol="m" plural="Meters" /> 
      <Unit code="2" name="Kilometer" symbol="km" plural="Kilometers" /> 
      <Unit code="3" name="Centimeter" symbol="cm" plural="Centimeters" /> 
      <Unit code="4" name="Milimeter" symbol="mm" plural="Milimeters" /> 
      <Unit code="5" name="Mile" symbol="mi." plural="Miles" /> 
      <Unit code="6" name="Yards" symbol="yrd" plural="Yards" /> 
      <Unit code="7" name="Foot" symbol="ft" plural="Feet" /> 
      <Unit code="8" name="Inch" symbol="in" plural="Inches" /> 
      </Units>
    - <Conversions>
      <Linear srcCode="1" destCode="2" factor="1e-3" /> 
      <Linear srcCode="1" destCode="3" factor="1e2" /> 
      <Linear srcCode="1" destCode="4" factor="1e3" /> 
      <Linear srcCode="1" destCode="5" factor="0.621371e-3" /> 
      <Linear srcCode="1" destCode="6" factor="1.093613" /> 
      <Linear srcCode="1" destCode="7" factor="3.280839" /> 
      <Linear srcCode="1" destCode="8" factor="39.37" /> 
      <Linear srcCode="2" destCode="3" factor="1e-5" /> 
      <Linear srcCode="2" destCode="4" factor="1e-6" /> 
      <Linear srcCode="2" destCode="5" factor="0.621371" /> 
      <Linear srcCode="2" destCode="6" factor="1.093613e3" /> 
      <Linear srcCode="2" destCode="7" factor="3.280839e3" /> 
      <Linear srcCode="2" destCode="8" factor="3.937e4" /> 
      <Linear srcCode="3" destCode="4" factor="1e-1" /> 
      <Linear srcCode="3" destCode="5" factor="0.621371e-5" /> 
      <Linear srcCode="3" destCode="6" factor="1.093613e-2" /> 
      <Linear srcCode="3" destCode="7" factor="3.280839e-2" /> 
      <Linear srcCode="3" destCode="8" factor="3.937e-1" /> 
      <Linear srcCode="4" destCode="5" factor="0.621371e-6" /> 
      <Linear srcCode="4" destCode="6" factor="1.093613e-3" /> 
      <Linear srcCode="4" destCode="7" factor="3.280839e-3" /> 
      <Linear srcCode="4" destCode="8" factor="3.937e-2" /> 
      <Linear srcCode="5" destCode="6" factor="1760" /> 
      <Linear srcCode="5" destCode="7" factor="5280" /> 
      <Linear srcCode="5" destCode="8" factor="63360" /> 
      <Linear srcCode="6" destCode="7" factor="3" /> 
      <Linear srcCode="6" destCode="8" factor="48" /> 
      <Linear srcCode="7" destCode="8" factor="12" /> 
      </Conversions>
      </UnitTable>
    Xin giúp mình với!

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn xem demo này nhé, vừa code xong

  10. #10
    Trích dẫn Gửi bởi iloveit1208
    bạn xem demo này nhé, vừa code xong
    Cảm ơn bạn! Nhưng nếu như viết If...else như vậy thì dài lắm vì mình cần đổi nhiều đơn vị khác nữa. Không biết cái này mình nên viết hàm hay dùng xml để lưu đơn vị tính.

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •