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

📄 studentdlg.cpp

📁 以前的课程设计,觉得功能不错,界面设计的也不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:

      CFileDialog dlg(TRUE,NULL,NULL,0,"jpg Files (*.jpg)|*.jpg||",this);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
      if(dlg.DoModal()==IDOK)
      {FilePathName=dlg.GetPathName();

	if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // 

	if(f.Open(FilePathName, CFile::modeRead | CFile::typeBinary, &e)) //打开了一个jpg文件
{	

		int nSize = f.GetLength();          //先得到jpg文件长度
		BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存
	 
		if (f.Read(pBuffer, nSize) > 0 )    //把jpg文件读到pBuffer(堆上申请一块内存)
		{   // +----------------------------------------------
						BYTE *pBuf = pBuffer;     ///下面这一大段是把pBuffer里的jpg数据放到库中
						VARIANT			varBLOB;
						SAFEARRAY		*psa;
					    SAFEARRAYBOUND	rgsabound[1];
				
					 
							
						if(pBuf)
							{    
							rgsabound[0].lLbound = 0;
							rgsabound[0].cElements = nSize;
							psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
							for (long i = 0; i < (long)nSize; i++)
							SafeArrayPutElement (psa, &i, pBuf++);
							varBLOB.vt = VT_ARRAY | VT_UI1;
							varBLOB.parray = psa;
							m_pset->GetFields()->GetItem("Data")->AppendChunk(varBLOB);
			
                       //     m_pset->GetFields()->GetItem("ID")->Append("0403305");
							}
						m_pset->Update();


						
			// +----------------------------------------------


			(m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
			delete [] pBuffer;     //删掉堆上申请的那一块内存
			pBuf=0;                //以防二次乱用
		}
		f.Close();
	}
 
		CClientDC dc(this);        
		m_Pic.UpdateSizeOnDC(&dc); // Get Picture Dimentions In Pixels
		RECT rect;
        m_showpic.GetWindowRect(&rect);
		rect.left=rect.left+10;
		rect.right=rect.right-10;
		rect.top=rect.top-35;
		rect.bottom=rect.bottom-55;
		m_Pic.Show(&dc, rect);//显示出来看看

			CString id;  
			id="      ";
			id+=m_id;
	id+="\n学生图象添加修改成功";
	MessageBox(id,NULL,MB_OK|MB_ICONINFORMATION);
		
	  }	

		
}

void CStudentDlg::OnReset() 
{
	// TODO: Add your control notification handler code here
	
}
void CStudentDlg::GetDataFromBase()
{
    
    
	try
	{
		long nSize = m_pset->GetFields()->GetItem("Data")->ActualSize;
		if(nSize > 0)
		{
			_variant_t	varBLOB;
			varBLOB = m_pset->GetFields()->GetItem("Data")->GetChunk(nSize);
			if(varBLOB.vt == (VT_ARRAY | VT_UI1))
			{
				if(BYTE *pBuffer = new BYTE [nSize+1])		///重新申请必要的存储空间
				{	
					char *pBuf = NULL;
					SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
					memcpy(pBuffer,pBuf,nSize);				///复制数据到缓冲区m_pBMPBuffer
					SafeArrayUnaccessData (varBLOB.parray);
				//	int nSize = lDataSize;
					(m_Pic.LoadPictureData(pBuffer, nSize));

					 delete [] pBuffer;
					 pBuf=0;
					 
					 
					 ///生成BITMAP对象
					 
					 CDC *hdc=GetDC();
					 m_Pic.UpdateSizeOnDC(hdc); // Get Picture Dimentions In Pixels
					 RECT rect;
                     m_showpic.GetWindowRect(&rect);
		             rect.left=rect.left+10;
		             rect.right=rect.right-10;
		             rect.top=rect.top-35;
		             rect.bottom=rect.bottom-55;
		             m_Pic.Show(hdc, rect);//显示出来看看
				
				}
			}
		}
	}
	catch (_com_error e) {
	}
		

}



void CStudentDlg::OnInput() 
{
	// TODO: Add your command handler code here
	
	
/*
	CFile m_file;
	CString m_path;
	CFileDialog m_pa(TRUE,NULL,NULL,0,"temp Files (*.temp)|*.temp||",this); 
	if(m_pa.DoModal()==IDOK)
	{
        m_path=m_pa.GetPathName();
	
		
          
	}
  if(m_file.Open(m_path,CFile::modeRead,NULL)==NULL)
	  
	  return;
    m_file.SeekToBegin();
	//the code here is used to get the data  in  the base which is will be outed 
    	 CGuestSet  m_guestset,m_guest;
		 CChoiceSet m_choiceset,m_choice;
	     CBaseSet   m_baseset,m_base;
	     CGradeSet  m_gradeset,m_grade;
		 m_guestset.Open();
		 m_choiceset.Open();
     	 m_choiceset.MoveLast();
         m_baseset.Open();
	     m_baseset.MoveLast();
         m_gradeset.Open();
         m_gradeset.MoveLast();
		 m_guestset.MoveFirst();

	         int flag=1;
             CString dd;
			 BYTE *p;
			 BYTE *pBuf;
						VARIANT			varBLOB;
						SAFEARRAY		*psa;
					    SAFEARRAYBOUND	rgsabound[1];
//         m_guestset.MovePrev();//这里添加对用户是否重合的验证
            
           if( m_file.Read(&m_guest,sizeof(m_guest))==NULL)
			   return;
            CString id= m_guest.m_guest;
            while(!m_guestset.IsEOF())
			{

			 if(m_guestset.m_guest== m_guest.m_guest)//find
			 {  
				 flag=3;
				 break;
			 }
		     m_guestset.MoveNext();
			 
			}
			 if(flag==3)                     //which is be found
			 {
				 id+="已存在";
			     MessageBox(id,NULL,MB_OK|MB_ICONINFORMATION);
				 goto UnResource;
				
			}
	     
			
          

		   if(	m_file.Read(&m_base,sizeof(m_base))==NULL)
			   return;
            
			if(m_file.Read(&dd,9)==NULL)
				return;
			if(dd=="lulianghu")
			{
              DWORD size;
			  if(m_file.Read(&size,sizeof(size))==NULL)
				  return;
			  p=new BYTE[size];              //p must be
              if(m_file.Read(p,size)==NULL)
				  return;

			}
			else
			{
             m_file.Seek(-9,CFile::current);

			}

           if(m_file.Read(&m_choice,sizeof(m_choice))==NULL)
			   return;
		   if(m_file.Read(&m_grade,sizeof(m_grade))==NULL)
			   return;
		   //is used for the guest table
           m_guestset.m_guest=m_guest.m_guest;
		   m_guestset.m_password=m_guest.m_password;
		   //is used for the base table
           m_baseset=m_base;
		   m_choiceset=m_choice;
		   m_gradeset=m_grade;
// the code here which used for reflash the data
           m_guestset.MoveLast();
		   m_guestset.AddNew();
		   m_gradeset.MoveLast();
		   m_gradeset.AddNew();
		   m_choiceset.MoveLast();
		   m_choiceset.AddNew();
           m_baseset.MoveLast();
		   m_baseset.AddNew();
           m_pset->MoveLast();    

	
	
						pBuf = p;     ///下面这一大段是把pBuffer里的jpg数据放到库中

				
					 
							
						if(pBuf)
							{    
							rgsabound[0].lLbound = 0;
							DWORD nSize=GlobalSize(p);
							rgsabound[0].cElements =nSize ;
							psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
							for (long i = 0; i < (long)nSize; i++)
							SafeArrayPutElement (psa, &i, pBuf++);
							varBLOB.vt = VT_ARRAY | VT_UI1;
							varBLOB.parray = psa;
							m_pset->GetFields()->GetItem("Data")->AppendChunk(varBLOB);
			
                       //     m_pset->GetFields()->GetItem("ID")->Append("0403305");
							}
						m_pset->Update();


			m_guestset.Update();
			m_gradeset.Update();
			m_choiceset.Update();
			m_baseset.Update();



		
UnResource:
			{
			  m_gradeset.Close();
              m_baseset.Close();
              m_choiceset.Close();
              m_guestset.Close(); 
               delete []p;
			   m_file.Close();
			}
             

             MessageBox(id+"信息导入成功",NULL,MB_OK|MB_ICONINFORMATION);
			 */
}

void CStudentDlg::OnOut() 
{
	// TODO: Add your command handler code 
	Out  out;
	CString id;
	if(out.DoModal()==IDOK)
	{
      id=out.m_id;
	  if(id=="")
		  return;
	}
	CFile m_file;
	  CFile m_pil;
	//the code here is used to get the data  in  the base which is will be outed 
    	 CGuestSet  m_guestset;
		 CChoiceSet m_choiceset;
	     CBaseSet   m_baseset;
	     CGradeSet  m_gradeset;
		 m_guestset.Open();
		 m_choiceset.Open();
     	 m_choiceset.MoveFirst();
         m_baseset.Open();
	     m_baseset.MoveFirst();
         m_gradeset.Open();
         m_gradeset.MoveFirst();
		 m_guestset.MoveFirst();

	         int flag=1;
	

//         m_guestset.MovePrev();//这里添加对用户是否重合的验证
		    while(!m_guestset.IsEOF())
			{

			 if(m_guestset.m_guest== id)
			 {  
				 flag=3;
				 break;
			 }
		     m_guestset.MoveNext();
			 
			}
			 if(flag!=3)                     //which is be found
			 {
				 id+="不存在";
			     MessageBox(id,NULL,MB_OK|MB_ICONINFORMATION);
				 goto UnResource;
				
			 }
	     	m_file.Open(id+".temp",CFile::modeCreate | CFile::modeWrite ,NULL);
			m_file.SeekToEnd();
			m_file.Write(&m_guestset,sizeof(m_guestset));
          
            m_pset->MoveFirst(); 
   		    while(!m_baseset.IsEOF())
			{
             if(m_baseset.m_id==id)
			 {
			   flag=5;
			   break;
			 }
			 
		     m_baseset.MoveNext();
			 m_pset->MoveNext(); 
			}

    DWORD dsize;
	BYTE *pBuffer;
	try
	{
		long nSize = m_pset->GetFields()->GetItem("Data")->ActualSize;
		if(nSize > 0)
		{
			_variant_t	varBLOB;
			varBLOB = m_pset->GetFields()->GetItem("Data")->GetChunk(nSize);
			if(varBLOB.vt == (VT_ARRAY | VT_UI1))
			{
				if(pBuffer = new BYTE [nSize+1])		///重新申请必要的存储空间
				{	
					char *pBuf = NULL;
					SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
					memcpy(pBuffer,pBuf,nSize);				///复制数据到缓冲区m_pBMPBuffer
					SafeArrayUnaccessData (varBLOB.parray);

				//	int nSize = lDataSize;
				   dsize=GlobalSize(pBuffer);
				
				}
			}
		}
	}
	catch (_com_error e)
	{}
		    m_file.SeekToEnd();
		    m_file.Write(&m_baseset,sizeof(m_baseset));
			if(out.m_xuan==1)
			{
				m_pil.Open(id+".jpg",CFile::modeCreate | CFile::modeWrite ,NULL);
                m_pil.Write(pBuffer,dsize);
				m_pil.Close();
			}
			else//xuanze  fangshi
			{
              CString flag="lulianghu";
			  m_file.SeekToEnd();
              m_file.Write(flag,sizeof(flag));
			  m_file.SeekToEnd();
              m_file.Write(&dsize,sizeof(dsize));
			  m_file.SeekToEnd();
              m_file.Write(pBuffer,dsize);
			}

			delete [] pBuffer;


   		    while(!m_choiceset.IsEOF())
			{
             if(m_choiceset.m_id==id)
			 {
			   flag=4;
			   break;
			 }
		     m_choiceset.MoveNext();
			 
			}
			m_file.SeekToEnd();
		    m_file.Write(&m_choiceset,sizeof(m_choiceset));
           


			while(!m_gradeset.IsEOF())
			{
             if(m_gradeset.m_id==id)
			 {
			   flag=6;
			   break;
			 }
		     m_gradeset.MoveNext();
			 
			}
            m_file.SeekToEnd();
            m_file.Write(&m_gradeset,sizeof(m_gradeset));
			m_file.Close();
			
UnResource:
			{
			  m_gradeset.Close();
              m_baseset.Close();
              m_choiceset.Close();
              m_guestset.Close(); 
			 
			}


             MessageBox(id+"信息导出成功",NULL,MB_OK|MB_ICONINFORMATION);
	
	
}

⌨️ 快捷键说明

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