📄 clsballotma.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 + -