20xx年毕业生实习报告封面模板及格式(500字)

来源:m.fanwen118.com时间:2021.7.25

中国xx学院

2015届毕业生实习总结报告

学生姓名:______________________ 专业年级:______________________ 实习单位:______________________ 实习时间:______________________ 辅导员老师:____________________

年 月 日

毕业实习报告格式

1、封面:写明专业、班级、姓名、辅导员老师、实习报告题目、实习单位、实习时间、地点等。

2、摘要:作为实习报告部分的第一页,为摘要,字数一般为150字,是实习报告的中心思想。

3、正文(要求字数不低于3000字):是实习报告的核心。写作内容可根据实习内容和性质而不同

(1)实习目的或研究目的

(介绍实习目的和意义、实习单位的发展情况及实习要求等)

(2)实习内容

(3)实习结果

(4)实习总结或体会 (是对实习的体会和最终的、总体的结论,不是正文中各段小结的简单重复。)

实习报告要求

1、 封面——指定的样稿

2、 用A4纸输出, 左右页边距:2厘米,上下页边距:2厘米

正文:宋体,小四,行间距1.5倍

正文标题:黑体小二号段后:1行


第二篇:生产实习报告封面及内容模板 7900字

电子科技大学

通信与信息工程学院

学号: 2010013050034

姓名:指导教师:

电子科技大学通信与信息工程学院

生产实习考核表

生产实习报告封面及内容模板

一、实习目的和任务

学习网络理论,了解无线网络拓扑,探讨分布与集中式管理对无线网络的优化,以及用户与无线网络管理之间的交互。设计使用web实现用户与无线网络管理之间的交互,设计用户界面,方便直观的反应交互内容。

二、实习内容和要求

实验要求:

1.了解luci用户界面的设计

2.学习lua脚本语言,html语言以及数据库相关信息

3.使用lua,html,sql设计用户界面,实现用户与无线网络之间的交互 实验内容:

一、luci用户界面

luci作为web服务器,实现客户端web页面配置功能。对于request处理方式,采用的是cgi,而所用的cgi程序就是luci,工作框架如下图所示:

生产实习报告封面及内容模板

Client端和serv端采用cgi方式交互,uhttpd服务器的cgi方式中,fork出一个子进程,子进程利用execl替换为luci进程空间,并通过setenv环境变量的方式,传递一些固定格式的数据(如PATH_INFO)给luci。另外一些非固定格式的数据(post-data)则由父进程通过一个w_pipe写给luci的stdin,而luci的返回数据则写在stdout上,由父进程通过一个r_pipe读取。

luci程序流程

luci作为web服务器的cgi程序,是通过execl函数替换到进程空间的,并且详细说明了它与其它进程的交互方法。

它首先执行的是running()函数,其中create出另一个执行体httpdispatch,每次httpdispatch执行yield返回一些数据时,running()函数就读取这些数据,做相应处理,然后再次执行resume(httpdispath),……如此直到httpdispatch执行完毕。

首先说明一下代码组成,在luci文件系统中,lua语言的代码不要编译,类

似一种脚本语言被执行,还有一些uhttpd服务器的主目录,它们是:

/www/index.html

/cgi-bin/luci

/luci-static/xxx/xx.css、js、gif

/usr/lib/lua/nixio.so、uci.so

/luci/http.lua、dispatcher.lua、core…

/controller/xxx.lua

/model/xxx.lua

/view/xxx.lua

节点树node-tree

在controller目录下,每个.lua文件中,都有一个index()函数,其中主要调用entry()函数,形如entry(path,target,title,order),path形如{admin,network,wireless},entry()函数根据这些创建一个node,并把它放在全局node-tree的相应位置,后面的参数都是该node的属性,还可以有其他的参数。其中最重要的就是target。

Createtree()函数就是要找到controller目录下所有的.lua文件,并找到其中的index()函数执行,从而生成一个node-tree。这样做的io操作太多,为了效率,第一次执行后,把生成的node-tree放在/tmp/treecache文件中,以后只要没有更新(一般情况下,服务器里的.lua文件是不会变的),直接读该文件即可。生成的node-tree如下:

