热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux--用shell写一个学生成绩管理系统

基本的操作增加删除查询展示全部学生信息vim编辑保存信息的文件遇到的问题1.增加学生信息时增加学生信息时,我用的echo重定向到文件里,这里开始用的一个>,会导致覆

基本的操作

  1. 增加
  2. 删除
  3. 查询
  4. 展示全部学生信息
  5. vim编辑保存信息的文件

遇到的问题

1.增加学生信息时
增加学生信息时,我用的echo重定向到文件里,这里开始用的一个>,会导致覆盖。以前的数据没有了。

总结:重定向符号:

>:覆盖型写法 (文件里原来的内容被覆盖)

echo "hello world" > myfile

>>:添加型写法 (新内容添加在原来内容的后面)

echo "hello world" >> myfile

2.删除某一行学生信息
开始不知道怎么删除,最后查到了grep -v命令。
他表示反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行。

具体实现代码

#! /bin/bash

#查询函数
search()
{
clear
echo -e "Please enter name >>>\c"
read NAME
#如果记录为空
if [ ! -f ./record ];then
echo "you must have some scores before you can search!"
sleep 2
clear
return
fi
#没有输入名字进行查询
if [ -z "$NAME" ];then
echo "you didn't enter a name!"
echo -e "Please enter name >>>\c"
read NAME
fi

grep -i "$NAME" ./record 2> /dev/null

case "$?" in
1) echo "Name not in record."
;;
2) echo "you didnt eter a name to search";
sleep 2;
search;;
esac
}

#增加信息
add()
{
clear
echo "Enter name and score of a record"
echo -e "\c"
if [ ! -f ./record ];then
touch record
fi

read NEWNAME
#关于输出重定向,>代表覆盖式的写入 ,>>代表添加式的写入
echo "$NEWNAME" >>./record

sort -o ./record ./record
}

#删除学生信息
delete()
{
clear
echo -e "Please enter delete name"
read NAME

if [ ! -f ./record ];then
echo "this name is not in record"
else
cp record record.bak
rm -f record
grep -v "$NAME" ./record.bak > record
rm -f record.bak
fi
}

#显示所有的记录函数
display()
{
more ./record
}

#利用vim编辑器编辑函数
edit()
{
vim ./record
}

#屏幕帮助操作
help()
{
clear
echo "this is a student record program by unix shell language!"
}

#推出程序
quit()
{
clear
exit
}

clear
while true
do
echo "*********************************************"
echo "**** student record menu ****"
echo "*********************************************"
echo "---------------------------------------------"
echo "#############################################"
echo " 1-search a record "
echo " 2-add a record "
echo " 3-delete a record "
echo " 4-dispaly all records "
echo " 5-edit record with vim "
echo " H-help "
echo " Q-exit "
echo "#############################################"
echo -e -n "Please enter your choice [1,2,3,4,5,6,H,Q]:\c"
read CHOICE

case $CHOICE in
1) search;;
2) add; clear;;
3) delete; clear;;
4) display;;
5) edit; clear;;
H|h) help;;
Q|q) quit;;
*) echo "Invailid choice!";
sleep 2;
clear;;
esac
done

这里写图片描述
这里写图片描述


推荐阅读
author-avatar
元菱淑亚禎盈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有