学生成绩管理系统(Linux Shell版)

Github完整代码链接
主要包括语言包(系统有中英文)和主系统程序以及辅助登录注册模块

  • 主系统(main.sh)
#!/bin/bash

##########################
##########main############
##########################

. lang.sh

print()
{
    if [ $1 -eq 1 ]; then
#       PRINT=(${print1[*]})
        for((i = 0; i < ${#print1[*]}; i++)); do
            PRINT[$i]=${print1[$i]}
        done
    else
        for((i = 0; i < ${#print2[*]}; i++))
        do
            PRINT[$i]=${print2[$i]}
        done
    fi

    while true
    do
        clear
        if test $1 -eq 1
        then
            echo -e "*************\e[31;1m${PRINT[0]}\e[0m**************"
        else
            echo -e "*************\e[31;1m${PRINT[0]}\e[0m***************"
        fi
        echo -e "***\e[31;1m1.\e[32;1m${PRINT[1]}\t\e[31;1m2.\e[32;1m${PRINT[2]}\e[0m\t***"
        echo -e "***\e[31;1m3.\e[32;1m${PRINT[3]}\t\e[31;1m4.\e[32;1m${PRINT[4]}\e[0m\t***"
        if [ $1 -eq 1 ]; then
            echo -e "***\e[31;1m5.\e[32;1m${PRINT[5]}\t\e[31;1m0.${PRINT[6]}\e[0m\t***"
        else
            echo -e "***\e[31;1m5.\e[32;1m${PRINT[5]}\t\e[31;1m0.${PRINT[6]}\e[0m\t\t\t***"
        fi
        if test $1 -eq 1
        then
            echo "*******************************************"
        else
            echo "***********************************************************"
        fi
        read -p "${PRINT[7]}" num
        case $num in
            1)
                if [ $1 == 1 ]; then
                    insert 1
                else
                    insert 2
                fi
                ;;
            2)
                if [ $1 == 1 ]; then
                    modify 1
                else
                    modify 2
                fi
                ;;
            3)
                if [ $1 == 1 ]; then
                    delete 1
                else
                    delete 2
                fi
                ;;
            4)
                if [ $1 == 1 ]; then
                    query 1
                else
                    query 2
                fi
                ;;
            5)
                if [ $1 == 1 ]; then
                    order 1
                else
                    order 2
                fi
                ;;
            0)
                if [ $1 == 1 ]; then
                    quit 1
                else    
                    quit 2
                fi
                ;;
            *)
                echo -e "\e[31;1m${PRINT[8]}\e[0m"
                read -N 1 -p "${PRINT[9]}"
        esac
    done
}

function start()
{
    clear
    if [[ ! -e stuInfo.txt || ! -f stuInfo.txt ]]; then
        touch ./stuInfo.txt
    fi
    if [[ ! -e stuRecord.txt || ! -f stuRecord.txt ]]; then
        touch ./stuRecord.txt
    fi
    echo -e "**********\e[32;1m请选择语言(Please select language)\e[0m**********"
    select lang in '中文(Chinese)' '英文(English)' '退出(Exit)'
    do
        if [[ $lang == '中文(Chinese)' ]] #if [ $REPLY -eq 1 ]
        then
            print 1
            break
        elif [[ $lang == '英文(English)' ]]
        then
            print 2
            break
        elif [[ $lang = '退出(Exit)' ]]; then
            . ./startup.sh
        else
            echo -e "\e[31;1m无效选择(Invalid choice)\e[0m"
        fi
    done
}

insert()
{
    if [[ $1 == 1 ]]; then
        for((i=0;i<${#insert1[*]};i++)); do
            INSERT[$i]=${insert1[$i]}
        done
    else
        for((i=0;i<${#insert2[*]};i++)); do
            INSERT[$i]=${insert2[$i]}
        done
    fi
    clear
    select choose in "${INSERT[0]}" "${INSERT[1]}"; do
        if [[ $choose == "${INSERT[2]}" ]]; then
            while :; do
                read -p "${INSERT[3]}> " sNo
                if [[ ${#sNo} -ne 4 ]]; then
                    echo -e "\e[31;1m${INSERT[4]}\e[0m"
                    break
                fi
                res=$(cat stuInfo.txt | cut -f 1 | grep $sNo)
                if [[ ${#res} -ne 4 ]]; then # 该学生不存在
                    echo -e "**********\e[32;1m${INSERT[5]}($sNo)${INSERT[6]}\e[0m**********"
                    echo -e "\e[31;1m${INSERT[7]}:(\e[32;1m${INSERT[8]} ${INSERT[9]} ${INSERT[10]}\e[31;1m)\e[33;1m${INSERT[11]}: \e[32;1m${INSERT[12]} ${INSERT[13]} 006\e[0m"
                    while true; do
                        read -p "> " -a stuInfo
                        if [[ ${#stuInfo[*]} < 3 ]]; then
                            echo -e "\e[31;1m${INSERT[14]}\e[0m"
                        else
                            break
                        fi
                    done
                    read -p "${INSERT[15]}?(y/n)> " flag1
                    if [[ $flag1 = y ]]; then
                        while :; do
                            echo -e "******************\e[32;1m${INSERT[16]}($sNo)${INSERT[17]}\e[0m******************"
                            echo -e "\e[31;1m${INSERT[18]}:(\e[32;1m${INSERT[19]} ${INSERT[20]} ${INSERT[21]}\e[31;1m)[${INSERT[22]}]\e[33;1m${INSERT[23]}: \e[32;1m80 92 85\e[0m"
                            while :; do
                                read -p "> " -a stuRecord
                                if [[ ${#stuRecord[*]} < 3 ]]; then
                                    echo -e "\e[31;1m${INSERT[24]}\e[0m"
                                    continue
                                elif [[ ${stuRecord[0]} == *[!0-9]* || ${stuRecord[1]} == *[!0-9]* || ${stuRecord[2]} == *[!0-9]* ]]; then
                                    echo -e "\e[31;1m${INSERT[33]}\e[0m"
                                    continue
                                elif [[ ${stuRecord[0]} -gt 100 || ${stuRecord[1]} -gt 100 || ${stuRecord[2]} -gt 100 ]]; then
                                    echo -e "\e[31;1m${INSERT[25]}\e[0m"
                                    continue
                                elif [[ ${stuRecord[0]} -lt 0 || ${stuRecord[1]} -lt 0 || ${stuRecord[2]} -lt 0 ]]; then
                                    echo -e "\e[31;1m${INSERT[26]}\e[0m"
                                    continue
                                else
                                    break
                                fi
                            done
                            read -p "${INSERT[27]}?(y/n)> " flag2
                            if [[ $flag2 == y ]]; then
#                               stuRecord[${#stuRecord[*]}]=$(date +%F)
                                let "avg=(stuRecord[0]+stuRecord[1]+stuRecord[2])/3"
                                d=`date +%F`/`date +%X`
                                echo -e "$sNo\t${stuInfo[0]}\t${stuInfo[1]}\t${stuInfo[2]}\t$d" >> ./stuInfo.txt
                                echo -e "$sNo\t${stuInfo[0]}\t${stuRecord[0]}\t${stuRecord[1]}\t${stuRecord[2]}\t$avg\t$d" >> ./stuRecord.txt
                                echo -e "\e[33;1m${INSERT[28]}\e[0m"
                                break
                            else
                                continue
                            fi
                        done
                        break
                    else
                        continue
                    fi  
                else # 该学生已存在
                    # find special record from the file
                    sName=`cat stuInfo.txt | grep "$res" | cut -f 2`
                    echo -e "\e[31;1m${INSERT[29]}(\e[32;1m$sNo<-->${sName}\e[31;1m)${INSERT[30]}\e[0m"
                    break
                fi
            done
        elif [[ $choose == "${INSERT[31]}" ]]
        then
            break
        else
            echo -e "\e[31;1m${INSERT[32]}\e[0m"
        fi
    done
}

modify()
{
    if [[ $1 == 1 ]];then
        for((i=0;i<${#modify1[*]};i++)); do
            MODIFY[$i]=${modify1[$i]}
        done
    else
        for((i=0;i<${#modify2[*]};i++)); do
            MODIFY[$i]=${modify2[$i]}
        done
    fi
    clear
    select choose in "${MODIFY[0]}" "${MODIFY[1]}"; do
        if [ $REPLY == 1 ]; then
            lines=$(wc -l stuInfo.txt | awk '{print $1}')
            if [[ $lines -eq 0 ]]; then
                echo -e "\e[33;1m${MODIFY[20]}\e[0m"
                continue
            else
                sNos=$(awk '{print $1}' stuInfo.txt)
                echo -n -e "\e[32;1m${MODIFY[21]}: (\e[0m"
                echo -n $sNos
                echo -e "\e[32;1m)\e[0m"
            fi
            while :; do
                read -p "${MODIFY[2]}> " sNo
                if [[ ${#sNo} -ne 4 ]]; then
                    echo -e "\e[31;1m${MODIFY[3]}\e[0m"
                    continue
                else
                    break
                fi
            done
            res=$(cat stuInfo.txt | cut -f 1 | grep "$sNo")
            if [[ ${#res} != 4 ]]; then
                echo -e "\e[31;1m${MODIFY[4]}(\e[32;1m$sNo\e[31;1m)${MODIFY[5]}\e[0m"
                continue
            else
                grep -v "$sNo" stuRecord.txt > tmp.txt # 删除原始指定记录
                mv tmp.txt stuRecord.txt
                while :; do
                    sName=$(cat stuInfo.txt | grep "$sNo" | cut -f 2)
                    echo -e "******************\e[32;1m${MODIFY[6]}(\e[31;1m$sNo<-->$sName\e[32;1m)${MODIFY[7]}\e[0m******************"
                    echo -e "\e[31;1m${MODIFY[8]}:(\e[32;1m${MODIFY[9]} ${MODIFY[10]} ${MODIFY[11]}\e[31;1m)[${MODIFY[12]}]\e[33;1m${MODIFY[13]}: \e[32;1m90 81 85\e[0m"
                    while :; do
                        read -p "> " -a stuRecord
                        if [[ ${#stuRecord[*]} < 3 ]]; then
                            echo -e "\e[31;1m${MODIFY[14]}\e[0m"
                            continue
                        elif [[ ${stuRecord[0]} == *[!0-9]* || ${stuRecord[1]} == *[!0-9]* || ${stuRecord[2]} == *[!0-9]* ]]; then
                            echo -e "\e[31;1m${MODIFY[22]}\e[0m"
                            continue
                        elif [[ ${stuRecord[0]} -gt 100 || ${stuRecord[1]} -gt 100 || ${stuRecord[2]} -gt 100 ]]; then
                            echo -e "\e[31;1m${MODIFY[15]}\e[0m"
                            continue
                        elif [[ ${stuRecord[0]} -lt 0 || ${stuRecord[1]} -lt 0 || ${stuRecord[2]} -lt 0 ]]; then
                            echo -e "\e[31;1m${MODIFY[16]}\e[0m"
                            continue
                        else
                            break
                        fi
                    done
                    read -p "${MODIFY[17]}?(y/n)> " flag1
                    if [[ $flag1 == y ]]; then
#                       stuRecord[${#stuRecord[*]}]=$(date +%F)
                        sName=$(cat stuInfo.txt | grep "$sNo" | cut -f 2)
                        let "avg=(stuRecord[0]+stuRecord[1]+stuRecord[2])/3"
                        d=`date +%F`/`date +%X`
                        echo -e "$sNo\t${sName}\t${stuRecord[0]}\t${stuRecord[1]}\t${stuRecord[2]}\t$avg\t$d" >> ./stuRecord.txt
                        echo -e "\e[33;1m${MODIFY[18]}\e[0m"
                        break
                    else
                        continue
                    fi
                done
            fi
        elif [ $REPLY == 2 ]; then
            break
        else
            echo -e "\e[31;1m${MODIFY[19]}\e[0m"
        fi
    done
}

delete(){
    if [[ $1 == 1 ]];then
        for((i=0;i<${#delete1[*]};i++)); do
            DELETE[$i]=${delete1[$i]}
        done
    else
        for((i=0;i<${#delete2[*]};i++)); do
            DELETE[$i]=${delete2[$i]}
        done
    fi
    clear
    select choice in "${DELETE[0]}" "${DELETE[1]}"; do
        if [ $REPLY == 1 ]; then
            lines=$(wc -l stuInfo.txt | awk '{print $1}')
            if [[ $lines -eq 0 ]]; then
                echo -e "\e[33;1m${DELETE[13]}\e[0m"
                continue
            else
                sNos=$(awk '{print $1}' stuInfo.txt)
                echo -n -e "\e[32;1m${DELETE[9]}: (\e[0m"
                echo -n $sNos
                echo -e " All\e[32;1m)\e[0m-->\e[31;1m(${DELETE[10]})\e[0m"
            fi
            while :; do
                read -p "${DELETE[2]}> " sNo
                if [[ ${#sNo} -ne 4 ]]; then
                    if [[ ${sNo} = "All" || $sNo = 'all' ]]; then
                        break
                    else
                        echo -e "\e[31;1m${DELETE[3]}\e[0m"
                        continue
                    fi
                else
                    break
                fi
            done
            res=$(cat stuInfo.txt | cut -f 1 | grep "$sNo")
            if [ ${#res} != 4 ]; then
                if [[  $sNo = 'All' || $sNo = 'all' ]]; then
                    read -p "${DELETE[11]}?(y/n)> " f1
                    if [[ ${f1} == y ]]; then
                        read -p "${DELETE[12]}?(y/n)> " f2
                        if [[ $f2 = y ]]; then
                            cat /dev/null > stuInfo.txt
                            cat /dev/null > stuRecord.txt
                            echo -e "\e[33;1m${DELETE[7]}\e[0m"
                        else
                            continue
                        fi
                    else
                        continue
                    fi
                else
                    echo -e "\e[31;1m${DELETE[4]}(\e[32;1m$sNo\e[31;1m)${DELETE[5]}\e[0m"
                    continue
                fi
            else
                sName=$(cat stuInfo.txt | grep "$sNo" | cut -f 2)
                read -p "${DELETE[6]}($sNo<-->$sName)?(y/n)> " flag
                if [[ $flag == y ]]; then
                    cat stuInfo.txt | grep -v "$sNo" > tmp1.txt
                    cat stuRecord.txt | grep -v "$sNo" > tmp2.txt
                    mv tmp1.txt stuInfo.txt
                    mv tmp2.txt stuRecord.txt
                    echo -e "\e[33;1m${DELETE[7]}\e[0m"
                else
                    continue
                fi
            fi
        elif [ $REPLY == 2 ]; then
            break
        else
            echo -e "\e[31;1m${DELETE[8]}\e[0m"
        fi
    done
}

query()
{
    if [[ $1 == 1 ]];then
        for((i=0;i<${#query1[*]};i++)); do
            QUERY[$i]=${query1[$i]}
        done
    else
        for((i=0;i<${#query2[*]};i++)); do
            QUERY[$i]=${query2[$i]}
        done
    fi
    clear
    select choice in "${QUERY[0]}" "${QUERY[1]}"; do
        if [ $REPLY == 1 ]; then
            lines=$(wc -l stuInfo.txt | awk '{print $1}')
            if [[ $lines -eq 0 ]]; then
                echo -e "\e[33;1m${QUERY[22]}\e[0m"
                continue
            else
                sNos=$(awk '{print $1}' stuInfo.txt)
                echo -n -e "\e[32;1m${QUERY[23]}: (\e[0m"
                echo -n $sNos
                echo -e "\e[32;1m)\e[0m"
            fi
            while :; do
                read -p "${QUERY[2]}> " sNo
                if [[ ${#sNo} -ne 4 ]]; then
                    echo -e "\e[31;1m${QUERY[3]}\e[0m"
                    continue
                else
                    break
                fi
            done
            res=`cat stuInfo.txt | cut -f 1 | grep "$sNo"`
            if [ ${#res} != 4 ]; then
                echo -e "\e[31;1m${QUERY[4]}(\e[32;1m$sNo\e[31;1m)${QUERY[5]}\e[0m"
                continue
            else
#               printf "%12s%12s%12s%12s%16s%16s%16s\n" 学号 姓名 数据库 C语言 数据结构 平均成绩 修改时间
                echo -e "\e[31;1m${QUERY[6]}:(\e[32;1m${QUERY[7]} ${QUERY[8]} ${QUERY[9]} ${QUERY[10]} ${QUERY[11]} ${QUERY[12]} ${QUERY[13]}\e[31;1m)\e[0m"
                for((i = 0; i < 7; i++)); do
                    stuRecord[$i]=$(cat stuRecord.txt | grep "$sNo" | cut -f `expr $i + 1`)
                done
                printf "%8s%12s%8s%8s%8s%8s%22s\n" ${stuRecord[0]} ${stuRecord[1]} ${stuRecord[2]} ${stuRecord[3]} ${stuRecord[4]} ${stuRecord[5]} ${stuRecord[6]}
                read -p "${QUERY[14]}?(y/n)> " flag
                if [[ $flag = "y" ]]; then
                    echo -e "\e[31;1m${QUERY[15]}:(\e[32;1m${QUERY[16]} ${QUERY[17]} ${QUERY[18]} ${QUERY[19]} ${QUERY[20]}\e[31;1m)\e[0m"
                    for((i=0;i<5;i++)); do
                        stuInfo[$i]=`cat stuInfo.txt | grep "$sNo" | cut -f $(expr $i + 1)`
                    done
                    printf "%8s%12s%8s%8s%22s\n" ${stuInfo[0]} ${stuInfo[1]} ${stuInfo[2]} ${stuInfo[3]} ${stuInfo[4]}
                else
                    continue
                fi
            fi
        elif [ $REPLY == 2 ]; then
            break
        else
            echo -e "\e[31;1m${QUERY[21]}\e[0m"
        fi
    done
}

order()
{
    if [[ $1 == 1 ]];then
        for((i=0;i<${#order1[*]};i++)); do
            ORDER[$i]=${order1[$i]}
        done
    else
        for((i=0;i<${#order2[*]};i++)); do
            ORDER[$i]=${order2[$i]}
        done
    fi
    clear
    select choice in "${ORDER[0]}" "${ORDER[1]}"; do
        if [ $REPLY == 1 ]; then
            echo -e "\e[31;1m${ORDER[2]}(\e[32;1m1\e[31;1m.${ORDER[3]}\e[32;1m2\e[31;1m.${ORDER[4]}\e[32;1m3\e[31;1m.${ORDER[5]})\e[0m"
            while :; do
                read -p "${ORDER[6]}> " num
                if [[ $num == 1 ]]; then
                    field=2
                elif [[ $num == 2 ]]; then
                    field=1
                elif [[ $num == 3 ]]; then
                    field=6
                else
                    echo -e "\e[31;1m${ORDER[7]}\e[0m"
                    continue
                fi
                read -p "${ORDER[8]}?(y/n)> " flag
                if [[ $flag = "y" ]]; then
                    option="-r"
                else
                    option=""
                fi
                lines=`wc -l stuRecord.txt | awk '{print $1}'`
                echo -n -e "\e[31;1m${ORDER[9]}\e[32;1m$lines\e[31;1m${ORDER[10]}\e[0m"
                if [[ lines != 0 ]]; then
                    echo -e "   \e[31;1m${ORDER[11]}:(\e[32;1m${ORDER[12]} ${ORDER[13]} ${ORDER[14]} ${ORDER[15]} ${ORDER[16]} ${ORDER[17]} ${ORDER[18]}\e[31;1m)\e[0m"
                fi
                sort $option -t $'\t' -k $field -n stuRecord.txt | awk '{printf("%-8s%-12s%-8s%-8s%-8s%-8s%-16s\n", $1,$2,$3,$4,$5,$6,$7)}'
                break
            done
        elif [ $REPLY == 2 ]; then
            break
        else
            echo -e "\e[31;1m${ORDER[19]}\e[0m"
        fi
    done
}

quit()
{
    if [ $1 == 1 ]; then
        for((i = 0; i < ${#quit1[*]}; i++)); do
            QUIT[$i]=${quit1[$i]}
        done
    else
        for((i = 0; i < ${#quit2[*]}; i++)); do
            QUIT[$i]=${quit2[$i]}
        done
    fi
    read -p "${QUIT[0]}" flag
    if [[ $flag == y ]]; then
        . ./main.sh
    fi
}

##################################StartUp######################################
start
##################################EndUp######################################
  • 语言包(lang.sh)
#!/bin/bash

##########################
#########language#########
##########################

#print
print1=(学生成绩管理系统 增加学生记录 修改学生记录 删除学生记录 查询学生记录 排列学生记录 退出系统 '请输入操作编号> ' '无效的操作编号' '按任意键继续...')
print2=('Student Score Management System' 'Insert Student Record' 'Modify Student Record' 'Delete Student Record' 'Query Student Record' 'Sort Student Record' 'Quit' 'Please type number> ' 'Invalid number' 'Press any key to continue...')

#insert
insert1=('插入' '退出' '插入' '请输入学号' '学号为4位' '插入学生' '信息' '格式' '姓名' '性别' '班级' '举例' '张三' '男' '输入应有3个字段' '是否确定' '插入学生' '记录' '格式' '数据库' 'C语言' '数据结构' '百分制' '举例' '输入应有3个字段' '成绩为百分制' '成绩为非负数' '是否确定' '插入成功' '该学生' '已存在' '退出' '无效选择' '存在非整数')
insert2=('Insert' 'Quit' 'Insert' 'Please type number' 'The length of number should be 4' 'Insert student' 'information' 'Format' 'Name' 'Gender' 'Class' 'e.g.' 'zhangsan' 'male' 'Request three fields' 'Are you sure' 'Insert student' 'record' 'Format' 'Database' 'C-language' 'DataStructure' 'Hundred-mark System' 'e.g.' 'Request three fields' 'Hundred-mark System' 'Non-negative' 'Are you sure' 'Insert successfully!' 'The student' 'has existed' 'Quit' 'Invalid choice' 'Existed non-integer') 


#modify
modify1=('修改' '退出' '请输入学号' '学号为4位' '该学生' '不存在' '修改学生' '记录' '格式' '数据库' 'C语言' '数据结构' '百分制' '举例' '输入应有3个字段' '成绩为百分制' '成绩为非负数' '是否确定修改' '修改成功' '无效选择' '学生表为空' '所有学生' '存在非整数')
modify2=('Modify' 'Quit' 'Please type number' 'The length of number should be 4' 'The student' 'is not existed' 'Modify student' 'record' 'Format' 'Database' 'C-language' 'DataStructure' 'Hundred-mark System' 'e.g.' 'Request three fields' 'Hundred-m-ark System' 'Non-negative' 'Are you sure to modify' 'Modify successfully!' 'Invalid choice' 'None of students' 'All students' 'Existed non-integer')

#delete
delete1=('删除' '退出' '请输入学号' '学号为4位' '该学生' '不存在' '确定删除学生' '删除成功' '无效选择' '所有学生' '提示:All表示删除所有学生' '确定删除所有学生' '确定不后悔' '学生表为空')
delete2=('Delete' 'Quit' 'Please type number' 'The length of number should be 4' 'The student' 'is not existed' 'Are you sure to remove student' 'Remove successfully!' 'Invalid choice' 'All students' 'Note: "All" means to remove all students only once' 'Are you sure to remove all students' 'No regrets exactly' 'None of students')

#query
query1=('查询' '退出' '请输入学号' '学号为4位' '该学生' '不存在' '格式' '学号' '姓名' '数据库' 'C语言' '数据结构' '平均成绩' '修改时间' '是否查询学生信息' '格式' '学号' '姓名' '性别' '班级' '修改时间' '无效选择' '学生表为空' '所有学生')
query2=('Query' 'Quit' 'Please type number' 'The length of number should be 4' 'The student' 'is not existed' 'Format' 'SNo' 'Name' 'Database' 'C-language' 'DataStructure' 'Average' 'Modified-date' 'Whether to query student Information' 'Format' 'SNo' 'Name' 'Gender' 'Class' 'Modified-date' 'Invalid choice' 'None of students' 'All students')

#order
order1=('排序' '退出' '按照' '默认' '学号' '平均成绩' '请输入编号' '无效选择' '是否降序' '共计' '条记录' '格式' '学号' '姓名' '数据库' 'C语言' '数据结构' '平均成绩' '修改时间' '无效选择')
order2=('Sort' 'Quit' 'Sort by' 'Default' 'SNo' 'Average' 'Please type choice' 'Invalid choice' 'Whether to descend or not' 'Total' 'records' 'Format' 'SNo' 'Name' 'Database' 'C-language' 'DataStructure' 'Average' 'Modified-date' 'Invalid choice')

#quit
quit1=("是否确定退出?(y/n)> ")
quit2=("Are you sure to exit?(y/n)> ")
  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于嵌入式Linux学生成绩管理系统是一个利用嵌入式设备和操作系统来实现学生成绩管理的系统。该系统可以方便高效地记录、查询和分析学生成绩数据。 首先,学生成绩管理系统需要一个硬件平台,一般选择嵌入式设备作为核心处理器,例如树莓派或者RK3399等。这些硬件平台通常具备较强的计算和存储能力,并且支持Linux操作系统的安装和运行。 其次,该系统需要选用适合的嵌入式Linux操作系统。嵌入式Linux具有开源、稳定、易于移植等特点,同时支持各种常见的编程语言和软件开发工具。常见的嵌入式Linux操作系统有Debian、Ubuntu等,可以根据具体需求选择适合的系统本。 在软件方面,学生成绩管理系统主要由数据库、服务端和客户端组成。数据库用于存储学生成绩数据,可以选择关系型数据库如MySQL或者非关系型数据库如MongoDB。服务端提供数据管理、查询和分析的接口,可以使用Python、Java等编程语言开发。客户端提供用户界面,可以使用Qt、HTML等技术进行开发。 学生成绩管理系统可以实现学生成绩数据的录入、修改、删除和查询功能。通过服务端提供的接口,可以进行学生成绩数据的统计、分析、生成报告等高级功能。同时,可以通过客户端实现管理员和教师对学生成绩数据的管理和查询,学生和家长对学生成绩数据的查看和分析。 总而言之,基于嵌入式Linux学生成绩管理系统可以方便、高效地管理学生成绩数据,为教育工作者提供强有力的支持,提高教学和学习效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值