shell脚本语言实现简单的图书管理系统

待兔 等级 345 0 0
#!/bin/bash
#author:zhanghongjun
#version:1.0
#date:2011年 12月 14日 星期三 21:18:18 CST


function information
{
    echo "---------------------------"
    echo "国家图书馆管理系统(5.4版本)"
    echo
    echo -n "| " ;echo "1:添加图书"
    echo -n "| " ;echo "2:删除图书"
    echo -n "| " ;echo "3:图书列表"
    echo -n "| " ;echo "4:查找图书"
    echo -n "| " ;echo "5|q:退出系统"
    echo
    echo "---------------------------"
    read -p "请输入你的选择:" a


    case "$a" in
    1)
        add ;;
    2)
        delete ;;
    3)
        list ;;
    4)
        search;;
    5|q|Q)
        return -1 ;;
    *)
        information ;;
    esac
}


function file_exist
{
    if [ ! -f .book.txt ];then
        touch .book.txt
    fi
}


function add
{
    read -p "请输入图书的编号:" number
    read -p "请输入图书的书名:" book_name
    read -p "请输入图书的作者:" author
    read -p "请输入图书的价格:" price 
        echo -e "$number\t$book_name\t$author\t$price" >>.book.txt && {
            echo "添加图书成功!"
            echo "-------------------"
        }
    if [ $? -ne 0 ];then
        echo "添加图书失败"
    fi
    information

}

function delete
{
    read -p "请输入要删除的图书的编号:" number
    grep $number .book.txt &>/dev/null && {
            sed -i '/\<'$number'\>/d' .book.txt &>/dev/null  &&
            echo "删除图书成功"
    echo "-------------------------"
    }

    if [ $? -ne 0 ];then
        echo "删除图书失败"
        echo "你要删除的图书不存在"
    fi
    information
}

#列出所有图书的信息
function list
{
    echo -e "编号\t书名\t作者\t价格"
    cat .book.txt
    echo "----------------------------"
    information

}


#下面的函数用到的查询菜单
function search_menu
{
    echo;echo "----------------------------"
    echo -n "|";echo -e "1:\t按图书编号查询"
    echo -n "|";echo -e "2:\t按图书书名查询"
    echo -n "|";echo -e "3:\t按图书作者查询"
    echo -n "|";echo -e "4:\t按图书价格查询"
    echo -n "|";echo -e "5|q:\t退出查询系统"
    echo;echo "----------------------------"

}
function search
{
    search_menu
    read -p "请输出你的选择:" myselect
    case "$myselect" in
    1)
        read -p "请输入要查询的图书的编号:" mynumber
        echo -e "编号\t书名\t作者\t价格\n"
        awk '$1=='$mynumber'{print $0}' .book.txt 2>/dev/null

        if [ $? -ne 0 ];then
            echo "图书不存在"
        fi
        search
        ;;
    2)
        read -p "请输入你要查询的书名:" mybook_name
        echo -e "编号\t书名\t作者\t价格\n"
        awk '$2~/'$mybook_name'/{print $0}' .book.txt 2>/dev/null
        if [ $? -ne 0 ];then
            echo "图书不存在"
        fi
        search
        ;;
    3)
        read -p "请输入图书的作者:" myauthor
        echo -e "编号\t书名\t作者\t价格\n"
        awk '$3~/'$myauthor'/{;print $0}' .book.txt 2>/dev/null
        if [ $? -ne 0 ];then
            echo "图书不存在"
        fi
        search
        ;;
    4)
        read -p "请输入图书的价格:" myprice
        echo -e "编号\t书名\t作者\t价格\n"
        awk '$4=='$myprice'{print $0}' .book.txt 2>/dev/null
        if [ $? -ne 0 ];then
            echo "图书不存在"
        fi
        search
        ;;
    5)
        information
        ;;
    *)
        information
        ;;
    esac

}

information
收藏
评论区

相关推荐

