`
斌强-朱
  • 浏览: 51453 次
社区版块
存档分类
最新评论

Shell 成绩管理系统v0.2

 
阅读更多


#!/usr/bash
#Output file save the students information
FILE=./student.db
#temp file
TMP=./.tmp
#This is menu
menu () {
	echo "************************************************"
		echo -e "\t1.Add a student information"
	echo -e "\t2.Query a student information" 
	echo -e "\t3.Delete a student information by ID"	
	echo -e "\t4.Screen clearing"
	echo -e "\t0.Exit this program"
	echo "************************************************"
	echo -n "Select:"
}

#Add a student infomation
add () {
#validate ID
	while [ 1 ];do
		echo -n "Student ID(001-999):"
		read id
	 	flag=`echo $id|grep -c "^[0-9]\{3\}$"`
		
		if [ $flag -eq 0 -o "$id" == "000" ] ; then
			echo "ID must 001-999"
			continue 
		fi
		flag2=`awk '{print $1}' $FILE | grep -c ^${id}$`

		if [ $flag2 -ge 1 ] ;then
			echo "ID:${id} is already exists!"
			continue
		fi	

		break
	done
#validate Name	
	while [ 1 ];do
		echo -n "Student name(only a-z,A-Z and within 5 characters):"
		read name
		#flag record match line number
		flag=`echo $name | grep -c "^[a-zA-Z]\{1,5\}$"`
		if [ $flag -eq 0 ] ; then
			echo "Name must within 5 characters only a-z,A-Z"
			continue
		else 
			#Name into the capital letters
			name=`echo $name | tr '[a-z]' '[A-Z]'`
			break
		fi
	done
#validate Sex	
	echo -n "Student sex(M or F,default is M):"
	read sex
	if [ "$sex" = "F" -o "$sex" = "f" ] ; then
		sex=F
	else 
		sex=M
	fi
#validate Class
	while [ 1 ]; do
		echo -n "Student class(01-99 default is NULL):"
		read class
		if [ "$class" == "" ];then
			class=NULL
			break
		fi
 		#Class match 00-99
		flag=`echo $class|grep -c "^[0-9]\{2\}$"`
#check ?
		if [ $flag -eq 0 -o "$class" == "00" ] ; then
			echo "class must 01-99"
		else
			break
		fi
	done

	echo -e "$id\t$name\t$sex\t$class" >> $FILE
	echo "Add student information success"
}

queryById () {
	echo -n "Student ID:"
	read id
	if [ "$id" == "" ];then 
		queryAll
		return
	fi
	echo -e "ID\tName\tSex\tClass"
	grep $id $FILE
	if [ $? != 0 ]; then
		echo "No student information!"
	fi
}

queryByKeyword () {
	echo -n "Keyword:"
	read key
	if [ "$key" == "" ]; then
		queryAll
		return
	fi
	echo -e "ID\tName\tSex\tClass"
	grep -i $key $FILE
	if [ $? != 0 ]; then
		echo "Can't find the matching items"
	fi
}

queryAll () {
	echo -e "ID\tName\tSex\tClass"
	grep ""  $FILE
	if [ $? != 0 ]; then
		echo "No records found"
	fi
}

query () {

	echo "1.Through the student ID to queries"
	echo "2.Througt the Keyword to queries"
	echo "3.Query all students information"
	echo -n "Select:"
	read option
	case $option in
	1) queryById ;;
	2) queryByKeyword ;;
	3) queryAll ;;
	*) queryAll ;;
	esac
}

#Delete student
delete () {
	echo "1.Delete by ID"
	echo "2.Delete containt ID"
	echo -n "Select:"
	read opt
	case $opt in
	1) deleteById ;;
	2) deleteMatchId ;;
	*) error ;;
	esac
}

#Delete student by ID
deleteById () {
	flag=`grep -n "$id" $FILE`
	if [ "$flag" == "" -o "$id" == "" ]; then
		echo "can't find ID=$id student"
		return 
	fi	

   	#get delete number
	num=`awk '{print $1}' $FILE | grep -n "${id}" |sed 's/:.*//g'`	
	echo -e "ID\tName\tSex\tClass"
	#print the delete number
	sed -n "${num}p" $FILE

	echo -n "Are you sure delete id(Y or N):"
	read sure
	if [ "$sure" == "Y" -o "$sure" == "y" ] ; then
		sed "${num}d" $FILE > $TMP
		cat $TMP > $FILE
		echo "Deleted successful"
	fi

}

#Delete student macth ID
deleteMatchId () {
	echo -n "Input the student ID:"
	read id

	echo -e "ID\tName\tSex\tClass"
	#The first domain macth ID
	awk -F"\t" '$1~ /'$id'/ {print $0}' $FILE
	echo -n "Delete all ?(Y or N):"
	read all
	if [ "$all" == "Y" -o "$all" == "y" ] ; then
		#get match number
		#num=`grep -n "" $FILE | awk '$1~/'$id'/' | sed 's/:.*//g'`
		#num=`awk '$1~ /'$id'/ {print $0}' $FILE | grep -n "" |sed 's/:.*//g'`	
			#sed "${num}d" $FILE > $TMP
			awk '$1!~/'$id'/ {print $0}' $FILE >$TMP
			cat $TMP > $FILE
		echo "Deleted successful"
	fi
	return
}

#exit program
quit () {
	cls
	echo "Thank you Bye!"
	exit
}

#Error info
error () {
	echo "Error input!"
}

#screen cleaning
cls () {
	clear
}

#read anykey
anykey () {
	echo -n "press Enter key to continue..."
	read anykey
	cls
}

#main
main () {
touch $FILE
while [ 1 ] ; do
	menu
	read number
	case $number in
	1) add ; anykey ;;
	2) query ; anykey ;;
	3) delete ; anykey ;;
	4) cls ;;
	0) quit ;;
	*) error ;;
	esac
done
}

main






分享到:
评论

相关推荐

    shell 编程 学生成绩管理系统

    linux 程序设计 实验 shell 编程 学生成绩管理系统

    shell成绩管理系统

    **Shell成绩管理系统** Shell脚本是一种在Unix/Linux操作系统中用于自动化任务的编程语言,它基于Bourne Shell或其派生版本,如bash。在这个"shell成绩管理系统"中,我们可以推测作者试图创建一个简单的命令行工具...

    天气查询助手V0.2桌面应用程序

    《天气查询助手V0.2桌面应用程序》是一款由colin3dmax原创的软件,它为用户提供了一种简便快捷的方式,来查询全国大部分城市的未来3天天气预报。这款应用程序不仅涵盖了基本的气象信息,如气温、湿度,还包含了风向...

    Interop.Shell32.dll V1.2

    Shell32.dll本身是Windows操作系统的一部分,它包含了大量与文件操作、文件夹管理、桌面图标、快捷方式以及文件属性相关的函数。例如,CopyFile、CreateShortcut、GetSpecialFolderLocation等都是Shell32.dll提供的...

    js-shell-0.2.zip

    "js-shell-0.2.zip" 是一个包含JavaScript运行环境的压缩包,旨在提升JavaScript代码的编写体验,使其更接近于Java开发的模式。这个工具可能提供了类Java的语法结构和开发工具,使得开发者能够在JavaScript中实现...

    小工具集-v0.2.zip

    【小工具集-v0.2.zip】是一款集合了多种实用工具的压缩包,主要包含了SFTP客户端、SSH连接工具、便利贴程序以及端口扫描器等。这些工具在日常的IT工作中非常常见,它们各自承担着不同的功能,帮助用户高效地进行远程...

    图书管理系统shell源代码

    这是个实验的题目,在这次的unix实验中就只有这个比较难一点,感觉写shell更多的是要求一个的逻辑思维能力而不是什么算法....之类的。

    HS8145V补全shell的bin文件

    在HS8145V平台上的shell补全bin文件的使用和管理,涉及到系统管理、安全实践、版本控制等多个方面,对于IT专业人士来说,理解和掌握这些内容至关重要,因为它们直接影响到系统的稳定性和安全性。同时,熟悉特定硬件...

    shell 节日管理系统

    在这个"shell节日管理系统"中,我们可以通过简单的shell脚本来实现一个基本的管理功能,包括用户系统(usersystem)和管理员系统(managersystem)。下面我们将深入探讨shell脚本以及如何构建这样的管理系统。 1. *...

    8145v改华为界面补shell

    "补shell"则是指补充或修复设备的Shell脚本,Shell是Linux或Unix系统中的命令解释器,允许用户通过命令行与操作系统进行交互。在光猫中,Shell脚本用于执行各种系统任务,如启动、初始化和故障恢复。补shell可能是...

    shell实现学生成绩管理系统

    本文实例为大家分享了shell实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本的操作 增加 删除 查询 展示全部学生信息 vim编辑保存信息的文件 遇到的问题 1.增加学生信息时 增加学生信息时,我用的...

    Beyond_BIOS_中文预览版V0.2.pdf

    总的来说,《Beyond BIOS 中文预览版 V0.2》是深入理解UEFI及其在现代计算平台中应用的重要资源,对于IT专业人员,特别是从事固件开发、系统集成和硬件支持的人员来说,具有极高的参考价值。通过学习这份文档,读者...

    Shell32.dll V1.2.107

    总的来说,通过升级到Shell32.dll V1.2.107,开发者可以提高他们的应用程序在不同环境下的稳定性和性能,同时利用更多的系统功能。在进行升级时,需要注意正确地替换旧版本的DLL,并确保应用程序的代码与新版本的...

    华为HS8546V光猫SHELL补全工具

    总的来说,华为HS8546V光猫SHELL补全工具是提升设备管理效率和功能的利器,尤其对于有经验的网络管理员来说,能更灵活地定制和优化设备,使其达到最佳性能。然而,使用这类工具也需要一定的技术背景,因为错误的操作...

    Shell Linux 图书馆管理系统

    Linux初学者理解shell编程,入门小项目

    Shell程序之学生管理系统

    《Shell程序之学生管理系统》 在信息技术领域,Shell程序是一种基于命令行的脚本语言,广泛应用于Linux和Unix操作系统中。本系统“学生管理系统”利用Shell脚本的强大功能,实现对学生信息、年级信息和学院信息的...

    HS8546V华为光猫Shell补全补丁

    HS8546V华为光猫Shell补全补丁。需要web界面打开LAN侧的telnet,打开tftp服务器,然后登陆telnet,在WAP提示符load pack by tftp svrip 192.168.1.2 remotefile hs8546v_shell_spbin.zip

    Interop.Shell32.dll V1.2.107.0

    @echo 开始注册 copy Interop.Shell32.dll %windir%\system32\ regsvr32 %windir%\system32\Interop.Shell32.dll /s @echo Interop.Shell32.dll注册成功 @pause

Global site tag (gtag.js) - Google Analytics