🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

455閲覧

Unity)小遣い帳の構造

navesanta

総合スコア198

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/12/13 01:14

Unityで小遣い帳を作りたいのですがDBかクラスを使うにあたって
構造がまとまらないのでお教え下さい。

作りたいもの)

項目   お菓子代、電気代、交通費・・・など
年月   2020/10 2020/11 2020/12・・・など
年月状態 開始前 実行中 終了
年月予算 3000円 5000円 ・・・など
日付毎の使用 日付 12/1 使った金額 300円 残 2700円
12/3 使った金額 100円 残 2600円

ユーザーがアプリ上で先に年月予算までを設定して
日にち毎に使った金額を入力するようにしたい。

具体例)
お菓子代 
2020/10
実行中
3000円
↑ユーザーはここまで先に設定する
↓ユーザーはここから日にち毎に入力する(残は自動表示)
12/1 300円
12/3 100円
残 2400円

データーベースもしくは複数のクラスにて上記実現できそうなのですが
今一つ構造がまとまりません。

例えば
ItemTypeList.cs

[Serializable] public class ItemTtype { public string ItemName; public int YearMonth; public int State; //0:実行前 1:実行中 2:終了   public int Budget; public ItemType(string itemName, int yearMonth, int state, int budget) { ItemName = itemName; YearMonth = yearMonth; State = state; Budget = budget; }

といったクラスを作成してList<ItemType>を作ることは
可能ですが各日付毎の使った金額の紐づけが思い浮かびません。

どういった構造にすればいいかお教え下さい。
(データベースとクラスについては作成方法は分かっています)

環境)
PC: Windows10
Unity2019.4.0f1
言語:C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずクラスとしては「購入履歴」と「予算」の2つが必要そうです。
・購入履歴:項目名・年月日・金額
・予算:対象月・金額

「予算」に対する「状態」は、現在の日付から算出 or 現在対象としている月を見ればいいのでデータベースに保存する必要は無いでしょう。(最後に開いた月を保持しておきたいだけなら「最後に開いた月=2020/12」という形で別途保存→次回起動時にその月を検索対象とする)

月毎の残金も「予算金額 - その月の購入履歴の金額の合計」で出るのでデータベースに保存する必要はありません。

あとはデータベースの機能を使うなりLinqを使うなりして「指定の年月の購入履歴と予算」を検索すればいいかと思います。
(年月日をどのような型で持つかは保存方法次第なのでお好みで。DateTime型でもいいですし、年・月・日をそれぞれ個別にintで持つのもありかと)

投稿2020/12/14 02:29

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

navesanta

2020/12/14 06:00

2つのクラス型を使って紐づかせてLinqで抽出すればできますね。大変参考になりました。ありがとうございます。これからもよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問