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

📄 ckeymanage.cpp

📁 密钥的管理中心
💻 CPP
字号:
// Ckeymanage.cpp : implementation file
//

#include "stdafx.h"
#include "bishe.h"
#include "Ckeymanage.h"
#include <afxdb.h>
#include "Usefulkey.h"
#include "Delkey.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCkeymanage dialog


CCkeymanage::CCkeymanage(CWnd* pParent /*=NULL*/)
	: CDialog(CCkeymanage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCkeymanage)
	//}}AFX_DATA_INIT
}


void CCkeymanage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCkeymanage)
	DDX_Control(pDX, IDC_CTRLLIST2, m_ctrlList1);
	DDX_Control(pDX, IDC_CTRLLIST, m_ctrlList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCkeymanage, CDialog)
	//{{AFX_MSG_MAP(CCkeymanage)
	ON_BN_CLICKED(IDC_SEARCHUSE_BUTTON1, OnSearchuseButton1)
	ON_BN_CLICKED(IDC_SEARCHDEL_BUTTON1, OnSearchdelButton1)
	ON_BN_CLICKED(IDC_DELKEYVIEW_BUTTON4, OnDelkeyviewButton4)
	ON_BN_CLICKED(IDC_COPY_BUTTON3, OnCopyButton3)
	ON_BN_CLICKED(IDC_DELKEY_BUTTON3, OnDelkeyButton3)
	ON_BN_CLICKED(IDC_exit_BUTTON1, OnexitBUTTON1)
	ON_BN_CLICKED(IDC_ASS_BUTTON2, OnAssButton2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCkeymanage message handlers




void CCkeymanage::OnSearchuseButton1() 
{
	// TODO: Add your control notification handler code here
	CString name;
 	GetDlgItemText(IDC_USERNAME_EDIT1,name);  
	UpdateData();//获得用户输入的数据
	if(name=="")
	{
		MessageBox("未输入姓名!","Error",MB_OK);
		return;
	}
	CDatabase m_uDatabase;
	CUsefulkey m_use(&m_uDatabase); 
	CString m_uRecordSet=(_T("[usefulkey]"));
    m_uRecordSet.Format("select * from  usefulkey where username='%s'",name);
   
	if(!m_use.Open(AFX_DB_USE_DEFAULT_TYPE,m_uRecordSet))
	{
		MessageBox("打开数据库失败!","数据库错误!",MB_OK);
		return;
	}
    
    m_ctrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES);//选择一行全部信息||布置网格
    m_ctrlList.DeleteAllItems();//清除ctrlList中的所有条款

	int i=0;
	while(m_ctrlList.DeleteColumn(0));
	{   
		m_ctrlList.InsertColumn(10,"username",LVCFMT_LEFT,60,10);
		m_ctrlList.InsertColumn(10,"keydate",LVCFMT_LEFT,40,10);
		m_ctrlList.InsertColumn(10,"dk",LVCFMT_LEFT,40,10);	 
		m_ctrlList.InsertColumn(10,"cer",LVCFMT_LEFT,80,10);
		int column;	
		if(m_use.GetRecordCount()!=0)//查到的纪录不空
		{	
			while(!m_use.IsEOF())//还未到最后一条记录
			{
				column=1;
				
				m_ctrlList.InsertItem(i,m_use.m_username);//数据库有多少条记录就添加多少次
				
				m_ctrlList.SetItemText(i,column++,m_use.m_keydate); 

				m_ctrlList.SetItemText(i,column++,m_use.m_dk); 
				m_ctrlList.SetItemText(i,column++,m_use.m_cer); 

                i++;
		   
	     		 m_use.MoveNext();//指向下一条记录
			
			}

             m_uDatabase.Close();
		}
		if(i==0)
	   {
		   MessageBox("有效密钥数据库没有此记录!","Error",MB_OK);
		   return;
	   }

	} 
}

