プログラミング演習Ⅲ(2023)

【課題6-10】ランチメニュー ver 1.4

プロジェクトタイプC# WPFアプリケーション
プロジェクト名Prac_6_10
ソリューション名PET6
ターゲットフレームワーク.NET 6.0 (長期的なサポート)

※ 「WPFアプリ(.NET Framework)」ではないので注意せよ!

【課題5-04】を改造して,_に示すように, 「メニュー」および「サイドメニュー」の選択をリストボックスで行う ように変更せよ.

画面イメージ
注意
  • この設問を解くには先に以下の課題を完了する必要がある.
  • 後述の空欄は前提課題の回答と 全く同じ にすること(変えてはならない).
  • GUI部品の名前やラベルの文言は必ず守ること(そうしないと採点ができないため).

このGUIアプリは_に示す部品を備える.

画面項目表
名前種別機能初期値/文言備考
listBox1リストボックス「メニュー」の表示・選択(備考を参照)「メニュー」を選択するためのリストボックス(後述するように選択肢にはDishクラスを用いる).

【選択肢】
・選択肢1:牛丼(300円)(初期選択)
・選択肢2:親子丼(350円)
・選択肢3:カツ丼(400円)
・選択肢4:カレー(500円)

選択項目が変化したとき「メニュー」で選ばれている商品と,「サイドメニュー」で選ばれている商品の合計金額を以下のフォーマットでlabel1に表示する(「」は不要).

小計:合計金額

合計金額は選択した「メニュー」,「サイドメニュー」の合計金額である(消費税などは考慮しない).
listBox2リストボックス「サイドメニュー」の表示・選択(備考を参照)「サイドメニュー」を選択するためのリストボックス(後述するように選択肢にはDishクラスを用いる).

【選択肢】
・選択肢1:みそ汁(50円)(初期選択)
・選択肢2:サラダ(100円)
・選択肢3:おしんこ(30円)
・選択肢4:豚汁(120円)

listBox1と同じ動作を行う
label1ラベル計算結果の表示小計:350円計算結果を表示するためのラベル.radioButton1の備考も参照せよ.

【プロパティの指定】
FontSizeプロパティに24を指定すること
label2ラベル静的な文言メニュー:-
label3ラベル静的な文言サイドメニュー:-
(名前なし)ウィンドウ(メインウィンドウ)-プロジェクト作成時に自動作成されるメインウィンドウ.

【プロパティの指定】
・サイズは幅400×高さ300とする.

この設問には【課題6-08】と同じDishの定義が必要である. プロジェクトにクラスを追加1_のように【課題6-08】Dishクラスの定義を貼り付けて使用すること. この設問ではDishクラスの定義は【課題6-08】と全く同じものを使用すること

飲食店のメニューに掲載された個々の料理についての情報を表すクラス(Dish.cs)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Prac_6_10
{
    /*******************************/
    /*                             */
    /*           空欄1             */
    /*      Dishクラスの定義       */
    /*                             */
    /*     (【課題6-08】と同じ)    */
    /*                             */
    /*******************************/
}

なおMainWindowクラスは_のようにすること.

MainWindowクラスのテンプレート
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        // 「メニュー」の登録(変更してはならない)
        listBox1.ItemsSource = new []
        {
            new Dish(){ Name = "牛丼",     Price = 300 },
            new Dish(){ Name = "親子丼",   Price = 350 },
            new Dish(){ Name = "カツ丼",   Price = 400 },
            new Dish(){ Name = "カレー",   Price = 500 },
        };

        // 「サイドメニュー」の登録(変更してはならない)
        listBox2.ItemsSource = new []
        {
            new Dish(){ Name = "みそ汁",   Price =  50 },
            new Dish(){ Name = "サラダ",   Price = 100 },
            new Dish(){ Name = "おしんこ", Price =  30 },
            new Dish(){ Name = "豚汁",     Price = 120 },
        };
        
        /**************************************************/
        /*                                                */
        /*                     空欄2                      */
        /*                                                */
        /**************************************************/
    }

    //  ..以下,必要に応じて自由に追記してよい..
    
}// end of class MainWindow

正しく実装できた場合,実行結果は_に示すような挙動となる23

実行結果

ヒント

なし


  1. プロジェクトを右クリック→「追加」→クラスを選択し,クラス名を入力して「作成」ボタンを押す. ↩︎

  2. Apple社の都合により,iPhone,iPadなどのデバイスでは動画の再生はできません(Apple社はスマートフォン/タブレット製品で,意図的?にVPxやAV1コーデックのサポートを遅らせているため.参考1参考2). ↩︎

  3. Microsoft Edge で動画を閲覧するためには,AV1 Extensionをインストールする必要があります. ↩︎

Last updated on 2023-11-14
Published on 2023-11-14

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.