ClfnoDlg:电话用户信息的输入添加.
ClputeDlg:用户信息的添加输入等功能实现.
CLoginDlg:登陆对话框的设置.
CPowerDlg:登陆用户的用户名和密码的功能实现.
CQQApp: 加载初始化的登陆对话框.
CQQDlg:主对话框类,加载初始化的
这些功能.
slnfo和sUser:定义的结构体.
3设计:
3.1详细设计
BOOL CQQApp::InitInstance()//初始化程序配置用户文件
{
m_Back =theApp.GetProfileInt("Settings","BackColor",RGB(0,0,0));
m_Text =theApp.GetProfileInt("Settings","TextColor",RGB(192,192,192));
theApp.SetDialogBkColor(m_Back,m_Text);
CLoginDlg ldlg;
if(IDCANCEL==ldlg.DoModal())
return FALSE;
CQQDlg dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
return FALSE;
}
BOOLCQQDlg::OnInitDialog()//主版面的设计和初始化
{
CDialog::OnInitDialog();
CString str = theApp.m_user.szName;
str += "电话管理系统";
SetWindowText(str);
GetDlgItem(IDC_MESS)->EnableWindow(theApp.m_user.nPower);
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
return TRUE; // return TRUE unless you set the focus to a control
}
voidCQQDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device contextfor painting
SendMessage(WM_ICONERASEBKGND,(WPARAM) dc.GetSafeHdc(), 0);
int cxIcon =GetSystemMetrics(SM_CXICON);
int cyIcon =GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) /2;
int y = (rect.Height() - cyIcon + 1)/ 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSORCQQDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
voidCQQDlg::OnExit() //退出功能
{
EndDialog(IDCANCEL);
}
voidCQQDlg::OnReload() //重新登录
{
ShowWindow(SW_HIDE);
CLoginDlg dlg;
if(IDOK==dlg.DoModal())
OnCancel();
else
{
CString str = theApp.m_user.szName;
str += "电话管理系统";
SetWindowText(str);
GetDlgItem(IDC_MESS)->EnableWindow(theApp.m_user.nPower);
ShowWindow(SW_SHOW);
}
}
voidCQQDlg::OnMess() //用户信息密码等管理对话框的弹出
{
ShowWindow(SW_HIDE);
CPowerDlg dlg;
dlg.DoModal();
ShowWindow(SW_SHOW);
}
voidCQQDlg::OnInfo()//用户电话信息等管理对话框的弹出
{
ShowWindow(SW_HIDE);
CIfnoDlg dlg;
dlg.DoModal();
ShowWindow(SW_SHOW);
}
voidCQQDlg::OnBackcol() //背景颜色的选择
{
CColorDialog dcl;
if(IDCANCEL == dcl.DoModal())
return;
theApp.m_Back = dcl.GetColor();
theApp.SetDialogBkColor(theApp.m_Back,theApp.m_Text);
Invalidate();
}
voidCQQDlg::OnTextcol() //文字颜色的选择
{
CColorDialog dcl;
if(IDCANCEL == dcl.DoModal())
return;
theApp.m_Text = dcl.GetColor();
theApp.SetDialogBkColor(theApp.m_Back,theApp.m_Text);
Invalidate();
}
voidCQQDlg::OnDestroy() //退出的必经摧毁
{
CDialog::OnDestroy();
theApp.WriteProfileInt("Settings","TextColor",theApp.m_Text);
theApp.WriteProfileInt("Settings","BackColor",theApp.m_Back);
}
voidCPowerDlg::OnAdd() //用户信息密码等的添加
{
sUser u;
GetDlgItemText(IDC_NAME,u.szName,sizeof(u.szName));
strlwr(u.szName);
CListCtrl*plist=(CListCtrl*)GetDlgItem(IDC_LIST);
int i = 0,nCount =plist ->GetItemCount();
while(i<nCount)
{
if(plist ->GetItemText(i,0) == u.szName)
{
AfxMessageBox("用户名已存在!");
return;
}
++i;
}
plist ->InsertItem(nCount,u.szName);
GetDlgItemText(IDC_PASS,u.szPass,sizeof(u.szPass));
plist ->SetItemText(nCount,1,u.szPass);
CComboBox* pComb =(CComboBox*)GetDlgItem(IDC_POWER);
int nSel = pComb ->GetCurSel();
plist->SetItemText(nCount,2,nSel?"高级":"普通");
}
voidCPowerDlg::OnDel() //删除
{
CListCtrl*plist=(CListCtrl*)GetDlgItem(IDC_LIST);
// int nSel = plist->GetSelectionMark();
POSITION pos =plist->GetFirstSelectedItemPosition();
int nSel =plist->GetNextSelectedItem(pos);
//if(plist->GetSelectCount<1)
if(nSel<0)
{
AfxMessageBox("请选中删除项!");
return;
}
//int nSel = plist->GetSelectionMark();
if(plist ->GetItemText(nSel,0) !="ykabps"&&plist ->GetItemText(nSel,0) =="672645698")
return;
CString str;
str.Format("确认要删除%d项吗?",plist->GetItemText(nSel,0));
if(IDYES==AfxMessageBox(str,MB_YESNO))
plist ->DeleteItem(nSel);
}
voidCPowerDlg::OnFex()//修改
{
CListCtrl*plist=(CListCtrl*)GetDlgItem(IDC_LIST);
POSITION pos =plist->GetFirstSelectedItemPosition();
int nSel = plist->GetNextSelectedItem(pos);
if(nSel<0)
{
AfxMessageBox("请选中一项修改!");
return;
}
char sPass[20];
GetDlgItemText(IDC_PASS,sPass,sizeof(sPass));
plist ->SetItemText(nSel,1,sPass);
CComboBox* pComb =(CComboBox*)GetDlgItem(IDC_POWER);
//int nPower = pComb->GetCurSel();
CString str;
pComb->GetWindowText(str);
if(plist->GetItemText(nSel,0) !="ykabps"&&plist->GetItemText(nSel,0) !="672645698")
plist->SetItemText(nSel,2,str);//nPower?"高级":"普通");
}
voidCPowerDlg::ReadList(CListCtrl *plist)//读出文件
{
CFile file;
if(!file.Open("./users.dat",CFile::modeRead|CFile::shareDenyNone))
return;
plist ->DeleteAllItems();
sUser u;
int i = 0;
while(file.Read(&u,sizeof(u)) ==sizeof(u))
{
plist ->InsertItem(i,u.szName);
plist ->SetItemText(i,1,u.szPass);
plist ->SetItemText(i,2,u.nPower?"高级":"普通");
++i;
}
file.Close();
}
BOOLCPowerDlg::OnInitDialog() //初始化
{
CDialog::OnInitDialog();
CListCtrl*plist=(CListCtrl*)GetDlgItem(IDC_LIST);
plist ->InsertColumn(0,"账号",0,100);
plist ->InsertColumn(1,"密码",0,100);
plist ->InsertColumn(2,"权限",0,100);
ReadList(plist);
CComboBox* pComb =(CComboBox*)GetDlgItem(IDC_POWER);
pComb ->AddString("普通");
pComb ->AddString("高级");
pComb ->SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to acontrol
}
voidCPowerDlg::OnDestroy() //退出保存文件
{
CDialog::OnDestroy();
CFile file;
if(!file.Open("./users.dat",CFile::modeCreate|CFile::modeWrite))
{
AfxMessageBox("保存文件失败!");
return;
}
CListCtrl* plist=(CListCtrl*)GetDlgItem(IDC_LIST);
int i = 0,nCount = plist->GetItemCount();
sUser u;
while(i<nCount)
{
plist ->GetItemText(i,0,u.szName,sizeof(u.szName));
plist ->GetItemText(i,1,u.szPass,sizeof(u.szPass));
u.nPower = plist ->GetItemText(i,2)=="高级";
file.Write(&u,sizeof(u));
++i;
}
file.Close();
}
BOOLCIfnoDlg::OnInitDialog() //电话信息输入
{
CDialog::OnInitDialog();
m_list.SubclassDlgItem(IDC_LIST1,this);
m_list.InsertColumn(0,"姓名",0,160);
m_list.InsertColumn(1,"地址",0,160);
m_list.InsertColumn(2,"号码",0,160);
return TRUE;
}
voidCIfnoDlg::OnAdd() //电话信息的添加
{
CIputeDlg dlog;
dlog.m_pifnoDlg = this;
dlog.DoModal();
}
voidCIfnoDlg::OnDel() //电话信息删除
{
CListCtrl*plist=(CListCtrl*)GetDlgItem(IDC_LIST1);
POSITION pos =plist->GetFirstSelectedItemPosition();
int nSel =plist->GetNextSelectedItem(pos);
if(nSel<0)
{
AfxMessageBox("请选中删除项!");
return;
}
CString str;
str.Format("确认要删除 %s 项吗?",plist->GetItemText(nSel,0));
if(IDYES==AfxMessageBox(str,MB_YESNO))
plist ->DeleteItem(nSel);
}
voidCIfnoDlg::OnSave() //保存电话信息进入一个Txt文件
{
LPCSTR szFilter = "信息 (*.ifo)|*.ifo|所有文件(*.*)|*.*||";
CFileDialogdlg(FALSE,"ifo","",OFN_OVERWRITEPROMPT,szFilter);
if(IDCANCEL == dlg.DoModal())
return;
CString szfile = dlg.GetPathName();
CFile file;
if(!file.Open(szfile,CFile::modeCreate|CFile::modeWrite))
{
AfxMessageBox("Save Defeat!");
return;
}
int i = 0,nCount = m_list.GetItemCount();
sInfo info;
while(i<nCount)
{
m_list.GetItemText(i,0,info.sNUM,sizeof(info.sNUM));
m_list.GetItemText(i,1,info.sName,sizeof(info.sName));
info.fSala =(float)atoi(m_list.GetItemText(i,2));
file.Write(&info,sizeof(info));
++i;
}
}
voidCIfnoDlg::OnOpen()//打开电话信息进入一个Txt文件
{
LPCSTR szFilter = "信息 (*.ifo)|*.ifo|所有文件(*.*)|*.*||";
CFileDialogdlg(TRUE,"ifo","",OFN_HIDEREADONLY,szFilter);
if(IDCANCEL == dlg.DoModal())
return;
CString szfile = dlg.GetPathName();
CFile file;
if(!file.Open(szfile,CFile::modeRead|CFile::shareDenyNone))
{
AfxMessageBox("Open Defeat!");
return;
}
//int i = 0,nCount =m_list.GetItemCount();
m_list.DeleteAllItems();
int i = 0;
sInfo info;
CString sala;
while(file.Read(&info,sizeof(info)) ==sizeof(info))
{
m_list.InsertItem(i,info.sNUM);
m_list.SetItemText(i,1,info.sName);
//m_list.SetItemText(i,2,info.sBirth);
//m_list.SetItemText(i,3,info.sDept);
sala.Format("%0.1f",info.fSala);
m_list.SetItemText(i,2,sala);
}
}
voidCIfnoDlg::OnFox() //修改电话信息
{
CListCtrl*plist=(CListCtrl*)GetDlgItem(IDC_LIST1);
POSITIONpos = plist->GetFirstSelectedItemPosition();
intnSel = plist->GetNextSelectedItem(pos);
if(nSel<0)
{
AfxMessageBox("请选中一项修改!");
return;
}
CIputeDlgdlog;
dlog.m_pifnoDlg = this;
dlog.DoModal();
}