《嵌入式操作系统》实训报告.docx
- 文档编号:6400478
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:19
- 大小:132.26KB
《嵌入式操作系统》实训报告.docx
《《嵌入式操作系统》实训报告.docx》由会员分享,可在线阅读,更多相关《《嵌入式操作系统》实训报告.docx(19页珍藏版)》请在冰豆网上搜索。
《嵌入式操作系统》实训报告
桂林电子科技大学信息科技学院
《嵌入式操作系统》实训报告
学号**********
姓名殷浩
指导教师:
韩桂明,赵志鹏,张锟
2014年4月6日
实训题目:
机房辅助管理系统
1系统设计
1.1设计要求
1.1.1设计任务
以VMware虚拟机软件和Redhat9.0操作系统为平台,使用shell脚本编写程序,编辑生成上机课表并自动生成上机用户,进行用户课前和课后的管理
1.1.2性能指标要求
①定义起始登陆界面,要求有主菜单选择不同功能。
②根据登录用户显示欢迎对象、根据系统时间显示欢迎内容个性化的欢迎信息,有系统初始化、系统管理和退出三个菜单项操作提示菜单,能显示当前上课的具体时间和系统当前状态。
③生成本机房的上机安排表,安排表至少包含十条记录(包括课程、上课班级、起始周、节数等信息)能对安排表进行显示、添加、删除、修改、复制、插入、排序等操作。
④生成本机房的上机用户:
根据上机安排表自动生成对应的上机用户,一个用户对应于安排表的一条记录,且账号=班级+课程;密码=班级+课程号。
⑤课前准备:
包括为用户创建一个工作环境:
工作空间和用户资料、挂载U盘、拷贝上课文件资料、设置文件目录的权限属性等。
⑥课后整理:
释放用户空间,更改文件目录权限,打包压缩文件,卸载U盘,删除用户目录下创建的工作目录等。
1.2设计思路及设计框图
1.2.1设计思路
对于题目的理解,我决定这次机房管理分作两个部分,分别是教师管理,和学生用户管理。
进入教师界面后,会相应的有密码设置,系统初始化,以及对学生资料的设置。
而在系统初始化中,要有对一个课程安排表的一些操作,添加删除显示等等。
在学生资料界面中,同样也是对学生资料进行添加删除显示等。
教师管理中的学生资料很重要,因为学生用户输入的账号和密码,是与教师管理的学生资料对应的,账号是要从资料中读取班级和课程,密码则是班级和课号。
在进入学生管理界面后,需要有以下的一些操作,比如创建一个工作空间,能够对一些文件夹进行压缩打包,关闭一个文件夹的使用权限,以及U盘挂载等等。
1.2.2总体设计框图
系统流程图
2各个模块程序的设计
2.1登陆界面模块
登陆界面可以根据登录用户显示欢迎对象、根据系统时间显示欢迎内容个性化的欢迎信息,有系统初始化、系统管理和退出三个菜单项操作提示菜单,能显示当前上课的具体时间和系统当前状态
2.2管理员模块
2.2.1管理员欢迎界面
从主界面登录到管理员界面需要输入帐号和密码,帐号和密码固定为admin和admin,如果想修改,可以进入程序内修改即可。
管理员可以对学生的课程作出安排,并且可以查看修改安排表。
同时也能对上课学生的信息进行查看、添加、修改、删除。
2.2.2安排表管理模块
管理员可以对学生上课的安排表进行查看、添加、修改、删除。
2.2.3学生资料管理模块
管理员可以对上课学生的信息进行查看、添加、修改、删除。
2.3学生模块
2.3.1学生欢迎界面模块
学生登陆后可以显示对应的问候语,同时能显示出当前的时间。
2.3.2学生课前模块
学生在上课之前可以先创建工作环境,创建对应的文件夹和上课所需的文件。
2.3.2学生课后模块
下课后,学生可以对上课做的东西进行打包并复制到U盘,同时删除自己的文件,避免影响后面来上课的学生。
3调试过程
编写程序时完全不知道从哪里下手,无奈只能去查找网上的资料,翻看了好几本书,但在编程过程中还是遇到了很多问题。
首先执行不了的是删除程序,我用的是case语句,用户可以输入想要删除的课程的所有相关信息,比如输入math,那么系统会找到math这个课程的所有相关信息,但是运行后发现会显示错误,并且还把所有课程安排都删除了。
后来参考了别的同学的程序,知道可以用sed’’’d’这样的语句进行删除,但是删除只能删除一整行,而不能根据之前的想法找到再删除,并且上网查找,也找不到更好的删除方式,于是就用了这样的方法,并且做了修改,后来就能成功删除了。
另外在整个程序中,纠结了最久的就是学生用户登陆输入账号和密码这一块。
这一部分需要用到一个txt文件,我把教师界面的学生信息都放到这个txt文件中,之后在学生管理方面,我用了一个sh文件对txt文件中的每一行的班级、课程、课号进行了读取,使它们分别等于一些变量,之后再在学生登陆的时候用了case语句,判断输入的变量是否与班级、课程、课号构成的账号和密码相对应。
在做完这些工作以后,运行发现无论怎么输入,都会显示error。
第一次检查程序的时候发现是读取txt的sh文件并米有输入#!
/bin/sh,所以这个文件便执行不了。
再运行一次以后,发现还是输入错误,若是一直按回车键,结果却又是正确的,可是反复检查,发现并没有语法错误,逻辑也都对着。
后来找了个同样是这种方法并且能运行正确的同学帮我看了程序,一开始我们把var{[]}中括号的值全部减小了1,再运行的时候发现还是不对,最后我们又检查了一下case语句的所在位置,猜想可能是判断case$zh$pwin中的变量出现了问题,于是试着把变量输入了两回,$zhzh$pwpw,再运行的时候,就成功了。
还有最后一个问题,就是学生管理界面中的删除文件夹这一块。
在执行删除用户文件夹前,我先创建一个用户文件夹,那么到要删除的时候就该是删除此文件夹,可是我的程序运行出来以后,删除的是上一次创建的用户文件夹,而这一次创建的用户文件夹则在下次删除时才被删除。
但是在检查程序的时候,也没有看出什么不正确,试过把user>user.txt这个语句给屏蔽掉,但是出来的结果是把该用户文件夹同一个目录下的所有的文件和文件夹会全部删去,所以删除这个部分还是并没有最终成功。
4功能测试
4.1测试仪器与设备
笔记本
VMware虚拟机
Redhat9.0操作系统
4.2性能指标测试
1主程序测试:
运行main.sh,输入1时能进入管理员界面的密码输入功能,并且输入登陆以后,会显示用户名为欢迎对象。
输入2时进入学生管理界面的密码输入功能,且密码输入正确的话会进入管理界面,如果不正确则会显示错误并回到main界面。
按3时会退出管理系统。
②管理员界面测试:
当管理登陆后,选择1可以对学生的安排表进行查看、修改、添加、删除;选择2可以对上课学生的信息进行修改、删除等操作。
③学生界面测试:
按1是能够在当前目录下建立一个学生用户的文件夹,由if语句提问是否要在这个文件夹里新建文件或文件夹,选择是以后能建立在用户文件夹里,若选择不是则退回到学生管理界面。
按2则是可以对任一文件夹进行打包。
按3是能够进行U盘挂载,会首先先生成一个usb为名字的文件夹,之后U盘中的所有文件夹会在该文件夹中显示。
按4则是能够删除1时所新建的学生用户文件夹。
按5则是退回到main的界面。
5实训心得体会
刚拿到题目的时候其实很迷惑,不太清楚究竟是要分多少个方面来进行编程,以及究竟是要实现多少功能。
刚开始按照自己的理解,我只做了在一个界面下包括密码设置,系统初始化和学生资料设置,之后后来去实验室跟同学聊起题目的时候,才知道题目上的上机用户应该是指学生,所以还要创建一个学生界面,而且学生界面登陆账号和密码就是教师管理下的学生资料设置中的班级+课程,班级+课号。
另外学生界面中需要有一些功能,分别是创建用户空间,压缩,关闭使用权等,后来就又重新写了一份整个系统的各部分结构设计图。
这次实训做下来,其实很多想法都是用到像c语言中的思想,因为同样都有while,case,if语句,虽然只是命令的表示不一样,但是思想是相同的。
利用这些,就基本把本次实训的总体框架构建了出来。
另外在这次实训中,我还学会了一种新的思想,就是可以读取一个文本文件中的内容,以及添加内容,删除内容等到文本文件中。
首先要先创建一个文本文件,之后用read语句,可以读取文本中的内容,用echo“”>>txt还可以把新添加的内容添加到文本中。
通过上网查询一些指令,使用一些命令,让我更熟悉一些命令的使用,比如复制文件夹cp-r,删除文件或文件夹rm-rf,改变文件夹的权限chmod***。
在程序中,我多次用到了echo-e"\E[031;42m",这个语句是改变窗口颜色的,只要修改里面的数值,就可以变出不同的颜色。
这次实训将上学期所学到的嵌入式理论融入到实际中,让我加深了不少印象。
在之前学完嵌入式理论课后,我个人感觉已经把这个基础都差不多弄懂了,可在实训中我才深深的明白自己掌握的不够,各种语法,形式不能自如的运用,还是需要多下心思研究,一门语言是十分深奥的,需要很多时间的铺垫才能很好的掌握。
这次的实训让我收获不少,不仅巩固了我的理论知识,同时增强了我的动手能力!
6参考文献
(1)《嵌入式Linux应用编程》许信顺贾智平机械工业出版社.
附录
附录:
程序清单
主界面程序:
#!
/bin/sh
echo-e"\E[031;42m"
flag=1
while(($flag))
do
echo"***********************************"
echo"Welcome"
echo"1.admin2.student"
echo"3.exit"
echo"***********************************"
echo"`date+%D``date+%T`"
readu
case$uin
1)
./teacher.sh
;;
2)
./xspassword.sh
echo"inputyourclass+course"
readzh
echo"inputyourpassword"
read-sp
exportzh
case$zhzh$pwpwin
$A$B)
./xueshengjiemian.sh
break
;;
$C$D)
./xueshengjiemian.sh
break
;;
$E$F)
./xuehsengjiemian.sh
break
;;
$G$H)
./xueshengjiemian.sh
break
;;
$I$J)
./xueshengjiemian.sh
break
;;
$K$L)
./xueshengjiemian.sh
break
;;
$O$P)
./xuehsengjiemian.sh
break
;;
$Q$R)
./xuehsengjiemian.sh
break
;;
$S$T)
./xueshengjiemian.sh
break
;;
$U$W)
./xueshengjiemian.sh
break
;;
*)
echoerror
;;
esac
;;
3)
echo-e"\E[030;47m"
flag=0
exit0
;;
esac
done
管理员登录程序:
#!
/bin/sh
echo-e"\E[031;40m"
echo"inputyourname"
readx
exportx
echo"inputpassword"
read-sz
exportz
if["$x"="admin"]&&["$z"="admin"]
then
./zhujiemian.sh
else
echo"yourpasswordiswrong!
"
./teacher.sh
Fi
管理员界面程序:
#!
/bin/sh
echo"***********************************"
echo"$tn,welcometousethecomputer"
echo"************mainmenu**************"
echo"1.aipaibiao"
echo"2.xueshengziliao"
echo"3.exit"
echo"***********************************"
echo"***********************************"
reada
case$ain
1)
./chushihua1.sh
;;
2)
./chuangjianxinyonghu.sh
;;
3)
./main.sh
;;
*)
echo"error"
;;
esac
安排表管理程序:
#!
/bin/sh
flag=1
flag2=1
flag3=1
N=n
while(($flag))
do
echo"**************************"
echo"*******kechenganpai*************"
echo"1.add2.display3.delete"
echo"4.modify5.copy6.exit"
echo"***********************************"
readb
case$bin
1)
echo"course"
readcourse
echo"class"
readclass
echo"start"
readstart
echo"end"
readend
echo"num"
readnum
echo"courseclassstartendnum"
echo"$course$class$start$end$num"
echo"$course$class$start$end$num">>anpaibiao.txt
;;
2)
echo"courseclassstartendnum"
cat<$(pwd)/anpaibiao.txt
;;
3)
catanpaibiao.txt
echo"inputthelinetobedeleted"
readlined
sed''$lined'd'anpaibiao.txt>anpaibiao1.txt
catanpaibiao1.txt
mvanpaibiao1.txtanpaibiao.txt
;;
4)
./modify.sh
;;
5)
while(($flag3))
do
echo"inputthefilewayandnameyouwanttocopy"
readfn
echo"inputthetemp"
readtemp
cp-r/home/$fn/$temp
ls/$temp
echo"continuecopy?
[y/n]"
readyn
if[$yn=$N]
then
flag3=0
fi
done
;;
6)
flag=0
./zhujiemian.sh
;;
esac
done
安排表修改程序:
#!
/bin/bash
SAVEDIFS=$IFS
IFS=:
flag4=1
Y=y
N=n
while(($flag4))
do
catanpaibiao.txt
echo"Pleaseinputlineno.tobechanged:
"
readno
echo"Pleaseinputnewinfomationinline:
"
readb
IFS=$SAVEFIDFS
sed''$no'c\'$b''anpaibiao.txt>anpaibiao2.txt
catanpaibiao2.txt
mvanpaibiao2.txtanpaibiao.txt
echo"continuemodify?
[y/n]"
readyn
if[$yn=$N]
then
flag4=0
./chushihua.sh
fi
done
学生信息管理程序:
#!
/bin/sh
SAVEDIFS=$IFS
flag3=1
flag4=1
N=n
while(($flag3))
do
echo"*************************************"
echo"*informationsofstudents*"
echo"*************************************"
echo"*1.addstudent2.modify*"
echo"*3.display4.delete*"
echo"*5.exit*"
echo"*************************************"
readsg
case$sgin
1)
echo"class"
readclass
echo"name"
readname
echo"ID"
readid
echo"seat"
readseat
echo"course"
readcourse
echo"coursenum"
readcnum
echo"classnameIDseatcoursecoursenum"
echo"$class$name$id$seat$course$cnum"
echo"$class$name$id$seat$course$cnum">>studentinf.txt
;;
2)
while(($flag4))
do
catstudentinf.txt
echo"Pleaseinputlineno.tobechanged:
"
readn
echo"Pleaseinputnewinfomationinline:
"
readb
IFS=$SAVEFIDFS
sed''$n'c\'$b''studentinf.txt>studentinf2.txt
catstudentinf2.txt
mvstudentinf2.txtstudentinf.txt
echo"continuemodify?
[y/n]"
readyn
if[$yn=$N]
then
flag4=0
fi
done
;;
3)
echo"classnameIDseatcoursecnum"
cat<$(pwd)/studentinf.txt
;;
4)
catstudentinf.txt
echo"seattobedeleted"
readseat
sed''$seat'd'studentinf.txt>studentinf1.txt
catstudentinf1.txt
mvstudentinf1.txtstudentinf.txt
;;
5)
flag3=0
./zhujiemian.sh
;;
esac
done
学生界面程序:
#!
/bin/sh
echo-e"\E[035;47m"
readuser flag=1 while(($flag)) do echo"*******************************************" echo"hello$zh,welcometouse" echo"*******************************************" echo"*1.beforeclasspression*" echo"*3.usb4.deletefolder*" echo"*5.exit*" echo"*******************************************" echo"`date+%D``date+%T`" reada case$ain 1) ./before.sh ;; 2) ls$(pwd) echo"inputthefiletobetared" readft echo"changeandnewgeneratedocumentationtopackagecompressionsuccess" tar-zcvf$ft.tar.gz$(pwd)/$ft/* ;; 3) ./upan.sh ;; 4) rm-rf$(pwd)/$user* echo"deletesuccess" ls$(pwd) ;; 5) flag=0 ./main.sh ;; esac done 学生课前程序: #! /bin/sh Y=y rm-rfusers.txt touchusers.txt echo"inputtheuser'sname" read-p"username: "user mkdir$(pwd)/$user echo"$user">>users.txt echo"doyouwanttoaddsomethinginit? [y/n]" readyn if[$yn=$Y] then cd$(pwd)/$user echo"mkdirafoldername" reada mkdir$(pwd)/$a echo"touchafilename" readb touch$b fi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式操作系统 嵌入式 操作系统 报告