基于Shell脚本编写学生信息管理系统

基于Shell脚本编写学生信息管理系统

背景

学生信息是学校管理中非常重要的数据资源。传统的人工管理方式既耗时耗力,不便于管理,又不易于规范化,存在着数据丢失的风险。在许多学校中,对于学生信息的管理仍停留在纸质介质基础上,这样落后的管理机制无法适应时代的发展,浪费了许多人力和物力。

随着计算机科学技术的提高,计算机应用已逐渐普及到生活中的各个领域,因此,使用计算机技术替代传统物质基础来存储数据必将成为一种趋势。相比传统手工管理信息,使用计算机技术对学生数据进行管理,有着许多优势,例如:存储数据量大、存储寿命长、成本低、可靠性高、检索迅速等。这些优点能极大的提高学生信息管理的效率,也是学校科化学、数据化管理发展的必要条件。

系统组成

通过使用shell脚本开发一个学生管理系统。系统集成了添加学生、删除学生、查询学生信息、查看学生列表以及退出系统五大基本模块,其中:

  1. 添加学生:录入学生信息到系统中,学生基础信息包括学号、姓名、年龄、性别、电话;
  2. 删除学生:根据学号删除学生信息;
  3. 查询学生信息:通过用户输入条件查询学生基本信息,并通过友好的界面展示出来;
  4. 查看学生列表:查询系统中所有学生的基本信息,并通过友好的界面展示出来;
  5. 退出系统:结束操作并退出系统。

项目执行

#!/bin/bash
# 学生信息管理系统
#设置全局变量

#学生相关变量
ID=""
NAME=""
AGE=""
GENDER=""
PHONE=""

#用户账户信息
username=""
password=""

##数据文件存放路径
source_dir="./source"
students_db="./source/students.db"
userdata_db="./source/userdata.db"

#创建数据文件
mkdir_sourcedir(){
if [ ! -d $source_dir ];then
mkdir -p $source_dir
fi

if [ ! -f $students_db ];then
touch $students_db
fi

if [ ! -f $userdata_db ];then
touch $userdata_db
fi
}

#
create_user(){
read -p "请输入你的用户名:" username
cat file | grep $username &>/dev/null
[ $? -eq 0 ] && echo "这个用户已经存在,请重新创建!" && create_user
if [ -z $username ];then
echo "该用户可创建" && create_user
fi
read -p "请输入密码:" password
read -p "请再次输入密码:" password1
if [[ "$password" != "$password1" ]] ;then
echo "密码验证不正确,请重新创建" && create_user
fi
if [ ! -z "$password" ];then
echo "$username "$password" ">>file
echo "创建成功!,按任意键将跳转到登录界面..."
fi
if [ -z "$password" ];then
echo "$username" " " >>file
echo "创建成功!,按任意键将跳转到登录界面..."
fi
clear
read choice
case $choice in
*)
login
;;
esac
}

login(){
read -p "请输入用户名:" username
a="`cat file | awk '$1=="'$username'"'|cut -d ' ' -f2-`"
b=`echo "$a" | sed 's/ //g'`
cat file | awk '$1=="'$username'"' &> /dev/null
if [ $? -eq 0 ];then
read -p "请输入你的密码:" password
c=`echo $password | sed 's/ //g'`
if [[ "$b" = "$c" ]];then
echo "登录成功!"
else
echo "密码验证不正确,请选择 1. 重新创建 2. 重新登录 3.注销用户 4.退出系统"
read choice
case $choice in
1)
create_user
;;
2)
login
;;
3)
logout
;;
4)
exit 0
;;
esac
fi
else
echo "该用户不存在,请选择 1. 重新创建 2. 重新登录 3.注销用户 4.退出系统"
#create_user
clear
read choice
case $choice in
1)
create_user
;;
2)
login
;;
3)
logout
;;
4)
exit 0
;;
esac
fi

Welcome
}

logout(){
read -p "请输入要注销的用户名" username
echo "该用户的信息为:"
grep "^$username" $userdata_db
read -p "确定注销吗?[yes|no]" choice
case "$choice" in
yes)
sed -i -e "/^$username/d" $userdata_db
if [ "$?" -eq 0 ];then
echo "注销成功"
else
echo "不存在该用户或者注销失败"
fi
;;
no)
:
;;
*)
echo "请输入[yes|no]"
logout
;;
esac
}

haha(){
case $main in
1)
create_user
;;
2)
login
;;
3)
logout
;;
4)
exit 0
;;
esac
}

