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

📄 setreminddlg2.cpp

📁 这是一个学生信息管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SetRemindDlg2.cpp : 实现文件
//

#include "stdafx.h"
#include "SMS.h"
#include "SetRemindDlg2.h"


// CSetRemindDlg2 对话框

IMPLEMENT_DYNAMIC(CSetRemindDlg2, CDialog)

CSetRemindDlg2::CSetRemindDlg2(CWnd* pParent /*=NULL*/)
	: CDialog(CSetRemindDlg2::IDD, pParent)
	, m_iRemindAmount(0)
	, m_pSet(&theApp.m_db )
	, m_sTodayRemind(_T(""))
{
	//显示窗口颜色
	m_backcolor=m_RGB_BkColor;
	m_brush.CreateSolidBrush(m_backcolor);
	m_bItemClick=false;
}

CSetRemindDlg2::~CSetRemindDlg2()
{
}

void CSetRemindDlg2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_SET_REMIND_LIST, m_cRemindListCtrl);
	DDX_Text(pDX, IDC_REMIND_AMOUNT_STATIC, m_iRemindAmount);
	DDX_Control(pDX, IDC_REMIND_DELETE_BT, m_cDeleteBt);
	DDX_Control(pDX, IDC_REMIND_UPDATE_BT, m_cUpdateBt);
	DDX_Control(pDX, IDC_REMIND_PRINT_BT, m_cPrintBt);
	DDX_Text(pDX, IDC_TODAY_REIMIND_STATIC, m_sTodayRemind);
}


BEGIN_MESSAGE_MAP(CSetRemindDlg2, CDialog)
	ON_BN_CLICKED(IDC_REMIND_ALL_BT, &CSetRemindDlg2::OnBnClickedRemindAllBt)
	ON_BN_CLICKED(IDC_REMIND_KIND_BT, &CSetRemindDlg2::OnBnClickedRemindKindBt)
	ON_BN_CLICKED(IDC_REMIND_ADD_BT, &CSetRemindDlg2::OnBnClickedRemindAddBt)
	ON_BN_CLICKED(IDC_REMIND_UPDATE_BT, &CSetRemindDlg2::OnBnClickedRemindUpdateBt)
	ON_BN_CLICKED(IDC_REMIND_DELETE_BT, &CSetRemindDlg2::OnBnClickedRemindDeleteBt)
	ON_BN_CLICKED(IDC_REMIND_SEARCH_BT, &CSetRemindDlg2::OnBnClickedRemindSearchBt)
	ON_WM_QUERYDRAGICON()//打印
	ON_BN_CLICKED(IDC_REMIND_PRINT_BT, &CSetRemindDlg2::OnBnClickedRemindPrintBt)
	ON_WM_CTLCOLOR()
	ON_NOTIFY(HDN_ITEMCLICK, 0, &CSetRemindDlg2::OnHdnItemclickSetRemindList)
	ON_WM_CLOSE()
	ON_WM_CONTEXTMENU()
	ON_WM_TIMER()
	ON_COMMAND(ID_REMIND_ALL, &CSetRemindDlg2::OnRemindAll)
	ON_COMMAND(ID_REMIND_KIND, &CSetRemindDlg2::OnRemindKind)
	ON_COMMAND(ID_REMIND_ADD, &CSetRemindDlg2::OnRemindAdd)
	ON_COMMAND(ID_REMIND_UPDATE, &CSetRemindDlg2::OnRemindUpdate)
	ON_COMMAND(ID_REMIND_DELETE, &CSetRemindDlg2::OnRemindDelete)
	ON_COMMAND(ID_REMIND_SEARCH, &CSetRemindDlg2::OnRemindSearch)
	ON_COMMAND(ID_REMIND_PRINT, &CSetRemindDlg2::OnRemindPrint)
    ON_UPDATE_COMMAND_UI(ID_REMIND_UPDATE, &CSetRemindDlg2::OnUpdateRemindUpdate )
	ON_UPDATE_COMMAND_UI(ID_REMIND_DELETE, &CSetRemindDlg2::OnUpdateRemindDelete )
	ON_UPDATE_COMMAND_UI(ID_REMIND_PRINT, &CSetRemindDlg2::OnUpdateRemindPrint )
	ON_WM_INITMENUPOPUP()
	ON_COMMAND(ID_REMIND_CLOSE, &CSetRemindDlg2::OnRemindClose)
END_MESSAGE_MAP()


// CSetRemindDlg2 消息处理程序

void CSetRemindDlg2::ViewAll()
{
	BeginWaitCursor();
	CString s;
	m_cRemindListCtrl.DeleteAllItems ();
	if(m_pSet.IsOpen ())
		m_pSet.Close ();
	m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Remind order by rStartDate");
	m_pSet.m_strFilter .Empty ();
	int count;
	count=m_pSet.GetRecordCount ();
	if(count==0)//如果该数据表为空,则不用显示
	{
		EndWaitCursor();
		m_pSet.Close ();
		return ;
	}
	m_pSet.MoveFirst ();
	int i=0; 
	while (!m_pSet.IsEOF ())
	{
        m_cRemindListCtrl.InsertItem(i,m_pSet.m_rContent ,0);
		m_cRemindListCtrl.SetItemText (i,1,FormatDate(m_pSet.m_rStartDate ));
		m_cRemindListCtrl.SetItemText (i,2,FormatDate(m_pSet.m_rEndDate ));
		s.Format (L"%d",m_pSet.m_rFrequency );
		m_cRemindListCtrl.SetItemText (i,3,s);
		if(m_pSet.m_rFinished ==true)
			m_cRemindListCtrl.SetItemText (i,4,L"是");
		else 
			m_cRemindListCtrl.SetItemText (i,4,L"否");
		m_cRemindListCtrl.SetItemText (i,5,m_pSet.m_rKind );
		m_cRemindListCtrl.SetItemText (i,6,m_pSet.m_rRemark );
        s.Format (L"%d",m_pSet.m_rId );
		m_cRemindListCtrl.SetItemText (i,7,s);
        i++;
		m_pSet.MoveNext ();
	}
	m_pSet.Close ();
	//现在在右边显示个数
	m_iRemindAmount=i;
	s.Format (L"%d",m_iRemindAmount);
	SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
	EndWaitCursor();
}
void CSetRemindDlg2::OnBnClickedRemindAllBt()
{
	// TODO: 在此添加控件通知处理程序代码
	ViewAll();
}

void CSetRemindDlg2::Kind ()
{
	CString s;
	int i=0;
    CSetRemindKindDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		BeginWaitCursor();
	    if(m_pSet.IsOpen ())
		    m_pSet.Close ();
	    CString str;
	    str="Select * from Remind where rKind='";
	    str+=dlg.m_sKind ;
	    str+="' order by rStartDate";
	    m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
	    m_pSet.m_strFilter .Empty ();
	    m_pSet.Requery ();
	    if(m_pSet.IsEOF ())
	    {
	        m_iRemindAmount=i;
	        s.Format (L"%d",m_iRemindAmount);
	        SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
		    MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
		    m_pSet.Close ();
			EndWaitCursor();
		    return ;
	    }
	    else
	    {
		    m_cRemindListCtrl.DeleteAllItems ();
	        
	        if(m_pSet.GetRecordCount ()==0)
		    {
			    m_pSet.Close ();
				EndWaitCursor();
			    return ;
		    }
		    m_pSet.MoveFirst ();
	        while (!m_pSet.IsEOF ())
	        {  
				m_cRemindListCtrl.InsertItem(i,m_pSet.m_rContent ,0);
				m_cRemindListCtrl.SetItemText (i,1,FormatDate(m_pSet.m_rStartDate ));
				m_cRemindListCtrl.SetItemText (i,2,FormatDate(m_pSet.m_rEndDate ));
				s.Format (L"%d",m_pSet.m_rFrequency );
				m_cRemindListCtrl.SetItemText (i,3,s);
				if(m_pSet.m_rFinished ==true)
					m_cRemindListCtrl.SetItemText (i,4,L"是");
				else 
					m_cRemindListCtrl.SetItemText (i,4,L"否");
				m_cRemindListCtrl.SetItemText (i,5,m_pSet.m_rKind );
				m_cRemindListCtrl.SetItemText (i,6,m_pSet.m_rRemark );
				s.Format (L"%d",m_pSet.m_rId );
				m_cRemindListCtrl.SetItemText (i,7,s);
                i++;
			    m_pSet.MoveNext ();
	        }
	        m_pSet.Close ();
	        //现在在右边显示个数
	        m_iRemindAmount=i;
	        s.Format (L"%d",m_iRemindAmount);
	        SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
		}
		EndWaitCursor();
	}
}
void CSetRemindDlg2::OnBnClickedRemindKindBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Kind();
}

void CSetRemindDlg2::Add()
{
	CString s;
	CSetRemindAddDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		if(!theApp.m_db.CanTransact ())
		{
			//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
			MessageBox(L"\n系统不支持事务处理,添加不成功!\n",L"错误", MB_ICONSTOP);
			return ;                                    
		}
		theApp.m_db.BeginTrans ();//开始事务处理
		TRY
		{
	        m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Remind order by rStartDate");
		    m_pSet.m_strFilter.Empty ();
			m_pSet.AddNew ();
			m_pSet.m_rContent =dlg.m_sContent ;
			m_pSet.m_rStartDate =dlg.m_tStartDate ;
			m_pSet.m_rEndDate =dlg.m_tEndDate ;
			m_pSet.m_rFrequency =dlg.m_iFrequency ;
			m_pSet.m_rFinished =false;
			m_pSet.m_rKind =dlg.m_sKind ;
			m_pSet.m_rRemark =dlg.m_sRemark ;
			m_pSet.Update ();
			m_pSet.MoveLast ();
		    m_pSet.Close ();
            theApp.m_db.CommitTrans ();//添加成功了
		}
		CATCH_ALL(e)
		{
			theApp.m_db.Rollback ();
		    MessageBox(L"\n事务处理出错,添加失败!\n",L"错误", MB_ICONSTOP);
			return;
	    }
	    END_CATCH_ALL
		//添加成功了,就要在列表中显示出来
		m_cRemindListCtrl.InsertItem(0,dlg.m_sContent ,0);
		m_cRemindListCtrl.SetItemText (0,1,FormatDate(dlg.m_tStartDate ));
		m_cRemindListCtrl.SetItemText (0,2,FormatDate(dlg.m_tEndDate ));
		s.Format (L"%d",dlg.m_iFrequency );
		m_cRemindListCtrl.SetItemText (0,3,s);
		m_cRemindListCtrl.SetItemText (0,4,L"否");
		m_cRemindListCtrl.SetItemText (0,5,dlg.m_sKind  );
		m_cRemindListCtrl.SetItemText (0,6,dlg.m_sRemark );
		s.Format (L"%d",m_pSet.m_rId );
		m_cRemindListCtrl.SetItemText (0,7,s);
		//然后再在个数中加一,显示给用户
		m_iRemindAmount++;
		s.Format (L"%d",m_iRemindAmount);
		SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
	}
}
void CSetRemindDlg2::OnBnClickedRemindAddBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Add();
}

void CSetRemindDlg2::Update ()
{
	CString s;
	POSITION pos = m_cRemindListCtrl.GetFirstSelectedItemPosition();
    if (pos == NULL)
	{
		MessageBox(L"你没有选择要修改的名言\n请在列表中选择要修改的名言!",L"提示",MB_ICONEXCLAMATION);
		return ;//没有选择表项则不用做下面的事情
	}
    else
    {
		if(!theApp.m_db.CanTransact ())
		{
			//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
			MessageBox(L"\n系统不支持事务处理,修改不成功!\n",L"错误", MB_ICONSTOP);
			return ;                                    
		}
	    int nItem = m_cRemindListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
		//下面获取该表项的数据,用于在修改对话框中显示
		int Id=_ttol(m_cRemindListCtrl.GetItemText (nItem,7));
		if(m_pSet.IsOpen ())
			m_pSet.Close ();
		m_pSet.Open ();
		m_pSet.m_strFilter .Empty ();
		m_pSet.MoveFirst ();
		while(!m_pSet.IsEOF ())
		{
			if(m_pSet.m_rId ==Id)//说明找到了相应的那个字段	
			{
				m_sSetRemind_Content=m_pSet.m_rContent;
				m_tSetRemind_StartDate=m_pSet.m_rStartDate ;
				m_tSetRemind_EndDate=m_pSet.m_rEndDate ;
				m_iSetRemind_Frequency=m_pSet.m_rFrequency ;
				m_bSetRemind_Finished=m_pSet.m_rFinished ;
				m_sSetRemind_Kind=m_pSet.m_rKind ;
				m_sSetRemind_Remark=m_pSet.m_rRemark ;
				m_iSetRemind_Id=m_pSet.m_rId ;
			}
			m_pSet.MoveNext ();
		}
		if(m_pSet.IsOpen ())
			m_pSet.Close ();
		//下面弹出修改对话框,初始化数据由上面部分提供
		CSetRemindUpdateDlg dlg;
		if(dlg.DoModal ()!=IDOK)
		{
			return ;//万一用户没有输入正确信息,则退出,不给修改
		}
		theApp.m_db.BeginTrans ();//开始事务处理
		TRY
		{
	        m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Remind order by rStartDate");
		    m_pSet.m_strFilter.Empty ();
			m_pSet.MoveFirst ();//刚开始移动到第一个位置
			while(!m_pSet.IsEOF ())
			{
				if(m_pSet.m_rId ==m_iSetRemind_Id)
				{
					m_pSet.Edit ();
					m_pSet.m_rContent =dlg.m_sContent ;
					m_pSet.m_rStartDate =dlg.m_tStartDate ;
					m_pSet.m_rEndDate =dlg.m_tEndDate ;
					m_pSet.m_rFrequency =dlg.m_iFrequency ;
					m_pSet.m_rFinished =!dlg.m_bFinished ;
					m_pSet.m_rKind =dlg.m_sKind ;
					m_pSet.m_rRemark =dlg.m_sRemark ;
	                m_pSet.Update ();
			        m_pSet.Requery ();
					m_pSet.MoveNext ();
					break;
				}
				m_pSet.MoveNext ();
			}
            m_pSet.Close ();
            theApp.m_db.CommitTrans ();//修改成功了
		}
		CATCH_ALL(e)
		{
			theApp.m_db.Rollback ();
		    MessageBox(L"\n事务处理出错,修改失败!\n",L"错误", MB_ICONSTOP);
			return;
	    }
	    END_CATCH_ALL
		//修改成功了,就要把新的在列表中显示出来,同时去掉旧的
		//先去掉旧的
		m_cRemindListCtrl.DeleteItem (nItem);
		//再添加新的
		m_cRemindListCtrl.InsertItem(nItem,dlg.m_sContent ,0);
		m_cRemindListCtrl.SetItemText (nItem,1,FormatDate(dlg.m_tStartDate ));
		m_cRemindListCtrl.SetItemText (nItem,2,FormatDate(dlg.m_tEndDate ));
		s.Format (L"%d",dlg.m_iFrequency );
		m_cRemindListCtrl.SetItemText (nItem,3,s);
		if(dlg.m_bFinished ==false)
			m_cRemindListCtrl.SetItemText (nItem,4,L"是");
		else 
			m_cRemindListCtrl.SetItemText (nItem,4,L"否");
		m_cRemindListCtrl.SetItemText (nItem,5,dlg.m_sKind  );
		m_cRemindListCtrl.SetItemText (nItem,6,dlg.m_sRemark );
		s.Format (L"%d",m_iSetRemind_Id );
		m_cRemindListCtrl.SetItemText (nItem,7,s);
	}
}
void CSetRemindDlg2::OnBnClickedRemindUpdateBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Update();
}

