📄 manager.cpp
字号:
// 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 + -