dlgstuinfo.cpp

来自「大学班务管理系统」· C++ 代码 · 共 518 行

CPP
518
字号
// Dlgstuinfo.cpp : implementation file
//
//Dlgstuinfo.cpp主要用于实现对学生信息进行的数据操作

#include "stdafx.h"
#include "教学管理信息系统.h"
#include "Dlgstuinfo.h"
#include "stuinforecordset1.h"
#include "Dlgdelstuinfo.h"
#include "Public.h"
#include "Dlgstuquery.h"
//#include "windows.h"
//#include "PassDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgstuinfo dialog


CDlgstuinfo::CDlgstuinfo(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgstuinfo::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgstuinfo)
	m_address = _T("");
	m_stuname = _T("");
	m_stusex = _T("");
	m_xibie = _T("");
	m_stunumber = _T("");
	m_birth = _T("");
	m_classnum = _T("");
	m_inyear = _T("");
	m_roomnum = _T("");
	//}}AFX_DATA_INIT

}


void CDlgstuinfo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgstuinfo)
	DDX_Control(pDX, IDC_LISTstuinfomation, m_liststu);
	DDX_Text(pDX, IDC_EDITaddress, m_address);
	DDX_Text(pDX, IDC_EDITstuname, m_stuname);
	DDX_Text(pDX, IDC_EDITstusex, m_stusex);
	DDX_Text(pDX, IDC_EDITxibie, m_xibie);
	DDX_Text(pDX, IDC_EDITstunumber, m_stunumber);
	DDX_Text(pDX, IDC_EDITbirth, m_birth);
	DDX_Text(pDX, IDC_EDITclassnum, m_classnum);
	DDX_Text(pDX, IDC_EDITinyear, m_inyear);
	DDX_Text(pDX, IDC_EDITroomnum, m_roomnum);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgstuinfo, CDialog)
	//{{AFX_MSG_MAP(CDlgstuinfo)
	ON_BN_CLICKED(IDC_BUTTON6, OnOk)
	ON_BN_CLICKED(IDC_BUTTONadd, OnBUTTONadd)
	ON_BN_CLICKED(IDC_BUTTONdel, OnBUTTONdel)
	ON_COMMAND(ID_STU_ADD, OnStuAdd)
	ON_BN_CLICKED(IDC_BUTTONupdate, OnBUTTONupdate)
	ON_NOTIFY(LVN_COLUMNCLICK, IDC_LISTstuinfomation, OnColumnclickLISTstuinfomation)
	ON_BN_CLICKED(IDC_BUTTONorder, OnBUTTONorder)
	ON_NOTIFY(NM_CLICK, IDC_LISTstuinfomation, OnClickLISTstuinfomation)
	ON_BN_CLICKED(IDC_BUTTONdele, OnBUTTONdele)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgstuinfo message handlers



void CDlgstuinfo::OnOk() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
	//CDialog::OnClose();
}


BOOL CDlgstuinfo::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
 /*if(pMsg->message==WM_KEYDOWN)
   return 0;*/
    return CDialog::PreTranslateMessage(pMsg);
}



	//实现添加功能
void CDlgstuinfo::OnBUTTONadd() 
{
	// TODO: Add your control notification handler code here
     UpdateData(TRUE); 
try{
	if(m_stuinforecordset.IsOpen())
	m_stuinforecordset.Close();
	 m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
//	m_stuinforecord.MoveLast();//MoveFirst();
	 m_stuinforecordset.MoveLast();
	// m_count+=1;
   m_stuinforecordset.AddNew();//->AddNew();
   if(m_stuname.IsEmpty())
   {
	   MessageBox("姓名不能为空!");
   }
   if(m_stunumber.IsEmpty())
   {
	   MessageBox("学号不能为空!");
   }

    m_stuinforecordset.m_stuid=m_stunumber;//m_stunumber;
    m_stuinforecordset.m_stuname=m_stuname;//m_stuname;
	m_stuinforecordset.m_stusex=m_stusex;
	m_stuinforecordset.m_stubirth=m_birth;
	m_stuinforecordset.m_stuxibie=m_xibie;
	m_stuinforecordset.m_inyear=m_inyear;
	m_stuinforecordset.m_classnum=m_classnum;
	m_stuinforecordset.m_roomnum=m_roomnum;
	m_stuinforecordset.m_address=m_address;
    m_stuinforecordset.Update();//->Update();
    m_stuinforecordset.Requery();//->Requery();
    m_stuinforecordset.Close();//必须先关闭记录集
    m_liststu.DeleteAllItems();
     initctrldata();//initctrldata();
	// m_stunumber.SetWindowText("");
	// UpdateData(false);
	 SetDlgItemText(IDC_EDITstunumber,""); 
	 SetDlgItemText(IDC_EDITstuname,"");
	 SetDlgItemText(IDC_EDITstusex,"");
	 SetDlgItemText(IDC_EDITbirth,"");
	 SetDlgItemText(IDC_EDITxibie,"");
	 SetDlgItemText(IDC_EDITinyear,"");
	 SetDlgItemText(IDC_EDITclassnum,"");
	 SetDlgItemText(IDC_EDITroomnum,"");
	 SetDlgItemText(IDC_EDITaddress,"");
	 //SetDlgItemText(IDC_EDITstunumber,"");
	 //GetDlgItem(IDC_EDIT1)->SetWindowText(""); 
}
catch(CDBException*e)
	{
		e->ReportError();
		return;
	}
	
}
//初始化列表框的表项
void CDlgstuinfo::initctrl()
{
		int i;
	    DWORD dwNewStyle= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP |
		LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
		m_liststu.SetExtendedStyle(dwNewStyle);//(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_liststu.InsertColumn(0,"学号",LVCFMT_CENTER);
	m_liststu.InsertColumn(1,"姓名",LVCFMT_CENTER);
	m_liststu.InsertColumn(2,"性别",LVCFMT_CENTER);
	m_liststu.InsertColumn(3,"出生日期",LVCFMT_CENTER);
	m_liststu.InsertColumn(4,"系别",LVCFMT_CENTER);
	m_liststu.InsertColumn(5,"QQ号",LVCFMT_CENTER);
	m_liststu.InsertColumn(6,"联系方式",LVCFMT_CENTER);
	m_liststu.InsertColumn(7,"宿舍号",LVCFMT_CENTER);
	m_liststu.InsertColumn(8,"籍贯",LVCFMT_CENTER,160);
   // m_liststu.InsertItem(0,"星期一");
   // m_liststu.SetItemText(0,1,"数学");
    for(i=0;i<8;i++)
	m_liststu.SetColumnWidth(i,80);
}

 //GetDlgItem(IDC_BUTTONshowstu)->EnableWindow(FALSE);//按钮不可用

void CDlgstuinfo::insertstuinfo(CString stuid,CString stuname,CString 
								stusex,CString stubirth,CString xibie,CString 
								inyear,CString classnum,CString roomnum,CString 
								address)
{
	int index=m_liststu.GetItemCount();
	LV_ITEM lvitem;
	lvitem.mask=LVIF_TEXT;
	lvitem.iItem=index;
	lvitem.iSubItem=0;
	CString temp;
    temp.Format("%s");
    lvitem.pszText=(char*)(LPCTSTR)temp;
	m_liststu.InsertItem(&lvitem);

	m_liststu.SetItemText(index,8,stuid);
	m_liststu.SetItemText(index,6,stuname);
	m_liststu.SetItemText(index,5,stusex);
	m_liststu.SetItemText(index,7,stubirth);
	m_liststu.SetItemText(index,3,xibie);
	m_liststu.SetItemText(index,0,inyear);
	m_liststu.SetItemText(index,1,classnum);
	m_liststu.SetItemText(index,2,roomnum);
	m_liststu.SetItemText(index,4,address);
//	m_liststu.InsertItem(0,"星期一");
//	m_liststu.InsertItem(1,"星期二");
//	m_liststu.InsertItem(2,"星期三");
	}



//在列表框显示数据
void CDlgstuinfo::initctrldata()
{
	 CDatabase m_database;
	   
	if(!m_database.Open(NULL,FALSE,FALSE,"ODBC;DSN=教务课程信息管理数据库"))
	{
		AfxMessageBox("连接数据库失败");
	}

	try{
        m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
		while(!m_stuinforecordset.IsEOF())
		{
		CString address,classnum,inyear,roomnum,stubirth,stuid,stuname;
		CString stusex,xibie;

		m_stuinforecordset.GetFieldValue((short)0,stuid);
        m_stuinforecordset.GetFieldValue(1,stuname);
		m_stuinforecordset.GetFieldValue(2,stusex);
		m_stuinforecordset.GetFieldValue(3,stubirth);
		m_stuinforecordset.GetFieldValue(4,xibie);
		m_stuinforecordset.GetFieldValue(5,inyear);
		m_stuinforecordset.GetFieldValue(6,classnum);
		m_stuinforecordset.GetFieldValue(7,roomnum);
		m_stuinforecordset.GetFieldValue(8,address);
        insertstuinfo(stuid,stuname,stusex,stubirth,xibie,inyear,classnum,roomnum,address);
		m_stuinforecordset.MoveNext();
	}
	m_stuinforecordset.Close();
	}
	catch(CDBException*e)
	{
		e->ReportError();
	return;
	}

}
//通过学号删除
void CDlgstuinfo::OnBUTTONdel() 
{
	// TODO: Add your control notification handler code here
 
	CDlgdelstuinfo dlg;
	bool Selec=FALSE;
//	m_count=m_stu.GetRecordCount();
	if(dlg.DoModal()==IDOK)
	{
	//	Cstuinforecordset m_stuinforecordset;
	if(m_stuinforecordset.IsOpen())
	   m_stuinforecordset.Close();
	 m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
	 m_stuinforecordset.MoveFirst();
	 bool sel=FALSE;
	do
	{
	 if(m_stuinforecordset.m_stuid!=dlg.m_delstuinfo)
	 m_stuinforecordset.MoveNext();	 
	 else
	 {
      //m_count-=1;
	  sel=TRUE;
      m_stuinforecordset.Delete();
	  //m_stu.Update();不能用update
	  m_stuinforecordset.Requery();
	  continue;
	 }
	}while(!m_stuinforecordset.IsEOF());
	m_stuinforecordset.Close();
 	if(sel==FALSE)
	{
	AfxMessageBox("没有此记录");
	return;
	}
	else
	{m_liststu.DeleteAllItems();
      initctrldata();
	}
}

}

BOOL CDlgstuinfo::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	if(CPublic::or==2)//若全局变量or=2,说明是普通用户,则将数据更新的操作设为不可用
    {
	GetDlgItem(IDC_BUTTONadd)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTONupdate)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTONdel)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTONdele)->EnableWindow(FALSE);
	}
	initctrl();
//	m_liststu.SetBkColor(0xFF);
	initctrldata();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgstuinfo::OnStuAdd() 
{
	// TODO: Add your command handler code here
	CDlgstuinfo dlg;
	dlg.DoModal();
}

//点击列表框的表头实现排序
void CDlgstuinfo::OnColumnclickLISTstuinfomation(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	int i=pNMListView->iSubItem;
    if(m_stuinforecordset.IsOpen())
	m_stuinforecordset.Close();
	m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
	
	if(i==0)
	{
	m_stuinforecordset.m_strSort="stuid";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
    if(i==1)
	{
	m_stuinforecordset.m_strSort="stuname";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==2)
	{
	m_stuinforecordset.m_strSort="stusex";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==3)
	{
	m_stuinforecordset.m_strSort="stubirth";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==4)
	{
	m_stuinforecordset.m_strSort="xibie";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==5)
	{
	m_stuinforecordset.m_strSort="inyear";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==6)
	{
	m_stuinforecordset.m_strSort="classnum";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==7)
	{
	m_stuinforecordset.m_strSort="roomnum";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}
	if(i==8)
	{
	m_stuinforecordset.m_strSort="address";
	m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();}

	*pResult = 0;
}
//排序功能
void CDlgstuinfo::OnBUTTONorder() 
{
	// TODO: Add your control notification handler code here
 if(m_stuinforecordset.IsOpen())
	m_stuinforecordset.Close();
	m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
	m_stuinforecordset.m_strSort="stuid";
    m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
	initctrldata();
}
//提取列表框的内容并显示在编辑框中
void CDlgstuinfo::OnClickLISTstuinfomation(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	 nitem=m_liststu.GetNextItem(-1,LVNI_SELECTED);
	if(nitem!=-1)
	{
		m_stunumber=m_liststu.GetItemText(nitem,0);
        m_stuname=m_liststu.GetItemText(nitem,1);
		m_stusex=m_liststu.GetItemText(nitem,2);
		m_birth=m_liststu.GetItemText(nitem,3);
		m_xibie=m_liststu.GetItemText(nitem,4);
		m_inyear=m_liststu.GetItemText(nitem,5);
		m_classnum=m_liststu.GetItemText(nitem,6);
		m_roomnum=m_liststu.GetItemText(nitem,7);
		m_address=m_liststu.GetItemText(nitem,8);
		//m_stuname=m_liststu.GetItemText(nitem,1);
         UpdateData(FALSE);
	}

	*pResult = 0;
}
//修改学生信息
void CDlgstuinfo::OnBUTTONupdate() 
{
	// TODO: Add your control notification handler code here
	//strcmp(m_gradeset.m_stunum,m_markquery)==0&&strcmp(m_gradeset.m_time,m_lessontime)==0
//	int nitem=m_liststu.GetNextItem(-1,LVNI_SELECTED);
    /*if(nitem!=-1)
	{
		m_stunumber=m_liststu.GetItemText(nitem,0);
        m_stuname=m_liststu.GetItemText(nitem,1);
		m_stusex=m_liststu.GetItemText(nitem,2);
		m_birth=m_liststu.GetItemText(nitem,3);
		m_xibie=m_liststu.GetItemText(nitem,4);
		m_inyear=m_liststu.GetItemText(nitem,5);
		m_classnum=m_liststu.GetItemText(nitem,6);
		m_roomnum=m_liststu.GetItemText(nitem,7);
		m_address=m_liststu.GetItemText(nitem,8);
		//m_stuname=m_liststu.GetItemText(nitem,1);
         UpdateData(FALSE);
	}*/
   // UpdateData(FALSE);
    if(m_stuinforecordset.IsOpen())
	   m_stuinforecordset.Close();
	 m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
	// int n=m_stuinforecordset.GetRecordCount();
	 m_stuinforecordset.MoveFirst();
	 for(int i=0;i<=nitem;i++)
	 {
		 if(i==nitem)
		 {
    UpdateData(TRUE); 
	m_stuinforecordset.Edit();
    m_stuinforecordset.m_stuid=m_stunumber;
    m_stuinforecordset.m_stuname=m_stuname;
	m_stuinforecordset.m_stusex=m_stusex;
	m_stuinforecordset.m_stubirth=m_birth;
	m_stuinforecordset.m_stuxibie=m_xibie;
	m_stuinforecordset.m_inyear=m_inyear;
	m_stuinforecordset.m_classnum=m_classnum;
	m_stuinforecordset.m_roomnum=m_roomnum;
	m_stuinforecordset.m_address=m_address;
    m_stuinforecordset.Update();
    m_stuinforecordset.Requery();
    m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
    initctrldata(); 
	}
		 else
		 {
			 m_stuinforecordset.MoveNext();
			 
		 }
 }
	 
}
//直接删除的功能
void CDlgstuinfo::OnBUTTONdele() 
{
	// TODO: Add your control notification handler code here
	  if(m_stuinforecordset.IsOpen())
	   m_stuinforecordset.Close();
	 m_stuinforecordset.Open(CRecordset::dynaset,NULL,CRecordset::none);
	// int n=m_stuinforecordset.GetRecordCount();
	 m_stuinforecordset.MoveFirst();
	 for(int i=0;i<=nitem;i++)
	 {
		 if(i==nitem)
		 {
    UpdateData(TRUE); 
	m_stuinforecordset.Delete();
    m_stuinforecordset.Requery();
    m_stuinforecordset.Close();
    m_liststu.DeleteAllItems();
    initctrldata(); 
	SetDlgItemText(IDC_EDITstunumber,""); 
	 SetDlgItemText(IDC_EDITstuname,"");
	 SetDlgItemText(IDC_EDITstusex,"");
	 SetDlgItemText(IDC_EDITbirth,"");
	 SetDlgItemText(IDC_EDITxibie,"");
	 SetDlgItemText(IDC_EDITinyear,"");
	 SetDlgItemText(IDC_EDITclassnum,"");
	 SetDlgItemText(IDC_EDITroomnum,"");
	 SetDlgItemText(IDC_EDITaddress,"");

	}
		 else
		 {
			 m_stuinforecordset.MoveNext();
			 
		 }
 }
}
//调用学生信息查询对话框
void CDlgstuinfo::OnButton1() 
{
	// TODO: Add your control notification handler code here
	CDlgstuquery Dlgstuquery;
	Dlgstuquery.DoModal();
}

⌨️ 快捷键说明

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