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

📄 studentdlg.cpp

📁 一个用VC写的学生成绩管理系统,其中对数据库的访问是采用ODBC方式.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// TODO: Add your control notification handler code here
	int num_class,num_type;	
	num_class=m_comb_class.GetCurSel();
	num_type=m_comb_type.GetCurSel();
	switch(num_class)
	{
	case 0:
		sql="select * from 1班";
		RefreshData(sql);
		UpdateData(FALSE);
		break;
	case 1:
		sql="select * from 2班";
		RefreshData(sql);
		UpdateData(FALSE);
		break;
	case 2:
		sql="select * from 3班";
		RefreshData(sql);
		UpdateData(FALSE);
		break;
	}
}

void CStudentDlg::OnBseeall() 
{
	// TODO: Add your control notification handler code here
//	sql="select * from 1班";
	CString sql_temp;
	int num_class=m_comb_class.GetCurSel();
	switch(num_class)
	{
	case 0:
		sql_temp="select * from 1班";
		break;
	case 1:
		sql_temp="select * from 2班";
		break;
	case 2:
		sql_temp="select * from 3班";
		break;
	}
		RefreshData(sql_temp);
		UpdateData(FALSE);
}

void CStudentDlg::OnBadd() 
{
	// TODO: Add your control notification handler code here
	CAdddlg dlg;	
	CString str_sex,str_class;	
	if(dlg.DoModal()==IDOK)
	{
		switch(dlg.sex)
		{
		case 0:
			str_sex="男";
			break;
		case 1:
			str_sex="女";
			break;
		}
		switch(dlg.class1)
		{
		case 0:
			str_class="1班";
			break;
		case 1:
			str_class="2班";
			break;
		case 2:
			str_class="3班";
			break;
		}
		if(dlg.m_name.GetLength()<4||dlg.m_name.GetLength()>8||dlg.m_c.GetLength()<1
			||dlg.m_data.GetLength()<1||dlg.m_english.GetLength()<1||dlg.m_math.GetLength()<1
			||dlg.m_number.GetLength()!=8||dlg.m_paiming.GetLength()<1
			||dlg.m_phyical.GetLength()<1/*||dlg.m_sorce.GetLength()<1*/)
		{	
			MessageBox("请正确填写各项信息!");
		}
		else
		{
			if(!m_record.Open(AFX_DB_USE_DEFAULT_TYPE,sql))
			{
				MessageBox("打开数据库失败!");
			}
			//计算总分数m_sorce
			float sum=0,temp;CString sorce;

			temp=atof(dlg.m_english);sum+=temp;
			temp=atof(dlg.m_math);sum+=temp;
			temp=atof(dlg.m_phyical);sum+=temp;
			temp=atof(dlg.m_c);sum+=temp;
			temp=atof(dlg.m_data);sum+=temp;
			sorce.Format("%.1f",sum);
			/////////////////////////////////////排名计算
			int sort=1;
			float temp2;
			m_record.MoveFirst();
			while(!m_record.IsEOF())
			{
				temp2=atof(m_record.m_column9);
				if(temp2<sorce)
					sort++;
				m_record.MoveNext();	
			}
			CString ss;
			ss.Format("%d",sort);
			
			////////////////////////////////////////////
			m_record.AddNew();
			m_record.m_column1=dlg.m_number;
			m_record.m_column2=dlg.m_name;
			m_record.m_column3=str_sex;
			m_record.m_column4=str_class;
			m_record.m_column5=dlg.m_english;
			m_record.m_column6=dlg.m_math;
			m_record.m_column7=dlg.m_phyical;
			m_record.m_C__=dlg.m_c;
			m_record.m_column8=dlg.m_data;
			m_record.m_column9=sorce;//dlg.m_sorce;
//			m_record.m_column10=ss;
			m_record.m_column10=dlg.m_paiming;	
			m_record.m_column11=dlg.m_remark;
			m_record.Update();
			m_record.Requery();
			m_record.Close();
			MessageBox("添加记录成功!");
			OnBseeall();
		}
	}
}

void CStudentDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	LPPOINT lpoint=new tagPOINT;   
    ::GetCursorPos(lpoint);                                 //获得鼠标
    CMenu    menu,*pSubMenu; 
    menu.LoadMenu(IDR_MENU1);                 //添加菜单资源
    pSubMenu=menu.GetSubMenu(0);            //设置菜单弹出项目起始位置
    pSubMenu->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);     //获得鼠标位置

	*pResult = 0;
}

void CStudentDlg::OnMDelete() 
{
	// TODO: Add your command handler code here
	
	CString ss;
	// 得到项目索引 
	POSITION pos; 
	pos =m_list.GetFirstSelectedItemPosition(); 
	index=m_list.GetNextSelectedItem(pos); 
	ss=m_list.GetItemText(index,0);
	CString str_sql;
	str_sql.Format("select * from 1班 where 学号='%s'",ss);
	if(MessageBox("确实要删除当前选中的记录吗?","警告",
		MB_ICONEXCLAMATION|MB_OKCANCEL)==IDOK)
	{
		if(!m_record.Open(AFX_DB_USE_DEFAULT_TYPE,str_sql))
		{
			MessageBox("打开数据库失败!");
		}
		if(!m_record.CanUpdate())
		{
			MessageBox("数据库不允许删除!");
			return;
		}
		m_record.Delete();
		m_record.Requery();
		m_record.Close();
		OnBseeall();
	}
}

void CStudentDlg::OnMadd() 
{
	// TODO: Add your command handler code here
	OnBadd();
}

void CStudentDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	CRect rect;
	GetClientRect(&rect);
//	if(nType==SIZE_MAXIMIZED)//如果最大化

	if(m_comb_class.GetSafeHwnd()!=0)
	{
		GetDlgItem(IDC_LIST1)->MoveWindow(20,70,cx-40,cy-85);
	}
	
	
}

void CStudentDlg::OnCloseup_sort() 
{
	// TODO: Add your control notification handler code here
	int sort;
	CString str_sort;
	sort=m_sort.GetCurSel();
	switch(sort)
	{
	case 0:	str_sort="学号";	break;
	case 1: str_sort="总分";	break;
	case 2:	str_sort="总分";	break;
	case 3:	str_sort="英语";	break;
	case 4:	str_sort="数学";	break;
	case 5:	str_sort="物理";	break;
	case 6:	str_sort="物理";	break;
	case 7:	str_sort="数据结构";break;
	}
	m_record.m_strSort=str_sort;
	OnBseeall();
}

