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

📄 lxyview.cpp

📁 (1)学生信息的输入
💻 CPP
字号:
// LXYView.cpp : implementation of the CLXYView class
//

#include "stdafx.h"
#include "LXY.h"
#include "AADDLG.h"
#include "FINDDLG.h"
#include "LXYDoc.h"
#include "SCDLG.h"
#include "USERDLG.h"
#include "LXYView.h"
#include "odbcinst.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CString users,powers,pass;
/////////////////////////////////////////////////////////////////////////////
// CLXYView

IMPLEMENT_DYNCREATE(CLXYView, CFormView)

BEGIN_MESSAGE_MAP(CLXYView, CFormView)
	//{{AFX_MSG_MAP(CLXYView)
	ON_BN_CLICKED(IDC_add, Onadd)
	ON_BN_CLICKED(IDC_del, Ondel)
	ON_BN_CLICKED(IDC_next, Onnext)
	ON_BN_CLICKED(IDC_pre, Onpre)
	ON_BN_CLICKED(IDC_find, Onfind)
	ON_BN_CLICKED(IDC_sort, Onsort)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_guanli, Onguanli)
	ON_BN_CLICKED(IDC_loadout, Onloadout)
	ON_BN_CLICKED(IDC_GOGOUT, OnGogout)
	ON_BN_CLICKED(IDC_BUTTON2, Onpicture)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLXYView construction/destruction

CLXYView::CLXYView()
	: CFormView(CLXYView::IDD)
{
	//{{AFX_DATA_INIT(CLXYView)
	m_sno = _T("");
	m_sname = _T("");
	m_sage = 0;
	m_ssex = _T("");
	m_semail = _T("");
	m_sdept = _T("");
	m_text = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here

}

CLXYView::~CLXYView()
{
}

void CLXYView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLXYView)
	DDX_Control(pDX, IDC_next, m_next);
	DDX_Control(pDX, IDC_pre, m_prev);
	DDX_Control(pDX, IDC_RADIO1, m_radio);
	DDX_Control(pDX, IDC_CHECK1, m_check);
	DDX_Text(pDX, IDC_EDIT1, m_sno);
	DDX_Text(pDX, IDC_EDIT2, m_sname);
	DDX_Text(pDX, IDC_EDIT3, m_sage);
	DDX_Text(pDX, IDC_EDIT04, m_ssex);
	DDX_Text(pDX, IDC_EDIT05, m_semail);
	DDX_Text(pDX, IDC_EDIT06, m_sdept);
	DDX_Text(pDX, IDC_SHOWTEXT, m_text);
	//}}AFX_DATA_MAP
}

BOOL CLXYView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CLXYView::OnInitialUpdate()
{CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

m_ctp.CreateInstance(_uuidof(Connection));
	try
	{
		m_ctp->Open("Driver=SQL Server;Server=127.0.0.1;Database=xxx;UID=sa;PWD=;","","",adModeUnknown);
	
	}
	catch(...)
	{
	 MessageBox("连接失败!");
	} 

	//////////////////////////////////////////////////////添加图片与按钮相关联,实现数据浏览
	CBitmap bitmap1,bitmap2;
	bitmap1.LoadBitmap(IDB_BITMAP1);
	bitmap2.LoadBitmap(IDB_BITMAP2);
	HBITMAP hbitmap1=(HBITMAP)bitmap1.Detach();
	HBITMAP hbitmap2=(HBITMAP)bitmap2.Detach();
    m_prev.SetBitmap(hbitmap1);
	m_next.SetBitmap(hbitmap2);


	///////////////
	pdb=new CDatabase;
    m_pSet=new StudentSet(pdb);
 m_pSet1=new SCSet(pdb);
 m_pSet->Open();
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
	m_radio.SetCheck(1);
		if(powers=="录入员")
		{ GetDlgItem(IDC_add)->EnableWindow(false);  
			GetDlgItem(IDC_del)->EnableWindow(false);
			GetDlgItem(IDC_BUTTON2)->EnableWindow(false); 
		}		
      

	Show();EjzPic();
      
}

/////////////////////////////////////////////////////////////////////////////
// CLXYView printing

BOOL CLXYView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}
void CLXYView::Show()
{
    m_sno=m_pSet->m_sno;
	m_sname=m_pSet->m_sname;
	m_sage=m_pSet->m_sage;
	m_ssex=m_pSet->m_ssex;
	m_semail=m_pSet->m_semail;
	m_sdept=m_pSet->m_sdept;
	UpdateData(false);

}

void CLXYView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CLXYView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CLXYView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CLXYView diagnostics

#ifdef _DEBUG
void CLXYView::AssertValid() const
{
	CFormView::AssertValid();
}

void CLXYView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CLXYDoc* CLXYView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLXYDoc)));
	return (CLXYDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLXYView message handlers

void CLXYView::Onadd() 
{
AADDLG mydlg;
if(mydlg.DoModal()==IDOK)
	{
		try 
		{
			sqlstr.Format("insert into student values ('%s','%s',%d,'%s','%s','%s','')", 
				mydlg.m_sno,mydlg.m_sname,mydlg.m_sage,mydlg.m_ssex,mydlg.m_semail,mydlg.m_sdept);
			pdb->ExecuteSQL(sqlstr);
			m_pSet->Requery();
			m_pSet->MoveLast();
			
			Show();	
			
		}
		catch(...)
		{
			AfxMessageBox("添加失败!");
		}
AfxMessageBox("添加信息完成,请添加图片!");
	Onpicture();	
	}	

}

void CLXYView::Ondel() 
{if(AfxMessageBox("是否删除?",MB_YESNO) == IDYES)
	{
		sqlstr.Format("delete from student where sno='%s'",m_sno);
		pdb->ExecuteSQL(sqlstr);
		m_pSet->Requery();
		Show();
		AfxMessageBox("删除成功!");
	}

}

void CLXYView::Onnext() 
{GetDlgItem(IDC_pre)->EnableWindow(TRUE);
	if(!m_pSet->IsEOF())	
		m_pSet->MoveNext();
	else
		GetDlgItem(IDC_next)->EnableWindow(FALSE);
	Show();
EjzPic();
	Invalidate();
}

void CLXYView::Onpre() 
{GetDlgItem(IDC_next)->EnableWindow(TRUE);
    if(!m_pSet->IsBOF())
		m_pSet->MovePrev();
	else
		GetDlgItem(IDC_pre)->EnableWindow(FALSE);	
	Show();
EjzPic();Invalidate();
}

void CLXYView::Onfind() 
{
 FINDDLG mydlg;
 mydlg.DoModal();
	
}

void CLXYView::Onsort() 
{
 FINDDLG mydlg;
 mydlg.sortflag=true;
 mydlg.DoModal();// TODO: Add your control notification handler code here
	
}

void CLXYView::OnButton3() 
{SCDLG mydlg;
    if(m_check.GetCheck())
	mydlg.showflag=true;
    mydlg.sno=m_sno;
    mydlg.DoModal();

}

void CLXYView::Onguanli() 
{USERDLG mydlg;
 mydlg.DoModal();
}

void CLXYView::Onloadout() 
{
	CString filename,str;
	CFileDialog filedlg(!m_radio.GetCheck(),"",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.*");
	if(filedlg.DoModal()==IDOK)
	{ filename=filedlg.GetPathName();
		if(filename!="")
			{
  				if(m_radio.GetCheck())
				{	DeleteFile(filename);
					str.Format("backup database XXX to Disk ='%s'",filename);
					pdb->ExecuteSQL(str);
					AfxMessageBox("数据备份成功!"+filename);
				}
				else 
				{
					str.Format("restore database XXX from Disk ='%s'",filename);
					pdb->ExecuteSQL(str);
					AfxMessageBox("数据还原成功!");
				}
			}
	}
  

}

void CLXYView::OnGogout() 
{
CString filename;
    CFileDialog filedlg(false,".txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt");
	CFile infile;CString str;
	if(filedlg.DoModal()==IDOK)
		{
			filename=filedlg.GetPathName();
			if(filename!="")
				{infile.Open(filename,CFile::modeCreate|CFile::modeWrite);
						{  
							
							str="学号      课程号     成绩\r\n";
						m_pSet1->Open();
							while(!m_pSet1->IsEOF())
								{str+=m_pSet1->m_sno+"       ";
								 str+=m_pSet1->m_cno+"    ";
								 CString str1;
								 str1.Format("%.2f",m_pSet1->m_grade);
								 str+=str1+"\r\n";
								 m_pSet1->MoveNext();

								}
							m_pSet1->Close();
							infile.Write(str,str.GetLength());

						}
				}

	}
}

void CLXYView::Onpicture() 
{
     _RecordsetPtr record1;
    record1.CreateInstance(_uuidof(Recordset));
    CString filepath;
    CFile file;
    char *m_buffer;
    CFileDialog myfiledlg(TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"*.bmp|*.bmp|");
    if(myfiledlg.DoModal()==IDOK)
	{
	  filepath=myfiledlg.GetPathName();
	}
	else return;
    if(!file.Open(filepath,CFile::modeRead))
	{
	 MessageBox("无法打开BMP文件");
	 return ;
	}
    DWORD m_filelen;
	m_filelen=file.GetLength();
	m_buffer=new char[m_filelen+1];
	
	if(!m_buffer)
	{
	 MessageBox("无法分配足够的空间!");
	 return ;
	}
	if(file.ReadHuge(m_buffer,m_filelen)!=m_filelen)
	{
	 MessageBox("读取BMP文件错误!");
	 return ;
	}
	LPSTR hdib;
	LPVOID lpdibbit;
	BITMAPFILEHEADER bmpheader;
	DWORD bmpheadlen;
    bmpheadlen=sizeof(bmpheader);
	strncpy((LPSTR)&bmpheader,(LPSTR)m_buffer,bmpheadlen);
	if(bmpheader.bfType!=(*(DWORD*)"BM"))
	{
	 MessageBox("BMP文件格式不对!");
	 return ;
	}
     
	hdib=m_buffer+bmpheadlen;
	BITMAPINFOHEADER &bmiheader=*(LPBITMAPINFOHEADER)hdib;
	BITMAPINFO &bminfo=*(LPBITMAPINFO)hdib;
	lpdibbit=(m_buffer)+((BITMAPFILEHEADER *)m_buffer)->bfOffBits;
	CClientDC dc(this);
	m_bitmap=CreateDIBitmap(dc.m_hDC,&bmiheader,CBM_INIT,lpdibbit,&bminfo,DIB_RGB_COLORS);
    ShowPic();
	strform="select * from student where sno="+m_sno;
	
	try{
		record1->Open(strform,m_ctp.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(...)
	{
		MessageBox("数据库打开失败!");
	}
	VARIANT varblob;
	SAFEARRAY *psa;
	SAFEARRAYBOUND rgsabound[1];
	rgsabound[0].lLbound=0;
    rgsabound[0].cElements=m_filelen;
    psa=SafeArrayCreate(VT_UI1,1,rgsabound);
	
	for(long i=0;i<(long)m_filelen;i++)
		SafeArrayPutElement(psa,&i,m_buffer++);
	    varblob.vt= VT_ARRAY | VT_UI1;
		varblob.parray=psa;
		record1->GetFields()->GetItem("sphoto")->AppendChunk(varblob); 
		record1->Update();
		record1->Close();	
				
}
/////////////////在屏幕上显示图像///////////////////
void CLXYView::ShowPic()
{
     CStatic *pStaic; 
     pStaic=(CStatic*)GetDlgItem(IDC_picture); 

    if(m_bitmap) 
		pStaic->SetBitmap(m_bitmap);
	else
	{
		CBitmap bitmap4;
		bitmap4.LoadBitmap(IDB_BITMAP4);
		HBITMAP hbitmap4=(HBITMAP)bitmap4.Detach();
		pStaic->SetBitmap(hbitmap4);
	}
}

////////////////////////////////////////////////////////////////////////////将图片转化成二进制放入数据库中
void CLXYView::EjzPic()
{
	
	
	_RecordsetPtr record;
    record.CreateInstance(_uuidof(Recordset));
	
	if(m_bitmap)
	{
	 DeleteObject(m_bitmap);
	 m_bitmap=NULL;
	}
	strform="select * from student where sno='"+m_sno+"'";
	try
	{
		record->Open(strform,m_ctp.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(...)
	{
	
		MessageBox("数据库打开失败!");
	}
	long ldatasize=record->GetFields()->GetItem("sphoto")->ActualSize;
	char *m_buffer1;
	if(ldatasize>0)
	{
		_variant_t varbolb;
		varbolb=record->GetFields()->GetItem("sphoto")->GetChunk(ldatasize);
		if(varbolb.vt==(VT_ARRAY | VT_UI1))
		{
		 if(m_buffer1=new char[ldatasize+1])
		 {
		  char *m_buffer2=NULL;
		  SafeArrayAccessData(varbolb.parray,(void **)&m_buffer2);
		  memcpy(m_buffer1,m_buffer2,ldatasize);
		  SafeArrayUnaccessData(varbolb.parray);
		  LPSTR Hdib;
		  LPVOID lpdibbit;
		  BITMAPFILEHEADER bmpheader;
		  DWORD bmpheaderlen;
		  bmpheaderlen=sizeof(bmpheader);
		  strncpy((LPSTR)&bmpheader,(LPSTR)m_buffer1,bmpheaderlen);
		  if(bmpheader.bfType!=(*(WORD*)"BM"))
		  {
		   MessageBox("BMP文件格式不准确!");
		   return ;
		  }
          Hdib=m_buffer1+bmpheaderlen;
		  BITMAPINFOHEADER &bmiheader=*(LPBITMAPINFOHEADER)Hdib;
		  BITMAPINFO &bminfo=*(LPBITMAPINFO)Hdib;
		  lpdibbit=(m_buffer1)+((BITMAPFILEHEADER *)m_buffer1)->bfOffBits;
		  CClientDC dc(this);
		  m_bitmap=CreateDIBitmap(dc.m_hDC,&bmiheader,CBM_INIT,lpdibbit,&bminfo,DIB_RGB_COLORS);
		   record->Close();
		  
		 }
		}
		
	} 
	else 
	{
		//delete m_buffer1;
		//m_buffer1= NULL; 
	}
	ShowPic();
}

void CLXYView::OnPaint() 
{
	//CPaintDC dc(this); // device context for painting
	
	CPaintDC dc(this); // device context for painting
	HBITMAP bitmap;
	bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle (),"2.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
	 ASSERT(bitmap);
	 HBITMAP OldBitmap;
	 CDC MemDC;
	 MemDC.CreateCompatibleDC(&dc);
	 OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);
	 ///显示它
	 CRect rect;
	 GetClientRect(&rect);
	 dc.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
	 MemDC.SelectObject(OldBitmap);
	
	// Do not call CFormView::OnPaint() for painting messages
}

⌨️ 快捷键说明

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