生产实习报告封面及内容模板

这里要注意的是,每次dispatch()会根据path_info逐层索引,且每一层都把找到的节点信息放在一个变量track中,这样做使得上层node的信息会影响下

层node,而下层node的信息又会覆盖上层node。比如{/admin/system},最后的auto=false,target=aa,而由于admin有sysauth值,它会遗传给它的子节点,也即所有admin下的节点都需要认证。

target简介

对每个节点,最重要的属性当然是target,这也是dispatch()流程最后要执行的方法。target主要有:alise、firstchild、call、cbi、form、template。这几个总体上可以分成两类,前两种主要用于链接其它node,后一个则是主要的操作、以及页面生成。下面分别描述。

链接方法:在介绍初始登录流程时,已经讲到了这种方法。比如初始登录时,url中的path_info仅为'/',这应该会索引到rootnode节点。而该节点本身是没有内容显示的,所以它用alias('admin')方法,自动链接到admin节点。再比如,admin节点本身也没有内容显示,它用firstchild()方法,自动链接到它的第一个子节点/admin/status。

操作方法:这种方法一般用于一个路径的叶节点leaf,它们会去执行相应的操作,如修改interface参数等,并且动态生成页面html文件,传递给client。这里实际上是利用了所谓的MVC架构,这在后面再描述,这里主要描述luci怎么把生成的html发送给client端。

Call、cbi、form、template这几种方法,执行的原理各不相同,但最终都会生成完整的http-response报文(包括html文件),并调用luci.template.render(),luci.http.redirect()等函数,它们会调用几个特殊的函数,把报文内容返回给luci.running()流程。

生产实习报告封面及内容模板

如上图所示,再联系luci.running()流程,就很容易看出,生成的完整的http-response报文会通过io.write()写在stdout上,而uhttpd架构已决定了,这些数据将传递给父进程,并通过tcp连接返回给client端。

sysauth用户认证

2.1节已描述了,由于节点是由上而下逐层索引的,所以只要一个节点有sysauth值,那么它所有的子节点都需要认证。不难想象,/admin节点有sysauth值,它以下的所有子节点都是需要认证才能查看、操作的;/mini节点没有sysauth值,那么它以下的所有子节点都不需要认证。

luci中关于登陆密码,用到的几个函数为:

生产实习报告封面及内容模板

可以看出它的密码是用的linux的密码,而openwrt的精简内核没有实现多用户机制,只有一个root用户,且开机时自动以root用户登录。要实现多用户,必须在web层面上,实现另外一套(user、passwd)系统。

另外,认证后,serv端会发给client一个session值,且它要一直以cookie的形式存在于request报文中,供serv端来识别用户。这是web服务器的一般做法,这里就不多讲了。

MVC界面生成

这其实是luci的精华所在,第二节开始介绍/usr/lib/lua/luci/下有三个目录model、view、controller,它们对应M、V、C。第2.2节介绍了生成的界面怎么传递给client,下面简单介绍生成界面的方法。

Call()方法会调用controller里的函数,主要通过openwrt系统的uci、network、inconfig等工具对系统进行设置,如果需要还会生成新界面。动态生成界面的方法有两种,一是通过cbi()/form()方法,它们利用model中定义的模板map,生成html文件;另一种是通过template()方法,利用view中定义的htm(一种类似html的文件),直接生成界面。

二、用户配置界面

目次布局

模块进口文件status.lua在目次lua\luci\controller\admin下。

function index()

entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true

entry({"admin", "status", "overview"}, template

("admin_status/index"), _("Overview"), 1)

end

在index()函数中,应用entry函数来完成每个模块函数的注册,官方申明文档如下:

entry(path, target, title=nil, order=nil)

path is a table that describes the position in the dispatching tree: For example a path of {"foo", "bar", "baz"} would your node in foo.bar.baz. target describes the action that will be taken when a user requests the node. There are several predefined ones of which the 3 most important (call, template, cbi) are described later on on this page