void CSetRemindDlg2::Delete ()
{
	POSITION pos = m_cRemindListCtrl.GetFirstSelectedItemPosition();
    if (pos == NULL)
	{
		MessageBox(L"\n你没有选中任何一个提醒,不可以删除!\n",L"提醒");
	}
    else
   {
	   if(MessageBox(L"\n此操作将永久删除该项,确定吗?\n",L"删除提醒",MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2)==IDCANCEL)
		   return ;
	   while (pos)
      {
		  int nItem = m_cRemindListCtrl.GetNextSelectedItem(pos);
		  CString str;
		  str="Select * from Remind order by rStartDate";
	      m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
		  //获取该单词
		  int m_iId;
		  m_iId=_ttol(m_cRemindListCtrl.GetItemText (nItem,7));
		  m_pSet.m_strFilter.Empty ();
		  m_pSet.MoveFirst ();//刚开始移动到第一个位置
		  while(!m_pSet.IsEOF ())
		  {
			  if(m_iId ==m_pSet.m_rId )
			  {
				  m_pSet.Delete ();
				  break;
			  }
			  m_pSet.MoveNext ();
		  }		 
		  if(!m_pSet.IsDeleted ())
		  {
			  MessageBox(L"\n删除失败!\n",L"错误", MB_ICONSTOP);
			  return ;
		  }
		  m_pSet.MoveNext ();
		  //数据库删除成功后就删除列表了
		  m_cRemindListCtrl.DeleteItem (nItem);
		  m_pSet.Close ();
		  //现在在右边显示个数
	      m_iRemindAmount--;
	      CString s;
	      s.Format (L"%d",m_iRemindAmount);
	      SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
      }
   }
}
void CSetRemindDlg2::OnBnClickedRemindDeleteBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Delete();
}

void CSetRemindDlg2::Search ()
{
	int i=0;
	CString s;
	CString SearchTime;
	CString StartDate;
	CString EndDate;
    CString str;
 	CSetRemindSearchDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		BeginWaitCursor();
		m_cRemindListCtrl.DeleteAllItems ();
		switch(dlg.m_iItem )
		{
		case 0:
		case 1:
			if(m_pSet.IsOpen ())
				m_pSet.Close ();
		    str="Select * from Remind where ";
		    if(dlg.m_iItem==0)
				str+="rContent";
			else
				str+="rKind";
			str+=" like '%";
			str+=dlg.m_sKeyWord ;
			str+="%' order by rStartDate";
	        m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
		    m_pSet.m_strFilter .Empty ();
		    m_pSet.Requery ();
		    if(m_pSet.IsEOF ())
		    {
				m_iRemindAmount=i;
				s.Format (L"%d",m_iRemindAmount);
				SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
			    MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
			    m_pSet.Close ();
				EndWaitCursor();
			    return ;
			}
		    else
		    {
	            if(m_pSet.GetRecordCount ()==0)
		        {
					m_pSet.Close ();
					EndWaitCursor();
			        return ;
		         }
		        m_pSet.MoveFirst ();
	            while (!m_pSet.IsEOF ())
	            { 
					m_cRemindListCtrl.InsertItem(i,m_pSet.m_rContent ,0);
					m_cRemindListCtrl.SetItemText (i,1,FormatDate(m_pSet.m_rStartDate ));
					m_cRemindListCtrl.SetItemText (i,2,FormatDate(m_pSet.m_rEndDate ));
					s.Format (L"%d",m_pSet.m_rFrequency );
					m_cRemindListCtrl.SetItemText (i,3,s);
					if(m_pSet.m_rFinished ==true)
						m_cRemindListCtrl.SetItemText (i,4,L"是");
					else 
						m_cRemindListCtrl.SetItemText (i,4,L"否");
					m_cRemindListCtrl.SetItemText (i,5,m_pSet.m_rKind );
					m_cRemindListCtrl.SetItemText (i,6,m_pSet.m_rRemark );
					s.Format (L"%d",m_pSet.m_rId );
					m_cRemindListCtrl.SetItemText (i,7,s);
                    i++;
					m_pSet.MoveNext ();
				}
			}
	        m_pSet.Close ();
		    break;
		case 2:
			SearchTime=DateToString(dlg.m_tSearchDate );
		    if(m_pSet.IsOpen ())
				m_pSet.Close ();
		    m_pSet.Open ();

⌨️ 快捷键说明

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