创建学生和教师帐号文件 可以分别创建一个students.txt和teachers.txt文件来存储学生和教师的帐号信息,每个帐号一行,包括用户名和密码,用空格分隔。例如: 复制 # students.txt alice 123456 bob 123456 复制 # teachers.txt john 123456 创建课程文件 可以创建一个courses.txt文件来存储所有的课程信息,每个课程一行,包括课程编号、课程名称和选课人数,用空格分隔。例如: 复制 # courses.txt 1001 Math 0 1002 English 0 创建登录界面 使用Shell脚本来创建一个登录界面,提示用户选择登录身份并输入用户名和密码。根据用户的选择,进入学生或教师的主界面。 创建学生主界面 在学生主界面中,使用Shell脚本来实现以下三个功能: 学生选择课程:列出所有可选的课程,并让学生输入课程编号来选择课程。如果输入的课程编号不存在或课程已经选满,给出错误提示。 学生查看信息:显示学生的学号、姓名和所选课程。 学生退出系统:退出程序。 创建教师主界面 在教师主界面中,使用Shell脚本来实现以下四个功能: 教师添加课程:让教师输入课程编号和课程名称来添加新课程。 教师删除课程:让教师输入课程编号来删除已有课程。 教师查看课程:列出所有课程及其选课人数。 教师退出系统:退出程序。 以上是一个简单的学生选课系统的实现。当然,根据需求的不同,还有很多可以扩展和改进的地方。请给出详细代码
时间: 2024-02-18 18:05:42 浏览: 120
好的,下面是一个简单的实现代码,仅供参考:
```bash
#!/bin/bash
# 定义学生帐号文件、教师帐号文件和课程文件
STUDENT_FILE="students.txt"
TEACHER_FILE="teachers.txt"
COURSE_FILE="courses.txt"
# 定义学生和教师主界面
student_menu() {
echo "----------------------欢迎使用学生选课系统(学生)------------------------"
echo "* 1、学生选择课程 *"
echo "* 2、学生查看信息 *"
echo "* 3、学生退出系统 *"
echo "----------------------------------------------------------------------------------------"
}
teacher_menu() {
echo "----------------------欢迎使用学生选课系统(教师)------------------------"
echo "* 1、教师添加课程 *"
echo "* 2、教师删除课程 *"
echo "* 3、教师查看课程 *"
echo "* 4、教师退出系统 *"
echo "----------------------------------------------------------------------------------------"
}
# 定义登录界面
login() {
echo "----------------------------欢迎使用学生选课系统------------------------------"
echo "* 1、学生身份登录系统 *"
echo "* 2、教师身份登录系统 *"
echo "* 3、退出学生选课系统 *"
echo "----------------------------------------------------------------------------------------"
read -p "请输入选项(1-3):" option
case $option in
1)
read -p "请输入学生用户名:" username
read -s -p "请输入密码:" password
echo
if grep -q "^$username $password$" $STUDENT_FILE; then
student_main $username
else
echo "错误:用户名或密码错误"
fi
;;
2)
read -p "请输入教师用户名:" username
read -s -p "请输入密码:" password
echo
if grep -q "^$username $password$" $TEACHER_FILE; then
teacher_main
else
echo "错误:用户名或密码错误"
fi
;;
3)
exit
;;
*)
echo "错误:无效选项"
;;
esac
}
# 定义学生主界面
student_main() {
username=$1
while true; do
student_menu
read -p "请输入选项(1-3):" option
case $option in
1)
# 列出所有可选课程
echo "可选课程如下:"
awk '{if ($3==0) print $1, $2}' $COURSE_FILE
read -p "请输入课程编号:" course_id
# 判断课程是否存在且未选满
if awk '{if ($1=='$course_id' && $3==0) exit 1}' $COURSE_FILE; then
# 更新课程文件
awk '{if ($1=='$course_id') {$3=1; print} else print}' $COURSE_FILE > tmp
mv tmp $COURSE_FILE
# 更新学生信息
awk '{if ($1=="'$username'") {$3='$course_id'; print} else print}' $STUDENT_FILE > tmp
mv tmp $STUDENT_FILE
echo "选课成功"
else
echo "错误:课程不存在或已选满"
fi
;;
2)
# 显示学生信息
awk '{if ($1=="'$username'") print "学号:"$1"\n姓名:"$2"\n所选课程:"$3}' $STUDENT_FILE
;;
3)
# 退出程序
exit
;;
*)
echo "错误:无效选项"
;;
esac
done
}
# 定义教师主界面
teacher_main() {
while true; do
teacher_menu
read -p "请输入选项(1-4):" option
case $option in
1)
# 添加新课程
read -p "请输入课程编号:" course_id
read -p "请输入课程名称:" course_name
echo "$course_id $course_name 0" >> $COURSE_FILE
echo "课程添加成功"
;;
2)
# 删除已有课程
read -p "请输入课程编号:" course_id
if awk '{if ($1=='$course_id') exit 1}' $COURSE_FILE; then
echo "错误:课程不存在"
else
grep -v "^$course_id " $COURSE_FILE > tmp
mv tmp $COURSE_FILE
echo "课程删除成功"
fi
;;
3)
# 列出所有课程及其选课人数
echo "所有课程如下:"
awk '{print $1, $2, "(" $3 "人)"}' $COURSE_FILE
;;
4)
# 退出程序
exit
;;
*)
echo "错误:无效选项"
;;
esac
done
}
# 主程序
while true; do
login
done
```
注意,以上代码仅供参考,实际使用时需要根据需求进行修改和完善。另外,安全性也是需要考虑的一个因素,如密码的加密等。
阅读全文