void CCkeymanage::OnSearchdelButton1() 
{
	// TODO: Add your control notification handler code here
	CString name;
 	GetDlgItemText(IDC_USERNAME_EDIT1,name);  
	UpdateData();//获得用户输入的数据
	if(name=="")
	{
		MessageBox("未输入姓名!","Error",MB_OK);
		return;
	}
	CDatabase m_dDatabase;
	CDelkey m_del(&m_dDatabase); 
	CString m_dRecordSet=(_T("[delkey]"));
    m_dRecordSet.Format("select * from  delkey where username='%s'",name);
   
	if(!m_del.Open(AFX_DB_USE_DEFAULT_TYPE,m_dRecordSet))
	{
		MessageBox("打开数据库失败!","数据库错误!",MB_OK);
		return;
	}
    
    m_ctrlList1.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES);//选择一行全部信息||布置网格
    m_ctrlList1.DeleteAllItems();//清除ctrlList中的所有条款

	int i=0;
	while(m_ctrlList1.DeleteColumn(0));
	{   
		m_ctrlList1.InsertColumn(10,"username",LVCFMT_LEFT,60,10);
		m_ctrlList1.InsertColumn(10,"keydate",LVCFMT_LEFT,40,10);
		m_ctrlList1.InsertColumn(10,"dk",LVCFMT_LEFT,40,10);	 
		m_ctrlList1.InsertColumn(10,"cer",LVCFMT_LEFT,80,10);
		int column;	
		if(m_del.GetRecordCount()!=0)//查到的纪录不空
		{	
			while(!m_del.IsEOF())//还未到最后一条记录
			{
				column=1;
				
				m_ctrlList1.InsertItem(i,m_del.m_username);//数据库有多少条记录就添加多少次
				m_ctrlList1.SetItemText(i,column++,m_del.m_keydate); 

				m_ctrlList1.SetItemText(i,column++,m_del.m_dk); 
				m_ctrlList1.SetItemText(i,column++,m_del.m_cer); 

                i++;
		   
	     		 m_del.MoveNext();//指向下一条记录
			
			}

             m_dDatabase.Close();
		}
		if(i==0)
	   {
		   MessageBox("无效密钥数据库没有此记录!","Error",MB_OK);
		   return;
	   }

	} 
}

void CCkeymanage::OnDelkeyviewButton4() 
{
	// TODO: Add your control notification handler code here
	CDatabase m_dDatabase;
	CDelkey m_del(&m_dDatabase);
	CString m_dRecordSet=( _T("[delkey]"));
	m_del.Open(AFX_DB_USE_DEFAULT_TYPE,m_dRecordSet);
	int i=0;
	int column;	
	m_ctrlList1.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES);//选择一行全部信息||布置网格

    m_ctrlList1.DeleteAllItems();//清除ctrlList中的所有条款
	while(m_ctrlList1.DeleteColumn(0));
	{
		m_ctrlList1.InsertColumn(10,"username",LVCFMT_LEFT,60,10);
		m_ctrlList1.InsertColumn(10,"keydate",LVCFMT_LEFT,40,10);
		m_ctrlList1.InsertColumn(10,"dk",LVCFMT_LEFT,40,10);
		m_ctrlList1.InsertColumn(10,"cer",LVCFMT_LEFT,80,10);
	while(!m_del.IsEOF())//还未到最后一条记录
	{
		column=1;
	
		m_ctrlList1.InsertItem(i,m_del.m_username);//数据库有多少条记录就添加多少次
		
		m_ctrlList1.SetItemText(i,column++,m_del.m_keydate); 
	
		m_ctrlList1.SetItemText(i,column++,m_del.m_dk); 
	
		m_ctrlList1.SetItemText(i,column++,m_del.m_cer); 

       	i++;
	    
	     m_del.MoveNext();//指向下一条记录
	}	

     m_dDatabase.Close();
	}

	if(i==0)
	{
		MessageBox("没有记录!","Error",MB_OK);
		return;
	 }

}

