MyKTVプロジェクト概要
プロジェクト名: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>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









多くの Mac ユーザーはデバイスのデフォルト名をそのまま使用する傾向があり、それを変更することを決して考えないかもしれません。多くの人は、「Johnny's MacBook Air」または単に「iMac」など、初期設定の名前をそのまま使用することを選択します。 Mac の名前を変更する方法を学ぶことは、特に複数のデバイスを持っている場合に、デバイスをすばやく区別して管理するのに役立つため、非常に便利なスキルです。次に、macOS システムでコンピューター名、ホスト名、Bonjour 名 (ローカルホスト名) を変更する方法を段階的に説明します。 Mac 名を変更する必要があるのはなぜですか? Mac の名前を変更すると、あなたの個性が表れるだけでなく、ユーザー エクスペリエンスの向上にも役立ちます。 Mac をカスタマイズする: デフォルトの名前は好みに合わない場合がありますので、お好みの名前に変更してください。

General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 GEMM の実装に関する徹底的な調査と最適化は、ハイ パフォーマンス コンピューティングとソフトウェア システムとハードウェア システムの関係をより深く理解するのに役立ちます。コンピューター サイエンスでは、GEMM を効果的に最適化すると、計算速度が向上し、リソースが節約されます。これは、コンピューター システムの全体的なパフォーマンスを向上させるために非常に重要です。 GEMM の動作原理と最適化方法を深く理解することは、最新のコンピューティング ハードウェアの可能性をより有効に活用し、さまざまな複雑なコンピューティング タスクに対してより効率的なソリューションを提供するのに役立ちます。 GEMMのパフォーマンスを最適化することで

7月29日、AITO Wenjieの40万台目の新車のロールオフ式典に、ファーウェイの常務取締役、ターミナルBG会長、スマートカーソリューションBU会長のYu Chengdong氏が出席し、スピーチを行い、Wenjieシリーズモデルの発売を発表した。 8月にHuawei Qiankun ADS 3.0バージョンが発売され、8月から9月にかけて順次アップグレードが行われる予定です。 8月6日に発売されるXiangjie S9には、ファーウェイのADS3.0インテリジェント運転システムが初搭載される。 LiDARの支援により、Huawei Qiankun ADS3.0バージョンはインテリジェント運転機能を大幅に向上させ、エンドツーエンドの統合機能を備え、GOD(一般障害物識別)/PDP(予測)の新しいエンドツーエンドアーキテクチャを採用します。意思決定と制御)、駐車スペースから駐車スペースまでのスマート運転のNCA機能の提供、CAS3.0のアップグレード

フェルマーの最終定理、AIに征服されようとしている?そして、全体の中で最も意味のある部分は、AI が解決しようとしているフェルマーの最終定理は、まさに AI が役に立たないことを証明するものであるということです。かつて、数学は純粋な人間の知性の領域に属していましたが、現在、この領域は高度なアルゴリズムによって解読され、踏みにじられています。画像 フェルマーの最終定理は、何世紀にもわたって数学者を悩ませてきた「悪名高い」パズルです。それは 1993 年に証明され、現在数学者たちはコンピュータを使って証明を再現するという大きな計画を立てています。彼らは、このバージョンの証明に含まれる論理的エラーがコンピュータによってチェックできることを望んでいます。プロジェクトアドレス: https://github.com/riccardobrasca/flt

タイトル: PyCharm の詳細: プロジェクトを削除する効率的な方法 近年、Python は強力で柔軟なプログラミング言語として、ますます多くの開発者に支持されています。 Python プロジェクトの開発では、効率的な統合開発環境を選択することが重要です。 PyCharm は、強力な統合開発環境として、プロジェクト ディレクトリを迅速かつ効率的に削除するなど、多くの便利な機能とツールを Python 開発者に提供します。以下では、PyCharm での削除の使用方法に焦点を当てます。

PyCharm は、豊富な開発ツールと環境構成を提供する強力な Python 統合開発環境であり、開発者がコードをより効率的に作成およびデバッグできるようにします。 Python プロジェクト開発に PyCharm を使用するプロセスでは、Python 環境がインストールされていないコンピューター上で実行できるように、プロジェクトを実行可能 EXE ファイルにパッケージ化する必要がある場合があります。この記事では、PyCharm を使用してプロジェクトを実行可能な EXE ファイルに変換する方法と、具体的なコード例を紹介します。頭

Apple 16 システムの最適なバージョンは iOS16.1.4 です。iOS16 システムの最適なバージョンは人によって異なります。日常の使用体験における追加と改善も多くのユーザーから賞賛されています。 Apple 16 システムの最適なバージョンはどれですか? 回答: iOS16.1.4 iOS 16 システムの最適なバージョンは人によって異なる場合があります。公開情報によると、2022 年にリリースされた iOS16 は非常に安定していてパフォーマンスの高いバージョンであると考えられており、ユーザーはその全体的なエクスペリエンスに非常に満足しています。また、iOS16では新機能の追加や日常の使用感の向上も多くのユーザーからご好評をいただいております。特に最新のバッテリー寿命、信号性能、加熱制御に関して、ユーザーからのフィードバックは比較的好評です。ただし、iPhone14を考慮すると、

4月11日、ファーウェイはHarmonyOS 4.2 100台のアップグレード計画を初めて正式に発表し、今回は携帯電話、タブレット、時計、ヘッドフォン、スマートスクリーンなどのデバイスを含む180台以上のデバイスがアップグレードに参加する予定だ。先月、HarmonyOS4.2 100台アップグレード計画の着実な進捗に伴い、Huawei Pocket2、Huawei MateX5シリーズ、nova12シリーズ、Huawei Puraシリーズなどの多くの人気モデルもアップグレードと適応を開始しました。 HarmonyOS によってもたらされる共通の、そして多くの場合新しい体験を楽しむことができる Huawei モデルのユーザーが増えることになります。ユーザーのフィードバックから判断すると、HarmonyOS4.2にアップグレードした後、Huawei Mate60シリーズモデルのエクスペリエンスがあらゆる面で向上しました。特にファーウェイM
