基于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
学生选课系统管理平台是一个非常复杂的系统,需要考虑到多个方面的因素,包括用户权限管理、课程管理、学生管理、教师管理、选课管理等等。下面简单介绍一下如何基于Linux实现学生选课系统管理平台。 1. 系统架构设计 学生选课系统管理平台的基本架构包括用户界面、后台服务器和数据库。其中,用户界面提供给用户进行选课、添加课程等操作的界面,后台服务器负责处理用户请求并与数据库进行交互,数据库则负责存储所有的数据。 2. 编程语言选择 在Linux环境下,我们可以使用多种编程语言来实现学生选课系统管理平台,包括C、C++、Java、Python等。其中,C和C++是比较底层的语言,可以实现更高效的代码,但需要花费更多的时间和精力编写代码。Java和Python则是比较高级的语言,具有更高的开发效率和更好的可读性,但运行速度会稍慢一些。 3. 数据库选择 我们可以选择多种数据库来存储学生选课系统管理平台的数据,包括MySQL、SQLite、PostgreSQL等。其中,MySQL是最常用的数据库之一,具有较高的性能和可靠性,同时也拥有广泛的社区支持和丰富的生态系统。 4. 开发工具选择 在Linux环境下,我们可以使用多种开发工具来开发学生选课系统管理平台,包括Vim、Emacs、Sublime Text、VS Code等。其中,Vim和Emacs是比较传统的编辑器,具有较高的可定制性和效率,但需要较长的学习曲线。Sublime Text和VS Code则是比较新型的编辑器,具有更加友好的用户界面和更多的插件支持,同时也具有较高的效率和可定制性。 5. 系统安全性设计 在开发学生选课系统管理平台时,需要考虑到系统的安全性设计。我们可以采用多种方法来提高系统的安全性,包括密码加密、用户权限控制、数据备份等。同时,我们也需要注意系统的漏洞和安全风险,及时处理和修复这些问题。 总之,开发一个高效、安全、稳定的学生选课系统管理平台需要多方面的考虑和努力。希望以上的介绍能够对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值