cat << EOF
+--------------- 请选择:---------------+
1) 创建用户
2) 直接登录
3) 注销用户
4) 退出
+---------------------------------------+
EOF
read -p "Choice:" main

# 主函数
Welcome()
{
# reset
mkdir_sourcedir #数据文件不存在则创建
echo -e "\t\t\t+--------------------------+"
echo -e "\t\t\t 欢迎进入学生管理系统"
echo -e "\t\t\t+--------------------------+"
echo -e "\t\t\t 按任意键继续……"
read choice
case $choice in
*)
Module
;;
esac
}

#模块选择
Module(){
clear
echo -e "\t\t\t+-----------------------------+"
echo -e "\t\t\t请输入对应数字选择信息模块"
echo -e "\t\t\t 1. 学生信息管理"
echo -e "\t\t\t 2. 退出系统"
echo -e "\t\t\t+-----------------------------+"
read choice
case $choice in
1)
Menu1
;;
2)
exit 0
;;
*)
Module
;;
esac
}

###################
#学生信息模块功能实现
###################

#学生信息模块菜单
Menu1() {
clear
echo -e "\t\t\t+------------------------+"
echo -e "\t\t\t请输入对应数字选择功能"
echo -e "\t\t\t 1. 添加学生"
echo -e "\t\t\t 2. 删除学生"
echo -e "\t\t\t 3. 学生列表"
echo -e "\t\t\t 4. 查找学生"
echo -e "\t\t\t 5. 返回上级"
echo -e "\t\t\t 6. 退出系统"
echo -e "\t\t\t+------------------------+"
echo "请选择:"
read choice

case $choice in
1)
echo -e "\t\t\t添加学生信息"
add_student
;;
2)
echo -e "\t\t\t删除学生信息"
del_student
;;
3)
echo -e "\t\t\t展示学生信息"
display_students
;;
4)
echo -e "\t\t\t查询学生信息"
search_student_id
;;
5)
echo -e "\t\t\t返回上一个页面"
Module
;;
6)
exit 0
;;
*)
Menu1
;;
esac
echo "--------------------------"
echo "按任意键继续……"
read c
Menu1
}

#1.添加学生信息
add_student(){
read -p "ID:" ID
while grep -w "$ID" "$students_db" > /dev/null ;do
echo "已经存在该学号的学生了,请改用其他学号!"
read -p "ID:" ID
done
read -p "NAME:" NAME
read -p "AGE:" AGE
read -p "GENDER:" GENDER
read -p "PHONE:" PHONE
echo -e "$ID,\t$NAME,\t$AGE,\t$GENDER\t$PHONE,\r" >> $students_db
echo "成功添加学生信息,添加的信息为: "
grep -w $ID $students_db
}

#2.删除学生
del_student(){
read -p "请输入要删除的学生的学号" ID
echo "该学生的信息为:"
grep "^$ID" $students_db
read -p "确定删除吗?[yes|no]" choice
case "$choice" in
yes)
sed -i -e "/^$ID/d" $students_db
if [ "$?" -eq 0 ];then
echo "删除成功"
else
echo "不存在该条记录或者删除失败"
fi
;;
no)
:
;;
*)
echo "请输入[yes|no]"
del_student
;;
esac
}

#3.显示所有学生信息
display_students() {
echo "+-------------------------------------------------+"
echo -e "学号\t姓名\t年龄\t性别\t电话"
sed -n '1,$p' $students_db
echo "+-------------------------------------------------+"
echo -e "\r"
}

#4.查询学生信息
search_student_id() {
echo "+-------------------------------------------------+"
echo "输入要查询的学号"
read ID
echo "+-------------------------------------------------+"
echo -e "学号\t姓名\t年龄\t性别\t电话"
grep -w $ID $students_db
# grep -w "${ID#*,}" $students_db
echo "+-------------------------------------------------+"
echo "查询成功"
}

#程序入口
haha
exit 0
运行结果

开始界面
创建用户
登录学生信息管理系统
进入学生信息管理系统
功能选择界面

总结

该任务为期末结课考核,代码的编写也是参考了网上的资源进行了修改(在此感谢提供支持的大佬🙏),功能基本都实现了,但还存在一些彩蛋🎊(BUG),发出来给需要的参考学习,也做为自己的学习成果记录了,如果有大佬发现彩蛋还望在评论区指正😉

#小声bb:内容整理不易,各位客官老爷点个赞再走吧~

参考链接1
参考链接2
参考链接3

  • 24
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lannnn_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值