Advertisement
29rohitkr

Introduction to Unix - Integrated Assessment

Feb 23rd, 2023
1,004
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.21 KB | Source Code | 0 0
  1. echo "Enter your Username :"
  2. read username
  3. echo "Enter your password :"
  4. read password
  5.  
  6. isValidUsername() {
  7.   local re='^[[:upper:]_][[:lower:][:digit:]_-]{2,15}$'
  8.   (( ${#1} > 16 )) && return 1
  9.   [[ $1 =~ $re ]] # return value of this comparison is used for the function
  10. }
  11. menu_choice='g'
  12. set_menu_choice(){
  13. echo '**********Welcome **********'
  14. printf '\n'
  15. printf '\ta) Issue Book\n'
  16. printf '\tb) Return Book\n'
  17. printf '\tc) Check Pending Return\n'
  18. printf '\td) Check Book Availability\n'
  19. printf '\te) Add New Member\n'
  20. printf '\tf) Delete Book\n'
  21. printf '\tg) Exit\n'
  22. printf 'Please Enter your choice : \n'
  23. read menu_choice
  24. return
  25. }
  26.  
  27.  
  28. issue_book(){
  29.     printf 'Enter Membership Number : '
  30.     read mem_number
  31.     printf 'Enter the Book ISBN : '
  32.     read book_isbn  
  33.     temp1=`grep "$mem_number" Members.txt | wc -l`
  34.     if [[ "$temp1" -eq 0 ]]; then
  35.         printf 'Member not available\n'
  36.     fi
  37.     temp2=`grep "$book_isbn" Book_Details.txt | wc -l`
  38.     if [ $temp2 -eq 0 ]; then
  39.         printf 'Book not available\n'
  40.     fi
  41.     if [[ $temp1 -ge 1 && $temp2 -ge 1 ]]; then
  42.         total_issued=`grep "$mem_number" Issue_Logs.txt | wc -l`
  43.         last_record=`tail -1 Issue_Logs.txt | cut -d'#' -f1`
  44.         issue_no=$(($last_record + 1))
  45.         issued_date=`date +"%d/%m/%Y"`
  46.         total_not_returned=`grep "$mem_number" Issue_Logs.txt | grep "Issued" | wc -l`
  47.         if [ $total_not_returned -ge 3 ]; then
  48.             printf 'More than 3 books cannot be issued\n'
  49.         else
  50.             record="$issue_no#$mem_number#$book_isbn#$issued_date#Issued"
  51.             `echo $record >> Issue_Logs.txt`
  52.             echo -e "Book Issued with issue number : $issue_no\n"
  53.         fi
  54.     fi
  55. }
  56.  
  57. return_book(){
  58.     printf 'Enter Issue No : '
  59.     read issue_no
  60.     is_there=`grep -w "$issue_no" Issue_Logs.txt |wc -l`
  61.     issue_no=$(($issue_no + 1))
  62.     if [ $is_there -eq 1 ]; then
  63.         `sed -i "${issue_no}s/Issued/Returned/" Issue_Logs.txt`
  64.         printf 'Book Returned Successfully\n'
  65.     else
  66.         printf 'No issue record available for the given issue number\n'
  67.     fi
  68.  
  69. }
  70.  
  71. chech_pending_return(){
  72.     echo 'Enter Membership Number : '
  73.     read mem_number
  74.     grep "$mem_number" Issue_Logs.txt | grep "Issued" > Record_file
  75.     record_count=`grep "$mem_number" Issue_Logs.txt | grep "Issued" | wc -l`
  76.     if [ $record_count -eq 0 ]; then
  77.         printf 'No pending returns\n'
  78.     else
  79.     echo "*******************"
  80.         cat Record_file
  81.         rm Record_file
  82.     echo "*******************"
  83.     fi
  84. }
  85.  
  86. check_book_avail(){
  87.     printf 'Enter Book Name '
  88.     read book_name
  89.     rec_count=`grep "$book_name" Book_Details.txt | wc -l`
  90.  
  91.     if [ $rec_count -eq 1 ]; then
  92.         grep "$book_name" Book_Details.txt
  93.         printf '\n'
  94.     else
  95.         print 'No book available\n'
  96.     fi
  97.  
  98. }
  99.  
  100. add_new_member(){
  101.     printf 'Enter Name : '
  102.     read name
  103.     printf 'Enter Phone Number : '
  104.     read phnumber
  105.     printf 'Enter Email Id : '
  106.     read email
  107.     emailValid=0
  108.     phValid=0
  109.     nameValid=0
  110.     if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$ ]]; then
  111.         emailValid=1
  112.     fi
  113.     if [[ "$phnumber" =~ ^[1-9]{10}$ ]]; then
  114.         phValid=1
  115.     fi
  116.    
  117.     if [[ $phValid -eq 1 && $emailValid -eq 1 ]]; then
  118.         count=`grep "$name" Members.txt | grep "$phnumber" Members.txt | wc -l`
  119.         if [ $count -ge 1 ]; then
  120.             mem_num=`grep "$name" Members.txt | grep "$phnumber" Members.txt| tr '::' ':' | cut -d':' -f1 `
  121.             echo "Member already available with the Id:$mem_num"
  122.         else
  123.             count_record=`cat Members.txt | wc -l`
  124.             number=$(( $count_record + 1000 - 1 ))
  125.             record="M$number::$name::$phnumber::$email"
  126.             `echo $record >> Members.txt`
  127.             echo "Member Added with Membership Number:M$number"
  128.         fi
  129.     else
  130.         echo "Please enter valid Details"
  131.     fi
  132.  
  133. }
  134.  
  135. delete_book(){
  136.     echo 'Enter the Book ISBN number : '
  137.     read book_isbn
  138.     count=`grep "$book_isbn" Book_Details.txt | wc -l`
  139.  
  140.     if [ $count -eq 1 ]; then
  141.         echo "Please confirm, do you want to delete this book? Y/N"
  142.         read choice
  143.         if [[ $choice -eq 'Y' || $choice -eq 'y' ]]; then
  144.             record=`grep "$book_isbn" Book_Details.txt`
  145.             `sed -i "/${book_isbn}/d" Book_Details.txt`
  146.             echo "Book with ISBN $book_isbn is Deleted."
  147.         else
  148.             echo 'please enter valid key'
  149.         fi
  150.     else
  151.         echo "Book Not Found with ISBN : $book_isbn"
  152.     fi
  153. }
  154.  
  155. if isValidUsername "$username" -a [[ "$password" =~ ^[[:alpha:][:digit:]_-]{3,15}$ ]]; then
  156.     valid=`grep $username Employee.txt | grep $password |wc -l`
  157.     if [[ $valid -eq 1 ]]; then
  158.         quit="n"
  159.         while [ "$quit" != "y" ];
  160.         do
  161.         set_menu_choice
  162.         case "$menu_choice" in
  163.         'a') issue_book;;
  164.         'b') return_book;;
  165.         'c') chech_pending_return;;
  166.         'd') check_book_avail;;
  167.         'e') add_new_member;;
  168.         'f') delete_book;;
  169.         'g') quit="y";;
  170.         '*') prinf "Enter Correct Choice";;
  171.         esac
  172.         done
  173.     else
  174.         printf 'Password or Username Invalid\n'
  175.     fi
  176. else
  177.     echo "Invalid Username"
  178. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement