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

📄 manager.cpp

📁 偶作的毕业设计程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// Manager.cpp : implementation file
//
#include "resource.h"
#include "stdafx.h"
#include "SoftDocSystem.h"
#include "SoftDocSystemDlg.h"
#include "Manager.h"
#include "Chat.h"
#include "LogMngr.h"
#include "ChangeApply.h"
#include "MovieIn.h"
#include "SoftDelete.h"

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

/////////////////////////////////////////////////////////////////////////////
// CManager dialog
extern CString PublicUserName;
extern CSoftDocSystemApp theApp;

CManager::CManager(CWnd* pParent /*=NULL*/)
	: CDialog(CManager::IDD, pParent)
{
	//{{AFX_DATA_INIT(CManager)
	m_treatType = -1;
	m_ReplyStr = _T("");
	m_Content = _T("");
	//}}AFX_DATA_INIT
}


void CManager::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CManager)
	DDX_Control(pDX, IDC_COMBO1, m_UserCtrl);
	DDX_Control(pDX, IDC_LIST1, m_List);
	DDX_Radio(pDX, IDC_RADIO1, m_treatType);
	DDX_Text(pDX, IDC_EDIT2, m_ReplyStr);
	DDX_Text(pDX, IDC_EDIT3, m_Content);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CManager, CDialog)
	//{{AFX_MSG_MAP(CManager)
	ON_BN_CLICKED(IDC_RADIO1, OnStateReport)
	ON_CBN_CLOSEUP(IDC_COMBO1, OnUserSel)
	ON_BN_CLICKED(IDC_RADIO3, OnAlreadyLend)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_BUTTON6, OnReplyUser)
	ON_BN_CLICKED(IDC_BUTTON7, OnNotify)
	ON_BN_CLICKED(IDC_BUTTON3, OnBorrowLend)
	ON_COMMAND(IDR_ACCEPT, OnAccept)
	ON_COMMAND(IDR_COPY, OnCopy)
	ON_COMMAND(IDR_DEL, OnDel)
	ON_COMMAND(IDR_UNDO, OnUndo)
	ON_BN_CLICKED(IDC_RADIO5, OnChatRec)
	ON_BN_CLICKED(IDC_RADIO2, OnBorrowReturn)
	ON_BN_CLICKED(IDC_RADIO4, OnUserAllInfo)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_CLEARLOG, OnClearlog)
	ON_COMMAND(IDR_MODIFY, OnModify)
	ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	ON_COMMAND(IDR_USERCOPY, OnUsercopy)
	ON_BN_CLICKED(IDC_BUTTON8, OnPrint)
	ON_BN_CLICKED(IDC_BUTTON4, OnSoftIn)
	ON_BN_CLICKED(IDC_BUTTON2, OnCancel)
	ON_BN_CLICKED(IDC_BUTTON1, OnDelSoft)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CManager message handlers

BOOL CManager::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
 CSoftDocSystemApp* myApp=(CSoftDocSystemApp*)AfxGetApp();
	 CString source_;
	 source_.Format ("driver={SQL Server};server=%s;database=SoftDocument",myApp->ConnectServer);
	_bstr_t source=source_;
	_bstr_t pwd=myApp->ConnectPwd;
	_bstr_t user=myApp->ConnectUser;

	//Databaxe Initialled
	try{
		TESTHR(m_DBCnt.CreateInstance(_uuidof(Connection)));
		TESTHR(m_DBCnt->Open(source, user, pwd, 16));
		
	}
	catch (_com_error &e){
		MessageBox(e.ErrorMessage()); 
		MessageBox("ADO数据源初始化失败,你将无法进入管理窗口!");
		return false;
	}
	m_strSource = (char * )source;
	InitiateData();
if(m_Log.Setup (m_DBCnt))
		m_Log.Addlog ("管理员","管理系统信息","未知");//操作日志
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CManager::InitiateData()
{
CString sql_;
sql_="SELECT DISTINCT 用户名 FROM UserInfo ORDER BY 用户名";
_bstr_t sql=sql_;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t Holder;
CString mystr;
while(!Myset->adoEOF )
{Holder=Myset->GetCollect ("用户名");
mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight ();
m_UserCtrl.AddString (mystr);
Myset->MoveNext();}
Myset->Close();
m_ListNumber=0;
m_DelSum=0;
b[1]=b[2]=b[3]=b[0]=b[4]=b[5]=b[6]=0;
GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
}

void CManager::OnStateReport() 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
	if(m_DelSum>0)DeleteRemain();
	m_PreType=0;
((CButton*)GetDlgItem(IDC_RADIO5))->SetCheck(false);
m_DelSum=0;
b[1]=b[0]=b[4]=b[5]=b[6]=0;
b[2]=1;
b[3]=2;
	InitList();