void CCkeymanage::OnCopyButton3() 
{
	// TODO: Add your control notification handler code here
	if(MessageBox("您确定要备份数据库吗?","提示",MB_YESNO|MB_ICONINFORMATION)==IDNO) 
	{ 
		return; 
	}   
	if(CopyFile("usefulkey.mdb","backup\\usefulkey.bak",FALSE)) 
		AfxMessageBox("有效密钥数据库备份成功!"); 
	else 
		AfxMessageBox("有效密钥数据库备份失败!"); 

	if(CopyFile("delkey.mdb","backup\\delkey.bak",FALSE)) 
		AfxMessageBox("无效密钥数据库备份成功!"); 
	else 
		AfxMessageBox("无效密钥数据库备份失败!"); 

}

void CCkeymanage::OnDelkeyButton3() 
{
	// TODO: Add your control notification handler code here
	CString name;
 	GetDlgItemText(IDC_USERNAME_EDIT1,name);  
	UpdateData();

	if(name=="")
	{
		MessageBox("未输入要删除的姓名!","Error",MB_OK);
		return;
	}

	CDatabase m_uDatabase,m_dDatabase;
	CUsefulkey m_use(&m_uDatabase); 
	CDelkey m_del(&m_dDatabase);

	CString m_uRecordSet=(_T("[usefulkey]"));

	CString m_dRecordSet=( _T("[delkey]"));

	m_uRecordSet.Format("select * from  usefulkey where username='%s'",name);
   
	if(!m_use.Open(AFX_DB_USE_DEFAULT_TYPE,m_uRecordSet))
	{
		MessageBox("打开数据库失败!","数据库错误!",MB_OK);
		return;
	}

	//将用户删除的密钥保存到无效数据库	
	m_del.Open(AFX_DB_USE_DEFAULT_TYPE,m_dRecordSet);	 
	m_del.AddNew();
	m_del.m_username=m_use.m_username;
	m_del.m_dk=m_use.m_dk;
	m_del.m_cer=m_use.m_cer;
    m_del.m_keydate=m_use.m_keydate;
	m_del.Update();//更新数据库
    m_dDatabase.Close();
	m_use.Delete();//执行删除操作
		
	AfxMessageBox("数据删除成功并存入无效数据库!"); 
	m_uDatabase.Close();	
	UpdateData(FALSE);

}

void CCkeymanage::OnexitBUTTON1() 
{
	// TODO: Add your control notification handler code here
	OnCancel();
}

void CCkeymanage::OnAssButton2() 
{
	// TODO: Add your control notification handler code here
	CString name;
	GetDlgItemText(IDC_USERNAME_EDIT1,name);//获得申请者的姓名  
	UpdateData();
	CDatabase m_uDatabase;
	CUsefulkey m_use(&m_uDatabase); 
	CString m_uRecordSet=(_T("[usefulkey]"));
	m_uRecordSet.Format("select * from  usefulkey where username='%s'",name);
	if(!m_use.Open(AFX_DB_USE_DEFAULT_TYPE,m_uRecordSet))
	{
		MessageBox("打开数据库失败!","数据库错误!",MB_OK);
		return;
	}
	if(name=="")
	{
		MessageBox("请先输入您想获得的密钥的用户名!");
		return;
	}

	
	if(m_use.GetRecordCount()==0)
	{
		MessageBox("没有此用户的记录!","Error",MB_OK);
		return;
	} 

	char dir[MAX_PATH], srdir[MAX_PATH];

	strcpy(dir, "search\\");
	strcat(dir, name);
	strcat(dir, ".cer");

	strcpy(srdir, "Certification\\");
	strcat(srdir, name);
	strcat(srdir, ".cer");

	if(!CopyFile(srdir, dir, FALSE))
	{
		MessageBox("发生错误!");
		return;
	}

	memset(dir, 0, MAX_PATH);
	GetCurrentDirectory(MAX_PATH, dir);
	strcat(dir, "\\search\\");
	strcat(dir, name);
	strcat(dir, ".cer");

	char msg[200];
	wsprintf(msg, "%s%s", "您所需要的证书放在:", dir);
	MessageBox(msg);
	m_uDatabase.Close();
	UpdateData(FALSE);

}

⌨️ 快捷键说明

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