毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc

上传人:sccc 文档编号:4859785 上传时间:2023-05-20 格式:DOC 页数:32 大小:291.52KB
返回 下载 相关 举报
毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc_第1页
第1页 / 共32页
毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc_第2页
第2页 / 共32页
毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc_第3页
第3页 / 共32页
毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc_第4页
第4页 / 共32页
毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于ARM Linux的嵌入式网络订餐系统.doc(32页珍藏版)》请在三一办公上搜索。

1、基于ARM + Linux的嵌入式网络订餐系统湖北大学本科毕业论文(设计)目 录前言(1)1系统概述(2)1.1项目背景(2)1.2目标系统(2)1.3可行性(3)2系统设计(4)2.1运行环境(4)2.2开发工具(7)2.3总体设计(7)2.4重点细节(16)3实现(18)3.1Linux平台的建立(18)3.2Boa程序的移植(19)3.3Boa的配置(20)3.4Boa的执行(20)3.5CGI脚本测试(20)4总结(20)参考文献(22)附录A(23)注释1ARM简介(23)注释2FS2410DEV V6.0开发板的配置(23)注释3交叉编译环境的建立和bootloader相关操作(2

2、4)基于Arm + Linux的嵌入式网络订餐系统摘 要传统手段实现的网络订餐系统复杂而庞大,用户使用时有诸多不便。嵌入式系统与Internet的结合为嵌入式设备的网络互连提供了一条有效的途径。把嵌入式设备连接到网络中,并且实现Web Server功能,提供一些独具特色的服务,是一项很有前景的应用。本文介绍了一个嵌入式网络订餐系统。客户可以通过此系统获得菜单,提交订单,商户通过此系统发布菜单,接受订单。系统运行的平台为ARM9+Linux,由于嵌入式设备的低成本且本系统集成了服务器端和商户浏览器端,本系统可以使用户节省大量花费。本设计涉及到的技术有嵌入式系统开发环境的搭建、应用程序的移植、网页

3、设计、CGI程序的开发等。【关键词】ARM Linux BOA 订餐系统 CGIAn Embedded Online Food Order System Basing On Arm & LinuxAbstractThe traditional implement of Online Food Order System is complex and hulking for the application of take-away service. The combination of embedded system and Internet provides an effective way t

4、o the internet interconnection of the embedded devices. Its a promising application that the embedded devices are connected to the internet with the Web Server function realized so that some distinctive services are provided. The paper introduces an embedded system of online food order. The customer

5、 is able to get a menu and submit an order by this system while the businessman posts the menu and receives the order by this system. The running platform of the system is ARM9+Linux. The technologies involved include the construction of the embedded development environment, the transplantation of t

6、he application program, the webpage design, the development of CGI program, etc.【Key words】ARM Linux BOA Online Food Order System CGIIII湖北大学本科毕业论文(设计)前言我即将呈现的,是一个基于ARM + Linux的嵌入式终端,可以这样简单地对其功能做一个描述:它是一个嵌入式的web服务器,服务器上实现了一个很小的网上“商城”,目前这个商城的经营范围为餐饮,客户通过访问这个网站获得商品信息,并且下订单,服务器在接收到新订单后通知商户。这是我的一个大计划的一部分

7、,我的完整设想是构建一个大的平台(服务器),客户在上面注册,然后获得一个(二级)域名(或者其已拥有一个域名,那么只要做一些注册就可以了)和我的终端,上面有一个嵌入式web服务器,给他们留有接口使他们可以给自己量身定制一个网站。当这个终端被启动的时候,它先向服务器发送注册信息,服务器将其信息注册(比如账户,域名,IP地址),这样服务器便可以提供域名解析服务,所有的针对某个终端的访问都通过服务器重定位,最终正确地访问所请求的终端。服务器提供备份终端内容的服务,并且可以在终端无法访问的时候对访问进行响应。服务器的开发难度、维护的复杂程度及负荷都相对较小,而当ISP能给大家提供“每人一个IP地址”的服

