高级编程

2024-08-10

高级编程(精选六篇)

高级编程 篇1

关键词:JOptionPane编程,Java编程,对话框编程

在图形界面的程序中,任何一个对话框通常都要包含一些按钮。Java中的JOptionPane类提供了对话框中按钮的创建、布局、事件处理等功能。因此,它可以有效地减少编程量,使我们的精力集中于其他组件的创建、布局、事件等问题。

1 JOptionPane的一般用法

JOptionPane的一般用法就是利用它的二十几个showXXXDialog()静态方法之一建立一个模式对话框,通常用于显示一个简单的字符串信息,使用一行或数行代码即可解决。无须显式地建立JOptionPane的实例。

除了显示简单的字符串信息外,还可以显示更加复杂的Swing组件。因为showxxxDialog()方法的message参数是Object类型或Object类型的数组,所以除了String类型外,它还可以是任何Swing组件。因此,只要把需要显示的组件先放到一个数组中,然后把这个数组传递给showXXXDialog()方法;或者把组件先放到一个JPanel对象内,然后把这个JPanel对象传递给showXXXDialog(),就能利用JOptionPane建立任何复杂的对话框。

在JOptionPane中options通常指的是按钮,当然也可以是其他Swing组件。message type主要指图标类型,也可以由icon参数代替缺省图标。

上述用法已经有很多资料介绍,本文不再详述,下面主要讨论JOptionPane的一些其他用法。

2 JOptionPane的高级用法

在一些比较复杂的应用场合,可能需要对JOptionPane内组件的动作做出反应和处理,比如按钮、编辑框等。

2.1 JOptionPane中按钮的处理

在JOptionPane的应用中,通常是由JOptionPane来创建JDialog的实例(用showxxxDialog()或createDialog()方法),当用户单击其内部的某个按钮后,JOptionPane即会自动关闭JDialog。

但是在某些应用中,程序员可能需要自己创建JDialog的实例,然后将JOptionPane的实例作为contentPane添加进去。这时JOptionPane无法获得JDialog实例的引用,所以它无法关闭对话框,因此应用程序必须负责响应按钮的动作,并关闭对话框。为此,应用程序应按如下步骤处理:

(1)实现一个PropertyChangeListener监听器,并把它登记到JOptionPane的实例。

(2)在该监听器的propertyChange()方法中捕捉按钮动作,并做出相应的反应和处理。

上述步骤中牵涉到一个概念叫做绑定的属性(bound property),即当一个javabean的属性发生变化时,如果必须通知另外某个bean,这个属性就称为该javabean的绑定的属性。因而绑定属性一旦发生变化,就会产生相应的事件,发送给它的PropertyChangeListener监听器,即该监听器的propertyChange()方法就会被调用。利用这个监听器就可以监视JOptionPane内按钮的动作。

JOptionPane大约有10个绑定的属性,这里感兴趣的是它的value属性,该属性的值是Object类型,它代表当前被用户选择的组件。如果使用了JOptionPane缺省的按钮(即options参数为null时),则按钮用JOptionPane定义的几个整数代表,value值就是一个Integer实例。如果是定制的按钮,value值就是options数组中相对应的元素(比如字符串或图标)。

一旦value的值发生变化,在监听器的propertyChange()方法内即可监测到,通过获取value的值,即可判断用户单击了哪个按钮。代码如下所示:

2.2 用户输入

(1)获取用户的输入

如果程序员向JOptionPane内添加了JTextField实例,则通过该实例即可获得用户的输入。

但是程序员也可以不添加JTextField实例,而利用JOptionPane的inputValue属性来获取用户输入,通过getInputValue()方法即可得到inputValue的值。inputValue也是JOptionPane的绑定属性,它必须与wantsInput属性结合起来使用,即必须先用JOptionPane的setWantsInput(true)方法把wantsInput设置为true才行(缺省值是false)。否则,通过getInputValue()方法得到的值永远都是uninitializedValue。

wantsInput设为true后,在JOptionPane里会自动增加一个编辑框,而且getInputValue()所得到的值一定是它添加的编辑框里的值。所以程序员就不再需要向JOptionPane里添加JTextField对象了。此时,在监听器的propertyChange()方法内用optionPane.getInputValue()即可获得用户输入的字符串。

因此,可以在optionPane实例创建之后,增加语句optionPane.setWantsInput(true),然后将optionPane.getInputValue()语句添加到2.1节代码的if(value==strEnter)语句中,但此时应将其中创建JTextField实例的语句删除,否则会出现两个编辑框。

(2)检验用户输入的合法性

如果需要在对话框关闭之前检验用户输入的合法性,一种方法就是不使用JOptionPane,但这时对话框里的按钮全部要由程序员来实现。

另一种方法就是使用JOptionPane,但一定要把JOptionPane按钮的动作像2.1节中那样接管过来,并且不要让JOptionPane能够关闭对话框,因此JDialog的实例应该由程序员创建。这时在2.1节代码的if(value==strEnter)语句中添加检验用户输入的代码,输入合法时关闭对话框,输入非法时则不要关闭对话框(即不要调用dialog.setVisible(false)),等待用户重新输入。

2.3 建立非模式对话框

如果需要一个非模态的对话框,则程序员应该自己建立JDialog的实例dialog,而不应该用JOptionPane的那几个静态方法来创建它,因为JOptionPane的方法创建的对话框都是模态的(包括createDialog()方法),并且我们无法获得这实例的引用来使它变为非模态。然后还要将JOptionPane实例化,将其添加到JDialog的实例中,最后调用JDialog的setVisible(true)方法使其显示出来。随后在任何需要关闭它的时候调用setVisible(false),即使在setVisible(true)的调用者内也可以,因为非模态对话框不会阻塞调用者。此时JDialog可以扩展也可以不扩展,只要能在适当的时候调用dialog的setVisible(false)关闭它就行了。

另外,也可以通过调用JDialog的setModalityType(Dialog.ModalityType.MODELESS)方法来将一个模态对话框改变为非模态。这样,可以用JOptionPane的createDialog()建立JDialog实例,由其返回值获得该实例的引用,然后通过该实例调用JDialog的setModalityType(Dialog.ModalityType.MODELESS)方法来改变为非模态,然后再调用JDialog的setVisible(true)显示出对话框。此时,JDialog的实例就不用应用程序自己建立了。由于createDialog()不是静态方法,所以仍然要把JOptionPane实例化。代码段如下:

这种方法是比较好的,JDialog的实例由JOptionPane建立,就不需要对按钮作出反应了。

3 小结

本文较为透彻地讨论了JOptionPane的几种特殊使用方法。对于经常使用JOptionPane进行对话框编程的同行,可能会有一定的参考作用。若需要源代码,请与编辑部或笔者联系。

参考文献

[1]Sun Microsystems,Inc.;JavaTM Platform,Standard Edition 6API Specification;http://java.sun.com/javase/6/docs/api/,2006.

[2]Sun Microsystems,Inc.;The Java Tutorials;http://java.sun.com/docs/books/tutorial,2007.

《网络高级编程》实验报告要求 篇2

二、报告首页为标准实验报告封面,有课程名称、实验名称、姓名、时间

三、报告内容为:1、2、3、4、实验目的 实验题目 实验过程步骤,详细说明实验编程的过程 实验程序的主要代码和注释说明(不需要完整的程

序!)。

5、6、实验中遇到的问题,怎么解决的。实验心得

四、报告的得分主要根据3、4、5五、三份实验报告装订在一起

浅析Outlook的高级编程技巧 篇3

VBA全称Visual Basic for Applications。 是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。VBA是VB语言的子集,只要掌握了VB语言就能自然地应用VBA。VBA是针对应用程序编程,确切的说是针对应用程序的对象模型编程。编程人员可以通过VBA语法,以及微软对外公布的对象模型操纵Outlook相关对象而实现邮件自动处理的功能。

本文通过邮件汇报每周考勤报告的案例,介绍VBA在Outlook中的高级应用。

1 Outlook的对象模型介绍

对象(Object)是微软办公套件的基本构成,每个Office的应用程序都有各自的对象。以Outlook为例,比如Application代表应用程序本身,Mail Item代表邮件本身, Attachment代表附件等对象。除了上述对象之外,可以通过对象浏览器窗体( 快捷键F2) 获取更详细信息。

2自动创建和发送邮件的思路

考虑如下场景:每周一的上午10点之前,项目负责人需要把上周的组员考勤信息以邮件的形式提供给客户,其中考勤信息文本文档是附件形式。按照一年52周,每份邮件的准备时间20分钟,公司有10个项目组计算的话,在邮件汇报考勤周报的工作上,每年就需要花费掉52 * 20 *10 = 10400分钟(约173小时)。如何把这部分膨大的时间开支投入到能产生效益的地方,是企业经营者必须思考的课题。

我们发现这样的工作汇报邮件有如下规律:1)汇报对象固定2)汇报周期固定3)正文内容基本类似4)需要一份附件。可以利用这样的特点,通过Outlook对象来实现自动编写和发送邮件,从而节省办公成本,提高工作效率。

3自动创建和发送邮件的实现

为了实现上文提出的思路,需要解决如下几个关键技术。

3.1创建邮件对象

首先我们需要创建Outlook对象(Outlook.Application)和邮件对象(Outlook. Mail Item)。这2个对象包含了邮件编写、 邮件发送、邮件接收等日常90% 的邮件操作。下面的代码创建了Outlook对象的实例Out App和邮件对象的实例Out Mail。

3.2选择收件联系人

考勤报告的汇报对象,一般会包括直接汇报对象(To),抄送对象(CC),以及密件抄送对象(BCC)。我们可以在代码中指定好这些对象的电子邮箱具体地址,如果存在多个联系人,中间用分号间隔。下面的代码定义了3个字符串,分别存放直接汇报对象、抄送对象、密件抄送对象的邮箱地址。

3.3邮件的标题

考勤报告的标题相对固定,一般形如“上周考勤报告(2014xxxx-2014xxxx)”。 其中的关键是如何动态地确定一周的日期范围。假设执行工具的那天是星期一,代码中通过减7得到上周一的日期(str Last Monday),减2得到上周五的日期(str Last Friday)。最后将这些字符串拼接到str Subject,形成邮件的标题。

3.4邮件的正文

报告的正文包括了问候语、正文、 结束语、邮件签名。因为考勤报告的主要内容是在附件上,所以邮件的正文是可以视为一成不变的。代码先把问候语、正文、结束语用str Content保存,邮件签名用str Sig String保存,最后将这些字符串拼接起来形成邮件的正文部分。

3.5追加附件并发送邮件

考勤报告的收件人,标题,正文等信息已经设置完毕,接下来要解决的就是在邮件中附上考勤报告。假设我们的考勤周报是存放在D:Weekly Report文件目录,文件名形如 “考勤_YYYYMMDD_ YYYYMMDD.txt”。通过Attachment对象, 可以轻松地在邮件中追加附件,下面的代码实现了追加附件并发送邮件。

通过上述3.1到3.5步骤,我们实现了自动编写和发送考勤周报的功能,改进后在编写和确认邮件内容上的时间不会超过5分钟。按照10个项目组折算到1年的话,至少可以节省75% 的工时。项目负责人可以把这部分时间投入到确认数据的完整性、合理性上。

4结束语

本文利用了VBA编程的Outlook对象和方法,实现了Outlook自动编写和发送邮件功能。实际表明,自动邮件功能性能稳定,执行速度快,结果正确可靠。灵活运用在实际办公中,对提高办公生产性有非常大的贡献。

摘要:使用Outlook收发邮件占据了日常工作很大的比重,其中不乏内容相似、需要定期汇报的邮件。如果这些邮件通过手工操作Outlook的菜单命令,日积月累花费的时间相当可观。这篇文章阐述了如何运用Outlook提供的对象和方法,设计自动创建和发送邮件的思路,并给出了部分实例。从实际运用的结果表明,比起传统的邮件编写和发送,运用VBA实现办公自动化可以显著提高了企业的生产性。

