ディベート投票ツール実装コード解説

コードアドレス: 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.batapp-distディレクトリに生成しexerarソース データ ディレクトリを作成しますvoteMain

3.環境内の実行スクリプトbuild.ps1であり、テストされていません。powershell

シナリオ展開

50-200 人用のローカル会議ホール [コンピューター 1 台、3000M をサポートする WIFI6 ルーター 1 台] Huawei の理論では、128 台の端末をサポートしています。

配備計画 1: 100 人未満

必要なハードウェア機器: コンピューター 1 台、ルーター 1 台

无线链接
无线链接
WIFI-6路由器
电脑web服务器
手机

導入案 2: 学校内に 100 人以上いる場合は、2 ~ 3 台の WIFI6 を使用して、簡単なローカル ネットワークを作成します。

ハードウェア機器が必要: コンピューター 1 台、ルーター 2 ~ 3 台

链接
有线AP
有线AP
无线链接
WIFI-6路由器
电脑web服务器
WIFI-6
WIFI-6
手机
手机
手机

インストールして実行する

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】

存在の問題

なし

おすすめ

転載: blog.csdn.net/liuzhuchen/article/details/121686798