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

📄 syssetup.cpp

📁 IP电话计费管理系统本地版
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SysSetUp.cpp : implementation file
//

#include "stdafx.h"
#include "IPCount.h"
#include "SysSetUp.h"
#include "IPCountDlg.h"
#include "PreMoneySetup.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSysSetUp dialog


CSysSetUp::CSysSetUp(CWnd* pParent /*=NULL*/)
	: CDialog(CSysSetUp::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSysSetUp)
	m_strCom = _T("");
	m_strOName = _T("");
	m_strOPswd1 = _T("");
	m_strOPswd2 = _T("");
	m_strLevel = _T("");
	m_bCheckQuit = FALSE;
	m_bCheckPrint = FALSE;
	m_bCheckSaleCut = FALSE;
	m_strComboGw1 = _T("1");
	m_strComboGw2 = _T("2");
	m_strComboLine = _T("8");
	//}}AFX_DATA_INIT
	lValue=0;
	bOperSuccess=FALSE;
	m_strCom="";
	pdlg=new CPrintSet();
	nPrintGridCount=0;
	for (int k=0;k<10;k++)
		strLanWidth[k]="";
}


void CSysSetUp::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSysSetUp)
	DDX_Control(pDX, IDC_COMBO_LINE, m_eComboLine);
	DDX_Control(pDX, IDC_COMBO_GW2, m_eComboGw2);
	DDX_Control(pDX, IDC_COMBO_LEVEL, m_LevelComb);
	DDX_Text(pDX, IDC_EDIT_COM, m_strCom);
	DDX_Text(pDX, IDC_EDIT_ONAME, m_strOName);
	DDX_Text(pDX, IDC_EDIT_OPSWD1, m_strOPswd1);
	DDX_Text(pDX, IDC_EDIT_OPSWD2, m_strOPswd2);
	DDX_Control(pDX, IDC_MSFLEXGRID_USER, m_UserGrid);
	DDX_CBString(pDX, IDC_COMBO_LEVEL, m_strLevel);
	DDX_Check(pDX, IDC_CHECK_QUIT, m_bCheckQuit);
	DDX_Check(pDX, IDC_CHECK_PRINT, m_bCheckPrint);
	DDX_Check(pDX, IDC_CHECK_SALECUT, m_bCheckSaleCut);
	DDX_CBString(pDX, IDC_COMBO_GW1, m_strComboGw1);
	DDV_MaxChars(pDX, m_strComboGw1, 3);
	DDX_CBString(pDX, IDC_COMBO_GW2, m_strComboGw2);
	DDV_MaxChars(pDX, m_strComboGw2, 3);
	DDX_CBString(pDX, IDC_COMBO_LINE, m_strComboLine);
	DDV_MaxChars(pDX, m_strComboLine, 2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSysSetUp, CDialog)
	//{{AFX_MSG_MAP(CSysSetUp)
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnOAdd)
	ON_BN_CLICKED(IDC_BUTTON_MOD, OnOMod)
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnODel)
	ON_EN_CHANGE(IDC_EDIT_COM, OnChangeCom)
	ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnSearch)
	ON_BN_CLICKED(IDC_RADIO_DOWN, OnRadioDown)
	ON_BN_CLICKED(IDC_RADIO_NODOWN, OnRadioNodown)
	ON_BN_CLICKED(IDC_BUTTON_SYS_SETUP, OnSysSetup)
	ON_BN_CLICKED(IDC_CHECK_QUIT, OnCheckQuit)
	ON_BN_CLICKED(IDC_CHECK_PRINT, OnCheckPrint)
	ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
	ON_BN_CLICKED(IDC_CHECK_SALECUT, OnCheckSalecut)
	ON_CBN_SELCHANGE(IDC_COMBO_LINE, OnSelchangeComboLine)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSysSetUp message handlers

