匆匆——后期感悟

        考试系统来的匆匆,赶着日子,匆匆忙忙的做完了。

        考试结束了,终于可以轻松会了。

 

        NO,这时候的工作才真正开始,总结才是重头戏。对用到知识的总结,对需求的理解,对项目开发的感悟,对自己学习态度的认识 ……有好多东西,需要我们去一点一点来整理。

        每次别人问我收获了多少,学了多少东西的时候,我无言以对,我想不起来,可是如果换一种形式,当大家坐在一起讨论的时候,好多东西,就会脱口而出,意识到,有些东西在开发过程中,已经形成了经验,潜移默化的在融入到身边,成为一种习惯吧。

        为什么会想不起来,大多是因为,“太匆匆”。开发项目过程中,一头扎进项目中,忙着理解需求,然后是想着办法,进行实现功能,总是感觉时间不够用。现在想起来,那时真的是十足的“程序猿”,很苦闷。

“太匆匆”蒙蔽了我们的双眼,一心想实现一个功能,考虑欠佳。很形象的一个例子:前两天,米老师安排我们录视频,给二期开发人员看。我录取的视频内容是讲解:动态表格生成界面。于是开始整理这块的知识。无意之间发现,自己当时的一个误区。

        看如下界面:根据文本框中输入的数组长度,显示表格行数:

前台代码:

<table  id="table1" class="table1" style="border-collapse:collapse;" border="1">

              <tbody>  
              </tbody>

</table>
        后台代码
//单击获取表格事件。
  protected void lbtnGetTable_Click(object sender, EventArgs e)
        {
            //定义数组大小
            int intDegree = int.Parse(TextBox1.Text.Trim());
            int[] a = new int[intDegree];
            //给数组赋值
            for (int i = 0; i < intDegree; i++)
            {
                a[i] = i;
            }
            //获取数组个数

	  #region 动态加载表格
		//循环添加行
	            for (int rowcount = 0; rowcount < intDegree; rowcount++)
	            {
		//实例化行对象
	                HtmlTableRow row = new HtmlTableRow();
	              //循环添加列
	                for (int cellcount = 0; cellcount < 2; cellcount++)
	                {
			//实例化列
	                    HtmlTableCell cell;
	                    // Create table header cells for first row.
	                    if (cellcount == 0)
	                    {
	                        cell = new HtmlTableCell();
	                        int b = rowcount + 1;
	                        cell.InnerHtml = "等级" + b;
	
	                    }
	                    else
	                    {
	                        cell = new HtmlTableCell();
	                        HtmlInputText txt = new HtmlInputText("txt" + rowcount);
	                        txt.Value = a[rowcount].ToString().Trim();
	                        cell.Controls.Add(txt);
	                    }
	                    row.Cells.Add(cell);
	                }
	                //向行对象中添加列
	                table1.Rows.Add(row);
	            }
	            #endregion
	}

    回头再看感悟:通过上述代码,可以看出,代码中赋值的数据量不大,而我却是通过动态生成Table,row,cell来实现。而且可以看到,生成row,cell,的时候需要判断第一行。第一列这些内容,这样就难保不会出错。但是当时,做系统的时候就没有好好想过这个问题,脑袋中闪过一个动态生成表格的念头,就开始折腾,然后,有了如上结果。到现在开始录视频的时候,突然发现,我的数据量不大,当时,可是考虑使用一种比较简单的办法来实现。

    通过给“repeat控件”datasours对象绑定数组获得的。

    使用Repeat控件,绑定数据源。

    前台界面:提前加载好repeat控件。

       <table  id="table1" class="table1" style="border-collapse:collapse;" border="1">
                 <tbody> 
                       <asp:Repeater ID="rep1" runat="server">
                                   <ItemTemplate>
                                        <tr class="tr">
                                                <td class="txt c" align="right">
                                                        <%# "第" +Container.DataItem +"行" %>   
                                                </td>
                                                <td class="txt c" align="right">
                                                        <%# Container.DataItem %>   
                                                </td>
                                        </tr>
                                 </ItemTemplate>
                     </asp:Repeater>
              </tbody>
      </table>


后台代码:

		//单击获取表格事件。
		  protected void lbtnGetTable_Click(object sender, EventArgs e)
		        {
		            //定义数组大小
		            int intDegree = int.Parse(TextBox1.Text.Trim());
		            int[] a = new int[intDegree];
		            //给数组赋值
		            for (int i = 0; i < intDegree; i++)
		            {
		                a[i] = i;
		            }
		            //获取数组个数
		
		//使用repeater控件,
		            #region 绑定数据源为数组。
		            rep1.DataSource = a;
		            rep1.DataBind();
		            #endregion
		}

    上述对比可以看出生成动态表格代码要比repeate复杂。首先前台我们只需要拖入repeat控件,然后进行数据绑定,后台只需要绑定数据源datasource,databind即可。

 

    有利有弊吧,当初看来动态生成表格,后期也还是用到了,只是想强调:在使用控件或者其他知识的时候,要先分析一下,那个更合适这块地需要。



基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
评论 36
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值