LoginSignup
2
0

More than 1 year has passed since last update.

お疲れ様です。たなしょです。
今日はアプリを作りました。
ちょっとだけ作り方がわかったので今度何かアプリ作ってみたいです。

電卓みたいなやつを作った

技術書に載っていた税抜き価格と消費税とその合計を計算してくれるアプリです。
そのアプリをちょっと改造したものを作りました。
image.png

こんな感じで単価と数量を入力して「計算実行」ボタンを押すと価格が表示されました。
ソースコードはめっちゃシンプルだったのでこんな簡単にアプリができるんだ感動しました。(デザインでオブジェクトを配置するのが一番面倒くさかったです。)

namespace Calc
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int price, quantity, subtotal, tax, total;
            const double TAX_RATE = 0.08;
            price = Convert.ToInt32(textBox1.Text);
            quantity = Convert.ToInt32(textBox2.Text);
            subtotal = price * quantity;
            tax = (int)(subtotal * TAX_RATE);
            total = subtotal + tax;

            label6.Text = String.Format(subtotal / 1000 > 0 ? "{0:0,000}円" : "{0}円", subtotal);
            label7.Text = String.Format(tax / 1000 > 0 ? "{0:0,000}円" : "{0}円", tax);
            label8.Text = String.Format(total / 1000 > 0 ? "{0:0,000}円" : "{0}円", total);
        }
    }
}

やっていることは単純で、textBoxの文字列を取り出してintに変換して、計算して、Textに代入されるだけです。
もっと難しいことをやってるのかと思ったんですけどオブジェクトの値を取り出す→オブジェクトに値を代入することができれば、
その間のロジックは既存のC#の知識でどうにかなりそうなので意外と難しくないなと思いました。

改造したところ

単純に出力個所を参考演算子にして3桁未満なら区切らずそのまま出力させるようにしました。

label6.Text = String.Format(subtotal / 1000 > 0 ? "{0:0,000}円" : "{0}円", subtotal);

今書いてて思ったんですが三項演算子の箇所、subtotal / 1000 > 0 ? "{0:0,000}円" : "{0}円"と変数を1000で割って0より大きいかで判別してますが、単にsubtotal >= 1000 ? "{0:0,000}円" : "{0}円で同様な挙動をしますよね。
これを作ってた時はいったい何を考えてたんだ自分…

最後に

今まで写経してプロンプトに数値や文字列が出力されてという一連の流れを繰り返していたので、
新しくGUIアプリの作り方を勉強できてとても面白かったです。やっぱりモノづくり楽しいですね。自分の考えが入り込む余地があるのがいいです。
これからも暇を見つけてくだらないアプリを作っていければなと思いました。
(でもオブジェクトを配置するのはめんどくさいです…)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0