コードアドレス: https://gitee.com/Brickie_liu/bianlun-vote
ディベート投票ツール実装コード解説
物事の起源
ユニットの新入生は討論を行いたいと思っており、労働組合の同僚は投票機能を望んでいます。これは、素晴らしいショーが大画面に映し出され、聴衆が携帯電話で意見を選択できるのと同様です。私はまだこの種のガジェットを見たことがなく、何人かの教師を知っていることを考慮して、クラスでこれらの活動を計画します。このインタラクティブな活動は、単なる討論よりもダイナミックになる可能性があります。
二次仕上げの必要性
1. 討論会の大画面に視聴者投票情報がリアルタイムで表示されます。
2. 投票方法がサポートされています. 1 人 1 票のみ投票でき、変更できません. 1 人 1 票のみ投票できますが、変更できます. 1 人が繰り返し投票できます.
3. ディベート トピックを追加または削除し、段階的な投票をカウントできます。
4. シナリオ、50 ~ 200 人の会議室を使用します。
3 つのデモ ビデオ:
https://gitee.com/Brickie_liu/bianlun-vote/tree/master/test/vote-1.mp4
https://gitee.com/Brickie_liu/bianlun-vote/tree/master/test/vote-2.mp4
4 つのスキーム 1 (WNMP、PHP、Nginx、Vue)
以上の機能を考えると、イントラネットがない場合は公衆網サーバーで、ネットワークがない場合はWNMP環境をパッケージ化して、機能を極力簡素化して展開できると思います。
開発環境
win10 64 ビット
メモ帳++
WNMP
サードパーティ ライブラリ
フロントエンド:
ブートストラップ
VUE
後部
PHP websocket (https://github.com/Textalk/websocket-php)
PHP Psr\Log
プロジェクトのディレクトリ構造
│ index.html
│ manage.html
│ readme.txt
│ userListConfg.txt
│ util.php
│ vote.php
│ voteAdmin.html
│ voteConfig.php
│ voteOpt.php
├─lib
│ ├─Psr
│ │ └─Log
│ └─WebSocket
│ BadOpcodeException.php
│ BadUriException.php
│ Base.php
│ Client.php
│ ConnectionException.php
│ Exception.php
│ Server.php
│ TimeoutException.php
├─res
└─sh
voteStartAll.php
voteStopAll.php
既存の問題
1.当時はパブリックネットワークサーバーに展開することを考えていたので、プロの展開にはまだ多くのシステム構成を設定する必要があり、非常に面倒です.
2. ローカル環境での展開は少し難しいですが、ばかげているわけではありません。普通の人は使いません。クリックして実行できません。
5 つのスキーム 2 (python、tk)
方式 1 の問題を目指して、python で実装し、Web サービスを統合します。exeにパッケージ化し、インストールして実行します。
パブリック ネットワーク サーバーへの展開のサポートは考慮されておらず、ローカルの 50 ~ 200 人規模の会議場 [コンピューター 1 台、3000M をサポートする WIFI6 ルーター 1 台] のみをサポートしています。Huawei の理論では、128 台の端末をサポートしています。
開発環境
win10 64位
winrar
anaconde3 py39,
pycharm 2021.2
サードパーティ ライブラリ
フロントエンド
WEB ブートストラップ
WEB VUE
GUI tkinter
後部
psutil、システム ローカル情報の取得
gevent、websocket サービス
gevent-websocket、websocket サービス
pyinstaller、exe パッケージ化
bottleの生成、1 つのファイルのみの Web サービス フレームワーク、WSGI に従い、一般的に使用されるほぼすべての機能をサポートします。小さなWEBレコメンデーションの個人開発。
プロジェクトのディレクトリ構造
│ build-winrar-conf.ini
│ build.bat
│ build.ps1
│ README.md
│ requirements.txt
│ voteMain.py
│
├─app-dist
│ voteMain.exe
│ voteMain.rar
│
├─src
│ app_gui.py
│ app_http.py
│ bottle.py
│ http_server.py
│ util.py
│
├─tool
│ │ upx-3.95-win64.zip
│ └─upx-3.95-win64
│ upx.exe
│
└─www
│ 404.html
│ manage.html
│ vote_client.html
│
└─res
コンパイル
1. 二次パッケージング ツールwinrar
のインストール パスは「C:\Program Files\WinRAR\WinRAR.exe」です。そうでない場合は、パラメーターを変更してbuild.bat
くださいwinrar
。
2. Win10:anaconda prompt
ターミナルを開いて実行しbuild.bat
、app-dist
ディレクトリに生成しexe
、rar
ソース データ ディレクトリを作成しますvoteMain
。
3.環境内の実行スクリプトbuild.ps1
であり、テストされていません。powershell
シナリオ展開
50-200 人用のローカル会議ホール [コンピューター 1 台、3000M をサポートする WIFI6 ルーター 1 台] Huawei の理論では、128 台の端末をサポートしています。
配備計画 1: 100 人未満
必要なハードウェア機器: コンピューター 1 台、ルーター 1 台
導入案 2: 学校内に 100 人以上いる場合は、2 ~ 3 台の WIFI6 を使用して、簡単なローカル ネットワークを作成します。
ハードウェア機器が必要: コンピューター 1 台、ルーター 2 ~ 3 台
インストールして実行する
1.rar
解凍を使用してインストールし、ソースファイルディレクトリを生成し、入力して検索しvoteMain.exe
て実行します。
2.exe
インストールを使用してソース ファイル ディレクトリを生成し、デスクトップにショートカットを生成し、ダブルクリックして実行します。
3. cmd 操作パラメーター
Usage: voteMain.exe [options]
Options:
-h, --help show this help message and exit
-p PORT, --port=PORT 指定web服务端口,默认值【8080】
--gui GUI运行,默认值【True】
存在の問題
なし