用户管理程序--供新手练习
这个小例子是让新手复习对话框和控件的,更多内容见http://www.vcshare.net/ShouKo/ShouKo_193.htm。
第一个版本:
只能编辑一个用户,用户只有三项信息:姓名、年龄、性别,单击OK按钮时,将此用户的信息弹出来。
新建一个基于对话框的工程UserInput。
增加一个静态文本框,标题为“姓名”。
增加一个编辑框,ID为IDC_NAME,关联一个CString型的变量m_strName。
增加两个单选按钮,ID为ID_MAIL、ID_FEMEIL,标题分别为“男”、“女”,第一个单选按钮选中群组(Group)属性。
为每一个单选按钮关联一个int变量m_iSex。
增加一个编辑框,ID为ID_AGE,关联一个int型的变量m_iAge。
为确定按钮增加响应函数,代码发下:
void CUserInputDlg::OnOK()
{
UpdateData();
char* szSex[] = {"男","女"};
CString strMess ;
strMess.Format("姓名=%s\n性别=%s\n年龄=%d\n",m_strName,szSex[m_iSex],m_iAge);
AfxMessageBox(strMess);
CDialog::OnOK();
}
第二个版本:
此用户的信息保存到c:\\1.txt,也可读取,假定此文件已经存在。
在CUserInputDlg::CUserInputDlg中读取,代码如下:
CUserInputDlg::CUserInputDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserInputDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserInputDlg)
FILE *fp = fopen("c:\\1.txt","rt");
char szName[1000] = "";
fscanf(fp,"%s %d %d",szName,&m_iSex,&m_iAge);
m_strName = szName;
fclose(fp);
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
CUserInputDlg::OnOK中保存,代码如下:
void CUserInputDlg::OnOK()
{
UpdateData();
FILE *fp = fopen("c:\\1.txt","wt");
fprintf(fp,"%s %d %d",m_strName,m_iSex,m_iAge);
fclose(fp);
CDialog::OnOK();
}
第三个版本,可以增加多个用户,也可读取文件。将c:\\1.txt清空。
在CUserInputDlg之前定义一个结构体:
struct CPeoInfo
{
CString m_strName ;
int m_iSex ;
int m_iAge;
};
在CUserInputDlg中定义两个保护级的成员:
CPeoInfo m_peos[1000];
int m_iPeoNum ;
增加一个按钮,ID为IDC_ADD,标题为“增加用户”,为它增加响应函数,代码如下:
void CUserInputDlg::OnAdd()
{
UpdateData();
m_peos[m_iPeoNum].m_strName = m_strName;
m_peos[m_iPeoNum].m_iSex = m_iSex;
m_peos[m_iPeoNum].m_iAge = m_iAge;
m_iPeoNum++;
}
修改保存的代码:
void CUserInputDlg::OnOK()
{
UpdateData();
FILE *fp = fopen("c:\\1.txt","wt");
fprintf(fp,"%d\n",m_iPeoNum);
char szName[1000] = "";
for(int i = 0 ; i < m_iPeoNum ; i++)
{
fprintf(fp,"%s %d %d\n",m_peos[i].m_strName,m_peos[i].m_iSex,m_peos[i].m_iAge);
}
fclose(fp);
CDialog::OnOK();
}
修改读取的代码:
CUserInputDlg::CUserInputDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserInputDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserInputDlg)
//}}AFX_DATA_INIT
FILE *fp = fopen("c:\\1.txt","rt");
if( 1 != fscanf(fp,"%d\n",&m_iPeoNum))
m_iPeoNum = 0 ;
char szName[1000] = "";
for(int i = 0 ; i < m_iPeoNum ; i++)
{
fscanf(fp,"%s %d %d\n",szName,&m_peos[i].m_iSex,&m_peos[i].m_iAge);
m_peos[i].m_strName = szName;
}
//初始各控件的值
m_strName = m_peos[0].m_strName ;
m_iSex = m_peos[0].m_iSex;
m_iAge = m_peos[0].m_iAge;
fclose(fp);
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
第四个版本:可以查看上一个用户和下一个用户。
CUserInputDlg类增加保护级的变量:
int m_iCurPeo;
在构造函数中将其赋初值为0.
修改CUserInputDlg::OnAdd()函数,代码如下:
void CUserInputDlg::OnAdd()
{
UpdateData();
m_peos[m_iPeoNum].m_strName = m_strName;
m_peos[m_iPeoNum].m_iSex = m_iSex;
m_peos[m_iPeoNum].m_iAge = m_iAge;
m_iCurPeo = m_iPeoNum;
m_iPeoNum++;
}
增加一个按钮,ID为IDC_PRE,标题为“上一个”,为它增加响应函数,代码如下:
void CUserInputDlg::OnPre()
{
if(m_iCurPeo <= 0 )
{
AfxMessageBox("已经到了最前面一个用户.");
return;
}
m_iCurPeo--;
m_strName = m_peos[m_iCurPeo].m_strName;
m_iSex = m_peos[m_iCurPeo].m_iSex;
m_iAge = m_peos[m_iCurPeo].m_iAge;
UpdateData(false);
}
增加一个按钮,ID为IDC_NEXT,标题为“下一个”,为它增加响应函数,代码如下:
void CUserInputDlg::OnNext()
{
if(m_iCurPeo >= m_iPeoNum - 1 )
{
AfxMessageBox("已经到了最后一个用户.");
return;
}
m_iCurPeo++;
m_strName = m_peos[m_iCurPeo].m_strName;
m_iSex = m_peos[m_iCurPeo].m_iSex;
m_iAge = m_peos[m_iCurPeo].m_iAge;
UpdateData(false);
}
第五个版本:
可以修改、删除用户,分析、代码略
没有合适的资源?快使用搜索试试~ 我知道了~
用户管理程序--供新手练习
共5个文件
rar:4个
txt:1个
需积分: 3 23 下载量 25 浏览量
2009-01-19
22:14:35
上传
评论
收藏 74KB RAR 举报
温馨提示
这个小例子是让新手复习对话框和控件的,更多内容见http://www.vcshare.net/ShouKo/ShouKo_193.htm。包括说明文件或4个版本的代码。
资源推荐
资源详情
资源评论
收起资源包目录
UserInput.rar (5个子文件)
UserInput4.rar 18KB
UserInput3.rar 18KB
UserInput2.rar 18KB
UserInput1.rar 18KB
说明.txt 4KB
共 5 条
- 1
资源评论
闻缺陷则喜何志丹
- 粉丝: 1w+
- 资源: 115
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功