900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > shell脚本制作简易图书管理系统

shell脚本制作简易图书管理系统

时间:2020-08-04 07:11:37

相关推荐

shell脚本制作简易图书管理系统

登录页面

clear清空终端,read读取用户输入,然后利用awk命令从user.txt中获取用户名和密码,-F指定分隔符为 ‘:’ ,按照第一列识别用户名和密码,第二列为目标数据,输出第二列,并用变量un和pa接收指令运行结果。比较输入的信息与文件中读取的信息,判断是否通过登录,返回登录结果。

Login () {clearecho "*******Libary********"echo -n "Username: "read nameecho -n "Password: "read passlocal un=`awk -F ':' '$1=="username"{print $2}' user.txt`local pa=`awk -F ':' '$1=="password"{print $2}' user.txt`# user.txt文件格式如下:# username:apple# password:12345if [ $un == $name ] && [ $pa == $pass ]thenreturn 0elsereturn 1fi}

菜单页面

不断循环打印菜单界面,获取用户输入的操作码,然后case语句根据用户输入的不同操作码执行相应函数,当输入5时直接break跳出循环。

Menu () {while truedoclearecho "*********Libary*********"echo " 1.ShowAll "echo " 2.Search "echo " 3.AddNew "echo " 4.Delete "echo " 5.Exit "echo "************************"echo -n ">> "read opNumcase $opNum in1)ShowAll;;2)Search;;3)AddNew;;4)Delete;;5)break;;esacdone}

主函数

先调用Login函数,得到的登录结果暂存在$?中,判断$?是否为0,为0就调用Menu函数打印菜单,不然就输出错误信息,结束程序。

Main () {Loginif [ $? -eq 0 ]thenMenuelseecho "Error User or Password"fi}

查看图书

先打印表头,然后利用awk对Book.txt中的每一行文本进行输出,并利用printf指定输出的格式。在加入一个读取变量t的操作,不然函数会马上退出,回到Menu的循环后会清空之前输出的图书信息,加入读取t的操作可以在用户输入回车后再清空。

ShowAll () {# Book.txt格式如下:# Banana Jason 48.00# Orange David 32.00echo 'BookName AuthorPrice'awk '{printf "%-12s%-12s%-12s\n", $1, $2, $3}' Book.txtread local treturn 0}

查找图书

读取目标图书名,然后打印表头,之后利用awk对Book.txt的每一行进行判断,如果与目标图书名相同则输出。这里要注意再awk的语句中判断$1==$bookName时直接这样写是无法正常执行的,写成$1=="'$bookName'"的形式可以正常进行判断。

Search () {echo -n "Bookname: "read bookNameecho 'BookName AuthorPrice'awk '{if($1=="'$bookName'"){ printf "%-12s%-12s%-12s\n", $1, $2, $3 }}' Book.txtread local treturn 0}

新增图书

读取新增图书的书名,作者和价格信息后,直接x=$bkn" "$ath" "$pce将它们拼在一起,然后echo添加进源文件就行。

AddNew () {echo -n "Bookname: "read bknecho -n "Author: "read athecho -n "Price: "read pcelocal info=$bkn" "$ath" "$pceecho $info >> Book.txtecho "Add \"$bkn\" successfully"read local treturn 0 }

删除图书

删除图书采用了sed命令,-i参数直接对源文件实现更改,/^$bkn/d对每一行的开头进行匹配,对匹配的行执行d删除操作。

Delete () {echo -n "Bookname: "read bknsed -i "/^$bkn/d" Book.txtecho "Delete \"$bkn\" successfully"read local txtreturn 0}

完整源代码
github

/Hodakan/Library-Management

gitee

/HodakaChen/library-management

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。