[经验]通讯录管理系统
<P align=center>中南大学<o:p></o:p></P><P align=center><B>《</B><B>课程设计</B><B><FONT face="Times New Roman">II</FONT></B><B>》设计报告</B><B><o:p></o:p></B></P>
<P align=center><B><o:p><FONT face="Times New Roman"> </FONT></o:p></B></P>
<P align=center><B><o:p><FONT face="Times New Roman"> </FONT></o:p></B></P>
<P align=center><o:p> </o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P >题 目<U> 用VC++.Net开发通讯录管理系统 <o:p></o:p></U></P>
<P >学生姓名<U> 张祖锦 <o:p></o:p></U></P>
<P >学 号<U> 1301030106 <o:p></o:p></U></P>
<P >专业班级<U> 数学与应用数学0301班 <o:p></o:p></U></P>
<P >指导老师<U> 郑洲顺 <o:p></o:p></U></P>
<P align=center><o:p> </o:p></P>
<P align=center><B><o:p><FONT face="Times New Roman"> </FONT></o:p></B></P>
<P align=center><B>数学科学与计算技术学院</B><B><o:p></o:p></B></P>
<P align=center><B><o:p><FONT face="Times New Roman"> </FONT></o:p></B></P>
<P align=center><B><FONT face="Times New Roman">2005</FONT></B><B>年</B><B><FONT face="Times New Roman">12</FONT></B><B>月</B><B><o:p></o:p></B></P>
<P align=center><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P align=center><B>通讯录管理系统开发设计报告</B><B><o:p></o:p></B></P>
<P align=center><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P align=center><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">[</FONT><B >实验地点</B><FONT face="Times New Roman">] </FONT>数学院机房<FONT face="Times New Roman"> <o:p></o:p></FONT></P>
<P ><FONT face="Times New Roman">[</FONT><B >实验时间</B><FONT face="Times New Roman">] <st1:chsdate w:st="on" Year="2005" Month="12" Day="15" IsLunarDate="False" IsROCDate="False">2005-12-15</st1:chsdate>~<st1:chsdate w:st="on" Year="2005" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">2005-12-30</st1:chsdate><o:p></o:p></FONT></P>
<P ><FONT face="Times New Roman">[</FONT><B >实验环境</B><FONT face="Times New Roman">] Microsoft Visual C++.Net 2003<o:p></o:p></FONT></P>
<P ><FONT face="Times New Roman">[</FONT><B >指导老师</B><FONT face="Times New Roman">] </FONT>郑洲顺<o:p></o:p></P>
<P ><FONT face="Times New Roman">[</FONT><B >实验目的</B><FONT face="Times New Roman">] <o:p></o:p></FONT></P>
<P ><FONT face="Times New Roman">1. </FONT>通过两周的实践<FONT face="Times New Roman">,</FONT>初步掌握<FONT face="Times New Roman">Visual C++.Net</FONT>的基本操作<FONT face="Times New Roman">,</FONT>加深面向对象编程的理解<FONT face="Times New Roman">. <o:p></o:p></FONT></P>
<P ><FONT face="Times New Roman">2. </FONT>亲自动手<FONT face="Times New Roman">,</FONT>开发有一定意义的软件系统<FONT face="Times New Roman">.<o:p></o:p></FONT></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">[</FONT><B >系统实现</B><FONT face="Times New Roman">]<o:p></o:p></FONT></P>
<P ><B ><FONT face="Times New Roman">1. </FONT></B><B >总体分析和设计思想</B><B ><o:p></o:p></B></P>
<P >利用<FONT face="Times New Roman">MFC</FONT>连接数据库有很多方法,选择一个比较适中的方法——利用<FONT face="Times New Roman">MFC</FONT>的<FONT face="Times New Roman">ODBC</FONT>类来制作通讯录管理系统。建立<B>对话框</B>应用程序,为其添加<B>菜单</B>实现登陆和密码修改功能,添加<B><FONT face="Times New Roman">MFC</FONT></B><B>的</B><B><FONT face="Times New Roman">ODBC</FONT></B><B>类</B>连接数据库实现对数据的操作<FONT face="Times New Roman">:</FONT>添加<FONT face="Times New Roman">(Insert)</FONT>、修改<FONT face="Times New Roman">(Modify)</FONT>、删除<FONT face="Times New Roman">(Delete)</FONT>、查找<FONT face="Times New Roman">(Find)</FONT>功能。<o:p></o:p></P>
<P >具体实现细节<FONT face="Times New Roman">:</FONT>建立对话框应用程序<FONT face="Times New Roman">,</FONT>并为它添加菜单,管理员登陆和密码修改都在此实现;建立两个<FONT face="Times New Roman">MFC</FONT>的<FONT face="Times New Roman">ODBC</FONT>类,一个连接个人信息表<FONT face="Times New Roman">,</FONT>一个连接管理员密码表;通过连接,使主界面能够显示数据库的数据;编写程序实现添加、修改、删除、查找功能,其中查找用到了一般数据库常用的<B><FONT face="Times New Roman">SQL</FONT></B>语言,一为其结构简单,二为其运行节省内存资源;通过模糊查找,可以统计出许多有用资料:男生有多少,女生有多少,姓张的有多少,姓王的有多少,江西的有多少,湖南的有多少等等。<o:p></o:p></P>
<P ><FONT face="Times New Roman"> </FONT>此系统一般为单机服务,用户把自己认识的同学或好友添加进去,每到一处删除原来的,建立新的数据库,对于变动特别大的很实用。加上查询功能可以算是很好了,本来想对记录添加两个字段:生日和头像,可惜学的不够,不能实现。<o:p></o:p></P>
<P ><FONT face="Times New Roman"> </FONT>一般的,可以移植到各个机器,只要用户配置好数据源即可使用。<o:p></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B ><FONT face="Times New Roman">2. </FONT></B><B >流程图</B><B ><o:p></o:p></B></P>
<P ><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1026">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按地址</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1027">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >主菜单</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><FONT size=3></FONT></v:line><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:path textboxrect="5400,5400,16200,16200" o:connecttype="rect" gradientshapeok="t"></v:path></v:shapetype><v:shape><v:textbox style="mso-next-textbox: #_x0000_s1029">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >登陆<FONT face="Times New Roman">,mima </FONT></P></DIV></TD></TR></TABLE></v:textbox></v:shape><v:line><FONT face="Times New Roman" size=3></FONT></v:line><v:line><v:stroke endarrow="block"><FONT face="Times New Roman" size=3></FONT></v:stroke></v:line><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1032">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >添加记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1033">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >修改记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1034">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >删除记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1035">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >查询记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><FONT size=3></FONT></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1039">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按学号</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1040">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按姓名</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1041">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按性别</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1045">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按地址</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1046">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >刷新记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1054">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >查询记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><FONT size=3></FONT></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1058">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按学号</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1059">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按姓名</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1060">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >按性别</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:rect><v:textbox style="mso-next-textbox: #_x0000_s1064">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TR>
<TD >
<DIV>
<P >刷新记录</P></DIV></TD></TR></TABLE></v:textbox></v:rect><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><v:stroke endarrow="block"><FONT size=3></FONT></v:stroke></v:line><v:line><FONT size=3></FONT></v:line><v:line><FONT size=3></FONT></v:line><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P><BR clear=all> </P>
<P ><FONT face="Times New Roman"> </FONT>成功<o:p></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><v:line><FONT face="Times New Roman"></FONT></v:line><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P><BR clear=all> </P>
<P ><FONT face="Times New Roman"> </FONT>不成功<o:p></o:p></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><B ><FONT face="Times New Roman">3. </FONT></B><B >算法与程序实现</B><B ><o:p></o:p></B></P>
<P >u 准备工作<FONT face="Times New Roman"> </FONT>建立<FONT face="Times New Roman">Access</FONT>数据库<FONT face="Times New Roman">Address.mdb</FONT>,于中见表<FONT face="Times New Roman">infor</FONT>和<FONT face="Times New Roman">pwd</FONT>,字段如下<FONT face="Times New Roman">:<o:p></o:p></FONT></P>
<P ><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape><v:imagedata><FONT face="Times New Roman"></FONT></v:imagedata></v:shape><v:shape><v:imagedata><FONT face="Times New Roman"></FONT></v:imagedata></v:shape><o:p></o:p></P>
<P >u <FONT face="Times New Roman"> </FONT>建立基本框架和设计视图<FONT face="Times New Roman"> </FONT>建立基于对话框的<FONT face="Times New Roman">MFC</FONT>应用程序,为它添加菜单,分别建立对话框<FONT face="Times New Roman">LoginDlg, PwdChangeDlg, AddDlg, EditDlg, SearchDlg</FONT>来分别实现登录,密码修改,添加记录,修改记录,查询记录功能<FONT face="Times New Roman">,</FONT>并分别为各个控件添加相应的变量<FONT face="Times New Roman">(</FONT>值变量,控制变量<FONT face="Times New Roman">)</FONT>。下面分别是各个界面<FONT face="Times New Roman">:<o:p></o:p></FONT></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><v:shape><v:imagedata></v:imagedata></v:shape><o:p></o:p></P>
<P ><v:shape><v:imagedata></v:imagedata></v:shape><v:shape><v:imagedata></v:imagedata></v:shape><o:p></o:p></P>
<P ><v:shape><v:imagedata></v:imagedata></v:shape><v:shape><v:imagedata></v:imagedata></v:shape><o:p></o:p></P>
<P ><v:shape><v:imagedata></v:imagedata></v:shape><v:shape><v:imagedata></v:imagedata></v:shape><o:p></o:p></P>
<P 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l1 level1 lfo2">u 具体实现代码<FONT face="Times New Roman"> <o:p></o:p></FONT></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">a. </FONT>在<FONT face="Times New Roman">AddressDlg.h</FONT>中引入各个类,并为它们分别建立对象:<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>// 添加自己定义的类<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>#include "Login.h" // 密码框<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>#include "infor.h" // 数据源<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>#include "pwd.h" // 密码源<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>#include "Add.h" // 添加对话框<o:p></o:p></P>
<P 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>#include "EditData.h" // 修改对话框<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>#include "Search.h" // 查询对话框<o:p></o:p></P>
<P 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt">#include "PwdChange.h" // 密码修改框<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>// 定义类的对象<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CLogin logindlg;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> Cinfor m_inforset;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> Cpwd m_pwdset;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CAdd adddlg;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CEditData editdlg; // 本来想用Edit类的可惜那个已经是系统的了<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CSearch searchdlg; <o:p></o:p></P>
<P 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt">CPwdChange pwdchangedlg;<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">b. </FONT>登录<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::Onlogin()<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CLogin logindlg;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(logindlg.DoModal( )==IDOK)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_pwdset.IsOpen( )) // 打开密码数据库<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.Open( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.MoveFirst( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(strcmp(logindlg.m_pwd,m_pwdset.m_pwd))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("密码错误,不能添加,修改,删除功能!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 管理员可以添加、修改、删除记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addbtn.EnableWindow(true);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_modifybtn.EnableWindow(true);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_deletebtn.EnableWindow(true);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt">}<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">c. </FONT>密码修改<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::Onpwdedit()<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(pwdchangedlg.DoModal( )==IDOK)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_pwdset.IsOpen( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.Open( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.MoveFirst( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(m_pwdset.m_pwd!=pwdchangedlg.m_former)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("原密码错误,请重新输入!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(pwdchangedlg.m_new.GetLength( )==0)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("请输入新密码!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt 84pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(pwdchangedlg.m_new==pwdchangedlg.m_certain)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.Edit( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.m_pwd=pwdchangedlg.m_certain;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_pwdset.Update( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CString str;<o:p></o:p></P>
<P 0cm 0cm 0pt 201pt; TEXT-INDENT: -54pt; TEXT-ALIGN: left; mso-char-indent-count: -6.0; mso-layout-grid-align: none; mso-para-margin-left: 14.0gd" align=left>str.Format("密码修改成功,新密码是:%s\n以后就用这个密码登陆了",pwdchangedlg.m_certain);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox(str);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("新密码和确认密码不符,请重新输入!"); }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt 60pt; TEXT-INDENT: 3pt">}<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt">}<o:p></o:p></P> <P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">a. </FONT>刷新:因为多处要刷新,用<FONT face="Times New Roman">List Control</FONT>组件显示记录,故而从面向对象的观点看,定义一个函数来实现此功能,便可到处利用。<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::ShowData(void)<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_inforset.IsOpen( )) // 打开数据库指针<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Open( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.DeleteAllItems( ); // 删除所有记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(m_inforset.IsBOF( ) && m_inforset.IsEOF( )) // 没一条记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("没有数据,如何显示!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> int i=0;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveFirst( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> while(!m_inforset.IsEOF( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.InsertItem(i,m_inforset.m_id,0);// 插入一行,i为行<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.SetItemText(i,1,m_inforset.m_name);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.SetItemText(i,2,m_inforset.m_gender);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.SetItemText(i,3,m_inforset.m_address);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.SetItemText(i,4,m_inforset.m_postcode);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.SetItemText(i,5,m_inforset.m_email);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.SetItemText(i,6,m_inforset.m_memo);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> i++;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveNext( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CString cntstr;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> cntstr.Format("%d",m_addrlist.GetItemCount( ));<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_cnt=cntstr; // 获取记录个数<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_addrlist.ShowWindow(SW_SHOW);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_queryaddrlist.ShowWindow(SW_HIDE);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> UpdateData(false); // 更新浏览界面<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt">}<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">b. </FONT>添加记录:定义函数<FONT face="Times New Roman">Add</FONT>实现添加记录<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::Add(void)<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(adddlg.DoModal( )==IDOK)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 设置各个控件的属性<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(adddlg.m_id.GetLength( )==0)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("学号不能为空,请检查!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> return;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_inforset.IsOpen( )) // 打开数据链接<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Open( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 以下程序保证学号不重复,因为学号是关键字<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveFirst( ); // 移动到第一条记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> int flag=0;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> while(!m_inforset.IsEOF( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(m_inforset.m_id==adddlg.m_id)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> flag=1;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveNext( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(flag==0) // 没有这条记录,可以大胆的添加了<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.AddNew( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 以下是各字段的值<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_id=adddlg.m_id;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_name=adddlg.m_name;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_gender=adddlg.m_gender;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_address=adddlg.m_address;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_postcode=adddlg.m_postcode;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_email=adddlg.m_email;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_memo=adddlg.m_memo;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Update( ); // 提交数据<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("恭喜你,添加成功!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> ShowData( ); // 刷新记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("学号已存在,不能再添加了!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt">} <o:p></o:p></P> <P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">a. </FONT>修改记录:定义函数<FONT face="Times New Roman">Modify</FONT>实现添加修改记录<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::Modify(void)<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> POSITION pos=m_addrlist.GetFirstSelectedItemPosition( ); // 获取所选的记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(pos) // 如果选中一行<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> int nItem=m_addrlist.GetNextSelectedItem(pos);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 将所选的一行数据移植到EditData对话框里<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_id=m_addrlist.GetItemText(nItem,0);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_name=m_addrlist.GetItemText(nItem,1);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_gender=m_addrlist.GetItemText(nItem,2);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_address=m_addrlist.GetItemText(nItem,3);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_postcode=m_addrlist.GetItemText(nItem,4);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_email=m_addrlist.GetItemText(nItem,5);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.m_memo=m_addrlist.GetItemText(nItem,6);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> editdlg.DoModal( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_inforset.IsOpen( )) // 打开数据连接 <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Open( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 找到相应的记录进行修改<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveFirst( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> while(!m_inforset.IsEOF( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!strcmp(m_inforset.m_id,editdlg.m_id))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveNext( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Edit( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 以下是修改的数据存入数据库<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_name=editdlg.m_name;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_gender=editdlg.m_gender;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_address=editdlg.m_address;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_postcode=editdlg.m_postcode;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_email=editdlg.m_email;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.m_memo=editdlg.m_memo;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Update( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("恭喜你,修改成功!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> ShowData( ); // 刷新用户界面<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("请选择要修改的记录!");<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt">}<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">b. </FONT>删除记录:定义函数<FONT face="Times New Roman">Delete</FONT>实现删除记录<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::Delete(void)<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> POSITION pos=m_addrlist.GetFirstSelectedItemPosition( ); // 获取所选的记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(pos) // 如果选中一行<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> int nItem=m_addrlist.GetNextSelectedItem(pos);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt 84pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>if(AfxMessageBox("真的要删除这条记录么?",MB_YESNO)==IDYES) <o:p></o:p></P>
<P 0cm 0cm 0pt 84pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>// 询问真的要删除<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_inforset.IsOpen( )) // 打开数据连接 <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Open( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> // 找到相应的记录<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveFirst( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> while(!m_inforset.IsEOF( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CString str=m_addrlist.GetItemText(nItem,0);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!strcmp(m_inforset.m_id,str))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.MoveNext( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Delete( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("恭喜你,删除成功!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> ShowData( ); // 刷新用户界面<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> } <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("请选择要删除的记录!");<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt">}<o:p></o:p></P> <P 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l0 level2 lfo1"><FONT face="Times New Roman">a. </FONT>查询记录:定义<FONT face="Times New Roman">Query</FONT>实现查询记录,其中包括模糊查询,用了以前<FONT face="Times New Roman">Delphi</FONT>实习时不太熟悉的<FONT face="Times New Roman">SQL</FONT>语言,这是我觉得最精彩的一部分。<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>void CAddressDlg::Query(void)<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>{<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_queryaddrlist.DeleteAllItems( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> searchdlg.DoModal( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!searchdlg.m_memoterm.GetLength( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("请输入查询值!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> CString strSql,fieldstr,valuestr;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> switch(searchdlg.m_queryterm)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> {<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> case 0:<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> fieldstr="id ";<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> case 1:<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> fieldstr="name";<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> case 2:<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> fieldstr="gender";<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> case 3:<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> fieldstr="address";<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> break;<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(searchdlg.m_chk)<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> { <o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> valuestr='%'+searchdlg.m_memoterm+'%';<o:p></o:p></P>
<P 0cm 0cm 0pt 168pt; TEXT-INDENT: -63pt; TEXT-ALIGN: left; mso-char-indent-count: -7.0; mso-layout-grid-align: none; mso-para-margin-left: 10.0gd" align=left>strSql.Format("select * from infor where %s like '%s' ",fieldstr,valuestr);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt 168pt; TEXT-INDENT: -63pt; TEXT-ALIGN: left; mso-char-indent-count: -7.0; mso-layout-grid-align: none; mso-para-margin-left: 10.0gd" align=left>strSql.Format("select * from infor where %s = '%s' ",fieldstr,searchdlg.m_memoterm);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><o:p> </o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(m_inforset.IsOpen( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Close( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> m_inforset.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> if(!m_inforset.GetRecordCount( ))<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> AfxMessageBox("对不起,没有找到相应的记录!");<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> else<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> ShowQueryData( );<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left> }<o:p></o:p></P>
<P 0cm 0cm 0pt 39pt">}<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><B normal"><FONT face="Times New Roman">2. </FONT></B><B normal">运行结果</B><B normal"><o:p></o:p></B></P>
<P 0cm 0cm 0pt 18pt">主界面<FONT face="Times New Roman">:<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt 18pt"><B normal"><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape><v:imagedata><FONT face="Times New Roman"></FONT></v:imagedata></v:shape><o:p></o:p></B></P>
<P 0cm 0cm 0pt 18pt">查询<FONT face="Times New Roman">:<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt 18pt"><B normal"><v:shape><v:imagedata></v:imagedata></v:shape><o:p></o:p></B></P> <P 0cm 0cm 0pt"><FONT face="Times New Roman">[</FONT>实践心得<FONT face="Times New Roman">]<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0"><FONT face="Times New Roman">12</FONT>月中旬便开始搞<FONT face="Times New Roman">VC.Net</FONT>实习了,经过了两个星期,确有一番感触:<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0">以前觉得<FONT face="Times New Roman">VC.Net</FONT>不是很好,就没怎么学,只是把老师布置的一些作业做了,而其他时间则用来搞<FONT face="Times New Roman">ACM</FONT>了,经过这两个星期,发现<FONT face="Times New Roman">VC.Net</FONT>也不赖阿,特别是它那面向对象的编程思想,以前学<FONT face="Times New Roman">Delphi</FONT>学得还可以,可惜都是在控件下编程。比如有一次做<FONT face="Times New Roman">Gauss</FONT>消元法求解线性方程组,发到网上,别人大家赞赏,也对我提出了更高的要求——定义函数来写!确实这样更能体现类的思想——封装。<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0">这次实习两周,而我真正用在写这个管理系统的时间仅仅是<FONT face="Times New Roman">12</FONT>个小时,而且是最后的<FONT face="Times New Roman">12</FONT>小时。其他时间用来干嘛了呢?用来读网上下载的程序、帮同学解决问题和写相关的程序。怕交不上,先写了个<FONT face="Times New Roman">ZooManage</FONT>的动物园管理系统<FONT face="Times New Roman">,</FONT>不过因为纸张原因而未能写上。再说了,本来想做个<FONT face="Times New Roman">QQ2008</FONT>奥运版来模拟<FONT face="Times New Roman">QQ</FONT>登录,只可惜遇到难题了:基于对话框的应用程序连上第三个对话框时就出错了——<FONT face="Times New Roman">CPU</FONT>占用<FONT face="Times New Roman">99%</FONT>,且不能关闭,去网上发帖,也无人回答,却步而止。<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0"><FONT face="Times New Roman"> </FONT>知道的太少,不过也没关系,要的是让不知道的成为知道。通过和几个同学交流,互看程序,互帮互助,很多在头脑中有但不能实现的都可以大概实现了。还有更重要的一点就是同学的鼓励,在很多关键性的点上卡住了,自己的实力和同学的鼓励使它变为踏上更远征途的垫脚石!<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0"><FONT face="Times New Roman"> </FONT>技术问题很好玩,也能让人大开眼界,不过过去了,知道了,又没写下,便又没什么说的了,挑几个还记得的而且很重要的写写:<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 33pt; TEXT-INDENT: -21pt; tab-stops: list 33.0pt; mso-list: l1 level1 lfo1">Ø <B normal"><FONT face="Times New Roman">ADO</FONT></B><B normal">连接数据库</B>:去图书馆翻阅资料,东翻西找,可惜就是不能一本书解决问题,太可惜了。做这个东西一个两个的做,可惜就是不能成功,数据库能连接上,但是读取不可阿。取网上发帖,可惜真正懂得<FONT face="Times New Roman">VC.Net</FONT>的太少,哎呀!放弃,到用之时自然会知道。只可惜不能早点知道,再说了用<FONT face="Times New Roman">ADO</FONT>连接数据库很方便,而且很灵活。<o:p></o:p></P>
<P 0cm 0cm 0pt 12pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 33pt; TEXT-INDENT: -21pt; tab-stops: list 33.0pt; mso-list: l1 level1 lfo1">Ø <B normal">单机程序移植</B>:由于有了电脑,便有了更多的机会去实习,去观赏程序,写程序,可惜了,有时在机房可以运行,回来便挂了。这是个问题,但是经过几次的经验已经完全可以克服了。比如就拿最后一天来说:晚上<FONT face="Times New Roman">6</FONT>:<FONT face="Times New Roman">00~12</FONT>:<FONT face="Times New Roman">00</FONT>把<FONT face="Times New Roman">Address</FONT>的主界面和添加操作搞好了,第二天到机房把修改和删除弄好了,中午回来,好郁闷:明明删了的控件自动加载过来了,而且不能运行<FONT face="Times New Roman">(</FONT>错误信息很模糊<FONT face="Times New Roman">)</FONT>,开始我放弃,重新再来。不过发现很难重来,便开始思考:我是为那些控件添加变量了阿,而且有的还编了程,系统如何不能识别,于是便开始了删除工作:先把控件的关联变量删了,然后把<FONT face="Times New Roman">DoDataExchange</FONT>中的关联也删了,最后把用到关联变量的地方也删了,赫赫,真是高兴,没问题了!<o:p></o:p></P>
<P 0cm 0cm 0pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 12pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 33pt; TEXT-INDENT: -21pt; tab-stops: list 33.0pt; mso-list: l1 level1 lfo1">Ø <B normal">添加类:</B>很多时候因为不熟悉<FONT face="Times New Roman">VC.Net</FONT>而胡乱写程序,直接在控件上编程,但是当我看完了别人写的程序之后便不这样了,就拿加个对话框的例子看,加好了,我不急于为它添加类,而为它添加一个有意义的名字,然后再添加和这个对话框很有联系的类,对于控件也一样。在者,看一开始的包含文件,我先把所有的头文件包含进来,然后定义个全局变量——每个类的都有一个,以后就可以直接调用了,当然这不是一气呵成的,边写边添加的。这很不像以前:要用的时候定义个类的对象,然后调用它的事件。<o:p></o:p></P>
<P 0cm 0cm 0pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 12pt"><FONT face="Times New Roman"> </FONT>赫赫,也差不多了,很晚了。以后多多学习,不断丰富自己的编程经验!<o:p></o:p></P>
<P 0cm 0cm 0pt 12pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 12pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt"><FONT face="Times New Roman">[</FONT>参考书目<FONT face="Times New Roman">]<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo2"><FONT face="Times New Roman">1. </FONT>何炜等<FONT face="Times New Roman">. Visual C++.Net 2003 </FONT>程序设计<FONT face="Times New Roman">. </FONT>北京:冶金工业出版社<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo2"><FONT face="Times New Roman">2. <st1:City w:st="on"><st1:place w:st="on">Davis</st1:place></st1:City> Chapman. VC++.Net</FONT>入门<FONT face="Times New Roman">. </FONT>北京:中国电力出版社<o:p></o:p></P>
<P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo2"><FONT face="Times New Roman">3. </FONT>彭海河等<FONT face="Times New Roman">. Visual C++.Net </FONT>实例入门<FONT face="Times New Roman">. </FONT>山东:中国青年出版社<o:p></o:p></P>
<P 0cm 0cm 0pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P 0cm 0cm 0pt 12pt"><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
[分享]Address
[attach]4478[/attach]<br>[align=right][color=#000066][此贴子已经被作者于2005-12-30 16:48:15编辑过][/color][/align]
疑问
你做的“通讯录管理系统开发设计报告“所给的程序中为什么没有*.dsw文件,和*.dsp文件呢?可以加我qq发给我吗?我是一个vc++新学手,想看看你是怎么做的?谢谢!!!我qq是358561862急阿!! 真是强啊!
页:
[1]
