MFCで物品購入承認システム作成 1

今回は長編、MFCで物品購入承認システムを作成します。

毎度のことながら、もうちょっといいシステム名にしたいけど、
ネーミングセンスがないのでこんな感じに落ち着きました。

作成予定

半月ほど、プロトを作ってみました。

色々機能を追加したいけど、制御を考えるとキリがなくなるので、
プロトを作って飽き始めた段階のものまでを今回は作成しようと思います。

画面

作成予定画面、遷移はこんな感じ。

Excelで頑張って作ったけど、
いいツールとかあるのかなぁ…?

ログイン画面

Exeを起動後、ログイン画面が出ます。
ここで、テーブルに登録してあるIDとパスワードを打ち、問題なければメイン画面へ。

メイン画面

今回、ユーザには「管理者」と「一般」の区別を付けます
管理者権限フラグとでも命名しておきます。

管理者はメイン画面の「申請」「申請承認」「ユーザ管理」「項目管理」ボタンが出現しますが、
一般ユーザは「申請」ボタンのみ。
つまり、メイン画面からは申請画面にしか遷移ができません。

対して管理者は上記すべての画面に遷移できます。

また、画面中央には自分の過去の申請状況を確認できるようにしておきます。

申請画面

図の一番右です。
これは全ユーザが申請できます。

テーブル内にあるデータから物品項目を表示させ、
申請ボタンを押せば「申請中」状態になります。

承認画面

管理者ユーザだけ遷移できます。

申請画面で申請されたユーザの履歴がリストされ、
承認か拒否かを決定します。

ユーザ管理表画面 ユーザ情報管理画面

管理者ユーザだけ遷移できます。

現在のユーザのリスト、およびユーザ情報の変更を行います。

パスワードですが、今回は管理者ユーザが決めるという仕様にします。
本当は「初めてのログインなら本人が作成する」などの仕様が普通ですが。
先にも書きましたが、突き詰めるとキリがなくなるので、妥協です。

項目管理表画面 グループ/項目情報変更画面

これも管理者ユーザだけ遷移できます。

現在の項目のリストと、その情報の変更を行います。

今回のグループ、項目の違いですが。
例えば

  • 事務用品グループ → 項目:ペン、ノート、コピー用紙…
  • ドリンクグループ → 項目:水、緑茶、紅茶…
  • 家具家電グループ → 項目:机、いす、ディスプレイ…

のように、1つのグループに対して複数の項目が紐づけられています。

また妥協ですが。
1グループに対し、最大5項目までとします。
6つ以上作りたければ新しいグループ作れやの精神で
(事務用品グループ2など)

ER図

テーブルも作成します。
業務でも設計とかしたことないので、参考サイトを見ながら見様見真似。

A5M2とかでリバースで作れるみたいだけど、
今回は頑張ってExcel…

カーディナル、合ってんのかな?
自分でも不安(;´・ω・)

ユーザテーブル

ユーザ情報を入れます。

ユーザIDは、今回は5桁にします

管理者権限は、0なら一般ユーザ、1なら管理者ユーザです。

またユーザ名ですが、
今回はすべて半角英数字に限定します

未だに、全角文字がテーブルに格納できない問題に躓いているので…。

グループテーブル

グループ情報です。
IDはオートインクリメントで。

名称は同じく半角英数字。

項目テーブル

設計まとまってなくてすみませんが、
種目ではなく項目です。

IDは同じくオートインクリメント、紐づくグループID、値段があります。
名称は同じく…。

履歴テーブル

申請状況の履歴情報です。

申請されれば行が新しく追加され、
管理者が承認・拒否すれば承認状態列が変化します。

ざっとですが、こんな感じで作成していきます。

プロジェクト作成

メイン画面作成&プロジェクトの設定をして今回はひとまず終えます。

Windows 11、Visual Studio 2022で作成します。

今回プロジェクト名は「SupplyRequestManager」
ChatGPTさんに命名していただきました。

アプリケーションの種類はダイアログベースにして作成します。

作成!

プロパティの設定

今回、MySQLを使ってデータのやり取りを行います。

MySQLをインストールしてみた話は以下から。

プロパティの設定は以下でもやっています。

Releaseモード変更

新規作成時のデフォルトはDebugモードなので、Releaseに変更。
前回から学びました。

未だに、DebugモードでMySQLに繋がらない謎は残ったままです。

続いてプロパティを開きます。

追加のインクルードディレクトリ

C/C++→全般→追加のインクルードディレクトリに、パスを入れます。

追加のライブラリディレクトリ

リンカー→全般→追加のライブラリディレクトリにパスを入れます。

追加の依存ファイル

リンカー→入力→追加の依存ファイルにmysqlcppconn.libを追加します。

設定は以上です。

メイン画面作成

中央のスタティックテキストと、今回OKボタンはいらないので削除します。
キャンセルボタンは、ログアウト用として活用します。

ボタン4つ追加、スタティックテキスト1つ追加、リストコントロール1つ追加します。

スタティックは、「ようこそ、○○」の役割です。

キャンセルボタンはキャプションだけ変えました。

そしてリストコントロール、ここから少しだけ変えます。
プロパティから、ビューを「レポート」に変更しておきます。

すると外観はこんな感じに。

最後に、rcファイルでID名やコントロール位置を紹介します。

IDD_SUPPLYREQUESTMANAGER_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
FONT 9, "MS UI Gothic", 0, 0, 0x1
BEGIN
    PUSHBUTTON      "ログアウト",IDCANCEL,263,179,50,14
    PUSHBUTTON      "申請",IDC_BUTTON_MAIN_REQUEST,20,30,50,14
    PUSHBUTTON      "申請承認",IDC_BUTTON_MAIN_APPROVAL,110,30,50,14
    PUSHBUTTON      "ユーザ情報管理",IDC_BUTTON_MAIN_USERLIST,20,160,50,14
    PUSHBUTTON      "項目情報管理",IDC_BUTTON_MAIN_ITEMLIST,110,160,50,14
    CONTROL         "",IDC_LIST_MAIN,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,20,50,270,100
    LTEXT           "Welcome!",IDC_STATIC_MAIN_WELCOME,20,15,150,8
END

これで一度ビルドします。

((((((((((っ・ω・)っビルド中

当然、ボタン押しても(ログアウト以外)なにも反応しませんが。
見た目はよいでしょう。

終わりに

新たにツールを作り始めました。
正直、問題はいくつか出てくるのですが、
とりあえずやりきることを目標に…。

次回はログイン画面周りかな。

第1回が長すぎたので、次回は少し短めに。

今回はここまで。

MFCで物品購入承認システム作成 2
前回までの話。MFCで物品購入承認システム作成 1ログイン画面作成今回はログイン画面作成から。リソースビューからDialogフォルダまで開き、リソースの追加を選択。Dialogを新規作成します。ダイアログIDは、プロパティからIDD_DIA...

コメント

タイトルとURLをコピーしました