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

📄 initdlg.cpp

📁 采用MFC+SQLSERVER 2000的图书管理系统,ODBC方式连接数据库。功能包括 书籍管理
💻 CPP
字号:
// InitDlg.cpp : implementation file
//

#include "stdafx.h"
#include "library.h"
#include "InitDlg.h"
 #include "BorrowInformSet.h"
#include "UBISet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CInitDlg dialog


CInitDlg::CInitDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CInitDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CInitDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CInitDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInitDlg)
	DDX_Control(pDX, IDC_LIST2, m_list2);
	DDX_Control(pDX, IDC_LIST1, m_list1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInitDlg, CDialog)
	//{{AFX_MSG_MAP(CInitDlg)
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInitDlg message handlers

BOOL CInitDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	if(!m_database.IsOpen())
	{
		//连接数据源
		if(!m_database.OpenEx("DSN=MySQL;UID=sa;PWD=123;CDatabase::noOdbcDialog"))
		{
			MessageBox("连接数据库失败!","新书登记入库",MB_OK|MB_ICONINFORMATION);
			return true;
		}
	}
	CBorrowInformSet  *m_pset=new CBorrowInformSet(&m_database);  
    //判断书库中是否有该书,进行相应操作
 	CString strSQL="SELECT * FROM BORROWINFORM WHERE Istate=1 OR Istate =3";
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

	//从文本文件中读取信息
	CFileDialog dlg(TRUE, "SQL", "*.txt",OFN_HIDEREADONLY
                    |OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|SQL Files(*.sql)|*.sql|All Files(*.*)|*.*||");
    if ( dlg.DoModal()==IDOK )  
	{
        //获取文件的绝对路径
        CString sFileName=dlg.GetPathName();
        //打开文件
        CStdioFile out;
        out.Open(sFileName, CStdioFile::modeReadWrite);
        CString sSql="",s;

        //读取文件
        do
		{   
             out.ReadString(s);
			
			 s.TrimLeft();
			 s.TrimRight();
		 
			 if(s.GetLength()!=0)
			 {   
                  //如果当前行中没有"have been delayed"字符串
                  if(s.Find("have been delayed") == -1)
				  {  
                      
					   CString sLeftTime;
		               CString sRightTime;
                       int i=s.Find(" ");
					   sLeftTime=s.Left(i);
					   sRightTime=s.Right(s.GetLength()-i);
					   sRightTime.TrimLeft();
					    //CString -->CTime 转换
					   //sLeftTime 转换
                       COleDateTime time1;
                       time1.ParseDateTime(sLeftTime);
                      SYSTEMTIME systime;
                      VariantTimeToSystemTime(time1, &systime);
                      CTime tm1(systime);
                      //sRightTime转换
					   COleDateTime time2;
                       time2.ParseDateTime(sRightTime);
                      VariantTimeToSystemTime(time2, &systime);
                      CTime tm2(systime);
                      //sRightTime 与sLeftTime 时间差
					  CTimeSpan ts=tm2-tm1;   //ts为txt 中每行结束时间和起始时间差
					   


                       m_pset->MoveFirst();
					   
                       while(!m_pset->IsEOF())
					   {

                        
						CTime TableEndData=m_pset->m_Ienddate;
					    
						if(tm1<=TableEndData && TableEndData<=tm2)   
						{       
						    	m_pset->Edit();
								CTimeSpan tspanOneDay(1,0,0,0);   //定义CTimeSpan 对象,大小为1天。
								m_pset->m_Ienddate=tm2+tspanOneDay;  //归还日期修改为txt中结束时间+1天
						      
	                              m_pset->Update();

						}
                       m_pset->MoveNext();

   

					   }
				       s+=" have been delayed";
				  }
			 }
			 sSql=sSql+(s+"\n");

 
		}while (out.GetPosition()!=out.GetLength());

		out.SeekToBegin();
        out.Write(sSql,sSql.GetLength());
        out.Close();
	}
    m_pset->Close();

	m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子 
	m_list1.InsertColumn(0,"借书信息产生号");
	m_list1.InsertColumn(1,"图书ID");
	m_list1.InsertColumn(2,"被借读者ID");
	m_list1.InsertColumn(3,"借书日期");
	m_list1.InsertColumn(4,"应还日期");
	m_list1.InsertColumn(5,"续借次数");
	//m_list1.InsertColumn(6,"实际还书日期");
	m_list1.InsertColumn(6,"图书状态");
	RECT rect;
	m_list1.GetWindowRect(&rect);
	int Width=rect.right-rect.left;
	m_list1.SetColumnWidth(0,Width/7);
	m_list1.SetColumnWidth(1,Width/7);
	m_list1.SetColumnWidth(2,Width/7);
	m_list1.SetColumnWidth(3,Width/7);
	m_list1.SetColumnWidth(4,Width/7);
	m_list1.SetColumnWidth(5,Width/7);
	m_list1.SetColumnWidth(6,Width/7);
	//m_list1.SetColumnWidth(7,Width/8);
	m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	
      strSQL="SELECT * FROM BORROWINFORM ";
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
    CString strTemp;
    int i=0;
	char buf[50];
	m_pset->MoveFirst();
	while(!m_pset->IsEOF())
	{   
	 	m_list1.InsertItem(i,buf);
         strTemp.Format("%ld",m_pset->m_Iid);
        m_list1.SetItemText(i,0,strTemp);
       
		 strTemp=m_pset->m_Ibid;
	    m_list1.SetItemText(i,1,strTemp);

        strTemp=m_pset->m_Iuid;
	    m_list1.SetItemText(i,2,strTemp);
        
		strTemp=m_pset->m_Ibegindate.Format("%Y-%m-%d");
        m_list1.SetItemText(i,3,strTemp);
        
		strTemp=m_pset->m_Ienddate.Format("%Y-%m-%d");
        m_list1.SetItemText(i,4,strTemp);
		
	 	strTemp.Format("%d",m_pset->m_Irenew);
        m_list1.SetItemText(i,5,strTemp);

	 
        
	//	strTemp=m_pset->m_Irealdate.Format("%Y-%m-%d");

       // m_list1.SetItemText(i,6,strTemp);
        
		strTemp.Format("%d",m_pset->m_Istate);
        m_list1.SetItemText(i,6,strTemp);
		i++;
		m_pset->MoveNext();
		UpdateData(FALSE);     
	}    
	m_pset->Close();
	
	//列表控件二处理
		m_list2.InsertColumn(0,"读者ID");
	m_list2.InsertColumn(1,"读者姓名");
	m_list2.InsertColumn(2,"读者性别");
	m_list2.InsertColumn(3,"读者联系电话");
	m_list2.InsertColumn(4,"用户状态");
	m_list2.InsertColumn(5,"借阅信息产生号");
	m_list2.InsertColumn(6,"借阅图书ID");
	m_list2.InsertColumn(7,"书名");
	m_list2.InsertColumn(8,"作者");

	m_list2.GetWindowRect(&rect);
	  Width=rect.right-rect.left;
	m_list2.SetColumnWidth(0,Width/9);
	m_list2.SetColumnWidth(1,Width/9);
	m_list2.SetColumnWidth(2,Width/9);
	m_list2.SetColumnWidth(3,Width/9);
	m_list2.SetColumnWidth(4,Width/9);
	m_list2.SetColumnWidth(5,Width/9);
	m_list2.SetColumnWidth(6,Width/9);
	m_list2.SetColumnWidth(7,Width/9);
	m_list2.SetColumnWidth(8,Width/9);

	m_list2.SetExtendedStyle(LVS_EX_FULLROWSELECT);

	CUBISet  *m_pUBIset=new CUBISet(&m_database);  
    //判断书库中是否有该书,进行相应操作
    strSQL="SELECT Bname, Bauthor,Iid,Ibid,Uid,Usex,Uname,Utel,Ureadstat\
		     FROM BOOK ,BORROWINFORM,USERS \
			 WHERE  Uid=Iuid AND Bid=IBid";    

	m_pUBIset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
	i=0;
	ZeroMemory(buf,sizeof(buf));
    m_pUBIset->MoveFirst();
    while(!m_pUBIset->IsEOF())
	{   
	    m_list2.InsertItem(i,buf);


	    m_list2.SetItemText(i,0,strTemp);
	    

		strTemp=m_pUBIset->m_Bname;
	    m_list2.SetItemText(i,0,strTemp);

		strTemp=m_pUBIset->m_Bauthor;
	    m_list2.SetItemText(i,1,strTemp);  

	 /*	 
	       //strTemp.Format("%d",m_pUBIset->m_Iid);
        
		 
	/*	 
	    

        strTemp=m_pUBIset->m_Bauthor;
        m_list2.SetItemText(i,1,strTemp);

 
	    strTemp=m_pUBIset->m_Uname;
	    m_list2.SetItemText(i,1,strTemp);

         strTemp=m_pUBIset->m_Usex;
	    m_list2.SetItemText(i,2,strTemp);

		strTemp=m_pUBIset->m_Utel;
	    m_list2.SetItemText(i,3,strTemp);

		strTemp=m_pUBIset->m_Ureadstat;
	    m_list2.SetItemText(i,4,strTemp);
      
		strTemp.Format("%d",m_pUBIset->m_Iid);
	    m_list2.SetItemText(i,5,strTemp);

		strTemp=m_pUBIset->m_Ibid;
	    m_list2.SetItemText(i,6,strTemp);

		strTemp=m_pUBIset->m_Bname;
	    m_list2.SetItemText(i,7,strTemp);

		strTemp=m_pUBIset->m_Bauthor;
	    m_list2.SetItemText(i,8,strTemp);   */
			 
        i++;
		m_pUBIset->MoveNext();
		UpdateData(FALSE);     
	}
   m_pUBIset->Close();



  
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

HBRUSH CInitDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
		if(nCtlColor ==CTLCOLOR_DLG)
        return m_brush; //返加绿色刷子
		 if(nCtlColor==CTLCOLOR_STATIC) 
		 {   
		   pDC->SetBkColor(RGB(0, 255, 0));
           pDC->SetTextColor(RGB(255,0,0)); 
		 }
	if(nCtlColor==  CTLCOLOR_LISTBOX) 
	{
       pDC->SetTextColor(RGB(0,0,255));     
		//pDC->SetBkMode(TRANSPARENT); 
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CInitDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
		if(m_database.IsOpen())
		m_database.Close();
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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