void CStudentDlg::OnMEdit() 
{
	// TODO: Add your command handler code here

	CString ss;
	// 得到项目索引 
	POSITION pos; 
	pos =m_list.GetFirstSelectedItemPosition(); 
	index=m_list.GetNextSelectedItem(pos); 
	ss=m_list.GetItemText(index,0);
	CString str_sql;
	int item=m_comb_class.GetCurSel();
	switch(item)
	{
	case 0:
		str_sql.Format("select * from 1班 where 学号='%s'",ss);
		break;
	case 1:
		str_sql.Format("select * from 2班 where 学号='%s'",ss);
		break;
	case 2:
		str_sql.Format("select * from 3班 where 学号='%s'",ss);
		break;
	}
//	str_sql.Format("'%s' where 学号='%s'",sql,ss);
	if(!m_record.Open(AFX_DB_USE_DEFAULT_TYPE,str_sql))
	{
		MessageBox("打开数据库失败!");
	}
	if(!m_record.CanUpdate())
	{
		MessageBox("数据库不允许删除!");
		return;
	}
	CAdddlg dlg;
	
	dlg.m_number=m_record.m_column1;
	dlg.m_name=m_record.m_column2;
	//	dlg.m_sex=m_record.m_column3;
	//	dlg.m_class=m_record.m_column4;
	dlg.m_english=m_record.m_column5;
	dlg.m_math=m_record.m_column6;
	dlg.m_phyical=m_record.m_column7;
	dlg.m_c=m_record.m_C__;
	dlg.m_data=m_record.m_column8;
	dlg.m_sorce=m_record.m_column9;
	dlg.m_paiming=m_record.m_column10;
	dlg.m_remark=m_record.m_column11;
	if(m_record.m_column3=="男")
	{
		dlg.init_sex=0;
	}
	else
		dlg.init_sex=1;
	if(m_record.m_column4=="1班")
	{
		dlg.init_class=0;
	}
	else if(m_record.m_column4=="2班")
	{
		dlg.init_class=1;
	}
	else
	{
		dlg.init_class=2;
	}
	
    if(dlg.DoModal()==IDOK)
	{
		CAdddlg *dd=new CAdddlg;
		dd->Create(IDD_DADD,this);
		dd->SetWindowText("dddddddddd");
		CString str_sex,str_class;
		switch(dlg.sex)
		{
		case 0:
			str_sex="男";
			break;
		case 1:
			str_sex="女";
			break;
		}
		switch(dlg.class1)
		{
		case 0:
			str_class="1班";
			break;
		case 1:
			str_class="2班";
			break;
		case 2:
			str_class="3班";
			break;
		}
		if(dlg.m_name.GetLength()<4||dlg.m_name.GetLength()>8||dlg.m_c.GetLength()<1
			||dlg.m_data.GetLength()<1||dlg.m_english.GetLength()<1||dlg.m_math.GetLength()<1
			||dlg.m_number.GetLength()!=8||dlg.m_paiming.GetLength()<1
			||dlg.m_phyical.GetLength()<1/*||dlg.m_sorce.GetLength()<1*/)
		{	
			MessageBox("请正确填写各项信息!");
		}
		else
		{	//计算总分数m_sorce
			float sum=0,temp;CString sorce;
			temp=atof(dlg.m_english);sum+=temp;
			temp=atof(dlg.m_math);sum+=temp;
			temp=atof(dlg.m_phyical);sum+=temp;
			temp=atof(dlg.m_c);sum+=temp;
			temp=atof(dlg.m_data);sum+=temp;
			sorce.Format("%.1f",sum);

//			m_record.Delete();
//			m_record.MovePrev();
			m_record.Edit();
			m_record.m_column1=dlg.m_number;
			m_record.m_column2=dlg.m_name;
			m_record.m_column3=str_sex;
			m_record.m_column4=str_class;
			m_record.m_column5=dlg.m_english;
			m_record.m_column6=dlg.m_math;
			m_record.m_column7=dlg.m_phyical;
			m_record.m_C__=dlg.m_c;
			m_record.m_column8=dlg.m_data;
			m_record.m_column9=sorce;//dlg.m_sorce;
			m_record.m_column10=dlg.m_paiming;
			m_record.m_column11=dlg.m_remark;
			m_record.Update();
			m_record.Requery();
			m_record.Close();
			OnBseeall();
			MessageBox("更新记录成功!");
			
		}
		
	}
	else
	{
		m_record.Close();
		return ;
	}
}

void CStudentDlg::OnBabout() 
{
	// TODO: Add your control notification handler code here
	CAboutDlg dlg;
	dlg.DoModal();
//	CString ss="select * from 1班";
//	GetPaiming(ss);
}


void CStudentDlg::GetPaiming(CString sql)
{
	if(!m_record.Open(AFX_DB_USE_DEFAULT_TYPE,sql))
	{
		MessageBox("打开数据库失败!");
	}
	int count;
	CString temp;
	float x0;
	m_record.MoveFirst();
	while(!m_record.IsEOF())
		m_record.MoveNext();
	count=m_record.GetRecordCount();
	float *paiming=new float[count+1];
	m_record.MoveFirst();
	for(int k=1;k<=count;k++)
	{
		x0=atof(m_record.m_column9);
		paiming[k-1]=x0;
	}
	
	m_record.Close();
	OnBseeall();
	delete paiming;
}

⌨️ 快捷键说明

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