内容
本系统是专为学生选课设计的一款管理系统。该系统中包含学生自主选课功能,查看相关信息的功能,同时教师也具有相关权限修改相应的内容。该系统可以在一定程度解决学生选课问题,同时增加了数据安全性。
功能分析
学生选课管理系统的功能分析可以反映该系统能够提供的各种功能,它能够清晰地把系统要完成的功能展示给要使用的人员。系统分为学生模块、教师模块。主要功能为学生通过系统查看可选课程,同时选择可选课程,选定后无法修改;教师可添加新课程,查看课程所选人数,删除课程信息等操作。该学生选课管理系统的具体功能如下:
(1)系统允许学生或教师登录
(2)系统允许学生选课
(3)系统允许学生查看个人信息及选课信息
(4)系统允许教师添加新课程
(5)系统允许教师删除已有课程
(6)系统允许教师查看某个课程的相关信息
设计学生选课系统。具体要求如下:
A、进入系统后需先登录系统,主界面如下:
----------------------------欢迎使用学生选课系统------------------------------
-
1、学生身份登录系统 *
-
2、教师身份登录系统 *
-
3、退出学生选课系统 *
B、如以学生身份登录系统,系统显示的主界面如下:
----------------------欢迎使用学生选课系统(学生)------------------------
-
1、学生选择课程 *
-
2、学生查看信息 *
-
3、学生退出系统 *
学生信息中需显示学生的学号、姓名、所选课程等
C、如以教师身份登录系统,系统显示的主界面如下:
----------------------欢迎使用学生选课系统(教师)------------------------
-
1、教师添加课程 *
-
2、教师删除课程 *
-
3、教师查看课程 *
-
4、教师退出系统 *
教师查看课程时,需显示课程的选课人数和课程名称,其他不强制要求
全部代码
#/bin/bash
# 学生账户信息
students=( "student1,123456,boy" "student2,654321,girl" )
# 学生选课信息
courses=( "course1,student1" )
# 教师账户信息
teachers=( "teacher1,123456" "teacher2,654321" )
# 课程信息
course_info=( "course1,teacher1,10,1" "course2,teacher2,20,0" )
# 学生登录[函数]
function student_login() {
read -p "请输入学生账号:" username
read -s -p "请输入学生密码:" password
echo ""
for student in ${students[@]}
do
if [ `echo $student |cut -d ',' -f 1` == $username -a `echo $student |cut -d ',' -f 2` == $password ]
then
echo "登录成功!"
student_menu $username
return
fi
done
echo "账号或密码错误,请重新登录!"
student_login
}
# 学生菜单[函数]
function student_menu() {
echo "============================"
echo " 欢迎进入学生选课管理系统 "
echo "********* 1. 选课***********"
echo "******2. 查看个人信息*******"
echo "******3. 查看选课信息*******"
echo "********4. 退出系统*********"
echo "============================"
read -p "请输入菜单编号:" choice
case $choice in
1)
select_course $1;;
2)
view_student_info $1;;
3)
view_course_info $1;;
4)
echo "退出系统!"
exit;;
*)
echo "无效的菜单编号,请重新输入!"
student_menu $1;;
esac
}
# 学生选课[函数]
function select_course() {
echo "可选课程如下:"
echo "课程名称 授课教师 课程容量"
echo "=============================="
for course in ${course_info[@]}
do
course_name=`echo $course | cut -d ',' -f 1`
teacher_name=`echo $course | cut -d ',' -f 2`
course_capacity=`echo $course | cut -d ',' -f 3`
echo "$course_name $teacher_name $course_capacity"
done
read -p "请输入要选修的课程名称:" course_name
for course in ${course_info[@]}
do
if [[ `echo $course | cut -d ',' -f 1` == $course_name ]]
then
course_capacity=`echo $course | cut -d ',' -f 3`
for item in ${courses[@]}
do
if [ `echo $item | cut -d ',' -f 1` == $course_name -a `echo $item | cut -d ',' -f 2` == $1 ]
then
echo "您已经选修了该课程!"
select_course $1
elif [[ `echo $item | cut -d ',' -f 2` == $1 ]]
then
echo "您已经选修了其他课程,不能再选修该课程!"
select_course $1
fi
done
if [[ ${#courses[@]} -ge $course_capacity ]]
then
echo "该课程已经选满!"
select_course $s1
else
courses+=("$course_name,$1")
echo "选课成功!"
student_menu $1
fi
fi
done
echo "没有开放该课程"
read -p "是否退出选课,Y/N " yes
if [ $yes=="Y" ]
then
student_menu $1
fi
}
# 查看学生个人信息[函数]
function view_student_info() {
for student in ${students[@]}
do
if [[ `echo $student | cut -d ',' -f 1` == $1 ]]
then
echo "学生姓名:`echo $student | cut -d ',' -f 1`"
echo "学生年龄:`echo $student | cut -d ',' -f 2`"
echo "学生性别:`echo $student | cut -d ',' -f 3`"
student_menu $1
fi
done
}
# 查看学生选课信息函数
function view_course_info() {
echo "您已选修的课程如下:"
echo "课程名称 授课教师"
echo "================"
for item in ${courses[@]}
do
if [[ `echo $item | cut -d ',' -f 2` == $1 ]]
then
course_name=`echo $item | cut -d ',' -f 1`
for course in ${course_info[@]}
do
if [[ `echo $course | cut -d ',' -f 1` == $course_name ]]
then
teacher_name=`echo $course | cut -d ',' -f 2`
echo "$course_name $teacher_name"
fi
done
fi
done
student_menu $1
}
# 教师登录函数
function teacher_login() {
read -p "请输入教师账号:" username
read -s -p "请输入教师密码:" password
echo ""
for teacher in ${teachers[@]}
do
if [[ $teacher == "$username,$password" ]]
then
echo "登录成功!"
teacher_menu
return
fi
done
echo "账号或密码错误,请重新登录!"
teacher_login
}
# 教师菜单函数
function teacher_menu() {
echo "============================"
echo "****欢迎进入教师管理系统****"
echo "*****1. 查看课程信息********"
echo "*****2. 教师添加课程********"
echo "*****3. 教师删除课程********"
echo "*****4. 退出系统************"
echo "============================"
read -p "请输入菜单编号:" choice
case $choice in
1)
view_course;;
2)
add_course;;
3)
rm_course;;
4)
echo "退出系统!"
exit;;
*)
echo "无效的菜单编号,请重新输入!"
teacher_menu;;
esac
}
# 教师添加课程函数
function add_course() {
echo "课程信息如下:"
echo "课程名称 授课教师 课程容量 选课人数"
echo "=============================="
for course in ${course_info[@]}
do
course_name=`echo $course | cut -d ',' -f 1`
teacher_name=`echo $course | cut -d ',' -f 2`
course_capacity=`echo $course | cut -d ',' -f 3`
course_count=`echo $course | cut -d ',' -f 4`
echo "$course_name $teacher_name $course_capacity $course_count"
done
read -p "请教师添加课程" course
if [[ ! $course =~ ^[^,]+,[^,]+,[0-9]+,[0-9]+$ ]]; then
echo "课程格式不正确,请重新输入。"
add_course
else
if [[ " ${course_info[@]} " =~ " ${course} " ]]; then
echo "该课程已添加,请重新输入。"
add_course
else
course_info+=("$course")
echo "添加成功!"
echo "所有选课信息如下:"
echo "课程名称 授课教师 课程容量 选课人数"
echo "=============================="
for course in ${course_info[@]}
do
course_name=`echo $course | cut -d ',' -f 1`
teacher_name=`echo $course | cut -d ',' -f 2`
course_capacity=`echo $course | cut -d ',' -f 3`
course_count=`echo $course | cut -d ',' -f 4`
echo "$course_name $teacher_name $course_capacity $course_count"
done
read -p "是否还需添加课,Y/N " yes
if [ "$yes" == "Y" ]; then
add_course
else
teacher_menu
fi
fi
fi
}
# 教师删除课程函数
function rm_course() {
echo "课程信息如下:"
echo "课程名称 授课教师 课程容量 选课人数"
echo "=============================="
for course in ${course_info[@]}
do
course_name=`echo $course | cut -d ',' -f 1`
teacher_name=`echo $course | cut -d ',' -f 2`
course_capacity=`echo $course | cut -d ',' -f 3`
course_count=`echo $course | cut -d ',' -f 4`
echo "$course_name $teacher_name $course_capacity $course_count"
done
read -p "请输入要删除的课程名称:" course_to_delete
for i in "${!course_info[@]}"; do
if [[ "${course_info[$i]}" == *"$course_to_delete"* ]]; then
unset 'course_info[$i]'
echo "删除成功!"
break
fi
done
echo "所有选课信息如下:"
echo "课程名称 授课教师 课程容量 选课人数"
echo "=============================="
for course in ${course_info[@]}
do
course_name=`echo $course | cut -d ',' -f 1`
teacher_name=`echo $course | cut -d ',' -f 2`
course_capacity=`echo $course | cut -d ',' -f 3`
course_count=`echo $course | cut -d ',' -f 4`
echo "$course_name $teacher_name $course_capacity $course_count"
done
read -p "是否还需删除课程,Y/N " yes
if [ "$yes" == "Y" ]; then
delete_course
else
teacher_menu
fi
}
# 查看课程信息函数
function view_course() {
echo "课程信息如下:"
echo "课程名称 授课教师 课程容量 选课人数"
echo "=============================="
for course in ${course_info[@]}
do
course_name=`echo $course | cut -d ',' -f 1`
teacher_name=`echo $course | cut -d ',' -f 2`
course_capacity=`echo $course | cut -d ',' -f 3`
course_count=`echo $course | cut -d ',' -f 4`
echo "$course_name $teacher_name $course_capacity $course_count"
done
teacher_menu
}
# 主程序
while true
do
echo "================================"
echo ****"欢迎进入学生选课管理系统****"
echo "**********1. 学生登录***********"
echo "**********2. 教师登录***********"
echo "**********3. 退出系统***********"
echo "================================"
read -p "请输入菜单编号:" choice
case $choice in
1)
student_login;;
2)
teacher_login;;
3)
echo "退出系统!"
exit;;
*)
echo "无效的菜单编号,请重新输入!";;
esac
done