8、务时,这台服务器也不再需要了。这个终端上的服务器,可以是一个电子商店,可以是一个信息发布/留言平台,可以是你的blog或者是一台用于和你的朋友共享你的各种资料、信息的服务器,或者提供其他你能想到的服务。这个终端稍做改变便可以以多种形式出现,比如一部智能手机,一部电话,一台在居民小区的杂货店或是送外卖的小饭馆中的pos机或者是你家的电视机顶盒在3G网络蓬勃发展的今天,在我看来这是个很诱人的应用。然而一个人在几个月之内将这个庞大的工程完成实在太不现实了,我采取了分步实施的策略。在终端上配置web服务器和在服务器运行期间获得所需的信息,可以通过一个浏览器实现,也可以单独开发一个程序来实现,所有的信息

9、都存在终端上,获得并更改它们并不难。然而使用浏览器显然更加便捷,它节省了开发的时间,同时质量也是有保证的。Konqueror embedded和embedded opera都是很有名的嵌入式浏览器,它们支持JavaScript甚至css.那么第一步,我需要实现一个集成了嵌入式浏览器的终端。当我着手实施这件事的时候,发现这几乎没有工作要做,甚至有的开发板,出厂时就已经装好了集成了浏览器的系统。所以以这个工作作为毕业设计的内容是不妥的,其工程量让人汗颜。第二步,实现嵌入式web服务器,做一个技术验证,同时积攒开发的经验。目前它的功能只定位为:用于为餐饮业获得外卖订单,也就是本文开头所描述的。这便是

10、我毕业设计的内容,希望老师能够谅解我变更论文主题的行为。第三步便是开发出服务器,这是后话。本论文按照嵌入式系统的设计流程,结合软件工程的步骤安排结构,但是不那么细致、严格地遵守软件工程的文档形式。第一部分系统概述对应于需求分析和可行性分析,包括对系统的业务和功能的描述、开发系统所涉及的技术的论述,第二部分系统设计涵盖了概要设计和详细设计,在详略程度上做了一些平衡,尽力用最少的篇幅将整个系统描述清楚,某些重要的细节附上了伪代码,描述算法。第三部分介绍实现,介绍如何构建起这个系统。 最后我想对大学期间教授过我的老师表示衷心地感谢,也感谢学校、学院和我们计算机科学与技术专业,计算机科学与技术,现在在

11、我看来是天然地为嵌入式开发开设的专业,那些曾被很多同学认为纯属空洞的理论毫无应用价值的课程,比如数字逻辑、计算机系统结构、组成原理、微机原理与接口技术、编译原理甚至操作系统和数据结构,都是进入嵌入式领域不可或缺的知识。现在我深刻认识到了这些课程的价值,同时也感激学校为我们设置如此的课程体系。现在我记录下教授我相关课程的老师的姓名以表达对他们的感激和敬意:数字逻辑黄耀锋,计算机系统结构罗益辉,计算机组成原理孙文和,数据结构马传香,编译原理孙斌,操作系统孙文和,微机原理与接口技术徐婕。1 系统概述1.1 项目背景随着现代生活节奏的提高,越来越多的人选择在外就餐,在写字楼聚集的商业区、学校周边以及很

12、多生活小区,餐饮的外卖业务十分火爆。以我所在的这间写字楼为例,一楼的大厅里集中了4家餐厅,他们都提供外卖服务,在一公里范围内免费送货上门,几乎每天我都会收到一两张外卖业务的广告单。要在每天中午休息的一个半到两个小时里回家一趟并自己做饭对这栋楼里多数人来说是极不现实也不经济的,而在这寸土寸金的地方通常餐厅的容纳能力很有限,于是很多人选择了叫外卖在办公室进餐。商家传统的接受订单的途径是电话,甚至有更加原始的:在午饭时间前派人逐层逐间进入办公室接受订单。这些途径的缺点很明显:它是纯人工的于是多出来一笔人力开支,它是“单任务”的你不可能同时接两个顾客的电话,或者同时记录两张订单,若你的顾客忠诚度很高,

13、他可能会等待,然而订餐电话像中消协的热线电话一样难打,给人的感觉总是不好受的。而由于是人工的且“单任务的”,其效率自然低下。餐饮业的需求,集中在一天的那几个小时,这期间的效率,会对收益有很大的影响。所以外卖业务需要一种新的,高效低成本自动化的接受订单的途径。目前成熟的电子交易平台,商家在上面注册,便可以开设自己的电子商铺,接受订单,商家也可以自己开设一个购物网站接受订单,但是这些都不适合餐饮业的外卖业务。在这些平台上交易,商家和客户都有繁琐的手续要做,为了价值几块到几十块、半小时就该完成消费的一顿饭,几乎没有人会愿意在这个平台上交易。现在也有一些订餐网,多数实现的只是一个宣传平台,真正的订餐还

14、是需要通过网页上公布的订餐电话。架设一个为外卖服务量身定制的网站初始成本大概要2000块左右,包括购买网站,注册一个域名,租用服务器,同时你要有一些专业知识来维护这个网站,这样的网站通常出自手工作坊似的工作室或者某个游侠程序员之手,技术支持难以保障,而一个优秀的网上商城又价值不菲。同时,商户得在自己通常很狭小的前台,置办一台PC,最精简而又现实一点的预算:1000块。随着嵌入式系统和网络技术的迅猛发展,嵌入式系统与Internet技术的结合为嵌入式设备的网络互连提供了一条有效的途径。把嵌入式设备连接到网络中,并且实现Web Server功能,使得用户能通过Web浏览器完成对一些相关数据信息的采

15、集、管理和发布,对现场设备进行远程监控等,这将极大方便用户的操作。嵌入式 Web 服务器以其成本低、体积小、维护方便等特性被广泛应用于信息家电、工业自动化、远程监控等领域。通过CGI技术,可以方便地实现动态页面,和用户交互。1.2 目标系统1.2.1 系统功能用户通过网络订餐系统获得菜单,提交订单,商户通过此系统获得有效的订单。此系统目前只作为技术验证和功能演示,在安全性和保证订单信息有效性以及人性化设计等方面暂不做要求。主要功能列表如下:(1)向客户列出商品清单,包括名称、单价等;(2)客户根据商品清单做出选择,接受用户的订单并且保存;(3)接受到新订单后通知商户;(4)提供接口使商户可以修

16、改商品清单,例如商品名称和单价;(5)可以使商户浏览订单,可以对订单状态做设置,或者删除;(6)实现商户的身份认证。1.2.2 优点网络订餐系统,使客户通过网络便可以获得自己想要的服务,便捷且廉价。商户则可以高效地、自动地格式化地接受订单。嵌入式的网上点餐系统,集成了服务器和商户端的终端,而且它比服务器和PC都要便宜。用C语言编写的CGI程序是编译执行的,不可修改。系统的数据以文件形式存储,用户甚至可以对系统留出的接口毫不熟悉,只要他会使用文本编辑器,按照规定的格式编辑文件,网站便可以按照他的设想运行。1.3 可行性本项目的实质是开发一个运行在嵌入式系统中的网站。本节主要从开发该系统所需要的技

17、术的角度来分析可行性。开发该系统涉及的主要技术有:嵌入式系统开发、运行环境的搭建,HTML页面以及浏览器端脚本制作,嵌入式web server BOA的移植以及配置,CGI程序设计,驱动程序设计等,下面将逐项分析这些技术。1.3.1 HTML页面以及浏览器端脚本制作超文本置标语言(Hyper Text Markup Language)是为网页创建和其它可在网页浏览器中看到的信息设计的一种置标语言。HTML被用来结构化信息例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。由蒂姆伯纳斯李给出原始定义,由IETF用简化的SGML(标准通用置标语言)语法进行进一步发展的HTML,后来

18、成为国际标准,由万维网联盟(W3C)维护。JavaScript 是一种受到广泛支持的脚本语言,它可以被嵌入HTML文件之中,即可以用来编写在服务器端运行的脚本也可以编写在浏览器端运行的脚本。目前一些嵌入式浏览器也支持JavaScript,比如embedded opera。透过 JavaScript 可以做到回应用户的需求事件 (如:form的输入)而不用任何的网络来回传输资料,所以当用户输入一项资料时,它不用经过传给服务器处理,再传回来的过程,而直接可以被客户端的应用程序所处理。这带来了很多好处,比如节省了网络流量,节约了数据在网络上来回传输的时间,减轻的服务器的负荷。Dreamweaver是

19、由Macromedia公司推出的,用于网页开发和网站管理的专业化设计工具。它采用了多种新技术,具有设计和开发网站过程中需要的网站管理、网站设计、页面制作、多媒体制作和动画制作等丰富实用的功能;它具有友好的操作界面,在文档窗口中可以打开各种浮动面板,同时还可以使用系统内置的多种对象进行操作。利用Dreamweaver可以用很方便快捷地制作嵌有JavaScript的HTML页面。我在校期间曾完成过数个toy网站,对HTML有一定了解,能熟练使用Dreamweaver。1.3.2 嵌入式web server BOA的移植以及配置从功能上来讲,Web服务器监听客户端的服务请求,并根据客户端的请求类型提

20、供相应的服务。客户端使用WEB浏览器和服务器进行通信。嵌入式web Server与普通的web server不一样,嵌入式web server是指将web server引入到嵌入式设备中,并驻留在其中有限的代码空间内,有其自身的特点和要求:(1)嵌入式设备的空间有限,必须尽可能使得嵌入式web server简洁、高效。(2)嵌入式设备大多没有硬盘,为了实现基于文件的HTTP,嵌入式Web Server必须使用另外的软件来实现文件的映射,解决文件存储问题。(3)嵌入式web server通常功能有限,它不支持在普通服务器上为了实现动态网页而使用的ASP、JSP等技术,为了使得客户端能与嵌入式we

21、b server进行交互,得使用一些其他的技术,例如SSI(Server Side Includes)、CGI(Common Gateway Interface)、Java Servlet等。现在嵌入式领域主要有三个Web Server:HTTPD、THTTPD和BOA。HTTPD是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。THTTPD和BOA都支持认证、CGI等,功能都比较全。BOA是一个单任务的小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。1.3.3 CGI程序设计这是实现本系统的关键技术,也是本项目的主体工程。CGI(Common

22、Gateway Interface:公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。外部CGI程序与WWW服务器进行通信、传递有关参数和处理结果是通过环境变量、命令行参数和标准输入来进行的。服务器提供了客户端(浏览器)与CGI扩展程序之间的信息交换的通道。CGI的标准输入是服务器的标准输出,而CGI的标准输出是服务器的标准输入。客户的请求通过服务器的标准输出传送给CGI的标准输入,CGI对信息进

23、行处理后,将结果发送到它的标准输入,然后由服务器将处理结果发送给客户端。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何系统支持的程序设计语言编写,如Shell脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言程序是编译执行且不可被修改)等特点。本项目使用C语言开发CGI。1.3.4 驱动程序设计应用程序、库、内核、驱动程序的关系如下所述: 从上到下,一个软件系统可以分为:应用程序、库、操作系统、驱动程序。(1)应用程序使用库提供的open函数打开

24、代表LED的设备文件。(2)库根据open函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进入内核。(3)内核的异常处理函数根据这些参数找到相应的驱动程序,返回一个文件句柄给库,进而返回给应用程序。(4)应用程序得到文件句柄后,使用库提供的write或ioctl函数发出控制命令。(5)库根据write或ioctl函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进入内核。(6)内核的异常处理函数根据这些参数调用驱动程序的相关函数。系统在收到新订单时需要通过蜂鸣器发出提示,故需要一个蜂鸣器的驱动程序。驱动程序的开发需要对ARM体系结构、工作模式、中断的工作原理、操作系统等有

25、一定了解。本系统所需要的驱动程序,如液晶屏和触摸屏的驱动,都由硬件厂商提供,只需要做编译和移植工作。综上,做一个技术可行性评价:基于在学校所学习的知识以及最近几个月培训的收获,我所掌握的技术是可以完成该系统的。整个工程预计可以在半个月之内完成。2 系统设计2.1 运行环境本节通过对系统运行的软硬件环境的分析、确定,完成软硬件平台的选型。2.1.1 硬件环境看看我们的系统需要实现哪些基本的系统功能:它需要接入Internet,需要存取信息,所以需要实现TCP/IP协议栈,要有对存储系统的管理(RAM、ROM和flash,当存储的信息比较多时使用SD卡是个不错的选择,它也很便宜),若是使用单片机,

26、实现难度较大,同时单片机是单任务的,若想多任务,还得有进程调度,这些需要几乎构成了一个操作系统,那么我们直接使用一个现成的操作系统吧。这个时候我们就需要一个更加高级一点的处理器而不是8位、16位的单片机。ARM风靡世界,其优点勿需赘述(附录注释1),对于多数非特殊的应用它是胜任的。我选用的是深圳优龙公司的FS2410DEV V6.0开发板,这也是我在华清远见嵌入式学院使用的培训专用版。其使用的处理器是三星公司的S3C2410。三星公司推出的32位RISC处理器S3C2410,是面向低价格、低功耗和高性能的手持设备和小型设备而设计的。S3C2410的内核基于ARM920T,带有MMU(Memor

27、y Management Unit)功能,采用0.18um工艺,其主频可达203MHz,适合于对成本和功耗敏感的需求,同时它还采用了AMBA(Advanced Microcontroller Bus Architecture)的新型总线结构,实现了MMU、AMBA BUS、Harvard的高速缓冲体系结构,同时支持Thumb16位压缩指令集,从而能以较小的存储空间需求,获得32位的系统性能。其片上功能如下:(1)内核工作电压为1.8/2.0V,存储器供电电压为3.3V,外部I/O设备的供电电压为3.3V;(2)16KB的指令Cache和16KB的数据Cache;(3)LCD控制器,最大可支持4

28、K色STN和256色TFT;(4)4通道的DMA请求;(5)3通道的UART,2通道的SPI接口;(6)2通道的USB(Host/Slave);(7)4路PWM和1个内部时钟控制器;(8)117个通用I/O,24路外部中断;(9)272Pin FPGA封装;(10)16位的看门狗定时器;(11)1通道的IIC/IIS控制器;(12)带有PLL片上时钟发生器。FS2410DEV V6.0开发板提供了丰富的外部资源(附录注释2),下面对除了电源、时钟源、复位电路等必要配置外,系统使用到的部分资源做简要介绍:(1)外部存储器配置:1M Nor Flash、64M Nand Flash、64M SDR

29、AM,为系统数据、程序和操作系统内核的存储和运行提供存储空间。(2)扩展网口:10M以太网接口,采用的是CS8900Q3,该部分用于从PC机上下载操作系统内核和应用程序。(3)LCD接口(带LCD显示屏):320x240,STN,16级灰度,最大可接640x480,256色。(4)串口:两个标准RS232接口。用于和PC机连接,通过超级终端进行系统调试。(5)JTAG接口:利用JTAG仿真器可以通过JTAG边界扫描口进行在线仿真。目前JTAG有两种标准即14针接口和20针接口,开发板采用的是标准14针JTAG接口,支持STD,并口连接,支持网络调试功能。(6)蜂鸣器,用于接受新订单后通知商户。

30、2.1.2 软件环境是否使用操作系统在硬件选型中已有简单的论述,这里我们讨论更多的细节。嵌入式软件开发主要有两种模式:8位/16位CPU平台嵌入式软件都是一些很简单的控制程序,系统一般不需要操作系统,大多工作在超级循环加事件(Super Loop Plus Event)方式下,应用程序管理全部系统资源。在这种情况下,系统无法运行复杂的应用程序,无法进行多任务(Multitask)处理,并且效率很低,而且要求软件工程师十分了解硬件特性。系统升级时几乎所有软件都必须重写,这些都阻碍了应用程序开发速度。为了减少软件开发的复杂程度,也为了充分利用32位嵌入式处理器的强大功能,在嵌入式系统开发中通常使用

31、嵌入式操作系统。这里在目前比较常用的Windows CE和Linux操作系统之间做个比较。Windows CE与Windows系列有较好的兼容性,无疑是WindowsCE推广的一大优势,其中Windows CE是一种针对小容量、移动式、智能化、32位的模块化实时嵌入式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多处理器体系结构上运行,并且通常适用与那些对内存占用空间具有一定限制的设备。操作系统的内核基本需要至少200KB的ROM。从技术角度上讲,Windows CE作为嵌入式操作系统也存在一些缺陷:没有开放源代码,使应用开发人员很难实现产品

32、的定制;在效率、功耗方面的表现并不出色;版权许可费也是厂商不得不考虑的因素。Linux最大的特点就是源代码公开而且遵循GPL协议,任何人都可以修改并在GNU公共许可证下发行,这样开发人员可以对操作系统进行定制。另外,它还具有以下优点:稳定、良好的移植性、优秀的网络功能、支持多种文件系统和具有大量的API。已被成功地移植到很多平台上,包括X86 ,Alpha, Sparc, MIPS, PPC, ARM, NEC, MOTOROLA 等。Linux在嵌入式方向的发展非常迅速,1999年,Linux开始根植于嵌入式系统开发。2001年,Linux内核2.4发布,该版本后来被应用到许多嵌入式Linu

