📄 registeruser.cpp
字号:
//*********************************************
//*** 软件名称:我为聊狂客户端
//*** 文件名称:RegisterUser.cpp
//*** 功能:实现用户信息的注册
//*** 软件开发:顾加平
//*** 邮箱地址:jiapingboy@163.com
//*** 更多软件下载:jiaping.9xc.com
//*********************************************
//以下代码全是作者个人写的,版权属于作者个人,不准随意复制传播!!
#include "stdafx.h"
#include "Client.h"
#include "RegisterUser.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PORT 5001
#define DESTIPADDR "127.0.0.1"
/////////////////////////////////////////////////////////////////////////////
// CRegisterUser dialog
CRegisterUser::CRegisterUser(CWnd* pParent /*=NULL*/)
: CDialog(CRegisterUser::IDD, pParent)
{
//{{AFX_DATA_INIT(CRegisterUser)
m_strAddress = _T("");
m_iAge = 0;
m_strHomePage = _T("");
m_strMail = _T("");
m_strPassword = _T("");
m_strPetName = _T("");
m_strRealName = _T("");
m_strRePassword = _T("");
m_strSchool = _T("");
//}}AFX_DATA_INIT
}
void CRegisterUser::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRegisterUser)
DDX_Control(pDX, IDC_JOB, m_job);
DDX_Control(pDX, IDC_CONSTALLATION, m_constallation);
DDX_Control(pDX, IDC_BLOOD, m_blood);
DDX_Control(pDX, IDC_SHUXIANG, m_sx);
DDX_Control(pDX, IDC_SEX, m_sex);
DDX_Control(pDX, IDC_MYICON, m_myIcon);
DDX_Text(pDX, IDC_ADDRESS, m_strAddress);
DDX_Text(pDX, IDC_AGE, m_iAge);
DDV_MinMaxInt(pDX, m_iAge, 1, 120);
DDX_Text(pDX, IDC_HOMEPAGE, m_strHomePage);
DDX_Text(pDX, IDC_MAIL, m_strMail);
DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
DDX_Text(pDX, IDC_PETNAME, m_strPetName);
DDX_Text(pDX, IDC_REALNAME, m_strRealName);
DDX_Text(pDX, IDC_REPASSWORD, m_strRePassword);
DDX_Text(pDX, IDC_SCHOOL, m_strSchool);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRegisterUser, CDialog)
//{{AFX_MSG_MAP(CRegisterUser)
ON_BN_CLICKED(IDC_REGISTER, OnRegister)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRegisterUser message handlers
BOOL CRegisterUser::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//初始化头形下拉框
m_myIcon.SetItemHeight (-1, m_myIcon.m_sizeIcon .cy + 6);
char str_pic[20];
for(int i=1; i<27; ++i)
{
sprintf(str_pic, "face\\%d.ico",i);
m_myIcon.AddIcon (str_pic);
}
m_myIcon.SelectIcon (0);
//初始化其它下拉框
m_sex.InsertString (-1, _T("男"));
m_sex.InsertString (-1, _T("女"));
m_sex.SetCurSel (0);
m_sx.InsertString (-1, _T("鼠"));
m_sx.InsertString (-1, _T("牛"));
m_sx.InsertString (-1, _T("虎"));
m_sx.InsertString (-1, _T("兔"));
m_sx.InsertString (-1, _T("龙"));
m_sx.InsertString (-1, _T("蛇"));
m_sx.InsertString (-1, _T("马"));
m_sx.InsertString (-1, _T("羊"));
m_sx.InsertString (-1, _T("猴"));
m_sx.InsertString (-1, _T("鸡"));
m_sx.InsertString (-1, _T("狗"));
m_sx.InsertString (-1, _T("猪"));
m_sx.SetCurSel (0);
m_blood.InsertString (-1, _T("A"));
m_blood.InsertString (-1, _T("B"));
m_blood.InsertString (-1, _T("O"));
m_blood.InsertString (-1, _T("AB"));
m_blood.InsertString (-1, _T("其它"));
m_blood.SetCurSel (0);
m_constallation.InsertString (-1, _T("水瓶座"));
m_constallation.InsertString (-1, _T("双鱼座"));
m_constallation.InsertString (-1, _T("牧羊座"));
m_constallation.InsertString (-1, _T("金牛座"));
m_constallation.InsertString (-1, _T("双子座"));
m_constallation.InsertString (-1, _T("巨蟹座"));
m_constallation.InsertString (-1, _T("狮子座"));
m_constallation.InsertString (-1, _T("处女座"));
m_constallation.InsertString (-1, _T("天秤座"));
m_constallation.InsertString (-1, _T("天蝎座"));
m_constallation.InsertString (-1, _T("射手座"));
m_constallation.InsertString (-1, _T("魔羯座"));
m_constallation.SetCurSel (0);
m_job.InsertString (-1,_T("软件工程师"));
m_job.InsertString (-1, _T("广告设计师"));
m_job.InsertString (-1, _T("医生"));
m_job.InsertString (-1, _T("教师"));
m_job.InsertString(-1, _T("网页设计师"));
m_job.InsertString (-1,_T("公务员"));
m_job.InsertString (-1, _T("管理人员"));
m_job.InsertString (-1, _T("老板"));
m_job.InsertString (-1, _T(""));
m_job.InsertString(-1, _T("网页设计师"));
m_job.SetCurSel (0);
//初始化按扭
m_Cancel.SubclassDlgItem (IDOK, this);
m_Cancel.SetIcon (IDI_CANCEL);
m_Cancel.SetColor (CButtonST::BTNST_COLOR_BK_IN, RGB(198, 211, 238));
m_Cancel.DrawBorder (TRUE, TRUE);
m_Reg.SubclassDlgItem (IDC_REGISTER, this);
m_Reg.SetIcon (IDI_REG);
m_Reg.SetColor (CButtonST::BTNST_COLOR_BK_IN, RGB(198, 211, 238));
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//注册用户名
void CRegisterUser::OnRegister()
{
if( Init_Net() ==FALSE)
{
return;
}
else
{
int iStatus;
//发送注册信息
UpdateData(TRUE);
if(m_strPetName.IsEmpty ())
{
MessageBox(_T("对不起,你忘记输入昵称了"), _T("我为聊狂"),
MB_ICONINFORMATION);
return;
}
if(m_strRealName.IsEmpty ())
{
MessageBox(_T("对不起,你忘记输入姓名了"), _T("我为聊狂"),
MB_ICONINFORMATION);
return;
}
//验证密码
if(m_strPassword != m_strRePassword)
{
MessageBox(_T("对不起,你输入的密码不正确"), _T("我为聊狂"),
MB_ICONINFORMATION);
return;
}
char sendBuffer[250];
char recvBuffer[20];
//获得下拉列表框的一些选项
CString strSex, strSx, strBlood, strConstallation, strJob;
int imyIcon = m_myIcon.GetCurSel () +1 ;
m_sex.GetLBText (m_sex.GetCurSel (), strSex);
m_sx.GetLBText (m_sx.GetCurSel (), strSx);
m_blood.GetLBText (m_blood.GetCurSel (), strBlood);
m_constallation.GetLBText (m_constallation.GetCurSel (), strConstallation);
m_job.GetLBText (m_job.GetCurSel (), strJob);
//组合发送字段
sprintf(sendBuffer, "Reg:%i,%s,%i,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\0",
imyIcon, m_strPetName, m_iAge, strSex, m_strPassword,
m_strRealName, strSx, strBlood, strConstallation,
m_strSchool, strJob, m_strHomePage, m_strAddress,
m_strMail);
//发送字段
iStatus = send(m_destSocket, sendBuffer, strlen(sendBuffer), 0);
if( iStatus == SOCKET_ERROR )
{
MessageBox(_T("注册信息发送失败"), _T("我为聊狂"),
MB_ICONERROR);
return;
}
else
{
//接收注册返回信息
iStatus =recv(m_destSocket, recvBuffer, 20, 0);
if(iStatus == SOCKET_ERROR)
{
MessageBox(_T("接收注册返回信息失败"), _T("我为聊狂"),
MB_ICONERROR);
return;
}
recvBuffer[iStatus]='\0';
//确认接收信息
if(strcmp(recvBuffer,"success") ==0)
{
MessageBox(_T("注册成功"), _T("我为聊狂"),
MB_ICONINFORMATION);
//写入相应用户注册类
sprintf(userInfo.m_strPassword ,_T("%s"), m_strPassword);
sprintf(userInfo.m_strPetName ,_T("%s"), m_strPetName);
sprintf(userInfo.m_strRealName ,_T("%s"), m_strRealName);
sprintf(userInfo.m_strSchool ,_T("%s"), m_strSchool);
sprintf(userInfo.m_strSex ,_T("%s"), strSex);
sprintf(userInfo.m_strSx ,_T("%s"), strSx);
userInfo.m_iAge = m_iAge;
userInfo.m_imyIcon =imyIcon;
sprintf(userInfo.m_strAddress, _T("%s"), m_strAddress);
sprintf(userInfo.m_strBlood, _T("%s"), strBlood);
sprintf(userInfo.m_strConstallation , _T("%s"), strConstallation);
sprintf(userInfo.m_strHoemPage ,_T("%s"), m_strHomePage);
sprintf(userInfo.m_strJob ,_T("%s"), strJob);
sprintf(userInfo.m_strMail ,_T("%s"), m_strMail);
OnOK();
}
else if(strcmp(recvBuffer,"repeat")==0)
{
MessageBox(_T("昵称重复,请换一个"), _T("我为聊狂"),
MB_ICONERROR);
}
else
{
MessageBox(_T("注册失败"), _T("我为聊狂"),
MB_ICONERROR);
}
}
}
}
//初始化网络
BOOL CRegisterUser::Init_Net()
{
int status;
WSAData data;
WSAStartup(MAKEWORD(1, 1), &data);
unsigned long destIPAddr = inet_addr(DESTIPADDR);
m_destSockAddr.sin_family =AF_INET;
m_destSockAddr.sin_port =htons(PORT);
m_destSockAddr.sin_addr.s_addr = destIPAddr;
//初始化SOCKET
m_destSocket = socket(AF_INET, SOCK_STREAM, 0);
if(m_destSocket == INVALID_SOCKET)
{
MessageBox(_T("初始化SOCKET出错!"), _T("我为聊狂"), MB_ICONERROR);
status =WSACleanup();
if(status == SOCKET_ERROR)
{
MessageBox(_T("网络卸载失败!"), _T("我为聊狂"), MB_ICONERROR);
}
return FALSE;
}
//边接到目标机器
status = connect(m_destSocket, (LPSOCKADDR)&m_destSockAddr, sizeof(SOCKADDR_IN));
if(status == SOCKET_ERROR)
{
MessageBox(_T("无法连接到数据库服务器"), _T("我为聊狂"), MB_ICONERROR);
return FALSE;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -