ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:605.53KB ,
资源ID:12228993      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12228993.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx

1、操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息 操作系统课程报告 题目:shell编程实现简单的学生信息管理 学院: 信息工程与自动化学院 专业: 计算机科学与技术 班级: 姓名: 学号: 指导老师: 2011年6月6号1、shell编程课程设计的目的和要求 目的:熟悉shell命令的功能和使用方法 掌握shell编程的基本思想 理解shell程序的设计方法 熟悉shell程序的编辑、运行、调试方法与过程 要求:有文本文件student.txt,该文件是所有学生的信息,每个学生存储一行信息, 信息格式如:学号:姓名:性别:专业 如(1

2、01:张三:男:计算机) 设计一个shell,名称为student.sh,该shell完成如下功能: 1)当输入 student.sh -a 101:张三:男:计算机 时,首先判断101记录是否 存在,如果不存在,则把该信息写入文件,如果存在,则给出提示,并输出文 件中学号为101的该行信息 2)当输入 student.sh -d 101 时,首先判断101记录是否存在,如果不存 在,给出提示,如果存在,则提示用户确认是否要删除记录,如用户输入y或 者yes,则删除文件中学号为101的该行信息,如果用户输入n或no时,则不 做删除操作 3)当输入 student.sh -s 101 时,首先判

3、断101记录是否存在,如果不存 在,给出提示,如果存在,则输出文件中学号为101的该行信息 4)当输入 student.sh时,输出文件的全部内容 5)当用户输入的选项不正确时,给出错误提示,并输入该shell的用法,如 (student.sh -q 123456)二、实验所用仪器、材料 微型计算机一台 Linux操作系统三、shell编程简介 shell是一种命令解释程序(命令解释器),shell解释用户输入的命令行,提交系统内核处理,并将结果返回给用户。与Linux命令一样都是实用程序,但两者又有区别。一旦用户注册到系统后,shell就被系统装入内存,并一直运行到用户退出系统之止;而一般命

4、令仅当被调用时,才由系统装入内存执行。shell本身也是一种可编程的程序设计语言。用shell写的程序(shell脚本)相当于dos/windows下的批处理文件,它可以简单到只有一条命令,也可以复杂到包括大量循环、条件语句、数学运算、控制结构,也可以是介于两者之间的程序。Shell的启动和建立四、sheel程序结构设计Shell 脚本本身就是程序,是用shell命令构成的,小规模、结构化、模块化、程序设计。命令: echo 输出信息 Read 输入信息 read+变量名 Sleep 休眠 sleep+秒数在终端上算数表达式的写法: echo $(1*2*3)这是整数算数不能带小数点/ :除法

5、 % :余Sheel 脚本格式:第一行格式 #!/bin/sh有三种结构 顺序结构 分支结构 循环结构顺序结构Wait命令 保证进程同步等待一个子进程结束 多个并发就用多个wait分支结构 If 判断 :then T块 Else F块 fi判断 test语句 test表达式 = 表达式表达式进行文件判断 -f 文件名 (检测该文件是否存在且为普通文件) -d 目录名 -r 可读 -w 可写 -x 可执行五、程序设程序为bash程序,进行修改的txt文件为student.txt,在Shell程序运行的目录下建立一个temp目录,用来保存运行过程中的临时文件。包含有8个函数,每个函数实现相应的功能

6、:set_menu_choice()显示一个界面菜单,提示所能进行的操作以及选项的使用格式。同时获得输入的内容,存放在choice。get_confirm()判断输入是否为y|yes|Y|Yes|YES,是则返回0,表示删除;如果n|no|N|No|NO,则表示取消删除操作。insert_student(): 将所有输入的信息通过重定向写入student.txt。check_student():使用awk命令以“:”为分隔符将输入的学号与txt文件的学号进行匹配;如果该学号存在,则设存在标记student_existingFlag=y;否则student_existingFlag=n。stat

7、_student()调用check_student(),根据存在标记student_existingFlag,如果为n,则输出学生信息不存在;如果为y,则通过awk命令输出学号所对应的列。add_student()调用check_student(),判断student_existingFlag是否为y,如果为y则显示该学生信息已存在;否则调用insert_student()将学生信息插入student.txt。delete_student()调用check_student(),判断student_existingFlag是否为n,如果为n,则显示该学生信息不存在;否则调用confirm_del

8、ete确定是否删除,如果确定则调用delete_student()删除学生信息。delete_infomation()删除操作,使用awk命令将student.txt文件中学号不等于输入的学号的所有列重定向输出到临时文件temp_file中,再将temp_file中的内容通过cp命令复制到student.txt文件中,覆盖原来的内容,即完成删除操作。最后主程序,首先连接student.txt文件,并清屏。设置一个while循环,当退出标记exit不为y时,进行循环获取输入的选项;调用set_menu_choice()设置界面,通过case命令判断输入choice_input,当为a时,调用ad

