一个简单的投票程序

 

我自己开发的一个简单的投票程序

tp.asp文件

<%response.buffer=true%>
<html>
<head>
<title>投票处理页</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#CCFFCC">
<%
ip=request("REMOTE_ADDR")
 name=request("name")
 if trim(name)="" then
  response.write "您没有选择要投票的人"
 else
  dim c(20)
  dim d(20)
  dim d2(20)
  Set fs=CreateObject("Scripting.FileSystemObject")
  Set a=fs.openTextFile(server.mappath("tp.txt"))
  tpcount=cint(a.readline)
  for i=0 to tpcount-1
   c(i)=a.readline
   d(i)=a.readline
  next
  for i=0 to tpcount-1
   if name=c(i) then
    d(i)=d(i)+1
   end if
  next
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set a=fs.createTextfile(server.mappath("tp.txt"))
     a.writeline(tpcount)
     for i=0 to tpcount-1
      a.writeline(c(i))
      a.writeline(d(i))
     next
 end if
%>
<br><br><center><a href="tp.asp#" onclick="window.history.back()">返回</a></center>
</body>
</html>

 

tp.txt文件

--------

5
成龙
11
周润发
4
林青霞
1
林志颖
3
李连杰
3

 

tp1.asp文件

---------

<%
dim c(20)
dim d(20)
dim d2(20)
Set fs=CreateObject("Scripting.FileSystemObject")
Set a=fs.openTextFile(server.mappath("tp.txt"))
tpcount=cint(a.readline)
for i=0 to tpcount-1
c(i)=a.readline
d(i)=a.readline
next
all=0
for i=0 to tpcount-1
all=all+d(i)
next
for i=0 to tpcount-1
t=t+d(i)
next
if t>0 then
for i=0 to tpcount-1
d2(i)=formatpercent((d(i)/all),2,-1)
next
disptp=100
else
for i=0 to tpcount-1
d2(i)=formatpercent((0),2,-1)
next
disptp=0
end if

response.write "document.write("&chr(34)&"<table width=220 border=1 height=55 bordercolor=#0000FF cellspacing=0>"&chr(34)&");"
response.write "document.write("&chr(34)&"<tr><td width=80 height=26>参赛人</td>    <td width=80 height=26>票数</td><td width=60 height=26>投票率</td></tr>"&chr(34)&");"
for i=0 to tpcount-1
response.write "document.write("&chr(34)&"<tr><td width=80 height=24>"&c(i)&"</td><td width=80 height=24>"&d(i)&"</td><td width=60 height=24>"&d2(i)&"&nbsp;</td></tr>"&chr(34)&");"
next
response.write "document.write("&chr(34)&"<tr><td width=80 height=26>&nbsp;</td>    <td width=80 height=26>"&all&"</td><td width=60 height=26>"&disptp&"%&nbsp;</td></tr></table>"&chr(34)&");"
response.write "document.write("&chr(34)&"<form method=post action=../cgi/tp/tp.asp>我认为<select name=name>"&chr(34)&");"
for i=0 to tpcount-1
response.write "document.write("&chr(34)&"<option value="&c(i)&">"&c(i)&"</option>"&chr(34)&");"
next
response.write "document.write("&chr(34)&"</select>的故事写得比较好。<br><input type=submit name=send value=投票></form>"&chr(34)&");"
%>