33、x分支中。2002年,可以看到很多上市的基于Linux的产品,并且Linux开始向数字娱乐领域发展。2003年,Motorola宣布A760手机采用Linux作为它的操作系统。2004年,LynuxWorks发布基于Linux 2.6内核的BlueCat,它是第一个基于Linux 2.6内核的商业嵌入式Linux。2005年,基于Linux 2.6内核的嵌入式产品已经非常广泛,尤其是基于ARM内核的芯片已经广泛使用Linux作为其操作系统。同时我们可以很方便的获得Linux下多数硬件设备的驱动程序。根据以上分析,本文选择Linux操作系统作为软件开发平台。BOA是Linux下一款闻名的web服

34、务器,通过网络可以很方便的获得其详细文档(http:/www.boa.org),得到技术支持。它是一个小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中,它支持认证、CGI等,功能比较全。它是单任务的,但是会为每一个调用的CGI开辟一个新的进程。嵌入式系统根文件系统采用cramfs,用户文件系统采用yaffs2。2.1.3 环境综述综上,本系统的运行环境如下表:硬件配置:表2.1 硬件配置表名称说明CPUS3C2410, MPLL=200MFLASH2M NorFlash :sst39vf160164M Nand Flash:k9f1208SDRAM2*32M :k4s561

35、632E网口10M:CS8900ALCD3.5寸240*320 TFT屏触摸屏4线电阻式触摸屏蜂鸣器有新订单时发出提醒这些硬件配置FS2410DEV V6.0开发板均有提供。软件配置:表2.2 软件配置表名称说明操作系统Linux-2.6.14开发工具GNU工具启动代码u-boot 1.1.4驱动程序所有硬件驱动文件系统根文件系统采用cramfs,用户文件系统采用yaffs2协议栈TCP/IP服务器Boa 服务器GUIQT(提供GUI程序例如浏览器运行时库)CGI实现动态网页,提供交互和数据处理2.2 开发工具2.2.1 硬件(1) 优龙公司ARM9 S3C2410开发板fs2410;(2)

36、PC一台。具备串口、并口、USB接口、以太网接口。2.2.2 软件(1) Windows Xp操作系统;(2) 虚拟机,使用Linux系统;(3) Linux-ARM编译工具;采用基于嵌入式Linux操作系统的软件开发环境。一般采取主机目标机模式,使用交叉开发的方式进行开发。开发环境运行在主机上,用户所有的开发工作都是在主机开发环境中进行,包括源代码编辑、编译、链接、下载和调试等。生成的可执行代码通过串口或以太网口下载到目标机,在目标机执行时,可以把执行结果通过超级终端回显到主机上,主机还可以通过开发环境提供的调试工具对代码进行调试。2.3 总体设计2.3.1 系统逻辑模型图2.1 逻辑模型本

37、系统需要自行设计的部分为订餐网站,整个系统的搭建将在实现部分介绍。在本部分中有些地方会附上一些代码,用于描述程序的任务、工作流程等。这些代码都是用相应的程序设计语言的语法、风格编写的伪代码。对要用C语言实现的伪代码做如下命名规则的约定:(1)函数通常为两个英语单词(或缩写),第一个单词为名词,表示操作对象,首字母小写,第二个单词为动词,表示进行的操作,首字母大写;(2)变量首字母大写,若为多个单词,则每个单词的首字母均大写;(3)常量名称全部大写。我将使用自顶向下逐步细分的方法来完成整个系统的设计。首先我们来看看系统的业务流程。2.3.2 系统业务流程处理客户的请求需要两个CGI,一个用于从保

38、存商品信息清单的文件中读取信息生成一个提供给客户的菜单,一个用于处理用户的订单,将其存入保存订单信息的文件,同时生成一个通知客户已成功接收订单的页面。处理商户的请求的CGI有三个,一个根据保存订单的文件生成订单页面提供给商户,一个接受用户编辑的商品信息修改用于保存商品信息清单的文件,一个用于注销登陆,另外还有一个HTML页面给商户提供编辑商品信息的接口。等待请求请求类型调用对应CGI生成菜单传给浏览器收到请求调用对应CGI保存订单,通知客户订单已收到,通知商户有新的订单来自商户来自客户请求内容请求内容调用对应CGI生成菜单传给浏览器查看菜单提交订单传送修改菜单的页面(接口)修改菜单查看订单通过

