プロジェクト名:KTVソングリクエストシステム--インストラクターのユアン・ユーミンが1週間以上かけて私のKTVプロジェクトを完成させました。正直に言うと、このプロジェクトを行うことで多くのことが得られ、多くの困難もありましたが、多くの試練を経ました。ついに終わりました。単純じゃない! このプロジェクトは主にフロントエンドとバックエンドに分かれています。 フロントデスクが実装する主な機能は、歌手からの曲リクエスト、ピンイン
です。1週間以上経って、やっとKTV
のプロジェクトを完成させることができました。正直に言うと、このプロジェクトを行うことで得たものはたくさんありましたが、多くの困難を経て、ようやく乗り越えることができました。単純じゃない!このプロジェクトは主にフロントエンドとバックエンドに分かれています。
フロントデスクが実装する主な機能は、歌手による曲のリクエスト、ピンインによる曲のリクエスト、単語数による曲のリクエストです。 タイプ選択、ゴールデンソングランキング、一部カット曲、デュエット、オーダー曲リスト、これらが主な機能です。 バックグラウンドで実装される主な機能は、歌手の追加、曲の追加、曲のパスの変更、歌手の画像パスの変更です。
まずはフロントデスクを見てみましょう:フロントデスクコアクラス:
SqlHelper
クラス (データベースへの接続を担当):
リーリー
KtvHelper
クラス (曲を保存するディレクトリ、歌手の写真を保存するディレクトリ) リーリー
ソングクラス (曲情報と曲ステータスを達成するためのスイッチ(
再生
;未再生
;再生;カットソング)): リーリー PlayListクラス(曲の再生のコアコンテンツ、機能
(再生の実装、
カット曲、リプライ)): リーリー フォームのドラッグを実装するコード (対応するイベントを見つけてダブルクリック): リーリー メインインターフェース: (
FrmMain)
リーリー歌手の曲のリクエスト (Frmbyswangetsong):
<span style="color: #008000;">//</span><span style="color: #008000;">画像インデックス</span>
<span style="color: #0000ff;">パブリック</span> <span style="color: #0000ff;">int</span> インデックス=<span style="color: #800080;">0</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span>index_singer = <span style="color: #800080;">0</span><span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;">ロードイベント</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> Frmbyswangetsong_Load(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">現在のフォームを表示するとき、2 番目の lvlist と 3 番目の lvlist のコントロールが表示されないようにします</span>
lvlisttwo.Visible = <span style="color: #0000ff;">false</span><span style="color: #000000;">;
lvlistthere.Visible </span>= <span style="color: #0000ff;">false</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">#region</span> データを最初のリストビューにバインドします
<span style="color: #008000;">//</span><span style="color: #008000;">データと画像を listview1 にバインドします</span>
ListViewItem lv = <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">組み合わせ</span><span style="color: #800000;">"</span>, <span style="color: #800080;">0</span><span style="color: #000000;">);
lv.タグ</span>= <span style="color: #800000;">「</span><span style="color: #800000;">組み合わせ</span><span style="color: #800000;">」</span><span style="color: #000000;">;
ListViewItem lv1 </span>= <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">女性歌手</span><span style="color: #800000;">"</span>, <span style="color: #800080;">1</span><span style="color: #000000;">);
lv1.タグ</span>= <span style="color: #800000;">「</span><span style="color: #800000;">女</span><span style="color: #800000;">」</span><span style="color: #000000;">;
ListViewItem lv2 </span>= <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">男性歌手</span><span style="color: #800000;">"</span>, <span style="color: #800080;">2</span><span style="color: #000000;">);
lv2.タグ</span>= <span style="color: #800000;">「</span><span style="color: #800000;">男性</span><span style="color: #800000;">」</span><span style="color: #000000;">;
lvlistone.Items.Add(lv);
lvlistone.Items.Add(lv1);
lvlistone.Items.Add(lv2);
</span><span style="color: #0000ff;">#エンドリージョン</span><span style="color: #000000;">
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">lvlistone の項目をクリックするとイベントがトリガーされます</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> lvlistone_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;">送信者、EventArgs e)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;"> lvlistone コントロール内の項目が選択されていない場合、2 番目のフォームは表示されません
</span><span style="color: #008000;">//</span><span style="color: #008000;">2番目に出現するlvlisttwoとlvlistoneを同じ位置に表示させます</span>
lvlisttwo.Location =<span style="color: #000000;"> lvlistone.Location;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 1 つの項目を選択すると、2 番目の llvlisttwo が表示されます
</span><span style="color: #008000;">//</span><span style="color: #008000;">2番目のlvlisttwoを表示させます</span>
lvlisttwo.Visible = <span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">if</span> (lvlistone.SelectedItems[<span style="color: #800080;">0</span>] != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">データを 2 番目のリストビュー コントロールに動的にバインドする方法</span>
<span style="color: #000000;"> lvlisttwoadd();
}
}</span><span style="color: #008000;">//</span><span style="color: #008000;"> 2 番目のリストビュー コントロールにデータを動的にバインドするメソッド lvlisttwoadd();</span>
<span style="color: #0000ff;">プライベート</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> lvlisttwoadd()
{
SqlConnection コン </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str);
</span><span style="color: #0000ff;">string</span> sql = <span style="color: #800000;">"</span><span style="color: #800000;">select * from singer_type</span><span style="color: #800000;">"</span><span style="color: #000000;">;
SqlCommand cmd </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql, con);
</span><span style="color: #0000ff;">試してみる</span><span style="color: #000000;">
{
con.Open();
SqlDataReader dr </span>=<span style="color: #000000;"> cmd.ExecuteReader();
</span><span style="color: #0000ff;">if</span> (dr != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (Dr.HasRows)
{
</span><span style="color: #0000ff;">ながら</span><span style="color: #000000;"> (dr.Read())
{
</span><span style="color: #0000ff;">string</span> singertype_group = dr[<span style="color: #800000;">"</span><span style="color: #800000;">singertype_name</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString();
</span><span style="color: #0000ff;">int</span> id = Convert.ToInt32(dr[<span style="color: #800000;">"</span><span style="color: #800000;">singertype_id</span><span style="color: #800000;">"</span><span style="color: #000000;">]);
ListViewItem lv </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ListViewItem();
lv.ImageIndex </span>= インデックス++<span style="color: #000000;">;
lv.テキスト </span>=<span style="color: #000000;"> 歌手タイプ_グループ;
lv.タグ</span>=<span style="color: #000000;"> ID;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> MessageBox.Show(lvlisttwo.Tag.ToString());</span>
<span style="color: #000000;"> lvlisttwo.Items.Add(lv);
}
}
}
}
</span><span style="color: #0000ff;">キャッチ</span><span style="color: #000000;"> (例外)
{
MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">ネットワーク異常!</span><span style="color: #800000;">"</span><span style="color: #000000;">);
}
</span><span style="color: #0000ff;">ついに</span><span style="color: #000000;">
{
con.Close();
}
}</span><span style="color: #008000;">//</span><span style="color: #008000;"> 03 lvlisttwo の項目がクリックされたときにトリガーされるイベント</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> lvlisttwo_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)
{
lvlistthere.Items.Clear();
</span><span style="color: #008000;">//</span><span style="color: #008000;"> lvlisttwo コントロール内の項目が選択されていない場合、3 番目のフォームは表示されません
</span><span style="color: #008000;">//</span><span style="color: #008000;">項目を選択すると、2番目のllvlistが表示されます</span>
<span style="color: #0000ff;">if</span> (lvlisttwo.SelectedItems[<span style="color: #800080;">0</span>] != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
{
lvlisttwo.Visible </span>= <span style="color: #0000ff;">false</span><span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;">3番目に出現するlvlistthereとlvlistoneを同じ位置に表示させます</span>
lvlistthere.Location =<span style="color: #000000;"> lvlistone.Location;
</span><span style="color: #008000;">//</span><span style="color: #008000;">3番目のlvlistを表示させてください</span>
lvlistthere.Visible = <span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;">ユーザーがクリックした最初のリストビューを取得して、それが男性歌手、女性歌手、グループのいずれであるかを判断します</span>
<span style="color: #0000ff;">string</span> singer_group = lvlistone.SelectedItems[<span style="color: #800080;">0</span><span style="color: #000000;">].Tag.ToString();
</span><span style="color: #008000;">//</span><span style="color: #008000;">ユーザーが 2 番目のリストビューをクリックした地域の ID を取得します</span>
<span style="color: #0000ff;">int</span> cityid = Convert.ToInt32(lvlisttwo.SelectedItems[<span style="color: #800080;">0</span><span style="color: #000000;">].Tag);
SqlConnection コン </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str);
</span><span style="color: #0000ff;">string</span> sql = <span style="color: #800000;">"</span><span style="color: #800000;">select singer_name,singer_photo from singer_info where singer_sex ='</span><span style="color: #800000;">"</span> + singer_group + <span style="color: #800000;">"</span><span style="color: #800000;">' and singertype_id=</span><span style="color: #800000;">"</span>+cityid+<span style="color: #800000;">"</span> <span style="color: #800000;">「</span><span style="color: #000000;">;」
SqlCommand cmd </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql,con);
</span><span style="color: #0000ff;">試してみる</span><span style="color: #000000;">
{
con.Open();
SqlDataReader dr</span>=<span style="color: #000000;"> cmd.ExecuteReader();
</span><span style="color: #0000ff;">if</span>(dr!=<span style="color: #0000ff;">null</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(Dr.HasRows)
{
</span><span style="color: #0000ff;">ながら</span><span style="color: #000000;"> (dr.Read())
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">歌手の名前と歌手の写真パスを取得します</span>
<span style="color: #0000ff;">string</span>歌手名 = dr[<span style="color: #800000;">"</span><span style="color: #800000;">歌手名</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString();
</span><span style="color: #0000ff;">string</span> singer_photo_url = dr[<span style="color: #800000;">"</span><span style="color: #800000;">singer_photo</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString();
</span><span style="color: #008000;">//</span><span style="color: #008000;">パスを接続</span>
<span style="color: #0000ff;">string</span> URL = KtvHelper.singer_photoURL +<span style="color: #000000;"> singer_photo_url;
imgsingerinfo .Images.Add(Image.FromFile(URL));
ListViewItem lv </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ListViewItem();
lv.テキスト</span>=<span style="color: #000000;">歌手名;
lv.ImageIndex </span>=index_singer++<span style="color: #000000;">;
lvlistthere.Items.Add(lv);
}
}
}
}
</span><span style="color: #0000ff;">キャッチ</span><span style="color: #000000;"> (例外)
{
MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">ネットワーク異常!</span><span style="color: #800000;">"</span><span style="color: #000000;">);
}
</span><span style="color: #0000ff;">ついに</span><span style="color: #000000;">
{
con.Close();
}
}
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">メインインターフェイスのボタンをクリックするとトリガーされるイベント</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnmain_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)
{
FrmByValue.frM.Show();
</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Close();
}
</span>