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

📄 viewstu.cpp

📁 成绩管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ViewStu.cpp : implementation file
//

#include "stdafx.h"
#include "STUGRADE.h"
#include "ViewStu.h"
#include "DLGAddStu.h"
#include "MainFrm.h"

//Excel
#include "afxdb.h"
#include "odbcinst.h"

#include "TlHelp32.h" //关闭进程

#include "TlHelp32.h"

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

/////////////////////////////////////////////////////////////////////////////
// CViewStu

extern CMainFrame *pFrame; 

IMPLEMENT_DYNCREATE(CViewStu, CFormView)

CViewStu::CViewStu()
	: CFormView(CViewStu::IDD)
{
	//{{AFX_DATA_INIT(CViewStu)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

}

CViewStu::~CViewStu()
{
}

void CViewStu::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CViewStu)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CViewStu, CFormView)
	//{{AFX_MSG_MAP(CViewStu)
	ON_BN_CLICKED(IDC_ADDnew_Stu, OnADDnewStu)
	ON_BN_CLICKED(IDC_Query_Stu, OnQueryStu)
	ON_BN_CLICKED(IDC_Choose, OnChoose)
	ON_BN_CLICKED(IDC_DEL_Stu, OnDELStu)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_Modify_Stu, OnModifyStu)
	ON_COMMAND(ID_LIST_NEXT, OnListNext)
	ON_COMMAND(ID_LIST_PRV, OnListPrv)
	ON_COMMAND(IDC_DELETE_GRADE, OnDeleteGrade)
	ON_COMMAND(IDC_BUTTON_refresh, OnBUTTONrefresh)
	ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST_Stu, OnColumnclickLISTStu)
	ON_NOTIFY(NM_RDBLCLK, IDC_LIST_Stu, OnRdblclkLISTStu)
	ON_BN_CLICKED(IDC_OUTExcel, OnOUTExcel)
	ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_Stu, OnDblclkLISTStu)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CViewStu diagnostics

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

void CViewStu::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CViewStu message handlers


void CViewStu::OnADDnewStu() //新增学生
{ 
	CString Sno,Sname,Cno,Sex,Phone,Birth;
	CDLGAddStu dlg;
	dlg.m_Flag=1; //增加
    dlg.m_Sno = &Sno;
	dlg.m_Sname = &Sname;
	dlg.m_Cno = &Cno;
	dlg.m_Sex = &Sex;
    dlg.m_Phone = &Phone;
	dlg.m_Birth = &Birth;
	int ask = dlg.DoModal();

	if (ask==IDOK) //add
	{   
		//选查下有无这个学号的学生
    	CString szSQL,quSQL; 
		int flg=1;
		quSQL.Format("SELECT * FROM 学生基本信息 where 学号 = '%s'",Sno);
       	_RecordsetPtr pT_set;
		pT_set.CreateInstance(__uuidof( Recordset )); 
		pT_set->Open((LPCSTR)quSQL,RS_PARAM); 
		if (!pT_set->adoEOF) 
		{   //表示已有此学生
			int ans = MessageBox("已存在这个学生,要把它修改为这个值吗?","增加出错",MB_YESNO|MB_ICONQUESTION);
			if (ans == IDYES)
			{
			   szSQL.Format("UPDATE 学生基本信息 SET 学号 = '%s', 姓名 = '%s', 所属班级 = '%s', 性别 = '%s', 手机 = '%s', 出生日期 = '%s' WHERE (学号 = '%s')",Sno,Sname,Cno,Sex,Phone,Birth,Sno);
			   flg=0;
			}
			else 
				return;
		}		
		if (flg) szSQL.Format("INSERT INTO 学生基本信息(学号, 姓名, 所属班级, 性别, 手机, 出生日期) VALUES ('%s', '%s', '%s', '%s', '%s','%s')", Sno,Sname,Cno,Sex,Phone,Birth);
		try{
			 pFrame->ExecSQL(szSQL);
			if (flg) 
				MessageBox("增加成功!","增加学生",MB_OK|MB_ICONINFORMATION);
			 else 
				 MessageBox("修改成功!","增加学生",MB_OK|MB_ICONINFORMATION);

		}catch(_com_error e)///捕捉异常
		{
			CString errormessage;
			errormessage.Format("无法增加学生!\r\n错误信息:%s",e.ErrorMessage());
			AfxMessageBox(errormessage);///显示错误信息
		} 
		curSQL = "SELECT 学号,姓名,性别,出生日期,总得学分,班级名称,专业名称,系名,手机,政治面貌 FROM 学生基本信息,班级信息,专业信息,系别信息 WHERE 学生基本信息.所属班级 = 班级信息.班级代码 AND 班级信息.所属专业 = 专业信息.专业代码 AND 专业信息.所属系别 = 系别信息.系别代码";
        RefreshStuList(curSQL + " order by 学号,姓名");
	}
	
}


void CViewStu::OnModifyStu() //修改学生
{
	CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_LIST_Stu);
	if(pList->GetSelectedCount()!=1)
		MessageBox("请先选择一项记录!","修改出错",MB_OK|MB_ICONQUESTION);
	else
	{ 	
		CString Sno,Sname,Cno,Sex,Phone,Birth;  //取得返回值
		int nItem; CString gSno,gSname,gCname,gSex;//取表格值
		nItem = pList->GetSelectionMark();
		gSno = pList->GetItemText(nItem,0);
		gSname = pList->GetItemText(nItem,1);
        gSex = pList->GetItemText(nItem,2);
		gCname = pList->GetItemText(nItem,5);

        CDLGAddStu dlg;
		dlg.m_Flag = 0;  //修改
		dlg.m_Msno = gSno;
		dlg.m_Msname = gSname;
        dlg.m_Mcname = gCname;
		dlg.m_Msex = gSex;

		dlg.m_Sno = &Sno;
		dlg.m_Sname = &Sname;
		dlg.m_Cno = &Cno;
		dlg.m_Sex = &Sex;
		dlg.m_Phone = &Phone;
		dlg.m_Birth = &Birth;

		int ask = dlg.DoModal();		
		if (ask==IDOK) //add
		{   
		
			CString szSQL;
			szSQL.Format("UPDATE 学生基本信息 SET 学号 = '%s', 姓名 = '%s', 所属班级 = '%s', 性别 = '%s', 手机 = '%s', 出生日期 = '%s' WHERE (学号 = '%s')",Sno,Sname,Cno,Sex,Phone,Birth,gSno);
			try{
			    	pFrame->ExecSQL(szSQL);
					MessageBox("修改成功!","修改学生",MB_OK|MB_ICONINFORMATION);				
			}
			catch(_com_error e)///捕捉异常
			{
				CString errormessage;
				errormessage.Format("无法修改学生!\r\n错误信息:%s",e.ErrorMessage());
				AfxMessageBox(errormessage);///显示错误信息
			} 
			curSQL = "SELECT 学号,姓名,性别,出生日期,总得学分,班级名称,专业名称,系名,手机,政治面貌 FROM 学生基本信息,班级信息,专业信息,系别信息 WHERE 学生基本信息.所属班级 = 班级信息.班级代码 AND 班级信息.所属专业 = 专业信息.专业代码 AND 专业信息.所属系别 = 系别信息.系别代码";
			RefreshStuList(curSQL + " order by 学号,姓名");
		}			
	}	
}

void CViewStu::OnDELStu() //删除
{
	CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_LIST_Stu);
	if(pList->GetSelectedCount()!=1)
		MessageBox("请先选择一项记录!","删除出错",MB_OK|MB_ICONQUESTION);
	else
	{ 	
		CString Sno,Sname;  //取得表格值
		int nItem; 
		nItem = pList->GetSelectionMark();
		Sno = pList->GetItemText(nItem,0);
		Sname = pList->GetItemText(nItem,1);
        CString Msg;
		Msg.Format("确定要删除学号<%s>姓名<%s>的学生吗?",Sno,Sname);

		int ask = MessageBox(Msg,"确定删除",MB_YESNO|MB_ICONQUESTION);		
		if (ask==IDYES) //add
		{   		
			CString szSQL;
			szSQL.Format("DELETE FROM 学生基本信息 WHERE (学号 = '%s')",Sno);
			try{
			    	pFrame->ExecSQL(szSQL);
					MessageBox("删除成功!","删除学生",MB_OK|MB_ICONINFORMATION);				
			}
			catch(_com_error e)///捕捉异常
			{
				CString errormessage;
				errormessage.Format("无法删除学生!\r\n错误信息:%s",e.ErrorMessage());
				AfxMessageBox(errormessage);///显示错误信息
			} 
			curSQL = "SELECT 学号,姓名,性别,出生日期,总得学分,班级名称,专业名称,系名,手机,政治面貌 FROM 学生基本信息,班级信息,专业信息,系别信息 WHERE 学生基本信息.所属班级 = 班级信息.班级代码 AND 班级信息.所属专业 = 专业信息.专业代码 AND 专业信息.所属系别 = 系别信息.系别代码";
			RefreshStuList(curSQL + " order by 学号,姓名");
		}		
	}	
	
}

