




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
桂林电子科技大学信息科技学院实训报告 桂林电子科技大学信息科技学院嵌入式操作系统实训报告学 号 1052100516 姓 名 陈巨华 指导教师:韩桂明 张锟 赵志鹏 2014 年 4 月 7日实训题目:机房辅助管理系统设计 1 系统设计1.1 设计要求1.1.1 设计任务 在Linux环境下利用 shell设计和实现机房的辅助管理系统,编辑生成上机课表并自动生成上机用户,进行用户课前和课后的管理。1.1.2 性能指标要求 1定义起始登陆界面 能显示三种信息:能根据登录用户显示欢迎对象、根据系统时间显示欢迎内容个性化的欢迎信息;有系统初始化、系统管理和退出三个菜单项操作提示菜单;能显示当前上课的具体时间和系统状态提示信息。2系统初始化生成本机房的上机安排表:上机安排表至少包含十条记录,每条记录应有课程 、班级、起至周、上课节等内容,能对安排表进行显示、添加、删除、排序。生成本机房的上机用户:根据上机安排表自动生成对应的上机用户,一个用户对应于安排表的一条记录,且账号= 班级+课程;密码=班级+课程号3课前准备为用户创建一个工作环境:工作空间和用户资料,挂载u盘,以便使用资料。4课后整理:释放用户空间,进行资料收集,卸载u盘,方便资料携带。1.2 设计思路及设计框图1.2.1设计思路在linux系统中,shell脚本是个重要的工具,利用shell脚本,我们可以编写一个简单的系统,实现基本的功能,如登录,编辑文件,生成数据等。应用到该系统中,可以编写不同的登录类型,在不同的类型里又可以实现不同的功能,比如教师登录可以对上机安排表进行管理,如显示、添加、删除、排序等。学生登录后可以对自己的工作空间进行管理,如创建,挂载,打包压缩,卸载等。同时,根据系统的时间,可以提示不同的内容,如第几节课,当前的用户等等。1.2.2总体设计框图 主界面学生教师删除添加排序显示课前课后2 各个模块程序的设计2.1主界面模块 主界面可以根据当前的时间提示现在是第几节课或者是休息时间,右下角还显示了系统当前的时间,方便查看。这个界面提供了登录类型的选项,通过case语句选择相应的类型。教师登录要根据tea.txt中储存的账号来判断,而学生登录的上机用户是自动生成的,根据上机安排表,用户名是班级加课程名,密码是班级加上课程序号。在源代码中,实现起来很简单,date +%H是当前的小时,如果%m是分钟,加在一起可以用来判断当前的时间。选择就是利用case语句,选择相应的登录类型,还提供了一个退出程序的选项在实际应用中还是有自己的价值的。这次的实训中,我的设计是各个模块在不同的shell脚本里,这样编写的时候可以省却一点麻烦,要不使用break会有点繁琐。2.2教师管理模块 教师登录先是经过一个登录界面,登录的账号储存在事先编辑的tea.txt中,在输入密码的过程中,采用了-s的一个控制,使密码保密性提高,防止泄露。如果账号密码正确的话,就可以跳到这个界面。界面上方显示欢迎当前用户。这个是在teecher.sh中编程的,首先通过一个do循环来读取键盘上输入的选项,这样可以不用输入回车符,同时采用了一个echo -e 033?25l指令隐藏了鼠标,使界面更加美观。输入数字后,利用case选择相应的功能,可以显示课程,显示上机用户,添加课程,排序,删除课程等。添加课程时,程序会对subject.txt和user.txt同时修改,添加课程的同时,就生成了相应的上机用户。显示用户时,会对密码进行隐藏。删除课程的同时,也会删除相应的上机用户。返回和退出就是回到主界面和退出程序。排序有两种模式,一个是按班级排序,一个是按课号排序。在使用各个功能的同时,为了显示方便使用了界面显示的子函数,配合clear使用,是代码更加简洁。 最后,程序还提供了返回初始界面和退出程序的必须功能2.3学生模块 学生模块就先要经过一个类似教师登录的界面,会有提示语句显示用户和密码应该是什么。与user.txt内容核对成功后来到该界面。键盘输入值后,同样的利用case语句选择相应的功能,这次我在程序里提供了两个功能,一个是课前准备,另一个是课后管理。课前准备有两个操作,一个是挂载u盘,通过mount语句来实现,挂载后可以在使用u盘里的数据。值得注意的地方是在/mnt/目录下应该要先建立好usb这个目录,要不然挂载会失败。另一个操作是自动生成以当前用户名为名称的目录,成功的话会有语句提示,让用户在该目录下经过课业活动。课后整理相对于课前的操作,就是卸载u盘,打包压缩工作目录以便提交或带走,压缩的名字就是当前的用户名。之后删除原来的工作目录,以释放空间。提供了选项返回初始界面。3 调试过程在做这个系统的时候,首先要对shell里的指令有足够的了解。在这个脚本里,主要运动了do,case,if这几个循环和条件语句,用于判断和查找等。为了使用方便,把界面做成了一个子函数,需要的时候使用clear加界面函数,加上显示的内容会比较方便。选择的时候,使用了while do语句,这样可以实现不用回车符就做出选择,在实际应用中比较方便。在教师管理模块的设计中,原本采用的是if语句,但是在实际应用中觉得使用if语句的话,有点繁琐,所以采用了case语句,但是整体程序写长了,最后结尾的时候,与前面的if,do,case这几个配结尾的时候有点繁琐,对称起来有时不对。添加的时候,通过read读取键盘上输入的值,然后把变量分别输入到subject.txt和user.txt中。删除的话,先是通过do循环查找到相应的条目,通过sed -i语句删除这个信息。排序可以有两种模式,一个是按班级来排,一个是按照课程号来拍,sort -t -k s,这个语句中s就是排序的根据,可以是1或者2,相当于按照第一列元素还是第二列元素来排。在学生模块做的内容较简单,通过user.txt来登录用户,课前准备是mount和nkdir来挂载和生成目录,$用户名就是目录的名字,加上提示语句可以让界面显得友好。课后管理就是卸载u盘以及删除目录来释放空间,还把原来的目录内容打包压缩,方便后续的操作。 经过反复的调试,更正了不少程序中的错误,最终成功运行了系统,实现了基本的功能,因为能力有限,没有对etc下的passwd文件进行进一步的操作,有些可惜。4 功能测试测试仪器与设备 个人电脑一台VM虚拟机软件 一套RedHatLinux操作系统5 实训心得体会通过这次实训,我深刻地了解到了自己的不足,以前也没有接触过这个题目,而且做实训的时候感觉linux已经离自己很久了似的,知识点都不怎么记得起来了。在仔细阅读了题目的要求后,自己整理了下思路,大概有个一个整体的思路。以前上课时,老师就教过使用shell脚本来编写一些程序,所以觉得这个机房管理系统的设计做起来应该很简单。自己本来的设计是把所有的代码都写在一个脚本里,认为这样一目了然 ,但在具体做的时候发现自己学习得不够扎实,很多指令看起来简单,以为自己掌握得很成熟了,但是用起来才发现会犯很多错误,同时也因为粗心,会漏写某些符号。由于一些fi done添加的繁琐,所以后来决定把模块分开写在不同的脚本里,通过sh 指令来链接,加上break来返回即可。本来以为shell相比起c语言,没有那么严谨,但是如果漏了关键的字符,比如; : 等,就会造成程序的错误,或者是功能实现的错误,shell的变量看起来简单,使用还是要注意才可以的。另一方面,由于自己编写的程序不是很多,所以在做这个系统的时候,源代码写得很累赘,比如在排序的时候,使用了两个情况来分别排序,如果写在一个程序段里,通过键盘来控制排序类型会更加简洁点。再使用子函数方面,这次只是在显示界面方面采用了,如果是写在一个脚本里,通过调用子函数来实现功能会更加简洁。本次的实训,整体来说,是做出了这个程序,但是其中的不足之处实在很多,但是在编程思想上更加的严谨了,自己在今后的学习中还应该更加具有钻研的精神,只有自己不断的去做,去总结,才能在把linux的知识牢牢记在心里,才能走得更远。6 参考文献 (1)嵌入式Linux 应用编程 许信顺 贾智平 机械工业出版社附录程序清单#!/bin/bashclearecho *echo * *echo * *echo * choose your identity: *echo * 1.teacher *echo * 2.student *echo * 3.exit *echo * *echo *echo -ne E8;26Hdate +%H:%mecho -ne E2;3Hwelcome to this system!xiaoshi=date +%H%m if $xiaoshi -lt 0900 ; then echo -ne E3;3Hnow,it is not a class time! elif $xiaoshi -lt 0950 ; then echo -ne E3;3Hnow,it is time for 1st class! elif $xiaoshi -lt 1035 ; then echo -ne E3;3Hnow,it is time for 2nd class! elif $xiaoshi -lt 1145 ; then echo -ne E3;3Hnow,it is time for 3rd class! elif $xiaoshi -lt 1235 ; then echo -ne E3;3Hnow,it is time for 4th class! elif $xiaoshi -lt 1430 ; then echo -ne E3;3Hnow,it is time for rest! elif $xiaoshi -lt 1520 ; then echo -ne E3;3Hnow,it is time for 5th class! elif $xiaoshi -lt 1605 ; then echo -ne E3;3Hnow,it is time for 6th class! elif $xiaoshi -lt 1715 ; then echo -ne E3;3Hnow,it is time for 7th class! elif $xiaoshi -lt 1805 ; then echo -ne E3;3Hnow,it is time for 8th class! else echo -ne E3;3Hnow,no class for this time! fiecho -e 033?25lstty igncrwhile read -s -n1 mdocase $m in1)sh teacher.sh;2)sh student.sh;3)clear echo -ne 033?25h stty igncr exit ;*)sh main.shesacdone#!/bin/bashpan()clearecho *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo *echo -ne E2;3Hwelcome to this system! TEA=tea.txtSBJ=subject.txtUSR=user.txtwhile truedo clear pan stty -igncr echo -ne E5;14HName: read N echo -ne E7;14HPasswd: read -s P stty igncr if -s $TEA then while read NAME PASSWD do flag_1=0 if $NAME = $N & $PASSWD = $P then flag_1=1 break fi done $TEA if $flag_1 = 1 then while true do echo -e 033?25l clear pan echo -ne E3;3HWelcom $N echo -ne E5;11H1.DisplaySubject echo -ne E7;11H2.DislayUser echo -ne E9;11H3.AddSubject echo -ne E11;11H4.SortSubject(class) echo -ne E13;11H5.SortSubject(subject) echo -ne E15;11H6.DeleSubject echo -ne E17;11H7.Back echo -ne E19;11H8.Exit while read -n1 -s a do case $a in 1) if -s $STU then clear echo Class No Sbj BW EW Day while read SUB INFOR do echo $SUB $INFOR done $SBJ stty -igncr read -s stty igncr break 1 fi ; 2) if -s $usr then clear echo User while read US MIMA do echo $US done $SBJ echo $cls1$sbj $cls1$snu $USR echo -ne E12;12HSuccess Save! stty igncr sleep 3 break; 4) clear sort -t -k 1 -o $SBJ $SBJ echo Class No Sbj BW EW Day while read SUB INFOR do echo $SUB $INFOR done $SBJ stty -igncr read -s stty igncr break 1 ; 5) clear sort -t -k 2 -o $SBJ $SBJ echo Class No Sbj BW EW Day while read SUB INFOR do echo $SUB $INFOR done $SBJ stty -igncr read -s stty igncr break 1 ; 6) clear pan echo -ne E5;3HClass and the SbjNum: stty -igncr read shanchu stty igncr while read CLASS SBN SNA INFOR do tem=0 if $CLASS$SBN = $shanchu then sed -i /$CLASS $SBN/d $SBJ tem=1 fi done $SBJ while read US MIM do if $MIM = $shanchu then sed -i /$US $MIM/d $USR fi done $USR case $tem in 1) echo -e E13;11HSuccess Delete! sleep 2 break ; 0) echo -e E13;11HERROR! sleep 1 break ; esac; 7) clear sh main.sh; # break 3 ; 8) clear # break 4 echo -ne 033?25h stty -igncr exit 0; *) clear pan echo -ne E13;11HERROR! sleep 1 break esac done done fi fi done#!/bin/bashmenu()clearecho *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo * *echo *echo -ne E2;3Hwelcome to this system!USR=user.txtSBJ=subject.txtwhile true do clear menu stty -igncr echo -ne E5;6HUser(class+Sbj): read N echo -ne E7;6HPasswd(class+SNo): read -s P stty igncr if -s $USR then while read NAME PASSWD do flag_1=0 if $NAME = $N & $PASSWD = $P then flag_1=1 br
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国汽配行业版软件行业市场调查、投资前景及策略咨询报告
- 2025年中国模拟光柱指示仪表行业投资前景及策略咨询研究报告
- 2025年中国木旋转托盘火锅炉套行业投资前景及策略咨询研究报告
- 2025年中国数码成像证照卡行业市场调查、投资前景及策略咨询报告
- 2025年中国扣件商标行业市场调查、投资前景及策略咨询报告
- 公司自动停车场管理制度
- 培训班安全稳定管理制度
- 加油站检查维修管理制度
- 分公司一般财务管理制度
- 施工现场塔吊管理制度
- 民法典案例解读PPT
- 安全生产知识应知应会
- 质 量 管 理 体 系 认 证审核报告(模板)
- 肿瘤科新护士入科培训和护理常规
- 体育器材采购设备清单
- 第4章 颌位(双语)
- 二手车鉴定评估报告书最终
- 电影场记表(双机位)
- 塔吊负荷试验方案
- 电子商务专业“产教融合、五双并行”人才培养 模式的实践研究课题论文开题结题中期研究报告(经验交流)
- 购买社区基本公共养老、青少年活动服务实施方案
评论
0/150
提交评论