C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: vb2008で席替え表を作りたい。


(過去ログ 107 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■63884 / inTopicNo.1)  vb2008で席替え表を作りたい。
  
□投稿者/ mizu (1回)-(2012/10/24(Wed) 10:34:28)

分類:[VB.NET/VB2005 以降] 

vb2008で席替え表を作りたい。
はじめまして。
今、VB2008を作って席替え表を作ろうとしていますがいまいちどういうコードでソースを書いたらいいかわかりません。
わかりやすいソースコードなどを書いていただくとありがたいです。

概要:データベースからデータを読み込みそのデータをかく席に配置する。
ボタンを押せばランダムに席がシャッフルする。


このような、条件を満たしている席替え表を希望していますが。
もっと、わかりやすく簡単なものでもいいので回答の方をお願いします。
引用返信 編集キー/
■63886 / inTopicNo.2)  Re[1]: vb2008で席替え表を作りたい。
□投稿者/ 魔界の仮面弁士 (70回)-(2012/10/24(Wed) 12:44:03)
No63884 (mizu さん) に返信
> vb2008で席替え表を作りたい。

「表」ということは、こんなデータを作れば良いのでしょうか?


席番号 氏名
−−− −−−−
1−1 山田
1−2 田中
1−3 山田中
2−1 山中
2−2 中山


※ 席番号は、連番(Integer)あるいは、行列情報(Point とか String とか)で管理。


だとしたら、「席の一覧」と「氏名の一覧」を配列あるいは
List(Of T) にでも保有しておき、こんな感じでどうでしょう。


Dim r As New Random()
Do Until lstPerson.Count = 0
 Dim index As Integer = r.Next(0, lstPerson.Count)
 dict.Add(lstSheet(index), lstPerson(index))
 lstSheet.RemoveAt(index)
 lstPerson.RemoveAt(index)
Loop


' dict … 席替え結果を格納する Dictionary(Of 席, 氏名)
' lstPerson … 氏名リスト List(Of String)
' lstPerson … 席の一覧 List(Of 席)

# VS 起動せずに掲示板上に直接書いたコードなので、動作未検証です。

引用返信 編集キー/
■63890 / inTopicNo.3)  Re[2]: vb2008で席替え表を作りたい。
□投稿者/ mizu (2回)-(2012/10/25(Thu) 10:06:07)
魔界の仮面弁士さん
書き込みありがとうございます。

自分が作りたいものに関しましては、「表」とゆうか
座席の見取り図があり、そこに生徒の名前がはいっていてシャッフルのボタンを押すと
生徒の名前だけがランダムに入れ替わるようにしたいです。

[シャッフル]

[A] [D] [G]
[B] [E] [H]
[C] [F] [J]

※イメージとしてはこのような図になります。
回答のほうお願いしますm(__)m
引用返信 編集キー/
■63892 / inTopicNo.4)  Re[3]: vb2008で席替え表を作りたい。
□投稿者/ 魔界の仮面弁士 (71回)-(2012/10/25(Thu) 10:39:15)
No63890 (mizu さん) に返信
> 自分が作りたいものに関しましては
「仕様を提示するのでソースコードをください」だけでは、
[質問]ではなく、[開発依頼]になってしまいかねません。本人にその気が無くとも。

現在どこまでできているのか、あるいは、どの部分が分からないのかを
具体的に明示してみてください。その方が具体的なコードを提示しやすいです。


『ランダムに入れ替わる』処理方法が分からないのか、それとも、
乱数の使い方はわかるけれど『画面表示に関する部分』で戸惑っているのか、
あるいは、分からないなりに作ってみたものの『エラーがでて先に進めない』など。



> 座席の見取り図があり、そこに生徒の名前がはいっていてシャッフルのボタンを押すと
> 生徒の名前だけがランダムに入れ替わるようにしたいです。

表示するためには、「どこに誰を表示させるか」という「データ」が必要ですよね。
そのデータを用意する作業が、先のコード案になります。


そして表示の方ですが、席はどのように表示させる予定でしょうか。
表現の仕方が変わってくれば、そのために必要なコードも変わってきます。


Label あるいは TextBox を並べて表現するのでしょうか?
その場合、コントロールの位置を入れ替えるのと
テキストだけ入れ替えるのと、どちらが好みですか?

それとも、コントロール数を減らすために
単一のコントロール(DataGridView など)を使って席次表としますか?

あるいは、画像併用させるために、PictureBox を使ったり
Graphics クラス併用で描画処理を記述させてみたいですか?

もしくは、二次加工しやすいように Excel 出力して表示した方が良いですか?


画面表示した後、それを印刷したりファイル化したりする必要があるのか、
あるいは、シャッフルされた席の位置を手動で入れ替える機能が必要かなどといった
将来機能への応用も検討した上で、どのような画面にしたいのかを設計してみてください。

(最初に盛り込みすぎると大変なので、自身にとっての実装難易度と相談した上で)


-----------------
なお、掲示板投稿時の注意書きには、
 『半角カナは使用しないでください。文字化けの原因になります。』
との記載があったはずです。次回投稿時にはご注意ください。
引用返信 編集キー/
■63893 / inTopicNo.5)  Re[3]: vb2008で席替え表を作りたい。
□投稿者/ 魔界の仮面弁士 (72回)-(2012/10/25(Thu) 10:57:47)
No63890 (mizu さん) に返信
> ※イメージとしてはこのような図になります。

似たような画面にしてみました。手抜き実装なので、
望んでいる画面構成とは異なるかもしれませんが。


空のフォームに以下のコードを貼って実行してみてください。

Public Class Form1
    '人の一覧
    Private people() As String = { _
        "User01", "User02", "User03", "User04", _
        "User05", "User06", "User07", "User08", _
        "User09", "User10", "User11", "User12", _
        "User13", "User14", "User15", "User16", _
        "User17", "User18", "User19", "User20", _
        "User21", "User22", "User23", "User24", _
        "User25", "User26", "User27", "User28", _
        "User29", "User30", "User31", "User32", _
        "User33", "User34", "User35", "User36", _
        "User37", "User38", "User39", "User40"}

    'コントロール作成処理:通常はデザイン時に実施
    Private WithEvents Button1 As Button
    Private WithEvents ListBox1 As ListBox
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        Me.Font = New Font("MS Gothic", 12)
        Button1 = New Button() With {.Text = "shuffle", .Dock = DockStyle.Top}
        ListBox1 = New ListBox() With {.MultiColumn = True, .Dock = DockStyle.Fill}
        Controls.Add(ListBox1)
        Controls.Add(Button1)

        ListBox1.DataSource = people
    End Sub

    '並び替え処理
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        ' http://dobon.net/vb/dotnet/programing/arrayshuffle.html
        ListBox1.DataSource = people.OrderBy(Function(x) Guid.NewGuid()).ToArray()
    End Sub
End Class

引用返信 編集キー/
■63900 / inTopicNo.6)  Re[4]: vb2008で席替え表を作りたい。
□投稿者/ mizu (4回)-(2012/10/26(Fri) 11:25:26)
魔界の仮面弁士さんありがとうございます。

上のコードを記述したところできました。
ありがとうございます。
引用返信 編集キー/
■63951 / inTopicNo.7)  Re[5]: vb2008で席替え表を作りたい。
□投稿者/ mizu (7回)-(2012/10/31(Wed) 12:07:40)
No63900 (mizu さん) に返信
> 魔界の仮面弁士さんありがとうございます。
>
> 上のコードを記述したところできました。
> ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -