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 + -
显示快捷键?