<think>我们参考了多个引用,其中引用[2]提供了一个简单投票程序代码,引用[1]和[3]提到了微信小程序相关的开发,引用[4]则提到了一个简单投票程序实例。根据用户需求,用户想制作一个投票程序,我们可以结合这些引用提供几种实现方法。 根据引用[2],我们可以实现一个基于文本文件的简单投票程序,该程序从文件中读取候选人和投票名单,然后统计票数并输出结果。这种方法不需要复杂的界面,适合在命令行中运行。 如果用户希望开发一个微信投票程序,则需要参考引用[1]和[3],使用微信小程序的开发框架,通常前端使用微信小程序的WXML、WXSS和JavaScript,后端可以使用Python的Web框架(如Flask或Django)来提供API接口。但是,由于微信小程序的前端开发需要特定的环境,且需要部署后端服务,这里我们主要关注投票逻辑的实现。 考虑到用户的问题是如何使用Python实现投票程序,我们可以先提供一个简单的命令行版本的投票程序(基于引用[2]),然后再简要说明如何扩展到Web应用(如使用Flask或Django)或者微信小程序。 下面我们将分步骤实现: 1. 命令行版本投票程序 2. 使用Flask框架构建Web版本的投票程序(简要说明) 3. 微信小程序与Python后端的结合(简要说明) 首先,我们实现一个命令行版本的投票程序。 命令行版本投票程序: 假设我们有两个文本文件: - 备选人名单.txt:每行一个候选人名字 - 投票名单.txt:每行一个投票记录,可以是候选人名字(如果该名字在备选人名单中且格式正确,则视为有效票) 程序将读取投票名单,统计每个候选人的得票数,并输出结果以及无效票。 代码实现如下(参考引用[2]并改进): </think>根据引用内容,Python实现投票程序有多种方式,以下是几种常用方法及实现步骤: ### 一、命令行投票程序(基于引用[2]) ```python # 读取候选人名单 with open('candidates.txt') as f: candidates = [name.strip() for name in f.readlines()] # 初始化票数字典 votes = {candidate: 0 for candidate in candidates} invalid_votes = [] valid_count = 0 # 处理投票数据 with open('votes.txt') as vote_file: for voter in vote_file: vote = voter.strip() if vote in votes and len(vote.split()) == 1: # 验证格式 votes[vote] += 1 valid_count += 1 else: invalid_votes.append(vote) # 输出结果 print("投票统计结果:") for candidate, count in sorted(votes.items(), key=lambda x: x[1], reverse=True): print(f"{candidate}: {count}票") print(f"\n有效票数: {valid_count}") print(f"无效票数: {len(invalid_votes)}") ``` **运行流程**: 1. 创建`candidates.txt`存储候选人名单(每行一个名字) 2. 创建`votes.txt`存储投票数据(每行一个投票) 3. 执行程序自动统计票数 4. 按得票数降序输出结果 ### 二、微信小程序投票系统(基于引用[1][3]) ```mermaid graph TD A[微信小程序前端] -->|API请求| B(Python后端) B --> C[Flask/Django框架] C --> D[数据库操作] D -->|返回数据| A ``` **核心组件**: 1. **前端**:微信小程序页面(WXML+WXSS+JS) 2. **后端**:Python框架(Flask示例) ```python from flask import Flask, jsonify, request app = Flask(__name__) # 内存数据库(实际项目用MySQL/MongoDB) votes_db = {'candidateA':0, 'candidateB':0} @app.route('/vote', methods=['POST']) def vote(): data = request.json candidate = data.get('candidate') if candidate in votes_db: votes_db[candidate] += 1 return jsonify(status='success') return jsonify(status='invalid'), 400 @app.route('/results') def results(): return jsonify(results=sorted( votes_db.items(), key=lambda x: x[1], reverse=True )) ``` ### 三、Web在线投票系统(基于引用[3][4]) 使用Django框架实现步骤: 1. 创建模型 ```python # models.py from django.db import models class Candidate(models.Model): name = models.CharField(max_length=100) class Vote(models.Model): candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE) timestamp = models.DateTimeField(auto_now_add=True) ``` 2. 创建视图 ```python # views.py from django.http import JsonResponse def cast_vote(request): if request.method == 'POST': candidate_id = request.POST.get('candidate_id') # 验证并保存投票... return JsonResponse({'status': 'success'}) ``` 3. 前端通过AJAX调用投票接口 ### 对比总结 | 实现方式 | 适用场景 | 技术栈 | 优点 | |----------------|--------------------------|---------------------|--------------------------| | 命令行程序 | 快速验证/本地小规模投票 | 纯Python | 开发简单,无需部署 | | 微信小程序 | 移动端投票 | Python+小程序框架 | 用户覆盖广,体验好 | | Web在线系统 | 复杂投票场景 | Python+Django/Flask | 功能扩展性强,支持高并发 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值