Linux嵌入式实训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
桂林电子科技大学信息科技学院《嵌入式操作系统实训报告》学号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来挂载和生成目录,$用户名就是目录的名字,加上提示语句可以让界面显得友好。课后管理