質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3898閲覧

[初心者]C++ 住所録作成

NaokiPooh

総合スコア21

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/10/18 06:09

###前提・実現したいこと
初めて利用させていただきます。
プログラミング初心者の学生です。
今現在C++で住所録のアプリケーションを作成中です。

実現したい事として
・ダイヤログベースで送信ボタン押下により情報を取得したい。
住所→エディットボックスの情報を取得
名前→エディットボックスの情報を取得
No→コンボボックスから選択されたものを取得
性別→チェックボックスで選択されたものを取得
・送信押下後にリストコントロールの一覧表示される
・データ管理はキュー
・ファイル入出力
という内容です。

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

C++

1//------------------------------------------------------------------------------ 2// 住所録ZyuSyoDlgNew.h 3//------------------------------------------------------------------------------ 4#include "afxcmn.h" 5#if !defined(AFX_RETUCHGDLG_H__6074ED4B_5F86_4318_A3E5_318EC9A020C3__INCLUDED_) 6#define AFX_RETUCHGDLG_H__6074ED4B_5F86_4318_A3E5_318EC9A020C3__INCLUDED_ 7 8#if _MSC_VER > 1000 9#pragma once 10#endif 11 12#define N_MAX 256 13 14//------------------------------------------------------------------------------ 15// 構造体 16//------------------------------------------------------------------------------ 17struct strZyusyo 18{ 19 long no; // 住所録No 20 char name[20]; // 名前 21 char home[40]; // 住所 22 int tosi; // 年齢 23 char type; // 性別 24 25}; 26 27//------------------------------------------------------------------------------ 28// キューの構造体 29//------------------------------------------------------------------------------ 30struct Queue 31{ 32 void *next; // nextポインタ 33 struct _strZyusyo *deta; // 34}; 35 36//------------------------------------------------------------------------------ 37// ZyuSyoDlgNew ダイアログ 38//------------------------------------------------------------------------------ 39class ZyuSyoDlgNew : public CDialogEx 40{ 41 DECLARE_DYNAMIC(ZyuSyoDlgNew) 42 43public: 44 ZyuSyoDlgNew(CWnd* pParent = NULL); // 標準コンストラクター 45 virtual ~ZyuSyoDlgNew(); 46 47// ダイアログ データ 48 enum { IDD = IDD_TOP }; 49 50private: 51 struct Queue* m_pQueue; 52 struct Queue* m_pQueue2; 53 void make_queue(); 54 55protected: 56 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV サポート 57 58 DECLARE_MESSAGE_MAP() 59public: 60 afx_msg void OnBnClickedGo(); 61 afx_msg void OnBnClickedClear(); 62 afx_msg void OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult); 63}; 64//------------------------------------------------------------------------------ 65// 住所録 ZyuSyoDlgNew.cpp 66//------------------------------------------------------------------------------ 67 68#include "stdafx.h" 69#include "ZyuSyo.h" 70#include "ZyuSyoDlgNew.h" 71#include "afxdialogex.h" 72 73 74// ZyuSyoDlgNew ダイアログ 75 76IMPLEMENT_DYNAMIC(ZyuSyoDlgNew, CDialogEx) 77 78 79//------------------------------------------------------------------------------ 80// コンストラクタ 81//------------------------------------------------------------------------------ 82ZyuSyoDlgNew::ZyuSyoDlgNew(CWnd* pParent /*=NULL*/) 83 : CDialogEx(ZyuSyoDlgNew::IDD, pParent) 84{ 85 m_pQueue = NULL; 86 m_pQueue2 = NULL; 87 88} 89 90//------------------------------------------------------------------------------ 91// デストラクタ 92//------------------------------------------------------------------------------ 93ZyuSyoDlgNew::~ZyuSyoDlgNew() 94{ 95 96} 97 98//------------------------------------------------------------------------------ 99// DDV/DDXサポート 100//------------------------------------------------------------------------------ 101void ZyuSyoDlgNew::DoDataExchange(CDataExchange* pDX) 102{ 103 CDialogEx::DoDataExchange(pDX); 104} 105 106 107BEGIN_MESSAGE_MAP(ZyuSyoDlgNew, CDialogEx) 108 ON_BN_CLICKED(IDC_GO, &ZyuSyoDlgNew::OnBnClickedGo) 109 ON_BN_CLICKED(IDC_CLEAR, &ZyuSyoDlgNew::OnBnClickedClear) 110 ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, &ZyuSyoDlgNew::OnLvnItemchangedList) 111END_MESSAGE_MAP() 112 113 114// ZyuSyoDlgNew メッセージ ハンドラー 115 116//------------------------------------------------------------------------------ 117// キューの生成 118//------------------------------------------------------------------------------ 119void ZyuSyoDlgNew::make_queue() 120{ 121 struct Queue *que; 122 for( int count=0; count<256; count++) 123 { 124 //キューの生成 125 if( count == 0 ) 126 { 127 que = (struct Queue*)malloc(sizeof(struct Queue)); // メモリの確保 128 m_pQueue = que; // 先頭ビットをメンバ変数にぶち込む 129 } 130 else 131 { 132 que->next = (struct Queue*)malloc(sizeof(struct Queue)); // ポインタを繋ぐ 133 que = (struct Queue*)que->next; // nextの値をqueに 134 } 135 que->next = NULL; // nextにNULLをぶち込む 136 memset(que,0,sizeof(struct Queue)); // クリア 137 138/* 139 if( que->next == NULL ) 140 { 141 free( que ); //キューの解放 142 } 143*/ 144 } 145} 146 147 148//------------------------------------------------------------------------------ 149// 送信ボタン押下処理 150//------------------------------------------------------------------------------ 151void ZyuSyoDlgNew::OnBnClickedGo() 152{ 153 //エディット部 154 CEdit* pNameEdit = (CEdit *)GetDlgItem( IDC_NAME_I ); 155 CEdit* pHomeEdit = (CEdit *)GetDlgItem( IDC_HOME_I ); 156 CEdit* pTosiEdit = (CEdit *)GetDlgItem( IDC_TOSI_I ); 157 158 //チェックボックス部 159 ((CButton*)GetDlgItem(IDC_TYPE_B))->SetCheck(true); 160 ((CButton*)GetDlgItem(IDC_TYPE_G))->SetCheck(true); 161 162 163 //------------// 164 //名前部の取得// 165 //------------// 166 CString strName; 167 pNameEdit->GetWindowText( strName ); 168 169 //------------// 170 //住所部の取得// 171 //------------// 172 CString strHome; 173 pHomeEdit->GetWindowText( strHome ); 174 175 //------------// 176 //年齢部の所得// 177 //------------// 178 CString strTosi; 179 pTosiEdit->GetWindowText( strTosi ); 180 181 //------------// 182 //Noの所得 // 183 //------------// 184 struct strZyusyo *no; 185 CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_NO); 186 no = (struct strZyusyo*)long(pComboBox->GetCurSel()); 187 188 189 //----------------// 190 //性別の取得(男性)// 191 //----------------// 192 CString strType; 193 if( ( (CButton*)GetDlgItem(IDC_TYPE_B) ) ->GetCheck() == BST_CHECKED ) 194 { 195 //チェックされた場合の処理 196 strType = ("男性"); 197 } 198 else 199 { 200 //チェックされていない場合の処理 201 strType = (""); 202 } 203 204 //----------------// 205 //性別の判定(女性)// 206 //----------------// 207 if( ( (CButton*)GetDlgItem(IDC_TYPE_G) ) ->GetCheck() == BST_CHECKED ) 208 { 209 //チェックされた場合の処理 210 strType = ("女性"); 211 } 212 else 213 { 214 //チェックされていない場合の処理 215 strType = (""); 216 } 217 218 //----------------// 219 //リストの設定 // 220 //----------------// 221 222 CDialog::OnOK(); 223 224 225}

###試したこと
現状上のようなソースなのですが、ここからどうすれば上記の機能を実装できるかわからないです。
特にキューのあたりが難しいです。
初心者のため理解がまだ深くありませんので、このソースの続きをアドバイス・こうすればいいよ~と教えていただければ幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

回答1

0

ベストアンサー

キューは先入れ先出しなので、最後尾にデータを付けるエンキュー、先頭から取り出すデキューの処理関数が少なくとも必要です。
そもそも、住所録に何でキュー構造が必要なのかがわかりません。
キューというのは通常待ち行列に使われます。処理待ちの行列に使ったりします。
住所録なら単純に可変長の配列で良いように思います。
先入れ先出し、キュー

投稿2016/10/18 10:03

PineMatsu

総合スコア3579

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問