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

📄 chat.cpp

📁 偶作的毕业设计程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Chat.cpp : implementation file
//

#include "stdafx.h"
#include "SoftDocSystem.h"
#include "Chat.h"
#include "Rrypt.h"
#include "LogMngr.h"

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

/////////////////////////////////////////////////////////////////////////////
// CChat dialog
extern CString PublicUserName;
extern int PublicUserType;

CChat::CChat(CWnd* pParent /*=NULL*/):CDialog(CChat::IDD, pParent)
{
	//{{AFX_DATA_INIT(CChat)
	m_Pwd = _T("");
	m_Context = _T("");
	m_Chattype = -1;
	m_Number = _T( _T("");"");
		m_Author = _T("");
	m_Xinghao = _T("");
	m_SoftType = _T("");
	m_GeShi = _T("");
	m_UserName = _T("");
	m_SoftName = _T("");
	//}}AFX_DATA_INIT
}


void CChat::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CChat)
	DDX_Control(pDX, IDC_COMBO7, m_UserNameCtrl);
	DDX_Control(pDX, IDC_COMBO6, m_GeShiCtrl);
	DDX_Control(pDX, IDC_COMBO5, m_SoftTypeCtrl);
	DDX_Control(pDX, IDC_COMBO4, m_XinghaoCtrl);
	DDX_Control(pDX, IDC_COMBO3, m_AuthorCtrl);
	DDX_Control(pDX, IDC_COMBO2, m_SoftNameCtrl);
	DDX_Control(pDX, IDC_COMBO1, m_NumberCtrl);
	DDX_Control(pDX, IDC_RADIO1, m_TypeCtrl);
	DDX_Control(pDX, IDC_LIST2, m_List2);
	DDX_Control(pDX, IDC_LIST1, m_List1);
	DDX_Text(pDX, IDC_EDIT2, m_Pwd);
	DDX_Text(pDX, IDC_EDIT4, m_Context);
	DDX_Radio(pDX, IDC_RADIO1, m_Chattype);
	DDX_CBString(pDX, IDC_COMBO1, m_Number);
	DDX_CBString(pDX, IDC_COMBO3, m_Author);
	DDX_CBString(pDX, IDC_COMBO4, m_Xinghao);
	DDX_CBString(pDX, IDC_COMBO5, m_SoftType);
	DDX_CBString(pDX, IDC_COMBO6, m_GeShi);
	DDX_CBString(pDX, IDC_COMBO7, m_UserName);
	DDX_CBString(pDX, IDC_COMBO2, m_SoftName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChat, CDialog)
//{{AFX_MSG_MAP(CChat)
ON_BN_CLICKED(IDC_BUTTON4, OnSummit)
ON_BN_CLICKED(IDC_RADIO1, OnBorrow)
ON_BN_CLICKED(IDC_RADIO2, OnReturn)
ON_BN_CLICKED(IDC_BUTTON3, OnQuery)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)
ON_BN_CLICKED(IDC_BUTTON1, OnRight)
ON_BN_CLICKED(IDC_BUTTON2, OnLeft)
ON_BN_CLICKED(IDC_BUTTON5, OnApply)
ON_BN_CLICKED(IDC_BUTTON6, OnNext)
ON_BN_CLICKED(IDC_CHECK1, OnSelectAll)
ON_BN_CLICKED(IDC_CHECK6, OnCheck6)
ON_BN_CLICKED(IDC_CHECK3, OnCheck3)
ON_BN_CLICKED(IDC_CHECK4, OnCheck4)
ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
ON_BN_CLICKED(IDC_CHECK5, OnCheck5)
ON_BN_CLICKED(IDC_CHECK7, OnCheck7)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChat message handlers

