⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clsballotma.cpp

📁 利用MFC,实现投票系统
💻 CPP
字号:
// clsBallotMa.cpp : implementation file
//

#include "stdafx.h"
#include "ballot.h"
#include "clsBallotMa.h"
#include "ballotDlg.h"
#include "clsBallot.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// clsBallotMa dialog


clsBallotMa::clsBallotMa(CWnd* pParent /*=NULL*/)
	: CDialog(clsBallotMa::IDD, pParent)
{
	//{{AFX_DATA_INIT(clsBallotMa)
	m_Value_Ma = _T("");
	//}}AFX_DATA_INIT
}


void clsBallotMa::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(clsBallotMa)
	DDX_Control(pDX, IDC_LIST1, m_maList);
	DDX_Control(pDX, IDC_EDIT1, m_Edit_MA);
	DDX_Text(pDX, IDC_EDIT1, m_Value_Ma);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(clsBallotMa, CDialog)
	//{{AFX_MSG_MAP(clsBallotMa)
	ON_BN_CLICKED(IDOK2, OnBallot)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// clsBallotMa message handlers

void clsBallotMa::OnCancel() 
{
	CBallotDlg test;
	CDialog::OnCancel();
	test.DoModal();
}

BOOL clsBallotMa::OnInitDialog() 
{
	CStdioFile readFile;
	CString    strText;
	CDialog::OnInitDialog();
    m_maList.ResetContent();//清除列表框中的所有数据
    if(readFile.Open("candidate.dat",CStdioFile::modeRead | CStdioFile::typeText)==TRUE)
	{
		while(readFile.ReadString(strText))
		{
			m_maList.AddString(strText);
		}
		readFile.Close();
	}	
	m_Edit_MA.SetFocus();
	// TODO: Add extra initialization here
	return FALSE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

int clsBallotMa::intGetNum(CString vPararm)
{
	CString Temp;
	int intReturn=0;
	clsBallot ballot;
	CStringArray aryTemp;
	if(vPararm=="")
	{
		return -2;
	}
	vPararm=vPararm+",";
	aryTemp.RemoveAll();
	ballot.decodeCString(vPararm+",",aryTemp);
	Temp=(CString)aryTemp[2];
	intReturn=atoi(Temp);
	return intReturn;
}

void clsBallotMa::sort(CStringArray & aryParam)
{
    int i=0,j=0;
	CString strTemp;//哨兵
	int b=aryParam.GetSize();
	for(i=0;i<aryParam.GetSize()-1;i++)
	{
		for(j=i+1;j<aryParam.GetSize();j++)
		{
			int max1=intGetNum((CString)aryParam[i]);
			int max2=intGetNum((CString)aryParam[j]);
			if(max1==-2||max2==-2)
			{
				break;
			}
			else
			{
				if(max1<max2)
				{
					strTemp=aryParam[i];
					aryParam[i]=aryParam[j];
				    aryParam[j]=strTemp;
				}
			}	
		}
	}
}

void clsBallotMa::OnBallot() 
{
	CStringArray arryTemp;
	CStringArray arryFind;
	CStringArray aryData;
	CStdioFile readFile;
	int intFlag=0;
	CFile file;
	clsBallot ballot;
	int intAdd=0;
	CString Temp,name,num,write;
	int intCount=0;
	UpdateData(true);
	if(strlen(m_Value_Ma)==0)
	{
		MessageBox("没有候选人信息记录,不能进行投票操作","电子投票系统",MB_OK);
		m_Edit_MA.SetFocus();
	}
	else
	{
	    intCount=m_maList.GetCount();
		for(int i=0;i<intCount;i++)
		{
			m_maList.GetText(i,Temp);
			arryTemp.RemoveAll();
			ballot.decodeCString(Temp+",",arryFind);
		    if((CString)arryFind[0]==m_Value_Ma)
			{
			    name=(CString)arryFind[1];
				num=(CString)arryFind[0];
				break;
			}
		}
		if(strlen(num)==0)
		{
			MessageBox("投票人的编号不存在,不能进行投票操作","电子投票系统",MB_OK);
            m_Edit_MA.SetFocus();
		}
		else //投票操作
		{
             if(readFile.Open("data.dat",CStdioFile::modeRead | CStdioFile::typeText)!=TRUE)//如果文件不存在则
			 {
				 file.Open("data.dat",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);
				 file.SeekToEnd();
				 write=num+","+name+","+"1"+"\r\n";
				 file.Write(write,strlen(write));
	             file.Close();
				 m_Value_Ma="";
				 UpdateData(false);
				 MessageBox("编号 "+num+" 投票成功!","电子投票系统",MB_OK);
		         m_Edit_MA.SetFocus();
			 }
			 else //文件存在
			 {
				 aryData.RemoveAll();
				 CString strRead;
				 while(readFile.ReadString(strRead))
				 {
					 if(Temp!="")
					 {  
						 aryData.Add(strRead);
						 strRead="";
					 }
				 }
				
				 readFile.Close();
				 //aryData 存放着data.dat 文件的所有内容
				 intFlag=0;
				 for(int j=0;j<aryData.GetSize();j++)
				 {
					 arryTemp.RemoveAll();
					 ballot.decodeCString((CString)aryData[j]+",",arryTemp);
					 if(arryTemp[0]==m_Value_Ma)
					 {
						 Temp="";
						 intAdd=atoi((CString)arryTemp[2]);
						 intAdd++;
						 Temp.Format("%d",intAdd);
						 write=m_Value_Ma+","+name+","+Temp;
						 aryData.SetAt(j,write);
						 sort(aryData);
						 //重写data.dat 文件
                         file.Open("data.dat",CFile::modeCreate|CFile::modeWrite);
						 for(int ii=0;ii<aryData.GetSize();ii++)
						 { 
							 write=(CString)aryData[ii]+"\r\n";
							 file.Write(write,strlen(write));
						 }
						 file.Close();
						 m_Value_Ma="";
						 UpdateData(false);
						 MessageBox("编号 "+(CString)arryTemp[0]+" 投票成功!","电子投票系统",MB_OK);
						 m_Edit_MA.SetFocus();
						 intFlag=3;
						 break;
					   }
				 }
				 
				 if(intFlag==0)
				 {
					 file.Open("data.dat",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);
					 file.SeekToEnd();
					 write=num+","+name+","+"1"+"\r\n";
					 file.Write(write,strlen(write));
					 file.Close();
					 m_Value_Ma="";
					 UpdateData(false);
					 MessageBox("编号 "+num+" 投票成功!","电子投票系统",MB_OK);
					 m_Edit_MA.SetFocus();
				 }
			 }
		}
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -