分类:
2008-10-13 16:08:45
对《一个简单的学生成绩管理系统》优化的一点意见
作者:
show() { m_Set.MoveFirst(); do { CString s; s.Format("%d",m_Set.m_column1); m_ListCtrlx.InsertItem(i,s,0); m_ListCtrlx.SetItemText(i,1,m_Set.m_column2); s.Format("%.1f",m_Set.m_column3); m_ListCtrlx.SetItemText(i,2,s); s.Format("%.1f",m_Set.m_column4); m_ListCtrlx.SetItemText(i,3,s); s.Format("%.1f",m_Set.m_column5); m_ListCtrlx.SetItemText(i,4,s); s.Format("%.1f",m_Set.m_column6); m_ListCtrlx.SetItemText(i,5,s); s.Format("%.1f",m_Set.m_column7); m_ListCtrlx.SetItemText(i,6,s); s.Format("%.1f",m_Set.m_column8); m_ListCtrlx.SetItemText(i,7,s); s.Format("%.2f",m_Set.m_column9); m_ListCtrlx.SetItemText(i,8,s); i++; m_Set.MoveNext(); }while(!m_Set.IsEOF()); m_Set.Close(); }大家可以看出来,这个函数的作用是用来显示和列表控件绑定的数据库表的内容,并且这个函数在初始化的时候就调用了,这一点我觉得没有问题,问题是我觉得他在使用添加记录功能的时候会再次调用这个show()函数,我觉得这样做在效率上面会有很大的损失,为什么这么说呢?因为,每次调用show()函数以前都要清空列表中的内容,然后再把数据库表的内容又重新显示一次,这样我想在效率上面是有影响的。那我们是否可以并不要每次添加记录的时候都要show()函数呢? 有这个想法就按这个想法做下去,我仔细看过后有了新的想法,我觉得可以只要每次都显示添加的记录那不就可以了吗?而且还可以解决调用show()函数带来了抖动.
void CBaDialog::OnAdd() { Selec=TRUE; CAddialog dlg; if( dlg.DoModal()==IDOK) { if(this->Select()=="一班") { if(dlg.m_nxue>=200) { AfxMessageBox("一班学号在1—200之间"); return; } } else { if(dlg.m_nxue<200||dlg.m_nxue>=400) { AfxMessageBox("二班学号在200—400之间"); return; } } m_Set.AddNew(); m_nRecordCount+=1; m_Set.m_column1=dlg.m_nxue; m_Set.m_column2=dlg.m_strName; m_Set.m_column3=dlg.m_fmaths; m_Set.m_column4=dlg.m_fphysical; m_Set.m_column5=dlg.m_fchemistry; m_Set.m_column6=dlg.m_fenglish; m_Set.m_column7=dlg.m_fpolitic; m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic; m_Set.m_column9=(float)(m_Set.m_column8/5); this->Equal(); m_Set.Update();//Update()一定放在Equal()后 m_Set.Requery(); this->Xuan(); } }我们可以不要调Xuan()这个函数,因为这个函数就是用来调用show()函数的,但是Xuan()函数中还调用了一个和show()功能一样的diaplay()函数,请读者注意,好了,我们可以添加如下代码
CString s; s.Format("%d",m_dlg.m1); m_ListCtrlx.InsertItem(i,s,0); m_ListCtrlx.SetItemText(i,1,m_dlg.m2); s.Format("%.1f",m_dlg.m3); m_ListCtrlx.SetItemText(i,2,s); s.Format("%.1f",m_dlg.m4); m_ListCtrlx.SetItemText(i,3,s); s.Format("%.1f",m_dlg.m5); m_ListCtrlx.SetItemText(i,4,s); s.Format("%.1f",m_dlg.m6); m_ListCtrlx.SetItemText(i,5,s); s.Format("%.1f",m_dlg.m7); m_ListCtrlx.SetItemText(i,6,s); s.Format("%.1f",m_dlg.m8); m_ListCtrlx.SetItemText(i,7,s); s.Format("%.2f",m_dlg.m9); m_ListCtrlx.SetItemText(i,8,s);