学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> 用VB设计“投票评选”程序的简单方法


用VB设计“投票评选”程序的简单方法


  简介:

  正逢2005年年末,国内各媒体都掀起了“2005年度XXXX投票评选”的热潮,就拿CCTV央视来说,各种命题的“投票评选”活动就不下十多项;对这样题目在编程中如何实现呢?我想主要从三个方面入手;第一,解决好参加评比候选人数据装入;第二,采集好投票人有效点击次数的相关信息;第三,确保参加评比候选人获票数与投票人的投出票数的一致性。掌握好这三点后,其它问题就会迎刃而解。使用Delphi、PB、VB等语言得到较理想编程设计与实施。

  为了简便起见下面将以“2005CCTV中国经济年度人物评选人气榜”的信息为数据源,把用VB、SQL Server 2000数据库设计“投票评选”程序的简单方法介绍给大家。如图1所示,为“投票评选”窗体界面,下面分三个问题介绍:


图片1

  一、用VB设计“投票评选”程序的流程及要点

  1.2005年参加评比候选人数据的装入

  <1>.在数据库中创建[候选代表获票表-(简称:表1)]和[投票参与表-(简称:表2)]

  表1:A05_Start 数据结构 表2: A05_Piao 数据结构
  表1字段有:[姓名、单位、职务、图片、长度、票数] 记录数:20条。
  表2字段有:[身份、序号、姓名、票数、Flag] 记录数:若干。

  <2>. 将“中国经济年度人物候选人20位”数据装入ListBox控件中在ADO的连接方式下进行SQL Server2000数据库连接;将已经编辑通过的数据源表中所有记录项(包括:姓名、单位、职务)信息,按姓氏笔画为序地读到FrmXP窗体的ListBox控件中,请见如图1所示。

  2.采集好投票评比人有效点击次数的相关信息

  【参与投票为有效】的充分必要条件是①.满10票才算有效投票;②.填入身份证号的位数合法。接收这样的数据信息才视为“有效”,才能记录“在案”。

  <1>.数据采集需简捷明快

  对公众参与操作的程序界面,要允许参与人使用鼠标“可反复地点击[选择],可打“√”可去掉“√”,以最终符合“满10票才算有效投票”为原则。

  在ListBox控件中采集数据据的范围及算法:

  范围:①总点击次数;②.有效点击次数;③.收集候选人姓名;④.收集候选人序

  号;⑤.收集打“√”可去掉“√”状态。

  算法:这里与算法相关项是【②.有效点击次数】如:在姓名前点击:(加上“√”= 真)设置为1;后来在点击过的姓名前:(去掉“√”=假)设置为-1。

  即:【有效点击次数】------初值等于零;

  如果,点击:(加上“√”=真)?有效点击数=有效点击数+1

  如果,点击:(去掉“√”=假)?有效点击数=有效点击数-1

  程序中要求此数据不允许小于10,这样就明确了对参与者出错的提示条件。

  3.确保参加评选的候选人获票数与投票人的投票数的一致性

  在正确数据采集的基础上,确保【获票数】与【投票数】一致性问题能用较简单地利用SQL语句进行处理,可随时显示获票【结果】。

  <1>.审核参与者身份证号合法性,主要包括:旧证(15位)新证(18位)。

  <2>.利用“视图”将每一次有效数据,按“候选人姓名”分组求和,计算出票数。

  <3>.使用SQL语句的更新操作:Update A05_start set 票数=票数+视图.票数 条件:两个表的姓名相等。

  二、用VB设计“投票评选”程序主要代码

  1.将“候选人物20位”数据的装入ListBox控件代码

Sub p_abc()
 RS.Open " Select 姓名,职务,单位From A05_start Order By id", mConn, adOpenStatic
 Dim iSize, iNo As Long
 Dim Lname As String
 iNo = RS.RecordCount
 If iNo = 0 Then
  MsgBox "数据库中的数据项不能为空,请重新设置", vbOKOnly, "信息提示"
  Exit Sub
 End If
 Do While Not RS.EOF
  iSize = 0
  iSize = Len(RS.Fields("姓名"))
  Lname = RS.Fields("姓名")
  lstFields.AddItem Lname + Space(2) + RS.Fields("单位") + RS.Fields("职务")
  RS.MoveNext
  Lname = ""
 Loop
 lstFields.ListIndex = -1
 RS.Close
End Sub

  2.采集数据ListBox控件下的程序代码

Private Sub lstFields_ItemCheck(Item As Integer) '现场采集的过程
 P = P + 1 '获取总次数
 A_name(P) = Mid(lstFields.List(lstFields.ListIndex), 1, 3) '获取姓名
 A_No(P) = lstFields.ListIndex '获取序号
 A_TF(P) = lstFields.Selected(lstFields.ListIndex) '获取逻辑值
 If A_TF(P) = "True" Then '获取有效的点击次数
  P1 = P1 + 1
 Else
  P1 = P1 - 1
 End If
'End Sub

  3.更新“候选人”获票数据的主要程序代码(【投票】按钮下)