void CViewStu::OnQueryStu() //查询学生
{
  	CString Sno,Sname,Cno,Sex,Phone,Birth;bool m_CHECK=false;
	CDLGAddStu dlg;
	dlg.m_Flag=2; //查询
    dlg.m_CHECKED=&m_CHECK;
    dlg.m_Sno = &Sno;
	dlg.m_Sname = &Sname;
	dlg.m_Cno = &Cno;
	dlg.m_Sex = &Sex;
    dlg.m_Phone = &Phone;
	dlg.m_Birth = &Birth;
	int ask = dlg.DoModal();
	CString szSQL;
	if (ask==IDOK) //add
	{   
        CString szSQLlast,sql1,sql2,sql3,sql4,sql5,sql6; 
		szSQL="SELECT 学号,姓名,性别,出生日期,总得学分,班级名称,专业名称,系名,手机,政治面貌 FROM 学生基本信息,班级信息,专业信息,系别信息 WHERE 学生基本信息.所属班级 = 班级信息.班级代码 AND 班级信息.所属专业 = 专业信息.专业代码 AND 专业信息.所属系别 = 系别信息.系别代码 ";
		if (m_CHECK) //模糊
		{
			if (Sno!="NULL")
			{ 
				szSQLlast.Empty();
				szSQLlast =" AND (学号 like '";
                szSQLlast += "%";
                szSQLlast += Sno;
				szSQLlast+="%')";
				szSQL+=szSQLlast;			
			   // AfxMessageBox(szSQL);
			}
			if (Sname!="NULL")
			{ 
				szSQLlast.Empty();
				szSQLlast = " AND (姓名 like '";
                szSQLlast += "%";
				szSQLlast+=Sname;
				szSQLlast+="%')";
				szSQL+=szSQLlast;			
			   // AfxMessageBox(szSQL);
			}
			if (Cno!="NULL")
			{ 
				szSQLlast.Empty();
				szSQLlast = " AND (班级代码 like '";
				szSQLlast += "%";
				szSQLlast += Cno;
				szSQLlast+="%')";
				szSQL+=szSQLlast;			
			    //AfxMessageBox(szSQL);
			}
			if (Sex!="NULL")
			{ 
				szSQLlast.Empty();
				szSQLlast=" AND (性别 like '";
				szSQLlast += "%";
                szSQLlast += Sex;
				szSQLlast+="%')";
				szSQL+=szSQLlast;			
			   // AfxMessageBox(szSQL);
			}
			if (Phone!="NULL")
			{ 
				szSQLlast.Empty();
				szSQLlast = " AND (手机 like '";
				szSQLlast += "%";
				szSQLlast +=Phone;
				szSQLlast+="%')";
				szSQL+=szSQLlast;			
			   // AfxMessageBox(szSQL);
			}			   
		}
		else  //不是模糊查询
		{
			if (Sno!="NULL")
			{ 
				szSQLlast.Format(" AND (学号 = '%s')",Sno);
				szSQL+=szSQLlast;			
			}
			if (Sname!="NULL")
			{ 
				szSQLlast.Format(" AND (姓名 = '%s')",Sname);
				szSQL+=szSQLlast;			
			}
			if (Cno!="NULL")
			{ 
				szSQLlast.Format(" AND (班级代码 = '%s')",Cno);
				szSQL+=szSQLlast;			
			}
			if (Sex!="NULL")
			{ 
				szSQLlast.Format(" AND (性别 = '%s')",Sex);
				szSQL+=szSQLlast;			
			}
			if (Phone!="NULL")
			{ 
				szSQLlast.Format(" AND (手机 = '%s')",Phone);
				szSQL+=szSQLlast;			
			}
		}
		
	}
	else
       szSQL="SELECT 学号,姓名,性别,出生日期,总得学分,班级名称,专业名称,系名,手机,政治面貌 FROM 学生基本信息,班级信息,专业信息,系别信息 WHERE 学生基本信息.所属班级 = 班级信息.班级代码 AND 班级信息.所属专业 = 专业信息.专业代码 AND 专业信息.所属系别 = 系别信息.系别代码 ";
    curSQL = szSQL;
//	AfxMessageBox(szSQL);
    RefreshStuList(szSQL + " order by 学号,姓名");

}
void CViewStu::OnChoose() 
{
  MessageBox("还没有时间完成:)","保留功能嘻",MB_ICONINFORMATION);	
}


void CViewStu::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
    CListCtrl *pctrl = (CListCtrl*)GetDlgItem(IDC_LIST_Stu);
	::SetWindowLong(*pctrl,GWL_STYLE,::GetWindowLong(*pctrl,GWL_STYLE)&~LVS_SORTASCENDING&~LVS_SORTDESCENDING);
	pctrl->SetExtendedStyle(pctrl->GetExStyle()&~LVS_EX_CHECKBOXES |
		LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|
		LVS_EX_GRIDLINES|LVS_EX_TRACKSELECT);

⌨️ 快捷键说明

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