Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7678957
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: LINUX

2011-04-26 14:34:11

#!/bin/bash

 

#Mini通讯录程序 

#Shell语言实现功能简单的通讯录程序

#功能

#   1、新增个人通讯信息

#   2、查看所有通讯信息

#   3、提供两种方法查找某个人通讯信息

#       1)按名字查找

#       2)模糊查找

#   下面两种功能只在按名字查找条件下才能进行

#   4、修改找查到的个人通讯信息

#   5、删除找查到的个人通讯信息

#使用说明按提示一步一步的选择进行操作

#Author Lzy   Time2011-4-26

 

#全局变量

menu_choice=""   

 

#主菜单函数定义        

set_menu_choice(){

    clear                              #清屏

    echo "          Mini Address Book"

    echo " l) List Book"

    echo " a) Add new"

    echo " f) Find"

    echo " q) Quit"

    echo

    echo -n "funtion choice: "

    read menu_choice

    return

}

 

#待用户确认 确认返回0 否则返回1

sure_or_not(){

    echo -n "save?(yes or not): "

    while :

    do

        read X

        case $X in

            y|yes) return 0;;         #返回真

            n|not) return 1;;

            *) echo "please enter yes/y not/n";;

        esac

    done

}

 

#新增个人信息

add_new(){

    echo -n "Name: "

    read name

    echo -n "Phone number: "

    read number

    echo -n "QQ: "

    read qq

    echo                               #换行

    temp="${name%" "} ${number%" "} ${qq%" "}" #删除多余的空格符

    if  sure_or_not                   #等待用户确认

    then

        echo $temp >> ".Address_Book"  #信息保存          

    fi     

}

 

#更改个人信息实现函数 信息更新返回0 否则返回1

updata_new(){

    echo -n "Name: "

    read name

    echo -n "Phone number: "

    read number

    echo -n "QQ: "

    read qq

    echo                               #换行

    temp="${name%" "} ${number%" "} ${qq%" "}" #删除多余的空格符

    if  sure_or_not                   #等待用户确认

    then

        echo $temp >> ".Address_Book~" #信息保存  

        return 0

    fi     

    return 1

}

 

#创建通讯录文件

create_book(){

    if [ ! -e .Address_Book ]            #判断文件是否存在

    then      

        echo "Name    P_number   QQ" > .Address_Book      #文件信息的格式

    fi

}

 

#修改信息

update_book(){

    echo "modification record "

    echo " 1) change"

    echo " 2) delete"

    echo " q) quit"

    echo -n "select: "

    while :

    do

        read X

        case $X in

            1)                              #修改信息

                #其他人信息保存到另一个文件

                grep -v "^${name%" "}" .Address_Book  >  .Address_Book~            

                if updata_new ;then          #信息修改之后并且确认保存

                    rm -rf .Address_Book

                    mv .Address_Book~ .Address_Book

                else

                    rm -rf .Address_Book~

                fi

                return 0 ;;                   #退出

               

            2)                              #删除信息

                grep -v "^${name%" "}" .Address_Book  >  .Address_Book~

                rm -rf .Address_Book

                mv .Address_Book~ .Address_Book

                return 0 ;;

               

            q) return ;;         

            *) echo -n "try again: " ;;        

        esac

    done

}

 

#按名字查找

find_name(){

    echo -n "enter find anme: "

    read name

    spack=`grep "^${name%" "}" .Address_Book`   #在通信录文件中查找名字为name的个人信息 

    if [ -z "$spack" ] ; then                   #判断有无相关信息

        echo "no informtion"

        sleep 2

        return

    else

        echo $spack

        read

        update_book                               #修改信息

    fi

}

 

#提供两种查找方式 1按名字查找 2模糊查找

find_person(){   

    echo

    echo " 1) according to name find"

    echo " 2) fuzzy find"

    echo " q) quit"

    echo -n " find ways: "

    while true

    do

        read X

        case $X in

            1)

                find_name                     #按名字查找

                return ;;

            2)

                echo -n "enter find information: "

                read name

                grep "${name%" "}" .Address_Book   #模糊查找

                read

                return ;;

               

            q) return ;;

            *) echo "try again"

        esac

    done  

}

 

create_book                           #创建通讯录文件

while true

do

    set_menu_choice               #显示主菜单

    case ${menu_choice} in

      l|L)

        cat    .Address_Book         #查看通讯录信息

        read  ;;                   #任意键退出    

      a)

        add_new ;;

      f)

        find_person ;;       

      q)      

        clear

        exit 0 ;;

      *)

        echo -n "entered incorrectly, please retry "

        sleep 3 ;;                 #错误提示显示3s

     esac

done

exit 0                             #结束终止

 

阅读(3270) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~