Private Sub Command2_Click()
 Dim P_No, lNo As Integer
 Dim P_name As String
 ……
 '此处略掉部分代码,它们主要有:
 ①.判断身份证号(旧15)位或(新18)位
 ②.判断[身份证号]的位数有误的提示
 ③.判断[满10票为有效投票]的提示
 RS.Open " Select * From A05_piao Where 身份='" & Text1.Text & "' Order By id", mConn, adOpenStatic
 lNo = 0
 lNo = RS.RecordCount
 RS.Close
 If lNo > 0 Then
  MsgBox "对不起,您已经投过票,谢谢合作!!!", vbOKOnly, " > 操作信息提示 <"
  Text1.SetFocus
  Exit Sub
 End If
 For J = 1 To P '根据现场采集总次数,将数据插入表2
  If A_No(J) >= 0 Then
   P_name = A_name(J)
   If A_TF(J) = "True" Then
    P_No = 1 '首此点击为 “勾”时为:1
   Else
    P_No = -1 '原已点后去掉“勾”时为:-1
   End If
  End If
  mConn.Execute "Insert Into A05_piao (身份,序号,姓名,票数) VALUES ('" & Text1.Text & "'," & A_No(J) & ",'"
& A_name(J) & "'," & P_No & ")"
 Next J
 '--更新A05_start表1的内容
 '--V_sum1为视图文件其格式:Select 姓名 Sum(票数) AS "票数" From A05_Piao Where flag is Null GROUP
By 姓名
 mConn.Execute " Update A05_start Set A05_start.票数 = A05_start.票数 + V_sum1.票数 From
 A05_start,v_sum1 Where A05_start.姓名 = V_sum1.姓名 "
 mConn.Execute " Update A05_piao Set flag=1" '参与过的标记
 Call A_abc '记票后清除各个数组及变量供采集数据用
 lstFields.Clear '记票后清空ListBox控件。
 Call p_abc '记票后重新装入20位候选人物信息
 Text1.Text = "" '记票后清空“身份证”输入框中信息
 lstFields.SetFocus '记票后焦点移到ListBox中
End Sub

  4.界面的设置程序代码

  <1>.投票窗体设置,窗体名:FrmXP

Option Explicit
 Dim mConn As ADODB.Connection
 Dim RS As New ADODB.Recordset
 DIM StrCnn As String '连接字符串
 Dim A_name() As String '定义姓名数组
 Dim A_No() As Integer '定义编号数组
 Dim A_TF() As String '逻辑值判断(鼠标的点击过程)
 Dim I, J, P,P1 As Integer

  <2>.数据库的连接

Private Sub Form_Load()
 Set mConn = New Connection
 StrCnn="Provider=SQLoledb;DataSource=USER2;Userid=sa;pwd=;Initial atalog=My_data"
 mConn.CursorLocation = adUseClient '设置为客户端
 mConn.Open StrCnn
 Call p_abc '此过程为装入“候选20位”数据
 Call A_abc '此过程清空各个数组及变量采集数据用
End Sub

  <3>.使用控件清单

  标签控件2个,命令按钮控件4个,文本框控件1个,列表框控件1个。

  <4>.模块的主要"引用"

  VB和SQL Server2000下模块引用[ADO]:Microsoft ActiveX Data Object 2.6 Library

  三、对【结果】【重填】【看图片】按钮的说明

  1.【结果】按钮下将调用“前八名结果”图形窗体

frm_GRP.show vbmodal

  此界面的代码比较简单,即:将获取票数前八名的候选人物姓名和票数装入到Mschart控件,以直方图形式体现,图形为动态(随票数而变化),图形窗体与程序代码略掉。

  2.【重填】主要清空身份证文本框和重新将20位候选人数据装入。

  3.【看图片】按钮下将调用“20位中国经济年度人物”图片窗体 如图2所示

frm_Pic.show vbmodal

  此窗体是将“中国经济年度人物”姓名和图片数据读到frm_Pic界面的控件中,以下三种:

  图像Image(0...19);

  图片框picture(0…19);

  标签label2(0..,19)控件;

  在数据库表1的循环中,将图片数据和姓名装入到符合其下标的控件中,请见如图2所示,此处代码较长,故略掉。


图片2

  四、 编后语

  用VB设计"投票评比"程序的简单方法中,关键要思路清楚、考虑周到、设计合理到位。首先,做到文中表1与表2数据关系准确(基于数据采集的准确上)。其次,让参与投票的人士在操作程序上感到方便,快捷。最后,在设计类似程序时一定要理论联系实际,结合你现场的具体环境,抓好整个流程的关键环节、以点代面、活学活用、让参与投票使用者都喜欢。


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"用VB设计“投票评选”程序的简单方法"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 用VB设计“投票评选”程序的简单方法 相关内容
Google搜索中 用VB设计“投票评选”程序的简单方法 相关内容
雅虎中 用VB设计“投票评选”程序的简单方法 相关内容
Sogou搜索中 用VB设计“投票评选”程序的简单方法 相关内容

相关软件 最新回复帖子:

·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化


  相关软件 用VB设计“投票评选”程序的简单方法相关文章
用VB备份和恢复SQL Server数据库的方法 利用Visual Basic开发SAP接口程序初探
在VB环境中操作三维模型的实现方法 基于Visual Basic 6的网络程序设计
VB开发应用软件之写在动手之前 VB第三方控件实现XP资源管理器垂直栏
Viusal Basic程序员的.NET泛型编程 用VB编程实现图像的熠熠生辉效果
VB6中使用错误处理对程序速度的影响 VB实现文字“闪入”显示的特殊效果
用Visual Basic轻松实现看图软件 浅谈用VB6.0编写“特洛伊木马”程序
浅析ADO 事件模型 ADO数据访问模型初学者入门
Visual Basic常用术语释义 VB中利用API函数实现屏幕颜色数设定
探索VB系列中的事件处理的奥秘 VB中用第三方控件打造Office XP菜单
VB中利用第三方控件实现软件在线升级 用Visual Basic实现Office助手