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

上传人:b****1 文档编号:2350878 上传时间:2023-05-03 格式:DOCX 页数:16 大小:605.53KB
下载 相关 举报
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第1页
第1页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第2页
第2页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第3页
第3页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第4页
第4页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第5页
第5页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第6页
第6页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第7页
第7页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第8页
第8页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第9页
第9页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第10页
第10页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第11页
第11页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第12页
第12页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第13页
第13页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第14页
第14页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第15页
第15页 / 共16页
操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx》由会员分享,可在线阅读,更多相关《操作系统实验课程作业shell编程有文本文件studenttxt该文件是所有学生的信息每个学生存储一行信息.docx(16页珍藏版)》请在冰点文库上搜索。

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

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

 

操作系统课程报告

 

题目:

shell编程实现简单的学生信息管理

学院:

信息工程与自动化学院

专业:

计算机科学与技术

班级:

姓名:

学号:

指导老师:

 

2011年6月6号

 

1、shell编程课程设计的目的和要求

目的:

熟悉shell命令的功能和使用方法

掌握shell编程的基本思想

理解shell程序的设计方法

熟悉shell程序的编辑、运行、调试方法与过程

要求:

有文本文件student.txt,该文件是所有学生的信息,每个学生存储一行信息,

信息格式如:

学号:

姓名:

性别:

专业如(101:

张三:

男:

计算机)

设计一个shell,名称为student.sh,该shell完成如下功能:

1)当输入student.sh-a101:

张三:

男:

计算机时,首先判断101记录是否

存在,如果不存在,则把该信息写入文件,如果存在,则给出提示,并输出文

件中学号为101的该行信息

2)当输入student.sh-d101时,首先判断101记录是否存在,如果不存

在,给出提示,如果存在,则提示用户确认是否要删除记录,如用户输入y或

者yes,则删除文件中学号为101的该行信息,如果用户输入n或no时,则不

做删除操作

3)当输入student.sh-s101时,首先判断101记录是否存在,如果不存

在,给出提示,如果存在,则输出文件中学号为101的该行信息

4)当输入student.sh时,输出文件的全部内容

5)当用户输入的选项不正确时,给出错误提示,并输入该shell的用法,如

(student.sh-q123456)

二、实验所用仪器、材料

微型计算机一台

Linux操作系统

三、shell编程简介

shell是一种命令解释程序(命令解释器),shell解释用户输入的命令行,提交系统内核处理,并将结果返回给用户。

与Linux命令一样都是实用程序,但两者又有区别。

一旦用户注册到系统后,shell就被系统装入内存,并一直运行到用户退出系统之止;而一般命令仅当被调用时,才由系统装入内存执行。

shell本身也是一种可编程的程序设计语言。

用shell写的程序(shell脚本)相当于dos/windows下的批处理文件,它可以简单到只有一条命令,也可以复杂到包括大量循环、条件语句、数学运算、控制结构,也可以是介于两者之间的程序。

Shell的启动和建立

四、sheel程序结构设计

Shell脚本本身就是程序,是用shell命令构成的,小规模、结构化、模块化、程序设计。

命令:

echo输出信息

Read输入信息read+变量名

Sleep休眠sleep+秒数

在终端上算数表达式的写法:

echo$((1*2*3))这是整数算数不能带小数点

/:

除法%:

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个函数,每个函数实现相应的功能:

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_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_delete确定是否删除,如果确定则调用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时,调用add_student(),添加学生信息;当为d时,调用delete_infomation(),删除学生信息;当为s时,调用stat_student(),显示当前学号对应的学生信息;如果输入的是其他内容,则给出提示信息,重新输入。

六、shell程序调试

Shell程序的调试主要是利用bash命令解释程序的选择项。

调用bash的形式是:

  

bash-选择项Shell程序文件名几个常用的选择项是:

  -e如果一个命令失败就立即退出。

  -n读入命令但是不执行它们。

  -u置换时把未设置的变量看做出错。

  -v当读入Shell输入行时把它们显示出来。

  -x执行命令时把命令和它们的参数显示出来。

