您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:72 来源:vckbase.com

本文章共2132字,分2页,当前第1页,快速翻页:
 

对《一个简单的学生成绩管理系统》优化的一点意见
作者:xieyuntian

大家好,我是第一次在VCKBASE.com上面发表东西,由于经常在VCKBASE.com看东西,而有一点心得,今天写出来和大家一起分享。
逆风者
我这次是对《一个简单的学生成绩管理系统》的优化发表一点我自己的意见。
好的,现在我们开始讨论优化的问题,在讨论之前,建议先看看《一个简单的学生成绩管理系统》这篇文章。我看过《一个简单的学生成绩管理系统》后,觉他其中的show()这个函数用得不是很好。
show()函数的代码如下:
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()函数带来了抖动.

下面我就具体说说我的解决办法,其实,很简单,我们只要在添加记录的时候不要调用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(); 

   }

} 
 
本文章更多内容1 - 2 - 下一页>>
相关文章

在MFC中用正则表达式对窗体进行有效性验证
如何在NT下获取进程的路径(增补)
高效开发与彻底测试
对话框模板,RegexTest
在MDI程序中实现类似WPS2000的文件切换标签
用DirectShow抓取影片帧
用微软的实时通信API集成丰富的客户端通信
盗QQ,我也会
对《一个完善的ODBC数据库程序》一文的补充
Python 的数据库操作
深入浅出 CPropertySheet
实现类似Excel和Visual C 里文件夹式样的标
利用OpenGL实现动画效果
一个简单的时钟程序
一个完善的ODBC数据库程序
如何定制浮动工具条
一步步制作真彩工具条
自动查找并删除VC生成的临时文件
在VC中调用 WebService (非托管)
如何选中其他程序ListView控件中的某个Item

相关评论


本文章所属分类:首页 VC++

  热门关键字: