




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE24程序设计基本结构分析与演示目录第1章 引言 6第2章 C语言编程简介 72.1C语言 72.2C语言编程标准 72.3C语言编程的工作模式 8第三章C语言程序总体设计 113.1程序设计架构 113.2总体设计思路 13第四章程序设计结构分析及相关技术 154.1开发环境 154.2C语言特点 164.3FLASH简介 164.3.1概述 164.3.2配置 174.4程序设计结构框架简介 184.4.1顺序结构 184.4.2重要函数的设计 184.4.3循环结构 19第5章各模块功能具体演示 205.1各模块功能介绍 205.2系统框架 205.3窗口模块 22第6章结束语 23主要参考文献 24引言20世纪80年代初期,人们开始进行新程序设计方法探索,一种新的程序设计方法面向对象程序设计方法因此而产生。随着计算机网络急速的发展和生活水平不断,人们对计算机的顶层设计要求更高,说到计算机顶层设计我们首先想到的就是计算机语言。计算机语言有很多种,其中应用最广泛的就是C语言C语言是一种结构化程序设计语言,它主要提出了三种基本控制结构,分别是顺序结构、选择结构和循环结构三种基本结构。因为这三种基本结构可以解决任何编程方面复杂的问题,和利用这三种基本结构编写出的程序清晰可读又便于理解。在构造算法时,也仅以这三种基本结构作为基本单元,因为它结构清晰,易于验证和纠错。所以人们都提倡使用这3种结构编程写程序,并称这样的程序设计结构为结构化的程序设计结构。1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或者复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组成。所以,这三种结构就被称为程序设计的三种基本结构。采用结构化程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。通过对结构化程序设计案例的分析,掌握从系统结构到各个模块、各个函数的设计和实现手段,并进一步规范编程方法,使程序设计者有章可循,可提高编程效率。实际软件产品的开发中,更多的追求软件的可读性和可修改性,所以很多从事软件开发的工作者都会利用这三种基本结构编程中的可读性、可理解性、可靠性和可修改性,并且易于查找错误和维护的特点,使用它来编程开发软件。所以学习软件编程的学习者来说学习程序设计结构是重中之重。C语言编程简介2.1C语言C语言对于信息技术的发展具有十分重要的作用和价值。C语言是符合现代编程风格的一种高级程序设计语言,适用于模块化程序设计,层次十分清晰,易于调试和维护。由于C语言编程简洁、紧凑、可移植性好和功能强大等特点,得到了广泛的应用,它成为了目前软件开发的最常用的软件之一。我国的大多数计算机等级考试常采用C语言作为程序设计工具。C语言编写比较灵活,但语法限制不严[1],对初学者来说容易出错,尤其是指针问题。如指针运用恰当,编出的程序不但精练、可读性强,而且运行效率高;反之,程序变得琐碎、效率差,在调试过程中,指针引起的问题最多也最不容易解决。文中罗列了编写C语言中出现的几个常见问题,并将它们进行分析和说明,以便编程者在碰到同类问题时有所借鉴。C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,又是一个实用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。C语言虽然具备了很多的优点,然而也存在着一些不足和弱点。如运算优先级太多,不便于记忆;类型检验太弱,虽然转换比较方便,但同时也增加了程序的不安全因素[5]。并且C语言还存在着三个大的不安全因素:缓冲区溢出,C语言的库函数,系统调用。这些不安全因素的存在必然会使得利用C语言编写的程序或系统存在一定的安全漏洞。如果我们不能深入的对这些不安全因素进行分析与了解,那我们的程序就很容易处于不安全的境地,甚至可能导致严重的后果。2.2C语言编程标准1.灵活运用指针在C语言编程的时候,指针是一种特殊类型的变量,它能够帮助程序员有效的表达和解决程序设计过程中遇到的复杂问题,熟练掌握指针是必要的。指针具有三要素:指针名以及指针类型和值。在编程时,指针和一般变量名相同,但是在类型以及值上具有区别,另外,指针不仅能够被用于表示数组,还可以被作为函数的参数返回值。2.C语言的特有函数在C语言编程的时候,有时需要用到一些特有函数。函数都具有一定的功能,同时函数名也反映了该函数的功能。在进行函数定义时,程序员需要把函数的名字、返回值类型以及参数名等各项都进行定义。另外,因为库函数是由C编译系统提供的,这些函数均是系统首先定义好的,在程序调用的时候,程序员只需利用“#INCLUDE指令”把与之相关的头文件包含到所用文件中即可[[4]。例如,在程序运行的过程中,如果用到了SQRT函数,则为了保证程序运行下去,头文件必须含有#INCLUDE"STRING.H"。3.算法技巧在程序设计的过程中,算法是程序的灵魂,因此,掌握一定的算法技巧是必不可少的。通常情况下,算法不仅可以用自然语言表示,有的时候也利用流程图表示。需要注意的是,利用流程图表示算法时,程序设计员必须熟练掌握常用的流程图符号。且“数学乃是计算机之母”,牢固的数学知识同样能够提升编程效率。4.位运算以及文件知识相比其他计算机高级语言的运算方法,位运算作为C语言的重要特色,具有独特性和唯一性。位运算是以二进制位为对象,然后结合相关程序要求进行各种运算。文件包含有数据文件以及程序文件,是计算机不可缺少的,程序设计员在进行编程时,需要把所写的程序存储的文件之中,这样可以便于程序员查找数据,提升查找效率。2.3C语言编程的工作模式在计算机软件编程试验之中,利用C语言进行循环冗余校验码的实验程序设计流程如下:程序的函数名称:POLYDIV;函数原型位置:CRC.H;数据库:CRC.LIB;然后程序员在利用C语言进行函数计算设计时,程序会自动产生一个余数,并把其存放在REMAINDER文件之中。另外,程序的头文件为SIODEFH在编写C语言代码时,在系统调用方面也特别的需要注意,一般有两方面的安全问题,在写程序时必须考虑:(1)确保自己建立的任何临时文件不含有机密数据,如果有机密数据,设置临时文件仅对自己可读/写,确保建立临时文件的目录仅对自己可写。(2)确保自己要运行的任何命令(通过SYSTEM(),POPEN(),EXECLP(),EXECVP()运行的命令)的确是自己要运行的命令,而不是其它什么命令,尤其是自己的程序为SUID或SGID许可时要小心。第一方面比较简单,在程序开始前调用UMASK(077),若要使文件对其他人可读,可再调用CHMOD(),也可用下述语名建立一个"不可见"的临时文件。CREAT("/TMP/XXX",0);FILE=OPEN("/TMP/XXX",O_RDWR);UNLINK("/TMP/XXX");文件/TMP/XXX建立后,打开,然后断开链,但是分配给该文件的存储器并未删除,直到最终指向该文件的文件通道被关闭时才被删除。打开该文件的进程和它的任何子进程都可存取这个临时文件,而其它进程不能存取该文件,因为它在/TMP中的目录项已被UNLINK()删除。第二方面比较复杂而微妙,由于SYSTEM(),POPEN(),EXECLP(),EXECVP()执行时,若不给出执行命令的全路径,就能"骗"用户的程序去执行不同的命令。因为系统子程序是根据PATH变量确定哪种顺序、搜索哪些目录,以寻找指定的命令,这称为SUID陷阱。最安全的办法是在调用SYSTEM()前将有效UID改变成实际UID,另一种比较好的方法是以全路径名命令作为参数EXECL(),EXECV(),EXECLE(),EXECVE()都要求全路径名作为参数。有关SUID陷阱的另一方式是在程序中设置PATH,由于SYSTEM()和POPEN()都启动SHELL,故可使用SHELL句法.如:SYSTEM("PATH=/BIN:/USR/BINCD");这样允许用户运行系统命令而不必知道要执行的命令在哪个目录中,但这种方法不能用于EXECLP(),EXECVP()中,因为它们不能启动SHELL执行调用序列传递的命令字符串。关于SHELL解释传递给SYSTEM()和POPEN()的命令行的方式,还有其它的问题:*SHELL使用IFSSHELL变量中的字符,将命令行分解成单词(通常这个SHELL变量中是空格,TAB,换行),如IFS中是/,字符串/BIN/ED被解释成单词BIN,接下来是单词ED,从而引起命令行的曲解。SUID/SGID程序指导准则(1)不要写SUID/SGID程序,大多数时候无此必要(2)设置SGID许可,不要设置SUID许可.应独自建立一个新的小组(3)不要用EXEC()执行任何程序.记住EXEC()也被SYSTEM()和POPEN()调用.若要调用EXEC()(或SYSTEM(),POPEN()),应事先用SETGID(GETGID())将有效GID置加实际GID;若不能用SETGID(),则调用SYSTEM()或POPEN()时,应设置IFS:POPEN("IFS=\T\N;EXPORTIFS;/BIN/LS","R");.使用要执行的命令的全路径名;.若不能使用全路径名,则应在命令前先设置PATH:POPEN("IFS=\T\N;EXPORTIFS;PATH=/BIN:/USR/BIN;/BIN/LS","R");.不要将用户规定的参数传给SYSTEM()或POPEN();若无法避免则应检查变元字符串中是否有特殊的SHELL字符;.若用户有个大程序,调用EXEC()执行许多其它程序,这种情况下不要将大程序设置为SGID许可。可以写一个(或多个)更小,更简单的SGID程序执行必须具有SGID许可的任务,然后由大程序执行这些小SGID程序;(4)若用户必须使用SUID而不是SGID,以相同的顺序记住(2),(3)项内容,并相应调整,不要设置ROOT的SUID许可,选一个其它户头;(5)若用户想给予其他人执行自己的SHELL程序的许可,但又不想让他们能读该程序,可将程序设置为仅执行许可,并只能通过自己的SHELL程序来运行。第三章C语言程序总体设计3.1程序设计架构以用户登陆模块程序设计为例:用户登陆模块执行流程图:图一:用户登陆模块执行流程图用户要登录该网站时,输入用户名和密码后,选择登录的身份(管理员登录或学生登录),按登录安钮后defaulf.aspx执行文件,把数据传输到数据库guanliyuan表或student表中,核对用户名与密码,如果数据库中没有相对应的用户名和密码,则输出此用户名不存在,或者输出密码错误。如果用户没有输入用户名和密码,则输出用户名和密码不能为空。如果输入正确的用户名和密码则成功登录。选择管理员或学生的身份登录分别登录到管理员配置界面或学生配置界面。执行文件分别为tianjia.aspx.kaoshi.axpx。登陆界面如下图:图二:网站登录界面这里特别要强调的一点是:本系统管理员和学生合用同一个登录界面,不同的是分别按下管理员登录和学生登录按钮后调用不同的表信息,分别为student表和guanliyuan表。功能实现的代码如下:publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidButton1_Click(objectsender,EventArgse){//数据库连接stringconnsql=System.Configuration.ConfigurationManager.AppSettings["EXAMConnectionString"];SqlConnectionconn=newSqlConnection(connsql);conn.Open();stringstrSQL="selectcount(*)fromstudentwherexuehao='"+TextBox1.Text+"'andmima='"+TextBox2.Text+"'";SqlCommandcom=newSqlCommand(strSQL,conn);intcount1=Convert.ToInt32(com.ExecuteScalar());if(count1>0){Page.Response.Redirect("kaoshi.aspx");Session["xuehao"]=TextBox1.Text;}else{Response.Write("<Scriptlanguage=javascript>alert('用户名或密码有误');location='javascript:history.go(-1)'</script>");}conn.Close();}protectedvoidButton2_Click(objectsender,EventArgse){stringconnsql=System.Configuration.ConfigurationManager.AppSettings["EXAMConnectionString"];SqlConnectionconn=newSqlConnection(connsql);conn.Open();stringstrSQL="selectcount(*)fromguanliyuanwherezhanghao='"+TextBox1.Text+"'andmima='"+TextBox2.Text+"'";SqlCommandcom=newSqlCommand(strSQL,conn);intcount1=Convert.ToInt32(com.ExecuteScalar());if(count1>0){Page.Response.Redirect("tianjia.aspx");Session["zhanghao"]=TextBox1.Text;}else{Response.Write("<Scriptlanguage=javascript>alert('用户名或密码有误');location='javascript:history.go(-1)'</script>");}conn.Close();}}管理员登录后,默认就到了试题添加页面,在该模块中实现管理员根据需要添加不同类型的试题。有选择题、判断题和填空题3个题型。在该模块设计中主要运用了一个DropDownList和3个Panel控件,用不同题型的不同value值来控制3个Panel的显示或不显示情况。3.2总体设计思路针对一般练习网站的需求,设计如下所示的数据项和数据结构:1、用户信息,包括两类用户,学生与管理员:用户名的编号、用户名、用户的密码,区分学生与管理员。2、题库信息,本试题库有单项选择题、判断题和填空题等题型,其中单项选择题、判断题共用一张shiti表,用leixing来区分。填空题独立存储在tiankongti表中。本系统建立了一个稳定的后台数据库系统,通过该数据库管理整个考试系统所需的信息(用户信息、试题信息、考试信息等)。C语言和汇编语言混合的程序设计案例分析:1.混合的软件编程方法随着信息技术的不断发展和应用,在软件开发过程中,大多时候需要使用两种语言混合编程,有效地提高了程序的开发效率。通常情况下,混合的软件编程方法有两种,具体如下:把汇编语句嵌入C语言程序中。例如,把ASM汇编语句嵌入到C语言源程序中:ASMMOVAX,5/*把5送到AX寄存器*/当把一组汇编语句嵌入到C语言源程序中,则需要利用大括号把嵌入程序给括起来:在本次的实验之中,在进行程序嵌入时,有其固定的格式,需要在嵌入的各行代码之前加“ASM”关键字,也可以直接在ASM代码块中放入汇编语句。但是程序设计者在进行嵌入时,一定要注意满足以下条件:汇编语言指令代码中关键字ASM必不可少,且要放在指令代码之前;嵌入汇编语言指令代码能够和正常C语言程序混合,但是C语言的分隔符“;”必不可少;嵌入汇编语言时C语言的注释分界符必不可少,分别是“/*,,和“*/,,首先编写C语言程序以及汇编程序,然后独立编译目标代码模块,最终进行链接。首先,在进行混合编程时,C语言程序能够调用汇编语言的各种子程序以及其定义的变量,同时,C语言编写的函数以及定义的变量等也可以被汇编语言调用。而且混合编程的过程中,一个任务往往是由若干个功能模块组成,且不同的功能模块均是利用合适的语言进行独立编程,且以函数的形式存在。因此,程序设计者要根据每一模块的特点选择相应的语言和语言编程系统进行独立编程,并形成目标文件,继而连接目标文件,形成完整的可执行文件。在混合编程的过程中,设计者需要注意五个问题:参数传递问题;寄存器的使用问题;存储模式;变量以及函数的调用问题;子程序的返回值问题。其中,关于参数传递问题,在进行C语言程序调用汇编程序时,必须遵从参数传递原则,利用堆栈把参数传递给汇编程序。例如,在C语言程序中含有函数:VOIDAA(CHAR`P,INTI),这个函数是利用汇编语言进行编写的,如果编译是在小内存模式下实施的,系统在进行调用时,则写成AA(&Q,N);运行时程序首先把N压入堆栈,然后再把&Q压入堆栈,当参数传递过来并被汇编语言的子程序取得时,日户寄存器便被用作基地址寄存器,实现对栈中所存数据进行存取操作。通常情况下,由于调用的子程序和C语言程序往往使用同一个堆栈,所以在程序执行时,汇编语言子程序需要执行两条指令:PUSHBYPOPBP,SP[']O2.混合的软件编程实例分析程序的主要功能是在5个数中寻找最小数,有主程序"MIN.C”以及汇编子程序“QIUMIN.ASM”这两个部分组成。其中主程序是利用C语言编写,汇编子程序是利用汇编语言编写,被主程序调用,主要用于完成寻找最小数。程序代码如下:利用C语言和汇编语言混合的编程方法,能够实现应用程序局部满足高运行速度的要求,但是在具体的运用之中,程序设计者仍需要注意寄存器分配以及内存模式等因素对于程序的影响;且在运行时,因为程序设计语言之间存在相互调用的外部接口,故可以实现外部调用。第四章程序设计结构分析及相关技术4.1开发环境STL的全称是StandardTemplatesLibrary(标准模板库)。由ISO(国际标准化组织)经过9年时间(1989~1998)的标准化过程所提出,其全部成果是一个750页的文檔(文檔名:ISOIEC14882-1998)。它把C++语言标准化了,并且有了STL这样一个可扩展的链接库。STL是将容器,算法相分离,通过迭代起操作。简而言之,将日志文件的内容放在标准的容器中进行分析,会减少程序的编写难度,使程序变得高效、易读、易维护。在该课题的开发中用到不少标准模板库中的函数,对开发起到的作用是很大的。这个也是前人的开发经验的总结和积累,也是近几年来原代码开源的表现之一。CDataStructCDataStruct//单个档的内容-vector<CString>m_vecContext;//切分后右边视图的单个档内容-vector<CString>m_vecContextR;//被抽出的行号-vector<int>m_vecRowNumber;//是否需要被保存BOOLm_bFlag;//是否已经被抽出BOOLm_bExtracted;//是否已经被保存BOOLm_bIsSaved;图三:数据存放顺序图由于对档内的分析动作较多,因此将文件的内容读入内存来处理时效率较高。又因为要实现多个档的打开,而且打开的档数目没有限制,因此总体上来说需要两层的标准容器来存放。对于每一个档,将它们的内容放在一个标准容器std::vector<CString>中,为了实现抽出功能,还有一个容器std::vector<int>来存放被抽出的行号,为了实现比较功能,又定义另一个std::vector<CString>容器来存放右边视图的当前档的内容,再加上一些是否被保存、是否被抽出的布尔型标记,组成一个基本的数据结构类的数据成员,而整个底层的数据结构是一个大的std::vector容器,里面存放的是上述的数据结构类。如图所示。4.2C语言特点C语言是目前应用比较广泛的计算机高级语言,尤其是C语言更多的用于编写系统软件,因此对于这种语言的了解程度,运用程度就决定了程序员所编写出的程序的安全性。本文先分析了漏洞的有关知识,然后从C语言的特点入手,详细的阐述了C语言中的各种不安全的因素。安全编程技术是指为了消除或降低软件的安全风险而在编程时所遵循的原则及所采取的技术手段。在当今互联网的世界中,软件开发人员必须知道如何编写安全的程序。运用好的编程技巧,掌握安全编程的技术,可以使程序员更加了解安全漏洞的来源,从而避免安全漏洞,使设计出来的程序更加清晰,更加可靠,这样才能更好地提高终端产品的质量。C语言使用了BCPL和B的很多重要概念,同时也添加了数据类型和其他的强大功能。C语言最开始是作为UNIX操作系统的开发语言得到了广泛的关注。今天,事实上所有新的主流操作系统都是用C或C++语言编写的。C语言可以应用于多数计算机上,它不依赖于硬件。通过仔细的设计,程序员可以编写出5能够移植到大多数计算机上的C程序。4.3FLASH简介4.3.1概述FLASH是MACROMEDIA公司开发的矢量绘画与动画制作软件,不但能能够制作出声色俱佳的动画,而且可以制作出互动性较强的教学窗口。利用该技术开发的产品有以下优点:1.矢量图形,可以任意伸缩尺寸而不影响窗口中图形、图像的质量;2.流式播放技术,可以使教学窗口及视频文件边播放边下载,便于网络传输;3.不但可以集成视频、声音、动画等多种元素,而且还可以调用FLASHPAPER、TXT等多种文件;4.占用空间小,通过使用关键帧和矢量技术使得所生成的SWF文件小巧玲珑,下载迅速,携带方便;5.FLASH中的ACTIONSCRIP脚本语言设计灵活、交互性强,还可读取XML、ASP等编程语言实现较复杂的交互功能。另外,越来越多的软件可生成SWF类型的文件,而且FLASH可调用这些软件生成的SWF文件,这一点极大的扩充了FLASH软件的集成性,有利于FLASH吸收其它软件的优势。4.3.2配置为了将各模块的生成数据保存下来,在这里把FLASH与数据库建立连接,通过FLASH写入、读取数据。但是在FLASH软件中并不能通过ACTIONSCRIPT脚本语言直接查询数据库,为了解决这个问题,我们引入了ASP。ASP是微软公司推出的一种基于服务器端的脚本语言,利用FLASH对该语言的兼容性,让生成文件SWF直接调用ASP,然后对数据库进行各种操作。这一过程的原理如图所示:图四:各模块数据配置FLASH与ASP的组合将使课件不仅具有更好的交互界面,而且具有更系统的数据支持。FLASH与数据库连接过程中,具体的实现思路以及ASP文件中的主要代码如下:1.利用ASP建立一个数据库连接对象并使用该对象打开数据库,该链接文件命名为CONN.INC,主要代码如下:<%CONN=SERVER.CREATEOBJ;ECT("ADODB.CONNECTION");VARCONNSTRING="DRIVE={MICROSOFTACCESSDRIVER(*.MDB)};DBQ="&SERVER.MAPPATH("MYCW.MDB");CONN.OPEN(CONNSTRING);%>2.FLASH中的生成数据若要保存到数据库中,首先引入数据库链接文件:<!--#INCLUDEFILE="CONN.INC"--!>其次在ASP文件中接受FLASH传递过来的要存入数据库的数据,创建插入数据库的SQL语句:VAR变量名=REQUEST("FLASH中动态文本框对应的变量名");VARSQLIN="INSERTINTOTABLENAME(字段名1,字段名2,字段名3...)VALUES(„"+变量名1+"‟,‟"+变量名2+"‟,‟"+变量名3+"‟...);CONN.EXECUTE(SQLIN);最后将结果反馈到FLASH中,并关闭连接对象。这里要注意的是必须在接受反馈信息的变量名称前面加分隔符“&”:RESPONSE.WRITE("&FANKUI=数据成功插入数据库!");CONN.CLOSE();3.根据FLASH输入文本框中输入的数据,在数据库中查询并将结果显示在FLASH中,首先也是引入数据库链接文件:<!--#INCLUDEFILE="CONN.INC"--!>其次在ASP文件中接受FLASH传递过来的需要查询数据库的数据,创建查询数据库的SQL语句:VAR变量名=REQUEST("FLASH中输入文本框对应的变量名");VARSQLSELECT="SELECT*FROMTABLENAMEWHERE字段名=‟"+变量名+"‟";若根据查询语句在数据库中可以查询到数据,则把该数据存储到变量中,并返回在FLASH中显示;反之,若数据库中查询不到,则返回“查无此数据”,主要代码如下:RS=CONN.EXECUTE(SQLSELECT);IF(!RS.EOF){//把查询到的数据存储到变量中VAR变量名1=RS("字段名1");VAR变量名2=RS("字段名1");VAR变量名3=RS("字段名3");}ELSE{FANKUI="查无此数据";}//将查询出来的数据输出到FLASH中,以“&”作为分隔符RESPONSE.WRITE("&FLASH中接受变量名1="+变量名1);RESPONSE.WRITE("&FLASH中接受变量名2="+变量名2);RESPONSE.WRITE("&FLASH中接受变量名3="+变量名3);最后,关闭记录对象RS,关闭连接对象CONN:RS.CLOSE();CONN.CLOSE();4.4程序设计结构框架简介4.4.1顺序结构1界面简洁,风格统一,导航清晰,课件功能比较全面。课件需要着重完善模块特色,例如“动画演示模块”可以根据内容的差异开发不同类型的动画,“自测模块”可以分“章节测试”和“终期测试”两部分。2逻辑结构清晰;“QUICKCHECK”模块有助于学生梳理知识点,实用性强;教学设计符合认知规律,启发性强。内容方面还应包含一些扩展知识,例如“C++程序设计中英文符号的读法”、“实验平台的介绍”等。3课件各模块功能基本完备,运行可靠,兼容多种常用操作系统。该课件作为网络课件使用时,课件与数据库的交互不够完善,需要进一步改进。4.4.2重要函数的设计1、在程序中设计一个用于解析C语言函数参数的函数,C语言函数的一般形式是:TYPEFUNCTIONNAME([PARAM0],[PARAM0],要解析函数的参数列表,只要找到“())之间的字符串即可,把其中的字符串按”,”分开,保存到参数列表中。主要要处理下面几种情况:双引号、单引号、回车换行、注释、括号,针对每种情况进行相关的处理。2、在程序中设计一个处理C语言程序文件的函数,C\C++程序应用容易出现安全隐患地方主要集中在静态缓冲区域和动态缓冲区域,所以正确使用缓冲区就是我们要关注的地方,我们己知很多C语言AP工函数中有产生安全隐患的地方,默认情况下,只要从这些AP工函数入手,查找容易产生漏洞的地方,给出相应的安全使用方法,就可以减少漏洞的产生。处理C程序,主要目的是要检查程序函数的使用情况,根据PATCH文件,找到有安全隐患的函数,如STRCAT),提取它的参数,根据参数的使用,计算它的安全等级,给出安全的代码的指导规范。其中要注意的是各种格式的区分情况:双引号、单引号、回车换行、注释、括号,针对每种情况进行相关的处理。3、在程序中还要设计一个用于解析PATCH文件的函数。解析PATCH文件,主要通过LIBXML2这个开源的扩展库。LIBXML2是纯C语言写的用来解析XML文件和扩展XML语言的工具“,并且实现了大量的标准的标记语言,它可在几乎现有的所有平台上运行。PATCH文件是标准的XML文件,主节点用<PATCH-INFO,子节点用<PATCH,孙节点用<NAME>和<ATTRIBUTE>标识。其中<ATTRIBUTE>有NAME和VALUE两个子节点,用来记录数据。所以只需要解析三层就可以了。4.4.2分支结构模块在设计初期根据内容和教学中选取了典型程序,结合设计阶段提出的要求,具体实现时设计了程序运行、变量、流程图三者全部显示并且同步变化。窗口模块中的程序运行可设置自动、手动切换,在自动模式下可设置暂停、快进、快退,在手动模式下可按照教学需要单步操作。另外,可在已添加定位锚点的地方快速定位,变量值与流程图窗口则可以根据课堂需要最小化、最大化、打开与关闭。4.4.3循环结构程序的逐句运行是通过遮罩的位置移动实现的,首先把遮罩、程序代码和背景放在一个影片剪辑内,遮罩的宽度和程序行的行高一致,遮罩层放在程序层和背景层的上面,并建立遮罩关系。然后在主时间轴上调整该影片剪辑的位置,使它的坐标与舞台上的程序代码的坐标一致,该影片剪辑所在的图层级数要高于舞台上的程序代码的图层。第5章各模块功能具体演示5.1各模块功能介绍本系统的用户可分为管理员,学生两类。本系统共分成两类界面:一类界面用于管理员登录,主要负责进行基本资料、题库、试卷、的管理;另外一类界面用于学生登录,主要负责在线练习,成绩、答案查看,试卷评价等。从总体上考虑,系统应该实现下列功能:对管理员来说,包括试题管理,试题库的管理。1、试题管理:管理员可以控制试题难度级别,题目的数量。学生练习时,由系统自动组卷生成而不用手工组卷。同时,管理员还可以对库中已有的试卷进行修改和删除,添加新试卷等。2、题库管理:管理员可以根据教学需求对题库中的试题进行三种基本操作:添加新的考题、删除旧有考题、修改原有考题,本设计因为涉及到数学公式等问题,由于数学公式在显示的方面的缺陷,所以本试题库中只有单项选择题,判断题和填空题。管理员可以在添加试题时设置题干、答案、试题难度系数等属性。5.2系统框架前台子系统功能模块划分:练习网站系统—前台子系统练习网站系统—前台子系统退出系统试卷评价查看成绩提交查询成绩在线练习用户登陆试卷的生成退出系统试卷评价查看成绩提交查询成绩在线练习用户登陆试卷的生成图五:前台子系统功能模块图后台子系统功模块划分:练习网站系统—后台子系统练习网站系统—后台子系统退出考试系统试题管理工科文档管理管理员登录试题添加退出考试系统试题管理工科文档管理管理员登录试题添加图六:后台子系统功能模块图xuehaomimaxuehaomimaIDxinxingIDxinxingStudentStudentxingbieezhuanyexingbieezhuanye图七:用户ER图zhanghaozhanghaomimaIDmimaIDguanliyuanguanliyuan图八:管理员ER图BBCACAIDIDDshitiDshitiwentiwentileixingdaanleixingdaan图九:试题ER图5.3窗口模块依据前面所做的设计分析,对模块功能进行具体的实现工作。结合窗口简洁实用、风格统一的原则,首先设计窗口界面的主体风格,其中包括:界面配色、导航按钮样式、字体、字号、文字的颜色等;然后开发各个模块的通用模板,规划各个模块的命名规则,给导航按钮添加ACTIONSCRIPT脚本;最后根据各模块模板开发具体页面,并在此过程中持续测试和修改。为了方便编辑每一个FLA文件,确保界面中各元素互不干扰,在开发过程中遵循以下几个原则:1.把界面上的各个元素分散到时间轴上的不同图层,并建立文件夹进行管理;2.页面之间的跳转不使用时间轴上的帧的跳转,而是通过调用SWF文件来实现;3.把时间轴上的相关代码全部放到同一个图层内,例如:AS层。4.把实现某一个功能的多个元素放到一个元件内,便于该功能模块的移植。尽量做到不同功能模块之间的高内聚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 过期食品销毁协议书
- 保安和女工合同协议书
- 买卖合同转欠款协议书
- 2人合作配件协议书
- 驾驶服务采购协议书
- 项目防疫责任协议书
- 酒店签订优惠协议书
- 雇佣车辆合同协议书
- 赠送房屋出售协议书
- 讨账佣金提成协议书
- 《专利检索与撰写》课程教学大纲
- 糖尿病视网膜病变专家共识
- “雄鹰杯”全国小动物医师技能大赛考试题库(660题)
- 2024版首诊负责制度课件
- 施工升降机维护保养合同(2篇)
- 2024年湖南省湘西州小升初英语试卷
- 2024年《多媒体技术与应用》 考试题库及答案
- (完整)北京版小学英语1至6年级词汇(带音标)
- 高标准农田建设项目可行性研究报告-(2023年新版)
- 上海市徐汇区名校2025年初三英语试题全国三卷模拟卷2含答案
- 2024国开大学《经济学基础》形考任务2答案
评论
0/150
提交评论