m_List.SetRedraw (false);
CString mysql,StateString,StateMiaoShu;
mysql.Format("SELECT * FROM StateReport");
_bstr_t sql=mysql;
_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 str1,mystr;
_variant_t Holder;
int i=0,StateIndex;
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("用户名");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.InsertItem (i,mystr);}
else
m_List.InsertItem (i,"未知用户名");
Holder=Myset->GetCollect ("软件名称");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,1,mystr);}
else
m_List.SetItemText (i,1,"未知软件");
Holder=Myset->GetCollect ("软件作者");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,2,mystr);}
else
m_List.SetItemText (i,2,"未知作者");
Holder=Myset->GetCollect ("状态");//根据不同状态判断
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
StateIndex=atoi(mystr);
switch(StateIndex)
{case 1:
{mystr="";
Holder=Myset->GetCollect ("剩余时间");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
StateString.Format("还需%s天完成",mystr);}
else
StateString="时间不定";
Holder=Myset->GetCollect ("状态描述");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");	
StateMiaoShu=mystr;}
else
StateMiaoShu="状态不定";
break;
}
case 2:
	{
Holder=Myset->GetCollect ("索取地址");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");	
StateMiaoShu.Format("将于%s送管理员",mystr);}
else
StateMiaoShu="地址不定";
StateString="送管理员";
	break;}
case 3:
	{
Holder=Myset->GetCollect ("索取地址");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");}	
StateMiaoShu.Format("到%s取",mystr);
StateString="请管理员来取";
break;	}
}}
else
{StateMiaoShu="不定";
StateString="状态不定";}
m_List.SetItemText (i,3,StateString);
m_List.SetItemText (i,4,StateMiaoShu);
Holder=Myset->GetCollect ("文档形式");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText(i,5,mystr);
}
else
m_List.SetItemText(i,5,"未知格式");
Holder=Myset->GetCollect ("汇报时间");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText(i,6,"mystr");
}
else
m_List.SetItemText(i,6,"未知时间");
Holder=Myset->GetCollect ("状态编号");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText(i,7,mystr);
}
else
m_List.SetItemText(i,7,"未知编号");
Myset->MoveNext ();
i++;
}
Myset->Close();
m_List.SetRedraw (true);	
}

void CManager::OnUserSel() 
{
	// TODO: Add your control notification handler code here
		UpdateData();
			if(m_DelSum>0)DeleteRemain();
	m_PreType=3;
//用消息框显示用户数据
CString strUser,strDepartment,strRealname,strTel,strCheckDate,strInfo;
CString SortNumber;
CString mysql,mystr;
m_UserCtrl.GetWindowText(SortNumber);
SortNumber.TrimRight (" ");
mysql.Format("SELECT * FROM UserInfo WHERE 用户名 = '%s'",SortNumber);
_bstr_t sql=mysql;
_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;
	}
_variant_t Holder;
strUser=SortNumber;
Holder=Myset->GetCollect ("姓名");
if(Holder.vt!=VT_NULL)
{strRealname=(char*)(_bstr_t)Holder;
strRealname.TrimRight (" ");}
else
strRealname="未知姓名";
Holder=Myset->GetCollect ("部门");
if(Holder.vt!=VT_NULL)
{strDepartment=(char*)(_bstr_t)Holder;
strDepartment.TrimRight (" ");}
else
strDepartment="未知部门";
Holder=Myset->GetCollect ("联系电话");
if(Holder.vt!=VT_NULL)
{strTel=(char*)(_bstr_t)Holder;
strTel.TrimRight (" ");}
else
strTel="未知电话";
Holder=Myset->GetCollect ("登记时间");
if(Holder.vt!=VT_NULL)
{strCheckDate=(char*)(_bstr_t)Holder;
strCheckDate.TrimRight (" ");}
else
strCheckDate="不明时间";
Holder=Myset->GetCollect ("详细信息");
if(Holder.vt!=VT_NULL)
{strInfo=(char*)(_bstr_t)Holder;
strInfo.TrimRight (" ");}
else
strInfo="没有信息";
Myset->Close();
mystr="用户名:" +SortNumber+"\n"+"真实姓名:"+strRealname+"\n"+"所在部门:"+strDepartment+"\n"
+"详细信息:"+strInfo;
//输出消息框
AfxMessageBox(mystr);
}

void CManager::OnAlreadyLend() 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
//	((CButton*)GetDlgItem(IDC_RADIO5))->SetCheck(false);
		if(m_DelSum>0)DeleteRemain();
	m_PreType=3;
	InitList();
	CString geshi[6];
	geshi[1]="软盘";
	geshi[2]="光盘";
	geshi[4]="文本";
	geshi[3]="硬盘";
	geshi[5]="其他";
	m_List.SetRedraw (false);
	CString mysql,mystr;
	mysql.Format("SELECT * FROM SoftDocInfo WHERE (软盘 <> '在家' and 软盘 <>'无') or (光盘 <> '在家' and 光盘 <>'无') or (硬盘 <> '在家' and 硬盘<>'无') or (文本 <> '在家' and 文本 <>'无') or (其他 <> '在家' and 其他 <>'无')");
	_bstr_t sql=mysql;
	_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;
	}
	_variant_t Holder;
	int i=0,j=0;
	
	int Shumu=0;
	while(!Myset->adoEOF)//看是否存在纪录
	{Shumu+=1;
	Myset->MoveNext ();}
	if(Shumu<1)return;
	Myset->MoveFirst ();
	CString softnumber,softname,softtype,softgeshi,softdate;
	while(!Myset->adoEOF ){	
		Holder=Myset->GetCollect ("软件名称");
		if(Holder.vt!=VT_NULL)
		{softname=(char*)(_bstr_t)Holder;
		softname.TrimRight(" ");}
		else softname="未知软件";
		Holder=Myset->GetCollect ("软件编号");
		if(Holder.vt!=VT_NULL)
		{softnumber=(char*)(_bstr_t)Holder;
		softnumber.TrimRight(" ");}
		else softnumber="未知编号";
		Holder=Myset->GetCollect ("软件类型");
		if(Holder.vt!=VT_NULL)
		{softnumber=(char*)(_bstr_t)Holder;
		softnumber.TrimRight(" ");}
		else softnumber="未知类型";
		
		for(i=1;i<6;i++)
		{_variant_t strgeshi=geshi[i];
		Holder=Myset->GetCollect (strgeshi);
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight(" ");
		if(mystr!="在家" && mystr!="无"){
			m_List.InsertItem (j,softname);
			m_List.SetItemText (j,1,softtype);
			m_List.SetItemText (j,2,geshi[i]);
			m_List.SetItemText (j,3,mystr);
			m_List.SetItemText (j,4,softnumber);
			j++;}
		}}
		Myset->MoveNext ();}
	m_List.SetRedraw (true);
}

void CManager::InitList()
{
UpdateData();
	m_List.DeleteAllItems ();//状态报告
	for (int i=m_ListNumber-1;i>-1;i--)
		m_List.DeleteColumn(i);
	switch(m_treatType)
	{	
	case 0://状态报告
		{
			m_List.InsertColumn (0,"用户名");
			m_List.InsertColumn (1,"软件名称");
			m_List.InsertColumn (2,"软件作者");	
			m_List.InsertColumn (3,"目前状态");
			m_List.InsertColumn (4,"状态描述");
			m_List.InsertColumn (5,"文档形式");
			m_List.InsertColumn (6,"汇报时间");
			m_List.InsertColumn (7,"状态编号");
			m_ListNumber=8;
			RECT rect;
			m_List.GetWindowRect(& rect);
			int wid=(rect.right -rect.left );
			m_List.SetColumnWidth(0,wid/8);
			m_List.SetColumnWidth(1,wid/5);
			m_List.SetColumnWidth(2,wid/10);
			m_List.SetColumnWidth(3,wid/5);
			m_List.SetColumnWidth(4,wid/4);
			m_List.SetExtendedStyle (LVS_EX_FULLROWSELECT);
			m_IndexTo=0;
			m_Indexpoint=7;
	break;	}
	case 1:
		{
			m_List.InsertColumn (0,"用户名");
			m_List.InsertColumn (1,"申请类别");
			m_List.InsertColumn (2,"软件名称");	
			m_List.InsertColumn (3,"格式");
			m_List.InsertColumn (4,"软件编号");
			m_List.InsertColumn (5,"申请日期");
			m_List.InsertColumn (6,"申请号");
			m_ListNumber=7;
			RECT rect;
			m_List.GetWindowRect(& rect);
			int wid=(rect.right -rect.left )/5;
			m_List.SetColumnWidth(0,wid);
			m_List.SetColumnWidth(1,wid);
			m_List.SetColumnWidth(2,wid);
			m_List.SetColumnWidth(3,wid);
			m_List.SetColumnWidth(4,wid);
			m_List.SetExtendedStyle (LVS_EX_FULLROWSELECT);
	        m_IndexTo=0;
			m_Indexpoint=6;
	break;	}
	case 2:
		{
			m_List.InsertColumn (0,"软件名");
			m_List.InsertColumn (1,"类型");
			m_List.InsertColumn (2,"格式");	
			m_List.InsertColumn (3,"借者");
			m_List.InsertColumn (4,"软件编号");
			m_List.InsertColumn (5,"借出日期");

⌨️ 快捷键说明

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