七、程序源代码及运行结果截图

#!

/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_student="";

student_file="student.txt";

temp_file=./temp/student.$$;

trap'rm-f$temp_file'EXIT;

set_menu_choice()

{

clear;

echo"Options:

-";

echo

echo"a)Addnewstudentinfomation"

echo"eg:

-a学号:

姓名:

性别:

专业"

echo"s)Statstudentinfomation"

echo"eg:

-s学号"

echo"d)Deletespecifiedstudentinfomation"

echo"eg:

-d学号"

echo"l)Listinfomationofallstudentsstored"

echoeg:

-l

echo"q)Quit"

echo

echo-e"Pleaseenterchoicethenpressreturn\n\c";

readchoice;

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;

}

get_confirm()

{

echo-e"Areyousure?

\c";

whiletrue

do

readx

case"$x"in

y|yes|Y|Yes|YES)

return0;;

n|no|N|No|NO)

echo;

echo"Cancelled"

return1;;

*)echo"Pleaseenteryesorno";;

esac

done

}

insert_student()

{

echo$*>>$student_file;

return;

}

check_student()

{

student_no=$1;

student_existingFlag=`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;

if["$student_existingFlag"="y"];then

echo"学号为$current_student的学生信息已经存在,信息为:

"

stat_student$current_student;

else

insert_student$*

echo"studentinfomation$*added";

fi

return;

}

delete_student()

{

check_student$current_student;

if["$student_existingFlag"="n"];then

echo"学号为$current_student的学生信息不存在"

else

ifget_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$student_file];then

touch$student_file

fi

clear

echo

echo

sleep1

quit=n;

while["$quit"!

="y"];do

set_menu_choice;

case"$menu_choice"in

"a")add_student$student_infomation

sleep2;;

"d")delete_student$current_student

sleep2;;

"s")stat_student$current_student

sleep2;;

"l")list_students

sleep2;;

"q"|"Q")quit="y";;

*)echo"Sorry,choicenotrecognized"

sleep2;;

esac

done

echo"removingtempfile..."

rm-rf$temp_file

echo"Finished"

exit0

程序运行主界面查看0001的个人信息

添加学生0004:

libaocan:

n:

jk查看全部学生信息

删除0006退出程序

八、实验总结

这个学期我们学习了操作系统这门课程,课程知识的实用性很强,因此实验就显得非常重要,我们做了Linux操作系统安装、Linux下网络命令的使用、Linux下telnet、ftp、ssh网络配置,shell编程四个实验。

刚开始做实验的时候,由于自己的理论知识基础不好,在实验过程遇到了许多的难题,也使我感到理论知识的重要性。

但是我并没有气垒,在实验中发现问题,自己看书,独立思考,最终解决问题,从而也就加深我对课本理论知识的理解,达到了“双赢”的效果。

学习Linux和学习其他操作系统一样,要学会分析,遇到问题不要怕、不要担心,要分析问题的原因,故障出现的原因,以及解决方法。

同一个故障、错误,可能会有不同的解决方法。

要分析问题,获取不同的解决方法,提高自己的能力。

最后,学习Linux学习要有耐心,不要急躁,很多人因为出现错误,一时间解决不了,就放弃了。

错误是在所难免的——没错误就不正常了,没错误只能说明没有在使用。

遇到错误要仔细分原因,要相信问题一定能解决,不惜花时间去研究它。

实验过程中培养了我在实践中研究问题,分析问题和解决问题的能力以及培养了良好的编程素质,提高了自己动手能力,培养理论联系实际的作风,增强创新意识。

 

九、参考文献

Linux命令、编辑器与shell编程杨明军王风芹清华大学出本社

Shell脚本学习指南罗宾比博机械工业出版社

Linux教程李善平施韦林欣译清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2