BOOL CChat::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DestroyWindow();
}
void CChat::Initiate()
{
	//如果是管理员登陆
	if(PublicUserType==1)
	{GetDlgItem(IDC_EDIT2)->EnableWindow(false);
	//输入用户名集合
	CString sql_;
	_variant_t Holder;
	sql_.Format ("SELECT DISTINCT 用户名 FROM UserInfo");
	_RecordsetPtr Myset;
	Myset.CreateInstance (__uuidof(Recordset));
	_bstr_t source= m_strSource;
	_bstr_t Mysql=sql_;

	try{
		Myset->Open (Mysql,source,adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error &e){
		AfxMessageBox(e.ErrorMessage());}
	
	while(!Myset->adoEOF ){
		Holder=Myset->GetCollect ("用户名");
		if(Holder.vt!=VT_NULL)
			m_UserNameCtrl.AddString((char*)(_bstr_t)Holder);
		Myset->MoveNext ();
	}
	Myset->Close();
	}
	else
	{m_UserNameCtrl.Clear();
	((CComboBox*)GetDlgItem(IDC_COMBO7))->SetWindowText(PublicUserName);
	GetDlgItem(IDC_EDIT2)->EnableWindow(true);
	}
	//界面设置
	GetDlgItem(IDC_RADIO1)->EnableWindow(false);
	GetDlgItem(IDC_RADIO2)->EnableWindow(false);
	GetDlgItem(IDC_LIST1)->EnableWindow(false);
	GetDlgItem(IDC_LIST2)->EnableWindow(false);
	GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
	GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
	m_List1.DeleteAllItems ();
	m_List2.DeleteAllItems ();
	GetDlgItem(IDC_COMBO1)->EnableWindow(false);
	GetDlgItem(IDC_COMBO2)->EnableWindow(false);
	GetDlgItem(IDC_COMBO3)->EnableWindow(false);
	GetDlgItem(IDC_COMBO4)->EnableWindow(false);
	GetDlgItem(IDC_COMBO5)->EnableWindow(false);
	GetDlgItem(IDC_COMBO6)->EnableWindow(false);
	GetDlgItem(IDC_COMBO7)->EnableWindow(true);
	((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(false);
    GetDlgItem(IDC_CHECK1)->EnableWindow(false);
	GetDlgItem(IDC_CHECK2)->EnableWindow(false);
	GetDlgItem(IDC_CHECK3)->EnableWindow(false);
	GetDlgItem(IDC_CHECK4)->EnableWindow(false);
	GetDlgItem(IDC_CHECK5)->EnableWindow(false);
	GetDlgItem(IDC_CHECK6)->EnableWindow(false);
	GetDlgItem(IDC_CHECK7)->EnableWindow(false);
	UpdateData();
}

void CChat::Trash()
{
	
}

void CChat::OnSummit() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_UserName==""){AfxMessageBox("请输入用户名");return;}
	//判断是管理员还是用户
	if(PublicUserType==1){
		GetDlgItem(IDC_RADIO2)->EnableWindow(true);
		GetDlgItem(IDC_RADIO1)->EnableWindow(true);
	}
	else
	{
		if(m_UserName==""){AfxMessageBox("请输入用户名");return;}
		CString sql_,PasswordChar,str1,pASS;	
		if(m_Pwd.IsEmpty())
			PasswordChar=_T("RX67YM3482C");//对空密码进行处理
		else
			PasswordChar=CCrypt::Encrypt (m_Pwd,376);
		sql_.Format ("SELECT * FROM UserInfo WHERE 用户名 = '%s'",m_UserName);
		_bstr_t sql=sql_;
		_bstr_t source=m_strSource;
		_RecordsetPtr Myset;
		Myset.CreateInstance (__uuidof(Recordset));
		try{
			Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);}
		catch(_com_error& e){
			AfxMessageBox(e.ErrorMessage());}
		
		int Count=0;
		while(!Myset->adoEOF)
		{Count+=1;Myset->MoveNext();};
		if(Count==0){AfxMessageBox("你输入的用户名不存在");return;}
		_variant_t Holder;
		Myset->MoveFirst();
		Holder=Myset->GetCollect ("用户名");
		if(Holder.vt==VT_NULL){AfxMessageBox("用户名不存在");return;}
		Holder=Myset->GetCollect ("密码");
		Myset->Close();
		//派出两种部窜在的情况
		if(Holder.vt==VT_NULL)
		{AfxMessageBox("这个密码已被破坏,下次请不要字使用这个用户名!");
		return;}
		else{
			pASS=(char*)(_bstr_t)Holder;
			pASS.TrimLeft (" ");
			pASS.TrimRight (" ");
			if(PasswordChar!=pASS)
			{AfxMessageBox("密码不正确");return;}
			//将数据匡是能
			GetDlgItem(IDC_RADIO2)->EnableWindow(true);
			GetDlgItem(IDC_RADIO1)->EnableWindow(true);
			GetDlgItem(IDC_COMBO7)->EnableWindow(false);
		}
		}
	}