网络安全高级软件编程技术 篇4

者:吴功宜 主编,张建忠 等编著 出 版 社:清华大学出版社 出版时间:2010-4-1 目录

第1章 网络安全课程内容、编程训练要求与教学指导 1.1 网络安全技术的特点 1.2 网络安全形势的演变

1.3 网络安全技术研究的基本内容

1.4 网络安全技术领域自主培养人才的重要性 1.5 网络安全软件编程课题训练的基本内容与目的

1.5.1 基于DES加密的TCP聊天程序编程训练的基本内容与目的

1.5.2 基于RSA算法自动分配密钥的加密聊天程序编程训练的基本内容与目的 1.5.3 基于MD5算法的文件完整性校验程序编程训练的基本内容与目的 1.5.4 基于Raw Socket的Snifier设计与编程训练的基本内容与目的 1.5.5 基于OpenSSL的安全Web服务器设计与编程训练的基本内容与目的 1.5.6 网络端口扫描器设计与编程训练的基本内容与目的 1.5.7 网络诱骗系统设计与编程训练的基本内容与目的 1.5.8 入侵检测系统设计与编程训练的基本内容与目的

1.5.9 基于Netfilter和IPTables防火墙系统设计与编程训练的基本内容与目的 1.5.10 Linux内核网络协议栈加固编程训练的基本内容与目的

1.5.11 利用Sendmail收发和过滤邮件系统设计与编程训练的基本内容与目的 1.5.12 基于特征码的恶意代码检测系统的设计与编程训练的基本内容与目的 1.6 网络安全软件编程课题训练教学指导 第2章 Linux网络协议栈简介

第3章 基于DES加密的TCP聊天程序

第4章 基于RSA算法自动分配密钥的加密聊天程序 第5章 基于MD5算法的文件完整性校验程序 第6章 基于Raw Socket的网络嗅探器程序 第7章 基于OpenSSL的安全Web服务器程序 第8章 网络端口扫描器的设计与编程 第9章 网络诱骗系统设计与实现 第10章 入侵检测模型的设计与实现

第11章 基于Netfilter防火墙的设计与实现 第12章 Linux内核网络协议栈加固

第13章 利用Sendmail实现垃圾邮件过滤的软件编程 第14章 基于特征码的恶意代码检测系统的设计与实现 参考文献

计算机网络高级软件编程技术(配光盘)

者:吴功宜 等编著 出 版 社:清华大学出版社 出版时间:2008-1-1 目录

第一部分 计算机网络软件编程训练要求与教学指导

第1章 计算机网络课程内容、编程训练目的与教学指导

1.1 计算机网络课程特点与网络软件人才需求的形势

1.2 计算机网络技术的研究与发展

1.3 《计算机网络高级教程》的相关内容安排

1.3.11 网络安全与网络管理技术的研究

1.3.12 网络性能分析、网络模拟与开源工具包

1.4 网络软件编程课题训练目的与基本内容

1.4.1 基础类网络软件编程课题训练目的与基本内容

1.4.2 综合类网络软件编程课题训练目的与基本内容

1.4.3 提高类网络软件编程课题训练目的与基本内容

1.4.4 网络软件编程训练选题指导 第二部分 基础训练篇

第2章 Ethernet帧结构解析程序

第3章 使用ARP协议获取局域网内活动主机物理地址

第4章 计算校验和程序

第5章 IP包流量分析程序

第6章 Tracert程序

第7章 IPv6报文封装及地址生成程序

第8章 TCP和UDP数据包发送程序

第9章 基于C/S接的套接字程序设计

第10章 滑动窗口协议模拟程序

第11章 Web Server程序

第12章 无线局域网802.11协议CSMA/CA算法模拟程序

第13章 公钥密码实现程序 第三部分 综合训练篇

第14章 路由器基本功能实现程序

第15章 FTP协议实现程序

第16章 协议分析器程序

第17章 综合扫描器程序 第四部分 提高训练篇

第18章 基于SNMP协议的网络拓补发现程序

第19章 利用OpenSSL实现安全的Web Server程序

第20章 简单防火墙程序

第21章 防火墙扩展功能程序

第22章 NS-2简单有线网络模拟程序

第23章 使用NS-2模拟无线Ad hoc网络 附录A Winpcap简介与使用说明 附录B Windows Driver Module简介

高级编程 篇5

关键词:目标,项目,课程

《c++高级编程》课程是游戏软件开发教学中的一门专业核心能力培养课程。该课程的先修课有《c++编程基础》、《数据结构》等课程, 后续课有《DirectX图形开发》、《单机及网络游戏设计》等课程, 通过对本课程的学习, 学生们将从软件基础编程真正步入游戏软件编程。

一、课程开设原因

首先因为c++语言开发的程序具有执行高效等一些特性, 是目前网络游戏开发的首选语言, 根据《2008年中国游戏市场调查报告》显示:目前60%以上的网络游戏是由c++程序开发的。其次调查中华英才、智联招聘、中国人才热线等一些人才招聘网站可以看到, 50%以上游戏开发岗位均要求熟练掌握C++高级编程技术。

二、课程设计思路与培养目标

本课程的设计思路是:建立真实的工作过程, 设置典型工作任务, 充分利用企业的成熟项目、先进技术和专业经验等优势, 使学生的培养过程真正实现以学生为主体、工学结合。

游戏开发人才培养方向针对的核心岗位有两个:游戏编程和游戏测试。通过对岗位调查报告进行分析汇总, 这两个岗位对《C++高级编程》这门课程提出了以下培养要求:树立良好的游戏开发思想、熟练掌握和运用C++语言特性进行游戏软件开发, 同时培养良好的沟通能力、自觉的规范意识、独立分析问题解决问题的能力。

根据课程设计思路, 结合岗位调查报告分析, 《C++高级编程》的课程培养目标是:首先、通过公司化的任务设置和团队模式来培养学生良好的团队精神和独立分析、解决问题的能力, 使学生具备行业认可的通用能力。其次、通过对专业经典项目的设置, 培养学生良好的游戏编程思想, 并用工程技术将这种思想实现, 使学生掌握良好的专业核心能力。另外、适当安排一线企业游戏软件开发工程师参与综合项目实践的整个过程, 以公司的岗位要求全程指导学生综合项目实践, 针对性培养学生岗位专用能力。

三、课程设计实施

课程设计实施过程包括项目总体安排和教学过程具体实施两部分, 下面我们将对其分别进行详细阐述。

(一) 项目总体安排

技术项目的开发主要包括两个, 第一个是图书管理系统, 第二个是综合项目:连连看 (单机游戏) , 这两个项目的安排是由简单到复杂的递进关系。对于图书管理系统, 学生们非常熟悉, 因为每个人都去图书馆借过书, 对整个借书流程非常了解, 所以这个项目的开发相对简单、易操作。第二个项目连连看游戏开发难度加大, 因为游戏软件的开发和MIS系统类的软件开发还存在着很多的不同。它除了预定功能的实现以外, 还要求对用户 (也就是游戏玩家) 进行一个综合的考虑。

另外在每一个项目的实施过程中, 引入游戏开发企业的项目机制:明确任务、项目准备、分析需求、项目实施、项目测试和项目验收六个环节, 真实模拟企业项目实施流程。这几个环节, 将在下面的项目具体实施过程中进行详细的讲解。

(二) 教学具体实施过程 (以综合项目:连连看 (单机游戏) 为例)

1、项目确定

为什么要选择这个项目呢?原因是:第一, 这个游戏学生非常感兴趣、非常熟悉。第二, 通过专业课老师或公司技术人员的指导, 学生开发任务可以实现。第三, 有助于培养学生们良好的游戏开发思想。

2、项目准备

在这个环节采用任务实施主体多元化和实施内容多样化的形式。授课教师要对项目所用到的知识进行讲解和应用演示, 学生要组成团队、确定负责人, 负责人要完成团队分工并以团队的形式进行资料准备。这个环节主要锻炼学生们团队合作、分析解决问题的能力, 最终实现行业通用能力的培养目标。

