前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇c语言开发范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
C++语言在计算机语言内使用频率最高,与其他语言相比,编程速度更快,在实际应用中具有更大优势。在应用C++语言来进行跨平台软件开发时,需要充分发挥其所具有的优势,对存在的缺陷进行规避,提高开发设计效果。本文基于跨平台软件开发要求,对C++语言应用要点进行了简单分析。
【关键词】C++ 跨平台软件 软件开发
应用C++语言来开发跨平台软件,即将应用程序代码处理成能够在已有平台下使用和执行的文件,但是对于其他平台,处理后的文件无法正常使用,尤其是Windoes与Unix平台,是C++语言的应用缺陷。为改善此缺陷,需要对源程序代码翻译成各平台下均可正常使用的文件,面对不同平台来选择编译方法,手动设计控制和管理编译条件,应用脚本文件和环境变量,以及第三方软件来对代码进行动态编译,降低跨平台软件开发难度。
1 跨平台软件开发环境要求
跨平台为现代软件开发的重要概念,可以降低对操作系统和硬件环境的依赖性,在实际开发应用程序中,想要实现跨平台软件的有效运行,就需要确定跨平台开发要求,支持各种不同平台,为发挥市场潜力提供动力。在构成开发环境时,需要软件编辑器、程序编译器与程序调试器作为支持,但是对于Sandbox软件来说,其可以同时实现代码编译和代码调试,并且内部各种平台需要有多种代码库和依赖库。程序开发过程中,源代码类型不同,在C++语言软件开发与编译时,需要对最终结果质量进行有效控制,产生最好代码,对错误捕捉与调试过程需要一定支持。跨平台软件开发即将抽象实现的过程,需要利用先进手段来对抽象以及相关设计进行研究,保证可以在不同平台上实现特殊编译。
2 C++语言跨平台软件开发设计要点
2.1 避免语言扩展特性
无论是选择应用那种语言进行编程,均需要选择应用较老的程序或者文件作为基础,因为其程序库内某些原有程序和公式具有规范性与标准性,完全区别于现在新程序库内杂乱无章的情况。在跨平台软件开发过程中,经常会出现各种故障,部分情况在获得支持后,依然会存在没有定义精神的事故。对于跨平台软件开发来说,有非常高的异常灵敏度,可以对新特性进行无限利用,这样就造成软件在排除异常情况时难度更大。这样在应用C++语言进行跨平台软件开发时,可以调用C++标准函数模型,提高已开发软件与产品的稳定性。
2.2 实现动态处理
就C++语言跨平台软件开发来说,需要有多种环境运行可移植代码库进行编写。在实际软件开发过程中,要对常见问题进行有效避免,且处理一个平台在另一个平台没有特性这一问题,实现动态性处理。
2.3 脚本文件管理
在应用C++语言开发跨平台软件时,需要做好脚本文件的基本管理,在保证所编写代程序代码简单易懂前提下,降低其复杂性,达到简洁目的,完成合理软件结构的构建。会与平台相关文件以及数据库进行有效隔离,在软件项目开发阶段,通过脚本文件来对进行一定程度上的编译,对其在各个部位进行合理分配。在使用应用程序时,需要将配置文件内相关配置选项调配出来,读取内部程序,然后在跨平台软件开发时,利用页数手段来将平台相关关联文件进行全部分隔。
2.4 串行化使用
就C++语言开发跨平台软件时,需要做好跨平台数据存储安全性与可靠性研究和管理,消除项目开发过程中存在的缺陷。C++语言在开发跨平台软件时,可以利用软件fread指令,来综合处理各编译器与单一目标平台,并在实际跨平台操作环境中,通过实际方法来对数据进行不同程度的存储与加载,实现平立性的有效保障。其中,在利用跨平台对数据在目标文件中的存储时,不同平台间具有一定差异性,并且在实际应用中,也会产生多种结果特征。
2.5 编译与测
C++语言跨平台软件开发中的编译与测试,需要保证存在关联的代码在长时间使用中,可以在其他平台中进行有效检测,并利用不同平台来完成测试,确定软件项目是否存在bug,并及时调整处理,保证软件可以正常运行。
2.6 实现抽象
实现抽象对跨平台应用程序中被移植过程中存在一定有效性,应用此特点可以实现对软件的单独性开发,确定具有单独性与简洁性的程序,利用多种函数进行开发设计。C++语言则是应用封装方法,来实现抽象过程,且要根据实际情况进行分析,如果存在特殊情况,还需要通过其他程序来进行调用,并做好功能基础明明。在实现抽象阶段,如果该程序以及公式使用后,需要对该功能进行直接调用,确保其功能可以有效实现。
3 结束语
基于C++语言来进行跨平台软件开发,需要基于C++语言特点,确定跨平台软件开发要求与要点,做好每个环节控制,保证项目开发过程的规范性与有效性,实现软件在不同平台的有效执行。
参考文献
1、问题分析与算法设计。算法是一组明确的解决问题的步骤,它产生的结果并可在有限时间内终止。可以用多种方式来描述算法包括自然语言,伪代码或流程图;
2、编辑程序。当确定了解决问题的步骤后,就可以开始编写程序了。一般是在编程的环境中,应用其中的编辑功能直接来编写程序,生成源程序(对C语言来说,一般源程序的后缀为c);
3、编译。当编辑好程序后,下一步就是应用该语言程序的编译程序对其进行编译,以生成二进制代码表示的目标程序(一个二进制文件,文件后缀为obj)。该目标程序需要与编程环境提供的库函数进行连接,形成可执行的程序(文件后缀为exe)。当然,如果程序有语法错误,编译程序就会指出该语法错误所在,而不生成二进制代码;
微型计算机原理与接口技术是电子信息类专业的一门专业必修课程,对掌握微机的工作原理和接口应用尤其重要。本文以8253 为例,主要结合C 语言与汇编语言进行计算机程序编写设计中各自的特征优势,从C语言角度和汇编角度探讨接口芯片的编程。
【关键词】
微机原理;C 语言;汇编语言;接口
0 引言
微型计算机原理与接口技术是电子信息类专业的一门专业必修课程,对掌握微机的工作原理和接口应用尤其重要。本文以8253 为例,主要结合C 语言与汇编语言进行计算机程序编写设计中各自的特征优势,从C语言角度和汇编角度探讨接口芯片的编程。
1 定时/计数器8253芯片知识点描述
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
1.1 速率波发生器
进入这种工作方式,输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,保持为高电平不变;待计数值减到“1”和“0”之间,将输出宽度为一个周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,将输出一定频率的负脉冲序列,其脉冲宽度固定为一个周期,重复周期为周期的倍。时序波形如图1所示。
1.2 方波发生器
任一通道工作在这一工作方式时,只在计数值为偶数,则可输出重复周期为、占空比为1∶1的方波。进入工作方式时,输出低电平,装入计数值后,立即跳变为高电平。如果当前GATE为高电平,则立即开始减“1”计数,保持为高电平,若为偶数,则当计数值减
到时,跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值,实现循环计数。这时端输出的周期为n×周期,占空比为1∶1的方波序列;若为奇数,则端输出周期为周
期,占空比为:的近似方波
序列。时序波形如图2所示。
1.3 使用C语言的优势
语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。
1.4 使用汇编语言的优势
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。
总之,对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。
2 实例:C 语言方式下和汇编语言下控制8253
8253控制端口地址为303H;计数器0地址为300H;计数器1地址为301H;计数器2地址为302H。
用C语言程序实现,则程序段为:
outportb(0x303,0x56) ;//56H,选择计数器1,低8位读写,方式3(方波发生器),二进制计数。
outportb(0x301,8) ;// 向计数器1 写入低8位初值8H。
outportb(0x303,0x94) ;// 向8253 控制端口写控制字94H。选择计数器2,低8位后读写,方式2(分频脉冲发生器),二进制计数。
outportb(0x302,6) ;// 向计数器2 写入低八位初值6H。
如果用汇编语言实现,则程序段为:
MOV DX,303H
MOV AL,56H
OUT DX,AL
MOV DX,301H
MOV AL,8
OUT DX,AL
MOV DX,303H
MOV AL,94H
OUT DX,AL
MOV DX,302H
MOV AL,6
OUT DX,AL
从中可以直观地可以看出,如果使用汇编语言对8253 写入控制字MOV DX,303H、MOV AL,36H和OUT DX,AL三条语句完成,而且需要3个寄存器,但由于CPU内部资源中寄存器有限,它属于最珍贵的资源寄,使用汇编容易造成寄存器资源紧张;而用C 语言只需调用outport函数,C语言的代码长度短了很多,并且也方便初学者掌握,使初学者在嵌入式软件开发上产生更多的兴趣,为大型嵌入式软件的开发奠定坚实的基础。
3 结束语
根据本文比较C语言和汇编语言对8253 的开发,会让更多的初学者明白C语言作为一种面向结构的语言对嵌入式系统开发的优胜性,希望越来越多的初学者在微机原理和接口的实验课上,采用C 语言进行开发,削减代码量,提高效率。今后使用中也可以使用C 语言与汇编语言进行混合编程开发设计,不仅具有C 语言与汇编语言编程设计中的优势特征,并且对于两种语言编程设计中的局限性问题,也有相互的补充与改进,具有较好的灵活性,并且编程开发设计速度快、效率高,有很大的编程开发设计应用优势。
【参考文献】
[1]冯博琴.微型计算机原理与接口技术(第3版).北京:清华大学出版社,2011.
[2]沈美明.IBM-PC汇编语言程序设计(第2版).北京:清华大学出版社.2013
[3]谭浩强.C 程序设计(第三版).北京:清华大学出版社,2005.
关键词:教务管理;工作流;Excel AddIn;SendKeys
一、背景概述
大学教学管理日常工作量大,涉及人员和事务复杂。以考务组织为例,对学期末的多门课程排考后,教学秘书需要根据时间节点,查看开课课表、教务通知等多个单独文档或表格,在不同管理系统中切换录入和修改数据,并及时通知相关主考和监考教师,提醒信息,手工操作工作效率低,容易出现错误。
目前教务管理、办公OA和电子邮件等信息系统中普遍存在“信息孤岛”现象 [1,2 ],各种系统中的数据只能手工输入和迁移。本文根据实际工作需求,以日常使用最为频繁的Excel软件为基础,应用工作流模式和C#语言开发加载项(AddIn)插件,实现一键发送内容到电子邮件、办公OA、短信和微信界面。
二、软件架构
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现” [3 ]。经分析调研,大学教务管理工作一般都有严格的时间节点,例如监考组织,涉及确认考试时间地点、提前通知主考教师和学生时间、提前通知监考教师时间等,因此,拟开发“教务助手”辅助应用程序,以时间轴为主线将各项工作从不同的系统中导出,整合到日常办公平台中,其架构如图1:
三、主要实现方法
在微软Visual 2010平台上,新建一个Excel 2010外接程序(Excel AddIn) [4 ],这是一种托管代码外接程序,用户安装后的软件后,会自动在Excel软件上增加加载项菜单 [5 ],在使用Excel软件过程中随时点击菜单项,即可执行相应功能,调取工作簿内容,并启动其他应用程序,实现协同工作。
本软件命名为“教务助手”,主要功能有“发OA”“发邮件”“发短信”等3种,并且可以在同一架构下自由扩展。用户在使用Excel时,可以随时点击菜单栏的“加载项”,调出“教务助手”的子菜单(图2)。
1.在Excel中创建菜单并响应用户操作的核心代码(有删减):
private void ThisAddIn_Startup(object sender, System.EventArgs e){menuCreateMail = commandBarPopupTmp.Controls.Add(Office.MsoControlType.msoControlButton, Type.Missing, Type.Missing, 1, true); menuCreateMail.Caption = “发OA”;}
2.查找并控制其它Windows窗体的核心代码(有删减):
【DllImport(“user32.dll”, EntryPoint = “FindWindow”, SetLastError = true)】
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hwndCalc = FindWindow(null, “工作任务 ―― 新建任务―― 网页对话框”);
3.发送字符串和自动填充表单的核心代码(有删减):
if (hwndCalc != IntPtr.Zero){ SetForegroundWindow(hwndCalc);
Clipboard.SetText(“监考通知”); SendKeys.SendWait(“^v”);SendKeys.SendWait(“{Tab}”); }
四、应用效果
在安装该软件后,教务工作人员如果需要批量通知几十名监考教师,只须点击相应菜单,软件即可自动逐行复制Excel工作簿中的单元格文本,自动匹配人员,获取手机号码、Email地址或OA用户名,使用SendKeys功能,发送文本信息到相关程序或网页,填写表单 [6 ],经操作人员手工确认或修改后,执行发送功能,实现半自动的信息批量发送,可大幅节省工作量,并防止手工录入错误。图2显示了软件读取数据,控制用友致远A8 办公系统发送监考通知的过程。
五、总结
教务管理辅助应用程序优化了传统教学管理中的工作流程,以时间轴为基础,对涉及到的多个信息系统中的人员、任务和数据进行整合,实现多种渠道的信息公开和传达,提升了教务工作效率,减少了教学事故发生。
参考文献:
[1]张珍义.高校数字化校园建设中“信息孤岛”现象的探讨[J].中国教育信息化,2008(13).
[2]涂振宇.数字化校园建设存在的问题与对策研究[J].信息与电脑(理论版),2014(4).
[3]曹风华. 基于工作流技术的学生评语生成系统的设计与实现[J]. 现代计算机(专业版),2011(10).
[4]苑青,孔捷,冷静. 利用VSTO和.NET的Office开发技术[J]. 电脑编程技巧与维护,2009(6).
关键词:PHP 开发框架 MVC模式
1 概述
互联网迅速发展对Web应用程序的开发效率、可靠性、可维护性和可扩展性提出了更高的要求。PHP具有直观、易于上手,运行速度快,跨平台,开放源代码等优点[1][2],已经成为最重要的Web开发语言之一[3]。但是,现有的PHP开发模式将数据访问代码、逻辑处理代码和表示代码相互混合,无法满足Web应用快速发展的需要。
MVC设计模式对于生成有组织的模块化应用程序,是一种被证实了的有效的方法[4]。MVC设计模式可以将应用程序的数据(Model)、视图(View)和控制(Controller)相互分离,使得表现层能够从逻辑事务层分离出来,实现应用程序的松散的耦合,从而提高应用程序的开发效率、可靠性、可维护性和可扩展性。
2 框架的结构设计
2.1 框架体系结构
本框架采用五层B/S架构的MVC模式,web层对应视图和控制器,业务逻辑层和数据持久层由模型实现。模型(model)包括业务逻辑层和数据持久层,可分离业务逻辑和数据访问逻辑,并对业务逻辑层隐藏了数据库平台,使得各层功能简洁专一。
控制器(controller)包括前端控制器和动作控制器两部分,前端控制器是框架的唯一入口,用来决定下一个动作的实施,而动作控制器处理完整的请求并调用相应的模型生成可供view使用的数据。
视图(view)包括显示逻辑和模板两部分,负责解析显示模板生成特定的用户视图。
2.2 框架运作流程
客户端向服务器发出请求,服务器端使用唯一入口――前端控制器对用户的request进行Mapping,找到与用户request对应的action,动作控制器分析请求内容并调用适当的模型进行业务逻辑处理和数据访问,把处理结果发送到视图层,由视图层加载视图模板,处理显示逻辑并经前端控制器响应给用户。
3 框架的实现
3.1 视图技术
视图的关键是使用模板技术分离PHP代码和HTML代码[5]。在模板文件中将需要动态显示的内容定义成某种形式的变量,视图层处理完显示逻辑后将数据发送给模板解析引擎,替换模板变量生成最终的用户视图。
当Web服务器接到URL请求后,首先判断是否是第一次请求该URL。如果是,调用模板接口,交由模板解析引擎编译该URL所需的模板和代码文件,生成用户视图并输出;否则直接定位到已经存在的用户视图上。这样除了第一次编译成本比较高之外,其他的访问请求则省去了大量的重新解析和读取时间。框架还具有页面缓存技术[6]可以将页面生成静态缓存,使程序运行速度和效率得到更大的提高。
3.2 控制器设计
控制器负责接受用户请求、更新模型,以及选择合适的视图返回给用户。控制器有助于将模型层和视图层分离,从而在同一个模型的基础上开发多种类型的视图。
框架将控制器设计为两部分,前端控制器和动作控制器。前端控制器主要负责分析用户请求,并将用户请求转发给适当的动作控制器处理。动作控制器主要负责调用适当的模型生成供视图使用的数据。
前端控制器index.php是框架的唯一入口,通过配置Apache服务器的rewrite引擎可以确保所有的页面请求均传到前端控制器,从而实现框架的集中控制。因此,除分析转发用户请求外,前端控制器还可以很方便地实现认证(authorization)、日志(logging)和数据验证(validation)等功能。其关键代码如下所示:
…
$action = $bd->make('ev',$bd)->get(HH);// 获取页面参数
if(!$action)$action = 'index';// 默认控制器
if(file_exists(CA.$dir.$action.'.action.php')) {//检查控制器是否存在
if($action != 'index')include CA.$dir.$action.'.action.php';// 加载动作控制器
return new $action($bd);// 返回动作控制器实例
}
…
动作控制器是客户请求和业务逻辑处理之间的一个适配器,将请求与业务逻辑分开。动作控制器由一组*.action.php文件实现,所有动作控制器均派生自抽象类ActionControllerBase,其抽象方法display()用于向视图传送数据。
Abstract class ActionControllerBase{
public $bd;
public $lang;
public function __construct(&$bd){
//…
}
// …
Abstract function display();
}
3.3 数据操作
PHP支持的数据库极其广泛,然而PHP提供的数据库接口支持不统一[7]。框架采用PDO(PHP Data Object)作为数据库操作抽象层的基础,以增强程序代码的可移植性。PDO旨在为多数关系数据库API中的通用功能提供一致的API。这大大简化了PHP程序(通过封装差别,在一个通用的API下支持不同的数据库)的开发。
框架还对常用数据库操作如SELECT,INSERT,UPDATE,DELETE等进行了简单封装,使得数据库操作进一步简单化,开发者可以无需考虑SQL语句的具体的语法,而仅仅需要参考自己需要操作的数据库表,以及所需要操作的数据库的字段。这样开发者可以将更多的精力放在考虑业务逻辑上,而不是考虑SQL的语法上。同时这样的封装还可以减少程序书写中出错的概率,也减少了调试中出错的几率。
4 总结
FDF框架是一种基于MVC模式的Web应用开发框架,它完成了用户界面和业务逻辑的分离,为系统开发提供了基本的实现方法和清晰的设计框架。与传统的开发方式相比,使用FDF框架开发的Web应用系统可以将模块功能限制在局部范围内,降低系统的耦合度,提高系统性能、可维护性和代码的复用率,从而提高Web系统的开发效率。
参考文献:
[1]Bisson S.,An introduction to PHP[J].Application Devel
opment Advisor,May 2002,6(4):38~41.
[2]Gamrat B.,PHP and preprocessed Web pages[J].Dr.Dobb’S Journal,January 2006,31(1):46~48.
[3]中国互联网络信息中心.第25次互联网络发展状况统计报告[R].
[4]Hofmeister C.,Nord R.L.,Soni D.,Applied Software Architecture[M].Addison Wesley,2000.
[5]李涤.基于PHP的中文模板技术的研究[D].重庆大学,2004.