39、身份验证未通过接收商户修改的数据,修改存储商品信息的文件,提示修改成功。注销登陆退出图2.2 系统流程图2.3.3 系统模块结构根据系统的功能及业务流程,系统被分为三个模块,一个用于处理客户请求(客户模块),一个用于处理商户请求(商户模块),还有一个辅助功能模块,主要是一些文件。图2.3 系统结构图2.3.4 客户模块客户模块负责向客户呈现菜单、接受客户的订单、向客户反馈结果。下表列出了该模块中包含的文件及功能。表2.3 客户模块文件名功能index.cgi客户默认访问的程序,类似一般网站的index.html(asp),根据文件中list中的信息生成菜单返回给客户端浏览器。客户根据菜单做出选

40、择生成订单。order.cgi负责接收客户的订单,将其存入文件order,处理成功则向客户反馈“订单已成功接收”。ok订单成功接收后向用户返回的页面,由order.cgi负责将其输出。conform.jsJavaScript文件,客户端运行的脚本程序,和菜单页面一起发送打浏览器端,检查订单信息,完善订单,显示订单,接受客户确认。 form提供客户填写订单的界面,由index.cgi负责输出。本模块中包含的辅助性文件有form,ok, conform.js。它们都是字符文件,conform.js是JavaScript脚本程序。form和ok都是HTML格式的文本文件。form只是一个HTML页面

41、的片段,它定义了一个表单,通过post方法把表单的内容传递给order.cgi,包含有2个可见的单行可编辑的文本区域:guest(客户名),address(送货地点),内容由用户输入;两个可见的不可编辑的文本区域:cart(商品清单),sum(总金额),内容由浏览器端JavaScript根据客户在菜单中的选择生成;一个不可见的文本区域:time(订单提交时间),内容由浏览器端JavaScript生成,之所以在浏览器端而不是服务器端生成订单提交时间,因为在浏览器端生成时间比服务器通过CGI生成要简单方便的多。form中表单各字段信息如下表:表2.4 form各字段信息字段名意义属性内容guest

42、客户名可见可编辑文本区域客户填写address送货地址可见可编辑文本区域客户填写cart商品清单可见不可编辑文本区域浏览器端脚本生成sum总金额可见不可编辑文本区域浏览器端脚本生成time提交时间隐藏文本区域浏览器端脚本生成ok是一个完整的HTML页面,当order.cgi成功处理了客户提交的订单后将其输出,向客户反馈成功信息。其主要代码如下:谢谢惠顾 您的定单已经提交,谢谢您的使用 我们将在半小时内送货上门 演示图片如下:图2.3 演示一conform.js是用JavaScript编写的脚本,在浏览器端运行。他提供了一些函数,用于检查客户在订单中填写的内容,完善订单,要求客户确认等。当用户在

43、选择了商品数量以后它自动给cart赋值,计算出sum,用户点击提交按钮后它将检查用户的输入,如下:function info_Check(elm1,elm2) if (elm1=) alert (请输入您的姓名) document.form1.name.focus() return false if (elm2=) alert (请输入我们将要送货的地址) document.form1.address.focus() return false if (elm2.length=6) alert(请填写正确的地址)document.form1.address.value=document.form

44、1.address.focus()return false检查无误获得当前时间赋给time,然后提交给order.cgi。客户模块中还有两个cgi文件,它们是index.cgi和order.cgi,它们用C语言编写。index.cgi是客户访问的首个cgi,其工作流程是:收到请求后逐行读取文件list中的内容,判断status字段首字母,是s则将本行的”NO”, ”name”,”price”输出,后面加上一个菜单元素,范围为03,表示订购该物品的数量,然后输出form的内容。伪代码表示大致如下:FILE * fp;char LineBufferMAXSIZE;/MAXSIZE大于list文件中

45、一行拥有的最大字符数char HtmlSelcet=”-123”/菜单元素char *Field4;/作为lineProcess()函数的参数,前3个元素带回list文件中每行的name,/price,status字段,第四个元素指向HtmlSelcetfp=fopen(“list”, ”r”);/只读方式打开listwhile(fgets(LineBuffer,MAXSIZE,fp)!=NULL)lineProcess(LineBuffer, Field);/自定义函数,根据list文件中各行的分隔符分割各/字段/存入用malloc()分配的Field中元素指向的空/间中。各字段以null结尾。If(Field2=s)printf(“名称单价数量”);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号