3、分析需求

首先两个小组为一对, 分别扮演用户玩家与项目开发者角色, 站在不同角度共同去分析需求。另外, 邀请游戏软件公司的技术工程师给学生详细介绍公司是如何分析需求。同时, 借阅游戏软件开发企业成熟项目的一些开发文档, 供学生们参考学习。最后每个小组完成分析需求、功能分解。

4、项目实施

在此过程中主要强调项目实施注意事项, 比如, 程序开发标准化。因为学生在以前的程序开发中, 往往对许多细节不太在意。例如, 在命名一些项目名称, 功能模块的时候, 往往会使用123, abc这样的命名, 经常出现这种开发内容他人无法阅读的情况。这在公司中, 是被严令禁止的, 因为一个项目的开发, 往往都是团队, 最需要的就是沟通协作和资源共享。正像一句话说的“细节决定成败”, 所以要让学生树立一种良好游戏开发思想, 专业核心能力得到培养。这个环节的最后, 学生们除了要完成作品以外, 还要完成开发文档的撰写。

5、项目测试

众所周知, 一个游戏产品上线运营之前, 都要进行严格的内部测试和公开测试。这个环节我们也引入了项目教学, 学生们完成游戏开发以后, 要进行内部测试, 内部测试呢, 小组之间互为玩家, 进行测试和修改。内部测试以后, 每个小组邀请其他班级的同学, 来试玩本小组开发的游戏, 进行公开测试, 收集意见。结合这两个部分, 完成测试报告。特别建议, 在这个环节一定要使学生对游戏测试引起高度, 因为这直接关系着一个游戏项目今后运营的成败。

6、项目验收

项目验收采用综合评分制, 其中包括小组互评部分、特邀玩家测评部分、项目答辩部分 (评委由专业课老师和企业一线工程师共同组成) 、项目总结部分, 其中要特别说明的是项目总结部分, 项目总结是指项目完成后对项目进行角色换位思考、模拟再实现、完善测评的一个综合过程, 是技术熟练掌握的一个再提高过程。

四、课程设计问题思考

我们在进行项目教学, 同时企业也在进项目开发, 那么为什么项目在企业进行的那么顺利高效?为什么企业的员工在项目实施过程中那么积极努力?

针对这个问题, 我们通过走访企业开展调查, 总结得到的答案是:每个企业不仅有严格、完善的考核机制, 而且企业的内部竞争激励, 每一位员工在竞争压力面前, 时刻身怀危机意识, 只有努力拼搏、大胆创新才能在个人核心竞争力上具有优势。那么, 在校学生参与项目实践的动力是什么呢?我们老师做为项目的实施负责人不可能像企业的老板一样, 去扣工资, 炒鱿鱼, 我们靠什么调动学生的积极性呢?通过调查和讨论, 发现只有严考核、重奖励才能使学生充分融入项目教学全过程, 充分发挥参与项目实践的积极性。所以我们认为严格的课程考核和优厚的奖励措施是我们整个课程设计顺利执行的保证。

参考文献

[1]童寅山.独立游戏开发分析[J], 程序员:游戏创造, 2006 (10) .

[2]李桂芹.提高游戏开发人才培养水平的困难与条件[J], 经济研究导刊, 2009.

高级编程 篇6

PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP作为一门简洁、安全、高效和跨平台的Web开发语言,它和Linux、Apache、My SQL紧密结合,形成LAMP的开发黄金组合,不仅降低使用成本,还提升了开发速度。PHP应用程序的集成开发环境Komodo和Zend Studio,很好地实现了跨平台,满足最新的互动式网络开发的应用,PHP因而也成为Web技术最流行的语言之一。如:阿里巴巴、唯品会、YY语音等大型的互联网站都是使用PHP开发的。由于互联网本身的快速发展、不断创新的特点,决定了只有以最快开发速度和最低成本,才能取胜,PHP的必将成为未来Web开发领域的主流技术体系。

2 PHP就业与发展前景及其优势分析

2.1 PHP就业与发展前景

在TIOBE 2016年1月编程语言排行榜中,PHP排名第四。由于PHP开发效率高、安全可靠、可跨平台等自身的优点,一方面,越来越多企业的Web项目使用PHP技术开发,PHP岗位人员的需求也越来越大。据统计,目前全球5000万互联网网站中,有60%以上使用PHP技术;国内80%以上的动态网站都是使用PHP开发;Alexa TOP500中国网站排名,有394家使用了PHP技术,比例为78.8%。另一方面,由于国内PHP人才贮备不足、培训体系不健全,以及国内Web开发人员对PHP的价值认识不够,近几年各类企业发布的招聘人才信息中对PHP人才的需求超过60000名,但应聘累计人数大约只有6000名,人才缺口达到10:1。可见,PHP人才缺口是非常大的,学习并掌握好PHP,其就业前景是非常可观的。

2.2 PHP的优势

PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。用PHP做出的动态页面与其它编程语言相比,PHP是将程序嵌入到Html文档中去执行,执行效率比完全生成Html标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。最重要的是PHP可以用C、C++进行程序的扩展。

和ASP相比,PHP兼容性较好,ASP只能在WINDOWS机器上使用,PHP可以适用于各类操作系统的服务器,特别适合在互联网广泛运用的LINUX系统;和JSP相比其入门容易,语法简单,适合自学。

3 PHP高级编程的教学实施

3.1 PHP课程体系设置

大多数高职院校是这样开设PHP课程体系的:第一学期开设“网页设计”,第二学期开设“PHP程序基础”和“网络数据库”,第三学期开设“PHP高级编程”。“PHP程序基础”课程介绍PHP的基本语法;“网页设计”课程介绍HTML的基本元素和网站的静态页面设计;“网络数据库”课程介绍标准的SQL语句、数据库的基本知识以及数据库的日常维护操作。而“PHP高级编程”则是囊括了以上三门课程的内容,它是一门综合了网页设计、数据库,同时支持面向对象与过程,并可向下兼容的课程。

3.2 PHP高级编程的教学思路

教学内容结构要比教学内容本身更重要。在第一次课上可以用思维导图或关系图等将课程内容框架呈现给学生,这有利于学生更好地把握课程的整体架构。

“PHP高级编程”课程所涉及的内容如图1所示。左边的三个图形表示了“PHP高级编程”的先修课程。在“PHP高级编程”课程教学中会涉及到PHP基本语法、Html页面元素及分页技术、数据库设计、数据库连接以及查删改等编程实现。除此之外,还有面向对象特征、MVC设计模式等。

3.3 PHP高级编程课程教学实施过程

3.3.1 项目教学准备阶段

PHP高级编程教学按项目开发的步骤来展开,其效果比传统的教学模式能取得更好的效果。首先是项目准备阶段。教师可以通过一些小案例来给学生复习PHP基本语法,强化SQL操作数据库的命令。接着,介绍PHP开发环境(如:Appserv、Zend Studio或Net Beans)。搭建后开发环境,要让学生知道,开发的项目是可以部署到任意PHP服务器的(如:appserver或wampserver都可以),IDE也可以任意选用,它们是可以迁移、互相替换的。

3.3.2 项目教学实施阶段

项目教学实施阶段可分为五个步骤:

(1)分组准备阶段。按3-4人为一组,以组为单位进行网站项目开发,每个组的网站项目应各不相同。如果选题一样,最后作品风格和代码也不能雷同。

(2)寻求企业项目。以小组为单位,小组成员自己联系企业,确定网站项目选题。确定选题对学生来说是一次挑战,也是一个很好的锻炼。选题各不相同,可以是书店、蛋糕店、电脑销售店、学校协会、政府部门等等。

(3)确定小组内组员分工。组员分工可以采用模拟公司来进行,如项目经理、前端设计人员、数据库数据人员、后台开发人员等。每个岗位人员负责不一样的工作任务,如页面设计、CSS、数据库设计、后台编码等。在确定好组员分工后,小组要设计“需求分析调研问卷”对企业进行需求调研,“需求分析调研问卷”有助于帮助用户确认需求,可以通过面谈、电话或网上交流等形式方便地进行,以便更好地确定网站主题和网站风格。

(4)完成“网站系统架构图”、“网站功能模块划分(或系统用例图)”和“数据库及表结构设计”。每小组要把以上的资料提交并经教师审批后才能进行下一步的代码设计环节。因为根据软件项目开发原则,问题要越早发现越好,越到后期发现的问题所花费的人力物力越大。

数据库设计环节也是学生出现较多问题的环节,根据数据库设计规范,要求达到3NF(范式)。但这对学生来说有一定难度。在具体的数据库设计中,很多组都没有达到3NF,也就是没有消除数据冗余,这在进行记录的删除或插入时将会导致数据的不一致。对不合理的数据库,要求学生按照修改意见重新设计,再次提交,审核通过后才能进入下一阶段。一般来说,经过返工修改后基本都能达到3NF要求。

(5)编码阶段。将功能与UI(用户界面)相分离,这有利于系统的扩展和维护。PHP的MVC框架有很多,如Yii、Code Igniter、Think PHP等都是目前流行的框架,其原理都是MVC模式。利用MVC进行Web页面的开发,可以非常方便地编写Web程序。MVC架构图如图2所示。

MVC有三层架构,用户界面包也称为视图view,主要是PHP页面(如登录页面login.php、注册页面reg.php等);业务逻辑包是业务逻辑层,也称为controller,起中间桥梁作用,如当运行login.php时,由post方法将数据传到dologin.php页面(dologin.php文件里包含有登录验证逻辑),实现了登录。(注册原理相同)。在编码阶段学生容易出现的问题是:

(1)目录路径问题

如:header(location:../error.php?)指包含此文件或目录的上一级目录,跳到上一级目录中查找error.php;header(location:error.php?)指包含此文件或目录的同一级目录上查找error.php;header(location:./error.php?)表示根目录,返回根目录中,查找文件error.php。

(2)数据库访问层代码的整合与优化问题

在数据库访问层学生编写的代码是比较乱的。此时,通过将公共资源、公共函数抽取到一个单独的comm.php文件中;进行数据库服务器参数配置;将用户表操作程序函数进行整合,通过这三个步骤来完成数据访问层代码的整合与优化。

(3)没有加入会话session技术和error错误处理

学生开发的项目,为了方便实现,他们在用户登录后,并没有加入会话session,以及在登录出错时,没有设计error页面进行处理。在实际项目开发中,比如某个帐号登录了,在登出前是需要保存会话的。

4 项目评估阶段

项目评估由三方进行:小组间评价、组员内评价、教师评价。每组组员上台演示他们的最终作品,由教师对每个组员完成的部分提出问题,进行答辩。评价体系中详细标明具体的项目和得分,对有创新、创意的项目酌情加分。通过这种基于企业真实项目的教学,让学生一开始便有明确的目的性,能大大提高学生的学习热情和主观能动性。

5 结语

要掌握好一门语言,最好的方法是开发一些实际的项目。基于企业项目的教学方法不仅适合于PHP教学,同样适合于其它语言。教师引导学生循序渐进,培养学生自我分析问题、解决问题的能力。同时,基于企业项目的教学方法也符合岗位分工,有利于提高学生的团队合作意识,是一种效果显著的教学方法。

参考文献

[1](美)赞德斯彻.深入PHP:面向对象、模式与实践(第3版)[M].北京:人民邮电出版社,2011.

[2]杨宇.PHP典型模块与项目实战大全[M].北京:清华大学出版社,2012.

[3]赵鹤芹.设计动态网站的最佳方案:Apache+PHP+My SQL[J].计算机工程与设计,2007,28(4):933-934.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【高级编程】相关文章:

c高级编程知识点总结04-21

程序编程05-17

数控编程05-30

编程计算05-09

编程探讨05-26

调试编程05-28

实例编程07-10

编程应用08-09

结对编程08-22

编程处理08-27

上一篇:高阶段采场下一篇:低血压性慢性心力衰竭