基于linux编程的学生选课管理系统

内容

 本系统是专为学生选课设计的一款管理系统。该系统中包含学生自主选课功能,查看相关信息的功能,同时教师也具有相关权限修改相应的内容。该系统可以在一定程度解决学生选课问题,同时增加了数据安全性。

功能分析

学生选课管理系统的功能分析可以反映该系统能够提供的各种功能,它能够清晰地把系统要完成的功能展示给要使用的人员。系统分为学生模块、教师模块。主要功能为学生通过系统查看可选课程,同时选择可选课程,选定后无法修改;教师可添加新课程,查看课程所选人数,删除课程信息等操作。该学生选课管理系统的具体功能如下:

(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
  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值