BOOL CSysSetUp::OnInitDialog() 
{
	CDialog::OnInitDialog();
	CIPCountDlg * mdlg;
	mdlg=(CIPCountDlg *)GetParent();	
	// TODO: Add extra initialization here
	SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_SETUP),TRUE);
	SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_SETUP),FALSE);
	int nCom=GetFlag();
	if(nCom==0)
		nCom=1;
	m_strCom.Format("%d",nCom);
    m_OStrCom=m_strCom;
	m_UserGrid.SetTextArray(0,"用户名");
	m_UserGrid.SetTextArray(1,"密码");	
	m_UserGrid.SetTextArray(2,"用户级别");	

	m_UserGrid.SetColWidth(0,1730);
	m_UserGrid.SetColWidth(1,1280);
	m_UserGrid.SetColWidth(2,1378);

	m_LevelComb.AddString("超级管理员");
	m_LevelComb.AddString("营业员");
	m_strLevel="营业员";
    int nQuitFlag=GetQuitFlag();//退出强行扎帐

	if(nQuitFlag==1)
	{
		m_bCheckQuit=TRUE;
	}
    
	if(GetPrintFlag()==1)//是否启用立即打印
	{
		m_bCheckPrint=TRUE;
	}

	if(GetSaleCutFlag()==1)//是否启用优惠时段
	{
		m_bCheckSaleCut=TRUE;
	}

	m_strComboLine.Format("%d", mdlg->nOperateLines);
	m_strComboGw1.Format("%d", mdlg->nGwCom[0]);


    if (mdlg->nOperateLines == 8)
	{
		m_strComboGw2 = "";
		m_eComboGw2.EnableWindow(FALSE);
	}
	else
	{
		m_strComboGw2 .Format("%d",  mdlg->nGwCom[1]);
	}

	int RadioNum=GetRadio();

    CButton * b1;
	switch(RadioNum)
	{
	case 0:
	case 1:
         b1=(CButton *)GetDlgItem(IDC_RADIO_DOWN);
         b1->SetCheck(1);
		 break;
	case 2:
         b1=(CButton *)GetDlgItem(IDC_RADIO_NODOWN);
         b1->SetCheck(1);
		 break;
	}
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

//添加用户

void CSysSetUp::OnOAdd() 
{
	// TODO: Add your control notification handler code here

	int res=-1;
	UpdateData(TRUE);
    CIPCountDlg * mdlg;
	mdlg=(CIPCountDlg *)GetParent();
	if(mdlg==NULL)
		return ;
	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\IPUser.dat");
	mdlg->set.Open(pFileName);
	while(!mdlg->set.IsEOF())
	{
		res=strcmp(mdlg->set.UserName,m_strOName);
		mdlg->set.MoveNext();
		if(res==0)
		{
			break;
		}
			
	}
    if(res==0)
	{
		bOperSuccess=FALSE;
		AfxMessageBox("用户已存在!");
		mdlg->set.Close();
		return;
	}
	if(m_strOName.IsEmpty()||m_strOPswd1.IsEmpty())
	{
		bOperSuccess=FALSE;
		AfxMessageBox("用户名和密码不能为空!");
		mdlg->set.Close();
		return;
	}
	else if(strcmp(m_strOPswd1,m_strOPswd2)!=0)
	{
		bOperSuccess=FALSE;
		AfxMessageBox("两次输入的密码不一致!");
		mdlg->set.Close();
		return;
	}
	else
	{
		bOperSuccess=TRUE;
		AfxMessageBox("添加新用户成功!");
	    mdlg->set.UserName=m_strOName;
	    mdlg->set.UserPswd=m_strOPswd1;
		mdlg->set.UserLevel=m_strLevel;
	    mdlg->set.AddNew();
	    mdlg->set.Close();
	}
	if(bOperSuccess)
	    OnSearch();
}

//修改用户密码
void CSysSetUp::OnOMod() 
{
	// TODO: Add your control notification handler code here

	int res=-1;
	UpdateData(TRUE);
    CIPCountDlg * mdlg;
	mdlg=(CIPCountDlg *)GetParent();
	if(mdlg==NULL)
		return ;
	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\IPUser.dat");
	mdlg->set.Open(pFileName);
	while(!mdlg->set.IsEOF())
	{
		res=strcmp(mdlg->set.UserName,m_strOName);
		if(res==0)
		{
			break;
		}
		mdlg->set.MoveNext();
			
	}
    if(res==0)
	{
		if(m_strOPswd1.IsEmpty())
		{
			bOperSuccess=FALSE;
			AfxMessageBox("密码不能为空!");
			mdlg->set.Close();
		    return;
		}
	    if(strcmp(m_strOPswd1,m_strOPswd2)!=0)
		{
			bOperSuccess=FALSE;
		    AfxMessageBox("两次输入的密码不一致!");
			mdlg->set.Close();
		    return;
		}
		else
		{
		   bOperSuccess=TRUE;
		   mdlg->set.UserPswd=m_strOPswd1;
		   mdlg->set.UserLevel=m_strLevel;
		   if(mdlg->set.Update())
			   AfxMessageBox("修改信息成功!");
		   mdlg->set.Close();
		}
	}
	else
	{
		bOperSuccess=FALSE;
		AfxMessageBox("用户不存在!");
		mdlg->set.Close();
	}
	if(bOperSuccess)
	    OnSearch();
}