void CChat::OnBorrow() 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_COMBO1)->EnableWindow(false);
	GetDlgItem(IDC_COMBO2)->EnableWindow(false);
	GetDlgItem(IDC_COMBO3)->EnableWindow(false);
	GetDlgItem(IDC_COMBO4)->EnableWindow(false);
	GetDlgItem(IDC_COMBO5)->EnableWindow(false);
	GetDlgItem(IDC_COMBO6)->EnableWindow(false);
	((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(false);
	((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(false);
    GetDlgItem(IDC_CHECK1)->EnableWindow(true);
	GetDlgItem(IDC_CHECK2)->EnableWindow(true);
	GetDlgItem(IDC_CHECK3)->EnableWindow(true);
	GetDlgItem(IDC_CHECK4)->EnableWindow(true);
	GetDlgItem(IDC_CHECK5)->EnableWindow(true);
	GetDlgItem(IDC_CHECK6)->EnableWindow(true);
	GetDlgItem(IDC_CHECK7)->EnableWindow(true);
}

void CChat::OnReturn() 
{
	// TODO: Add your control notification handler code here
    GetDlgItem(IDC_CHECK1)->EnableWindow(true);
	((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(true);
	GetDlgItem(IDC_CHECK2)->EnableWindow(false);
	GetDlgItem(IDC_CHECK3)->EnableWindow(false);
	GetDlgItem(IDC_CHECK4)->EnableWindow(false);
	GetDlgItem(IDC_CHECK5)->EnableWindow(false);
	GetDlgItem(IDC_CHECK6)->EnableWindow(false);
	GetDlgItem(IDC_CHECK7)->EnableWindow(false);
}
void CChat::OnQuery() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
if(m_Chattype==0)//如果是借文档
{
int AllNot=((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
	if(	AllNot)//如果列举全部可用数据
	BorrowTotal();
	else
	BorrowSelect();
}
else {
if(m_Chattype==1)//如果是还文档
ReturnTotal();
}
}

void CChat::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
    // TODO: Add your control notification handler code here
		POSITION pos=m_List1.GetFirstSelectedItemPosition();//判断是否选中记录
	if(pos==NULL)return;
	int i=m_List1.GetSelectionMark();
	CString softnumber=m_List1.GetItemText (i,2);
	CString softname=m_List1.GetItemText (i,0);
    CString softgeshi=m_List1.GetItemText (i,1);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
		CString sql_;
	sql_.Format ("SELECT * FROM SoftDocInfo WHERE 软件编号 = '%s'",softnumber);
	_bstr_t sql=sql_;
	_bstr_t source=m_strSource;
	_RecordsetPtr Myset;
	Myset.CreateInstance (__uuidof(Recordset));
	try{
		Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch (_com_error &e)
	{AfxMessageBox(e.ErrorMessage()); 
	return;}
	CString myStr2,mystr;
	myStr2=softname+"编号: "+softnumber;
	_variant_t Holder;
Holder=Myset->GetCollect ("软件类型");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+=" 类型:";
		myStr2+=mystr;}
	Holder=Myset->GetCollect ("作者");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2=softname+"  作者: ";
		myStr2+=mystr;}
	Holder=Myset->GetCollect ("所属型号");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+=" 所属型号:";
		myStr2+=mystr;}
Holder=Myset->GetCollect ("所属系统");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+=" 所属系统:";
		myStr2+=mystr;}
	Holder=Myset->GetCollect ("软件功能描述");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+="\n软件功能描述\n";
		myStr2+=mystr;}

	m_Context=myStr2;
	UpdateData(false);
	Myset->Close();
	//控制邮移健
	if(i>=0){
		if(m_Chattype==0){
			if(m_List2.GetItemCount ()<3)
			{GetDlgItem(IDC_BUTTON1)->EnableWindow(true);}
		}
		else GetDlgItem(IDC_BUTTON1)->EnableWindow(true);}
	*pResult = 0;
}

void CChat::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
    // TODO: Add your control notification handler code here
		POSITION pos=m_List2.GetFirstSelectedItemPosition();//判断是否选中记录
	if(pos==NULL)return;
	int i=m_List2.GetSelectionMark();
	CString softnumber=m_List2.GetItemText (i,2);
	CString softname=m_List2.GetItemText (i,0);
CString softgeshi=m_List2.GetItemText (i,1);
	GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
	CString sql_;
	sql_.Format ("SELECT * FROM SoftDocInfo WHERE 软件编号 = '%s'",softnumber);
	_bstr_t sql=sql_;
	_bstr_t source=m_strSource;
	_RecordsetPtr Myset;
	Myset.CreateInstance (__uuidof(Recordset));
	try{
		Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch (_com_error &e)
	{AfxMessageBox(e.ErrorMessage()); 
	return;}
	CString myStr2,mystr;
	myStr2=softname+"编号: "+softnumber;
	_variant_t Holder;
Holder=Myset->GetCollect ("软件类型");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+=" 类型:";
		myStr2+=mystr;}
	Holder=Myset->GetCollect ("作者");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2=softname+"  作者: ";
		myStr2+=mystr;}
	Holder=Myset->GetCollect ("所属型号");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+=" 所属型号:";
		myStr2+=mystr;}
Holder=Myset->GetCollect ("所属系统");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+=" 所属系统:";
		myStr2+=mystr;}
	Holder=Myset->GetCollect ("软件功能描述");
	if(Holder.vt!=VT_NULL)
	{mystr=(char*)(_bstr_t)Holder;
	mystr.TrimRight (" ");
		myStr2+="/n软件功能描述/n";
		myStr2+=mystr;}

	m_Context=myStr2;
	UpdateData(false);
	Myset->Close();
	//控制邮移健
	if(i>=0){
		GetDlgItem(IDC_BUTTON2)->EnableWindow(true);}
	*pResult = 0;
}

void CChat::OnRight() 
{
    // TODO: Add your control notification handler code here
	// 移动选中格
	int i=m_List1.GetSelectionMark();
	if(i<0)
		return;
	int j=m_List2.GetItemCount();
	if((j==3)&&(m_Chattype==0))
		return;
	CString Str1,Str2,Str3;
	Str1=m_List1.GetItemText (i,0);
	Str2=m_List1.GetItemText (i,1);
	Str3=m_List1.GetItemText (i,2);
	m_List2.InsertItem (j,Str1);
	m_List2.SetItemText (j,1,Str2);
	m_List2.SetItemText (j,2,Str3);
	m_List1.DeleteItem (i);
	GetDlgItem(IDC_BUTTON5)->EnableWindow(true);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
}

void CChat::OnLeft() 
{
   // TODO: Add your control notification handler code here
	// 移动选中格
	int i=m_List2.GetSelectionMark();
	int j=m_List1.GetItemCount ();
	if(i<0)
		return;
	CString Str1,Str2,Str3;
	Str1=m_List2.GetItemText (i,0);
	Str2=m_List2.GetItemText (i,1);
Str3=m_List2.GetItemText (i,1);
	m_List1.InsertItem (j,Str1);
	m_List1.SetItemText (j,1,Str2);
	m_List1.SetItemText (j,2,Str2);
	m_List2.DeleteItem (i);
	int m=m_List2.GetItemCount ();
	if(m==0){
		GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
		GetDlgItem(IDC_BUTTON2)->EnableWindow(false);}
	GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
}

void CChat::OnApply() 
{
    // TODO: Add your control notification handler code here
	int m=m_List2.GetItemCount();
	if( m==0){AfxMessageBox("没有可选项");return;}
if(PublicUserType==1)
ManagerControl();
else
{
	if(PublicUserType==2)
	UserApply();
}

}

void CChat::OnNext() 
{
	// TODO: Add your control notification handler code here
	Initiate();
}

BOOL CChat::OnInitDialog() 
{
	CDialog::OnInitDialog();
	 
	// TODO: Add extra initialization here
	//List Initiallize	
	m_List1.InsertColumn (0,"软件名称");
	m_List1.InsertColumn (1,"软件格式");
	m_List1.InsertColumn (2,"软件编号");
	RECT rect;
	m_List1.GetWindowRect(& rect);
	int wid=(rect.right -rect.left )/2;
	m_List1.SetColumnWidth(0,wid);

⌨️ 快捷键说明

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