30分钟带你了解Web工程师必知的Docker知识
前言 笔者之前和朋友一直在讨论web技术方向的话题,也一直想了解web运维方面的知识,所以特意请教了一下我的朋友老胡,他对web运维和后端技术有非常多的实战经验,所以在本
头条研发-SRE运维研发实习生视频面试(一, 二面)
(about:blank%E4%B8%80%E9%9D%A230min "一面 (30min)")一面 (30min) 江湖规矩自我介绍, 很罕见的没有用算法题起手, 直接就问很具体的问题, 点个赞 <3 (htt
运维监控系统——Zabbix简介
前言对于运维人员来说,监控是非常重要的,因为如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监
运维安全-信息安全
本文转自 ,如有侵权,请联系删除。
运维,关于监控的那些事,你有必要了解一下
作者 | 乔克 来源 | 运维开发故事监控是整个运维以及产品整个生命周期最重要的一环,它旨在事前能够及时预警发现故障,事中能够结合监控数据定位问题,事后能够提供数据用于分析问题。一、监控的目的监控贯穿应用的整个生命周期。即从程序设计、开发、部署、下线。其主要的服务对象有: 技术 业务 技术通过监控系统可以了解技术的环
数据库运维做些什么?
一. 数据库生命周期 结合软件生命周期、项目的开展,数据库的生命周期大致可分为这么几个阶段。 (https://imghelloworld.osscnbeijing.aliyuncs.com/8552b8c2942bb8ce23
DevOps简介
DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps概述
DevOps概述DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营(运维)、质量保障(测试)(QA)部门之间的沟通、协作与整合。随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使
DevOps与CICD的区别 及 docker、k8s的CICD思路
1\. DevOps简介DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。image.png为什么要合并这三个领域?主要是开发和运维的脱节。DevOps是一种思想、一组最佳实践、以及一种文化。DevOps落地实施,从组织架构、设计人员、流程、人员分工、人员技能到工具,变化
Linux shell(1)
1. 免交互处理在免交互输出处理中可以使用重定向将输出内容输入到黑洞文件/dev/null中。[root@localhost ] echo password | passwd stdin user & /dev/null使用重定向输入将/root/testmail中的内容以Test mail为右键名发送给root@localhost: [root@local
Linux shell(2)
1.变量以固定名称存放的可能变化的值,可以提高脚本的适应能力,方便脚本执行中重复使用某个值。定义/赋值变量格式为:变量名变量值注意事项:若指定变量已存在,则相当于重新给变量赋值;等号两边无空格;变量名区分大小写;变量名不能以数字开头,不使用关键字和特殊字符。[root@localhost ] X1 //定义变量
盘点Python编程的简易版自动化工具——ADB史上全操作
大家好,我是皮皮,今天给大家讲讲ADB操作。前面给大家分享了Airtest,感兴趣的小伙伴,可以前往:、、、,任君挑选。前言ADB,中文名安卓调试桥,它是一种功能多样的命令行工具,可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端服务器程序,包括以下三个组件:客户端:用于发送命
运维大佬嘲笑我,这个你都不知道?
大家好,我是阿沐,一个喜欢分享技术而且爱好写散文的程序员。今天来给大家介绍一下info命令查看redis具体的详细信息讲解!起因是:前几年我在老家郑州实习面试(那个时候还没有毕业)的时候遇到面试官提问;面试官来于百度总部的工程师6年java开发经验+3年多的PHP开发经验,我在他的面前基本就是弟弟中的弟弟,虽然勉强通过入职了,但是却被运维无情地嘲笑,就因为组
盘点Python编程的简易版自动化工具——ADB史上全操作
大家好,我是皮皮,今天给大家讲讲ADB操作。前面给大家分享了Airtest,感兴趣的小伙伴,可以前往:、、、,任君挑选。 前言ADB,中文名安卓调试桥,它是一种功能多样的命令行工具,可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端服务器程序,包括以下三个组件:客户端:用于发送
这28个值得收藏的shell脚本能让你每天摸鱼近7个小时!
前言:在日常工作中,但凡你要跟服务器打交道,一定离不开的神器便是shell脚本,shell脚本可以极大的提高工程师的工作效率,避免一些认为因素导致的手误。那么今天圈圈就给大家分享28个shell脚本,希望对大家有帮助,脚本比较多比较长,一时间记不住可以先收藏,用到的时候及时拿出来比对一下即可!1. 轮询检测Apache状态并启用钉钉报警!/bin/bashs