title defines the title that will be visible to the user in the menu (optional)

order is a number with which nodes on the same level will be sorted in the menu (optional)

此中target首要分为三类:call,template和cbi。

call用来调用函数。

即语句entry({"admin", "status", "iptables"}, call("action_iptables"), _("Firewall"), 2)

Firewall模块调用了action_iptables函数:

function action_iptables()

if luci.http.formvalue("zero") then

……

end

end

template用来调用已有的htm模版,模版目次在lua\luci\view目次下。

即语句entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1)

调用了lua\luci\view\admin_status\index.htm文件来显示。

cbi语句应用cbi模块,这是应用很是频繁也很是便利的模块,在cbi模块中定义各类控件,Luci体系会主动履行大项目组处理惩罚工作。其链接目次在lua\luci\model\cbi下。

显然语句entry({"admin", "status", "processes"}, cbi("admin_status/processes"), _("Processes"), 6)

调用lua\luci\model\cbi\admin_status\processes.lua来实现模块。

cbi模块包含的一系列lua文件构成界面元素的组合,所有cbi模块中的控件都须要写在luci.cbi.Map中。

在cbi.lua文件中封装了所有的控件元素,例如复选框,下拉列表等。

button = s:option(Button, "_button", "Button")

button.inputtitle = translate("exec")

button.inputstyle = "apply"

function button.write(self, section, value)

AbstractValue.write(self, section, value)

local listvalue = luci.fs.readfile("/etc/saveValue") os.execute("touch /etc/testfile%s" %{listvalue})

self.inputtitle = translate("haha")

end

按钮的响应过程为:从saveValue文件中获取内容,然后以获取到的字符串定名创建新文件。

代码如下:

Model:

module("luci.controller.admin.ap",package.seeall)

function index()

entry({"admin","AP"},alias("admin","AP","AP"),_("AP"),10).index=true

entry({"admin", "AP", "AP"}, cbi("admin_ap/basic_settings"), _("Basic settings"), 1)

entry({"admin", "AP", "overview"}, template("admin_ap/index"), _("AP1"), 20)

entry({"admin",

_("Software"), 30)

entry({"admin", "AP", "overview2"}, template("admin_ap/index2"), _("AP2"), 40)

生产实习报告封面及内容模板

end "AP", "packages"}, call("action_packages"),

CBI模块:

require "luci.fs"

local uci = require "luci.model.uci".cursor()

local sys = require "luci.sys"

local wa = require "luci.tools.webadmin"

local fs = require "nixio.fs"

m = Map("basic_settings", "Basic settings")

s = m:section(TypedSection, "basic_settings", "Basic settings") s.anonymous = true

s.addremove = false

s:tab("basic_settings", "Basic settings")

s:tab("security", "Security mode")

s:tab( "mac", "MAC filtering configuration")

s:tab("advance", "Advance settings")

button = s:taboption("basic_settings",Button, "_button", "Button")

button.inputtitle = translate("exec")

button.inputstyle = "apply"

function button.write(self, section, value)

AbstractValue.write(self, section, value) os.execute("touch /home/dyy/abc")

生产实习报告封面及内容模板

end

图一 AP基本配置

生产实习报告封面及内容模板

图二 AP加密设置

图三 AP的MAC设置

生产实习报告封面及内容模板

图四 AP高级设置 配置文件:

config 'basic_settings'

option 'interface' 'wlan x' option 'ssid' 'dewgh6r' option 'hw_mode' '2' option 'channel' '0' option 'auth_algs' '0' option 'select' '0' option 'bridge' 'br0' option 'change' '0'

生产实习报告封面及内容模板

option 'change1' '0'

......

三、实习的心得与体会

经过一个半月的生产实习,我感觉收获颇多,这次实习是我真正意义上接触通信开端也是一次很好的历练。在这一个半月的时间里,我学习了lua语言,制作了用户界面,这让我很有成就感。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩。

更多类似范文
┣ 更多毕业生实习报告格式
┗ 搜索类似范文