9、d_student(),添加学生信息;当为d时,调用delete_infomation(),删除学生信息;当为s时,调用stat_student(),显示当前学号对应的学生信息;如果输入的是其他内容,则给出提示信息,重新输入。六、shell程序调试Shell程序的调试主要是利用bash命令解释程序的选择项。调用bash的形式是:bash -选择项Shell程序文件名几个常用的选择项是:-e 如果一个命令失败就立即退出。-n 读入命令但是不执行它们。-u 置换时把未设置的变量看做出错。-v 当读入Shell输入行时把它们显示出来。-x 执行命令时把命令和它们的参数显示出来。七、程序源代码及运行结

10、果截图 #! /bin/bash #简单的学生信息管理程序 #fileName:student.sh #学生的信息存放在student.txt中 #需要在当前运行目录建立temp目录存放临时文件 #Usage:./student.sh #交互式执行: -a 学号:姓名:性别:专业 添加学生信息 #交互式执行: -s 学号 显示对应学生信息 #交互式执行: -d 学号 删除对应学生信息 #交互式执行: -q(-Q) 退出管理程序 #Author:Libaocan menu_choice=; student_infomation=; student_existingFlag=n current_s

11、tudent=; student_file=student.txt; temp_file=./temp/student.$; trap rm -f $temp_file EXIT; set_menu_choice() clear; echo Options:-; echo echo a) Add new student infomation echo eg:-a 学号:姓名:性别:专业 echo s) Stat student infomation echo eg:-s 学号 echo d) Delete specified student infomation echo eg:-d 学号 e

12、cho l) List infomation of all students stored echo eg:-l echo q) Quit echo echo -e Please enter choice then press returnnc; read choice; menu_choice=echo $choice|awk print $1|sed s/-/g student_infomation=echo $choice|awk print $2 current_student=echo $student_infomation|awk -F: printf(%s,$1); return

13、; get_confirm() echo -e Are you sure? c; while true do read x case $x in y | yes | Y | Yes | YES ) return 0; n | no | N | No | NO ) echo; echo Cancelled return 1; *) echo Please enter yes or no ; esac done insert_student() echo $* $student_file; return; check_student() student_no=$1; student_existin

14、gFlag=awk -F: if($1 = $student_no) printf(%s,y) $student_file stat_student() check_student $current_student; if $student_existingFlag = n ;then echo 学号为 $current_student 的学生信息不存在 else awk -F: if($1 = $current_student) print $0 $student_file; fi return; add_student() check_student $current_student; i

15、f $student_existingFlag = y ;then echo 学号为 $current_student 的学生信息已经存在,信息为: stat_student $current_student; else insert_student $* echo student infomation $* added; fi return; delete_student() check_student $current_student; if $student_existingFlag = n ;then echo 学号为 $current_student 的学生信息不存在 else if

16、 get_confirm;then delete_infomation $current_student; fi fi echo 成功删除学号为$current_student的学生信息 return; delete_infomation() awk -F: if($1 != $current_student) print $0 $student_file$temp_file; cp $temp_file $student_file list_students() sed -n p $student_file; return; rm -f $temp_file; if ! -f $studen

17、t_file ;then touch $student_file fi clear echo echo sleep 1 quit=n; while $quit != y ;do set_menu_choice; case $menu_choice in a) add_student $student_infomation sleep 2; d) delete_student $current_student sleep 2; s) stat_student $current_student sleep 2; l) list_students sleep 2; q|Q) quit=y; *) e

18、cho Sorry,choice not recognized sleep 2; esac done echo removing temp file. rm -rf $temp_file echo Finished exit 0程序运行主界面 查看0001的个人信息 添加学生 0004:libaocan:n:jk 查看全部学生信息 删除0006 退出程序 八、实验总结 这个学期我们学习了操作系统这门课程, 课程知识的实用性很强,因此实验就显得非常重要,我们做了Linux操作系统安装、Linux下网络命令的使用、Linux下telnet、ftp、ssh网络配置,shell编程四个实验。刚开始做实

19、验的时候,由于自己的理论知识基础不好,在实验过程遇到了许多的难题,也使我感到理论知识的重要性。但是我并没有气垒,在实验中发现问题,自己看书,独立思考,最终解决问题,从而也就加深我对课本理论知识的理解,达到了“双赢”的效果。学习Linux和学习其他操作系统一样,要学会分析,遇到问题不要怕、不要担心,要分析问题的原因,故障出现的原因,以及解决方法。同一个故障、错误,可能会有不同的解决方法。要分析问题,获取不同的解决方法,提高自己的能力。最后,学习Linux学习要有耐心,不要急躁,很多人因为出现错误,一时间解决不了,就放弃了。错误是在所难免的没错误就不正常了,没错误只能说明没有在使用。遇到错误要仔细分原因,要相信问题一定能解决,不惜花时间去研究它。实验过程中培养了我在实践中研究问题,分析问题和解决问题的能力以及培养了良好的编程素质,提高了自己动手能力,培养理论联系实际的作风,增强创新意识。九、参考文献Linux命令、编辑器与shell编程 杨明军 王风芹 清华大学出本社Shell脚本学习指南 罗宾 比博 机械工业出版社Linux教程 李善平 施韦 林欣 译 清华大学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1