//删除用户
void CSysSetUp::OnODel() 
{
	// TODO: Add your control notification handler code here

	int res=-1;
	UpdateData(TRUE);
    CIPCountDlg * mdlg;
	mdlg=(CIPCountDlg *)GetParent();
	if(mdlg==NULL)
		return ;
	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\IPUser.dat");
	mdlg->set.Open(pFileName);
	int nUserCount=0;

	while(!mdlg->set.IsEOF())
	{
		if(strcmp(mdlg->set.UserLevel,"超级管理员")==0)
			nUserCount++;//超级用户个数
		mdlg->set.MoveNext();
	}
	mdlg->set.MoveFirst();
	while(!mdlg->set.IsEOF())
	{
		res=strcmp(mdlg->set.UserName,m_strOName);
		if(res==0)
		{
			//判断是否超级用户
		    if(strcmp(mdlg->set.UserLevel,"营业员")==0)
				nUserCount=100;//如果是营业员,将该值设为大于1即可
			break;
		}
		mdlg->set.MoveNext();
			
	}
    if(res==0)
	{
	   if(nUserCount>1)
	   {
	      if(mdlg->set.Delete())
		  {
		     bOperSuccess=TRUE;
	         AfxMessageBox("用户删除成功!");
		  }
	   }
	   else
		   AfxMessageBox("至少必须保留一个超级用户");
	   mdlg->set.Close();
	}
	else
	{
		bOperSuccess=FALSE;
		AfxMessageBox("用户不存在!");
		mdlg->set.Close();
	}

	if(bOperSuccess)
	    OnSearch();
}

//改变串口
void CSysSetUp::OnChangeCom() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CIPCountDlg * mdlg;
	mdlg=(CIPCountDlg *)GetParent();
	if(mdlg==NULL)
		return ;
	if(mdlg->bOpenSale)
	{
		m_strCom=m_OStrCom;//恢复到改变前得值
		UpdateData(FALSE);
		AfxMessageBox("请先退出营业管理!");
		return;
	}
	int nCom=atoi(m_strCom);
	if((nCom>4)||(nCom<1))
	{
		m_strCom=m_OStrCom;//恢复到改变前得值
		UpdateData(FALSE);
		AfxMessageBox("请输入1-4之间的数字!");
		return;
	}
	m_OStrCom=m_strCom;//给m_OStrCom 赋新值
	//考虑用注册表保存串口修改数据
	SetFlag(nCom);

}



//显示用户列表
void CSysSetUp::OnSearch() 
{
	// TODO: Add your control notification handler code here
    CIPCountDlg * mdlg;
	mdlg=(CIPCountDlg *)GetParent();
	if(mdlg==NULL)
		return ;
	ResetGrid(lValue);
	lValue=0;
	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\IPUser.dat");
	mdlg->set.Open(pFileName);
	while(!mdlg->set.IsEOF())
	{
		lValue++;
		m_UserGrid.SetTextMatrix(lValue,0,mdlg->set.UserName);
		m_UserGrid.SetTextMatrix(lValue,1,mdlg->set.UserPswd);
		m_UserGrid.SetTextMatrix(lValue,2,mdlg->set.UserLevel);
        mdlg->set.MoveNext();
		
	}
	mdlg->set.Close();
}

//打开注册表
void CSysSetUp::OpenKey(HKEY    hKey,
				   LPCTSTR lpSubKey)
{
    CloseKey(); 

	if( ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
		(LPCTSTR)lpSubKey,
		0,
		KEY_READ | KEY_WRITE,
		&m_hKey) != ERROR_SUCCESS) {
		
		
		if( ERROR_SUCCESS != ::RegCreateKey(
			HKEY_LOCAL_MACHINE,
			(LPCTSTR)lpSubKey,
			&m_hKey))
		    
		{;}
	}
}



//设置键值
void CSysSetUp::SetKey(                 
                LPCTSTR  lpName,
                DWORD    dwType,   
                LPCTSTR  lpData,   
                DWORD    cbData )   
{
	if(::RegSetValueEx(m_hKey,
		lpName,
		0,
		REG_SZ,
		(unsigned char *)lpData,
		cbData) != ERROR_SUCCESS)
	{;}
}


void CSysSetUp::CloseKey()
{
	if (m_hKey == NULL)
		return ; // Not Need To Close 

	if(::RegCloseKey(m_hKey) != ERROR_SUCCESS)
	   {;}
    else
	   m_hKey = NULL;
}


void CSysSetUp::QueryKey(         
                    LPCTSTR  lpName,  
					DWORD    dwType,
                    LPBYTE  lpValue,   
                    DWORD   lpcbValue)
{
    ::RegQueryValueEx(m_hKey,
		lpName,
		0,
		&dwType,
		lpValue,
		&lpcbValue);
} 


void CSysSetUp::SetItem(int nValue, const CString &sKey, const CString &sName)
{
	CString sValue;
    sValue.Format("%d", nValue);
   	OpenKey(HKEY_LOCAL_MACHINE, sKey);
	SetKey(sName, REG_SZ, (LPCTSTR)sValue, sValue.GetLength());
    CloseKey();
}

int  CSysSetUp::GetItem(const CString &sKey, const CString &sName)
{
    CString sValue;
    LPSTR QuerySet = NULL;
	DWORD cbSize;

	OpenKey(HKEY_LOCAL_MACHINE, sKey);

⌨️ 快捷键说明

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