用shell写一个作业管理系统

来源:互联网 发布:mac无线网卡驱动 编辑:程序博客网 时间:2024/05/01 09:11

放上来做个纪念,想抄袭的请绕道=。=

#!/bin/bash#本程序由四个文件组成,以下是main_menu模块#main_menu是主界面,通过它调用管理员、教师、学生三个模块chmod +x admin_module #设置管理员模块为可执行chmod +x teacher_module #设置教师模块为可执行chmod +x student_module #设置学生模块为可执行while truedo#主界面菜单如下:echo "================================================="echo "欢迎使用作业管理系统"echo "本系统支持三种不同的用户类型,请选择您的用户类型:"echo "1-管理员"echo "2-教师"echo "3-学生"echo "0-退出本程序"echo "================================================="read choice #读取用户输入,根据不同输入进入不同模块case $choice in1)./admin_module;; #管理员模块独立成一个文件,此处去调用它2)./teacher_module;; #教师模块独立成一个文件,此处去调用它3)./student_module;; #学生模块独立成一个文件,此处去调用它0) #输入0退出程序clearecho "感谢您的使用,再见!"sleep 1exit 0;;*) #若是有其他输入,给出警告echo "只能输入0、1、2、3中的一个"echo "请检查您的输入!"sleep 2clear;;esacdone#!/bin/bash#以下是管理员模块(admin_module)admin_pwd=123456 #管理员初始密码touch adminpwd_record #建立文件保存密码信息echo $admin_pwd >> adminpwd_record #将初始密码写进文件chmod 700 adminpwd_record #对文件进行权限控制admin_menu(){ #管理员菜单clearwhile truedoecho "================================================="echo "欢迎进入管理员菜单,请选择:"echo "1-创建教师账号"echo "2-修改教师账号"echo "3-删除教师账号"echo "4-显示教师账号"echo "5-创建课程"echo "6-修改课程"echo "7-删除课程"echo "8-显示课程列表"echo "9-修改密码"echo "0-返回上级菜单"echo "================================================="read admin_choice #读入用户输入case $admin_choice in #以下函数名与上面的功能一一对应1)create_tid;;2)alter_tid;;3)delete_tid;;4)show_tid;;5)create_course;;6)alter_course;;7)delete_course;;8)show_course;;9)change_adminpwd;;0)back;;*)echo "无效的输入,请检查您的输入!"sleep 2clear;;esacdone}create_tid(){ #创建教师账号,包括教师的工号、姓名和登录密码cleartouch ./teacher_record #建立文件teacher_record保存教师信息echo "-------------------------------------------------"echo "您可以使用本功能创建教师账号,请注意:"echo "1)工号命名规范为t+数字,总长6位,如t12345"echo "2)为了教师用户初次登陆方便,建议将初始密码设为123456"echo "-------------------------------------------------"echo -n "请输入您需要创建的教师用户个数:"read tnumfor((i=1;i<=tnum;i++))doecho -n "请输入工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"continuefiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"continuefiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"continuefigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 ] #如果命令退出状态是0,表示没有异常,说明这个用户已存在thenecho "该用户已存在!请重新输入"continue #跳过这次输入fiecho -n "请输入姓名:"read tnameecho -n "设置初始密码:"read tpwdecho $tid $tname $tpwd >> teacher_record #将教师信息写进文件echo "创建成功!"done}alter_tid(){ #修改教师账号clearecho -n "请输入您需要修改的教师工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在teacher_record中查找教师工号if [ $? -ne 0 ] #如果没有找到thenecho "没有找到这个工号,请检查您的输入!"else #如果找到了,先删除原来的信息,再录入新信息echo -n "请输入新的工号:"read new_tidif [ ${new_tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${new_tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#new_tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$new_tid" ./teacher_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 -a $new_tid != $tid ] #检查用户是否存在,新账号账号可以与当前账号相同thenecho "该用户已存在!请重新输入"returnfiecho -n "请输入新的姓名:"read new_tnameecho -n "请设置新密码:"read new_tpwdgrep -wv "$tid" ./teacher_record > teacher_record_tmp #全字查找并反转输出到新文件rm ./teacher_record #删除原来的记录mv teacher_record_tmp teacher_record #更改新文件的名字echo $new_tid $new_tname $new_tpwd >> teacher_record #将新信息写进文件fi}delete_tid(){ #删除教师账号clearecho -n "请输入需要删除的教师工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到则给出警告thenecho "该教师工号不存在,请检查您的输入!"else #如果找到grep -wv "$tid" ./teacher_record > teacher_record_tmp #全字查找并反转输出到新文件grep -w "$tid" ./teacher_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./teacher_record #删除原来的记录mv teacher_record_tmp teacher_record #改回原名字echo "删除成功,您可以在dustbin文件中找到被删的记录"sleep 2returnfi}show_tid(){ #显示已经创建的教师信息clearls ./teacher_record 2>/dev/null 1>&2 #首先检查这个文件存不存在if [ $? -ne 0 ] #如果不存在则退出thenecho "尚未有相关记录!"returnfiecho "您已经创建的教师信息是:"echo "工号 姓名 初始密码"cat ./teacher_record}create_course(){ #创建课程,包括课程号、课程名称以及负责老师的工号clearecho "-------------------------------------------------"echo "您可以使用本功能创建课程,请注意:"echo "1)课程号命名规范为c+数字,总长8位,如c1234567"echo "2)工号命名规范为t+数字,总长6位,如t12345"echo "-------------------------------------------------"touch ./course_record #创建文件course_record记录课程信息echo -n "请输入您需要创建的课程数:"read cnumfor((i=1;i<=cnum;i++))doecho -n "请输入课程号:"read cidif [ ${cid:0:1} != c ] #检查课程号是否符合命名规范,为了统一起见,这里规定课程号以c开头thenecho "不符合命名规范,本次输入无效!"continuefiif [[ ${cid:1} == *[!0-9]* ]] #从课程号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"continuefiif [ ${#cid} -ne 8 ] #检查长度是否满足要求thenecho "课程号长度不符合要求,本次输入无效!"continuefigrep -w "$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 ] #检查课程是否存在thenecho "课程已被创建,请重新输入!"continue #跳过这次输入fiecho -n "请输入课程名称:"read cnamegrep -w "$cname" ./course_record 1>/dev/null 2>&1 #课程名称也应该保持唯一性,所以需要检查if [ $? -eq 0 ]thenecho "课程名称已存在,请检查您的输入!"continuefiecho -n "输入授课教师工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范thenecho "不符合命名规范,本次输入无效!"continuefiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"continuefiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"continuefigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #检查教师工号存不存在if [ $? -ne 0 ] #如果教师工号不存在,说明分配有错误thenecho "输入无效,这个教师工号尚未被创建!"continue #跳过这次输入fiecho $cid $cname $tid >> course_record #将课程信息写进文件,写在一行方便以后查找echo "创建成功!"done}alter_course(){ #修改已经创建的课程信息clearecho "-------------------------------------------------"echo "您可以使用本功能修改课程,请注意:"echo "考虑到实际情况,不同学院/老师可能会开设同名的课程"echo "所以我们允许您创建名称相同的课程,但是两门课的课程号不能相同"echo "-------------------------------------------------"echo -n "请输入您需要修改的课程号:"read cidif [ ${cid:0:1} != c ] #检查课程号是否符合命名规范thenecho "没有找到该课程号,请检查您的输入!"returnfiif [[ ${cid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "没有找到该课程号,请检查您的输入!!"returnfiif [ ${#cid} -ne 8 ] #检查长度满是否足要求thenecho "没有找到该课程号,请检查您的输入!"returnfigrep -w "$cid" ./course_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,给出警告thenecho "没有找到该课程号,请检查您的输入!"else #如果找到了,先删除原来的信息,再输录入新信息echo -n "请输入新的课程号:"read new_cidif [ ${new_cid:0:1} != c ] #检查课程号是否符合命名规范thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${new_cid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#new_cid} -ne 8 ] #检查长度满是否足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$new_cid" ./course_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 -a $new_cid != $cid ] #如果课程已存在,给出警告并返回thenecho "该课程已被创建,请重新输入!"returnfiecho -n "请输入新的课程名:"read new_cnameecho -n "请输入新的负责老师工号:"read new_tidif [ ${new_tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${new_tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#new_tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$new_tid" ./teacher_record 1>/dev/null 2>&1 #检查该老师是否存在if [ $? -ne 0 ] #如果不存在,给出警告并返回thenecho "没有这个老师,请检查您的输入!"returnfigrep -wv "$cid" ./course_record > course_record_tmp #全字查找并反转输出到新文件rm ./course_record #删除原来的记录mv course_record_tmp course_record #更改新文件的名字echo $new_cid $new_cname $new_tid >> course_record #将新信息写进文件echo "修改成功!"fi}delete_course(){ #删除课程信息clearecho -n "请输入需要删除的课程号:"read cidif [ ${cid:0:1} != c ] #检查课程号是否符合命名规范thenecho "没有找到该课程号,请检查您的输入!"returnfiif [[ ${cid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "没有找到该课程号,请检查您的输入!!"returnfiif [ ${#cid} -ne 8 ] #检查长度满是否足要求thenecho "没有找到该课程号,请检查您的输入!"returnfigrep -w "$cid" ./course_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,给出警告thenecho "该课程不存在,请检查您的输入!"else #如果找到grep -wv "$cid" ./course_record > course_record_tmp #全字查找并反转输出到新文件grep -w "$cid" ./course_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./course_record #删除原来的记录mv course_record_tmp course_record #改回原名字echo "删除成功,您可以在dustbin文件中找到被删的记录"sleep 2returnfi}show_course(){ #显示已经创建的课程信息clearls ./course_record 2>/dev/null 1>&2 #首先检查这个文件存不存在if [ $? -ne 0 ] #如果不存在则退出thenecho "尚未有相关记录!"returnfiecho "您已经创建的课程信息是:"echo "课程号 课程名 负责教师工号"cat ./course_record}change_adminpwd(){ #管理员修改密码clearecho "您已进入密码修改界面"echo -n "请输入您的新密码(长度不少于6位):"read new_adminpwd0 #读入新的密码len=`expr length $new_adminpwd0` #求密码长度if [ $len -lt 6 ] #判断密码长度是否少于六位thenecho "密码长度不够,请按要求输入!"returnfiecho -n "请再次输入以确认:"read new_adminpwd1 #再次输入密码if [ $new_adminpwd0 -ne $new_adminpwd1 ] #检查两次输入是否匹配thenecho "两次输入不匹配!"returnelseecho $new_adminpwd0 > ./adminpwd_record #将新的密码写进文件echo "密码修改成功!"fi}back(){ #返回上级菜单clearexit}echo "提示:初始密码是123456,登陆后请及时修改!"echo -n "请输入管理员密码:"read linesecret=`head -n 1 ./adminpwd_record` #从保存密码的文件中读取if [ $line -eq $secret ]thenadmin_menu #如果密码正确,进入管理员菜单elseclearecho "密码错误!"sleep 2fi#!/bin/bash#以下是教师模块(teacher_module)t_pwd=123456 #教师初始密码touch tpwd_record #建立文件保存密码信息echo $t_pwd >> tpwd_record #每次运行初始密码都会被追加到文件,但验证的时候只取第一行chmod 700 tpwd_record #对文件进行权限控制teacher_menu(){ #教师菜单clearwhile truedoecho "================================================="echo "老师您好,请选择以下功能:"echo "1-查看您教授的课程"echo "2-添加学生账户"echo "3-修改学生账户"echo "4-删除学生账户"echo "5-查看学生账户信息"echo "6-发布课程信息"echo "7-修改已发布的课程信息"echo "8-删除已发布的课程信息"echo "9-查看已发布的课程信息"echo "10-布置作业"echo "11-修改已布置的作业"echo "12-删除已布置的作业"echo "13-查看已布置的作业"echo "14-查看学生作业完成情况"echo "15-修改密码"echo "0-返回上级菜单"echo "================================================="read teacher_choice #读取用户输入case $teacher_choice in #以下函数名与上面的功能一一对应1)check_course;;2)create_sid;;3)alter_sid;;4)delete_sid;;5)find_sid;;6)add_courseinfo;;7)alter_courseinfo;;8)delete_courseinfo;;9)show_courseinfo;;10)assign_job;;11)alter_job;;12)delete_job;;13)show_job;;14)check_job;;15)change_tpwd;;0)back;;*)echo "无效的输入,请检查您的输入!"sleep 2clear;;esacdone}check_course(){ #查看教授的课程clearecho -n "请输入您的工号以便查找:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,给出警告并退出thenecho "该账号不存在,请检查您的输入!"returnfigrep -w "$tid" ./course_record 1>/dev/null 2>&1 #在课程记录中查找工号,判断这个老师是否被分配了任务if [ $? -ne 0 ] #如果没有找到记录,给出警告并退出thenecho "您还没有被分配教学任务!"returnfiecho "您的教学任务是:"echo "课程号 课程名 负责教师工号"grep -w "$tid" ./course_record}create_sid(){ #创建学生账号clearecho "-------------------------------------------------"echo "您可以使用本功能创建学生账号,请注意:"echo "1)学号命名规范为s+数字,总长8位,如s1234567"echo "2)为了学生用户初次登陆方便,建议将初始密码设为123456"echo "-------------------------------------------------"touch ./student_record #创建文件student_record记录学生信息echo -n "请先输入您的工号以便匹配信息:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"continuefiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"continuefiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"continuefigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入您需要创建的学生用户个数:"read snumfor((i=1;i<=snum;i++))doecho -n "请输入学号:"read sidif [ ${sid:0:1} != s ] #检查学号是否符合命名规范,为了统一起见,这里规定学号以s开头thenecho "不符合命名规范,本次输入无效!"continuefiif [[ ${sid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"continuefiif [ ${#sid} -ne 8 ] #检查长度thenecho "学号长度不符合要求,本次输入无效!"continuefigrep -w "$sid" ./student_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 ] #如果学号已存在thenecho "学号已被创建,请重新输入!"continue #跳过这次输入fiecho -n "请输入姓名:"read snameecho -n "设置初始密码:"read spwdecho -n "请输入课程名:"read cnamegrep -w "$cname" ./course_record 1>/dev/null 2>&1 #检查课程是否存在if [ $? -ne 0 ]thenecho "该课程不存在,请检查您的输入!"continuefigrep -w "$cname $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ] #如果不匹配thenecho "您未被分配该教学任务,请检查您的输入!"continue #跳过这次输入fiecho $sid $sname $spwd $tid $cname >> student_record #将学生信息写进文件echo "创建成功!"done}alter_sid(){ #修改学生账户clearecho -n "请先输入您的工号以便匹配信息:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入您需要修改的学生学号:"read sidif [ ${sid:0:1} != s ] #检查学号是否符合命名规范,为了统一起见,这里规定学号以s开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${sid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#sid} -ne 8 ] #检查长度thenecho "学号长度不符合要求,本次输入无效!"returnfigrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,给出警告thenecho "没有找到这个学号,请检查您的输入!"else #如果找到了,先删除原来的信息,再输入新信息echo -n "请输入新的学号:"read new_sidif [ ${new_sid:0:1} != s ] #检查学号是否符合命名规范,为了统一起见,这里规定学号以s开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${new_sid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#new_sid} -ne 8 ] #检查长度thenecho "学号长度不符合要求,本次输入无效!"returnfigrep -w "$new_sid" ./student_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 -a $new_sid != $sid ] #如果命令退出状态是0,表示没有异常,说明这个用户已经存在thenecho "该学号已存在,本次修改无效!"returnfiecho -n "请输入新的姓名:"read new_snameecho -n "请设置新密码:"read new_spwdecho -n "请输入课程名称:"read new_cnamegrep -w "$new_cname" ./course_record 1>/dev/null 2>&1 #检查课程是否存在if [ $? -ne 0 ]thenecho "该课程不存在,本次修改无效!"returnfigrep -w "$new_cname $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,请检查您的输入!"continuefigrep -wv "$sid" ./student_record > student_record_tmp #全字查找并反转输出到新文件rm ./student_record #删除原来的记录mv student_record_tmp student_record #更改新文件的名字echo $new_sid $new_sname $new_spwd $tid $new_cname >> student_record #将新信息写进文件echo "修改成功!"fi}delete_sid(){ #删除学生账户clearecho -n "请先输入您的工号以便匹配信息:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,给出警告并返回thenecho "该账号不存在,本次操作无效!"returnfiecho -n "请输入需要删除的学生学号:"read sidif [ ${sid:0:1} != s ] #检查学号是否符合命名规范,为了统一起见,这里规定学号以s开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${sid:1} == *[!0-9]* ]] #从第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#sid} -ne 8 ] #检查长度thenecho "学号长度不符合要求,本次输入无效!"returnfigrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,给出警告thenecho "该学号不存在,请检查您的输入!"else #如果找到grep -w "$sid .* $tid" ./student_record 1>/dev/null 2>&1 #需要确认这个学生是否在该老师的教学班if [ $? -ne 0 ] #如果不是这个班的学生,给出警告并返回thenecho "不是本班学生,操作无效!"returnfigrep -wv "$sid" ./student_record > student_record_tmp #全字查找并反转输出到新文件grep -w "$sid" ./student_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./student_record #删除原来的记录mv student_record_tmp student_record #改回原名字echo "删除成功,您可以在dustbin文件中找到被删的记录"sleep 2returnfi}find_sid(){ #查看学生账户信息,因为不涉及修改、删除,所以不进行权限控制clearecho -n "请输入您要查找的学生学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -ne 0 ] #如果没有找到thenecho "没有相关记录!"returnfiecho "学号  姓名  密码  教师工号  课程名"grep -w "$sid" ./student_record}add_courseinfo(){ #发布课程信息clearecho "-------------------------------------------------"echo "您可以使用本功能发布课程信息,请注意:"echo "1)课程信息是您想告知学生的关于您所教授的课程的信息"echo "如:课程通知、参考资料、课堂纪律等;"echo "2)您可以在教师用户界面选择10来布置作业,请不要把发布课程信息"echo "和布置作业两个功能搞混了;"echo "3)每条信息请不要超过50个字符。您可以无限制地发布多条。"echo "-------------------------------------------------"echo -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级-0菜单thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要发布信息的课程号:"read cidgrep -w "$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,发布作废thenecho "该课程不存在,本次发布无效!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,请检查您的输入!"returnfiecho -n "请输入您要发布的信息(按回车结束输入):"read infoif [ ${#info} -gt 50 ]thenecho "内容过长,本次输入无效!"returnfiecho "$cid课程相关信息:" $info >> info_recordecho "发布成功!"}alter_courseinfo(){ #修改已发布的课程信息clearecho -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要修改发布信息的课程号:"read cidgrep -w "$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,发布作废thenecho "该课程不存在,本次发布无效!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,请检查您的输入!"returnfiecho -n "请输入新的信息(按回车结束输入):"read new_infoif [ ${#new_info} -gt 50 ]thenecho "内容过长,本次输入无效!"returnfigrep -wv "$cid" ./info_record > info_record_tmp #全字查找并反转输出到新文件grep -w "$cid" ./info_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./info_record #删除原来的记录mv info_record_tmp info_record #改回原名字echo "$cid课程相关信息更正:" $new_info >> info_record #将新信息写进文件echo "修改成功!"}delete_courseinfo(){ #删除已发布的课程信息clearecho -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要删除的课程号:"read cidgrep -w "$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,发布作废thenecho "该课程不存在,本次发布无效!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,请检查您的输入!"returnfigrep -v "^$cid" ./info_record > info_record_tmp #全字查找并反转输出到新文件grep "^$cid" ./info_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./info_record #删除原来的记录mv info_record_tmp info_record #改回原名字echo "删除成功,您可以在dustbin文件中找到被删的记录"}show_courseinfo(){ #显示已发布的课程信息,因为每个教学班不同,要进行权限控制clearecho -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入课程号:"read cidgrep -w "$cid" ./course_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到thenecho "没有找到该课程号,本次操作无效!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "没有权限查看,您尚未被分配该教学任务!"returnfigrep "^$cid" ./info_record 1>/dev/null 2>&1 #检查是否有相关信息if [ $? -ne 0 ]thenecho "您没有发布关于这门课的信息!"returnfiecho "您已经发布的信息如下:"grep "^$cid" ./info_record}assign_job(){ #发布作业,作业信息由作业号、课程号、教师工号、作业内容等组成clearecho "-------------------------------------------------"echo "您可以使用本功能发布作业,请注意:"echo "1)作业号命名规范为job+数字,如job1"echo "2)作业内容请尽可能精简(20字以内),超出请新建"echo "3)作业号请不要超过8位"echo "-------------------------------------------------"touch ./job_record #创建文件job_record记录作业信息echo -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要布置作业的课程号:"read cidgrep "^$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,发布作废thenecho "该课程不存在,本次发布无效!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,请检查您的输入!"returnfiecho -n "请输入您需要布置的作业数:"read jnumfor((i=1;i<=jnum;i++))doecho -n "请输入作业编号:"read jidif [ ${jid:0:3} != job ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"continuefiif [[ ${jid:3} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"continuefiif [ ${#jid} -eq 3 ] #如果只输入了jobthenecho "您只输入了job,没有编号!"continuefiif [ ${#jid} -gt 8 ] #作业号过长thenecho "作业号过长,本次输入无效!"continuefigrep "^$jid" ./job_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -eq 0 ] #如果作业已经被布置thenecho "作业号已存在,请检查是否重复布置,或者换一个作业号!"continue #跳过这次输入fiecho -n "作业内容:"read contentif [ ${#content} -gt 20 ]thenecho "作业内容过长,本次输入无效!"continuefiecho $jid $cid $tid $content "NO" >> ./job_record #相关信息写进job_recordecho "发布成功!"done}alter_job(){ #修改布置的作业信息clearecho -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要修改的作业号:"read jidgrep "^$jid" ./job_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,发布作废thenecho "作业号不存在,本次修改无效!"returnfigrep -w "$jid .* $tid" ./job_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,请检查您的输入!"returnfiecho -n "请输入新的作业号:"read new_jidif [ ${new_jid:0:3} != job ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${new_jid:3} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#new_jid} -eq 3 ] #如果只输入了jobthenecho "您只输入了job,没有编号!"returnfiif [ ${#new_jid} -gt 8 ] #作业号过长thenecho "作业号过长,本次输入无效!"returnfigrep "^$new_jid" ./job_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -eq 0 -a $new_jid != $jid ] #如果找到,发布作废thenecho "作业号已存在,本次修改无效!"returnfiecho -n "请输入课程号:"read new_cidgrep "^$new_cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,发布作废thenecho "该课程不存在,修改无效!"returnfigrep -w "$new_cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您未被分配该教学任务,修改无效!"returnfiecho -n "请输入新的内容(20字以内):"read new_contentif [ ${#new_content} -gt 20 ] #检查输入的长度thenecho "作业内容过长,本次输入无效!"returnfigrep -v "^$jid" ./job_record > job_record_tmp #全字查找并反转输出到新文件grep "^$jid" ./job_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./job_record #删除原来的记录mv job_record_tmp job_record #改回原名字echo $new_jid $new_cid $tid $new_content "NO" >> ./job_record #将新信息写进文件,作业完成情况默认是NOecho "修改成功!"}delete_job(){ #删除发布的作业clearecho -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要删除的作业号:"read jidgrep "^$jid" ./job_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有,删除无效thenecho "该课程不存在,删除无效!"returnfigrep -w "$jid .* $tid" ./job_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "您不是任课老师,没有权限删除!"returnfigrep -v "^$jid" ./job_record > job_record_tmp #全字查找并反转输出到新文件grep "^$jid" ./job_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./job_record #删除原来的记录mv job_record_tmp job_record #改回原名字echo "删除成功,您可以在dustbin文件中找到被删的记录"}show_job(){ #查看已布置的作业,不是负责本教学班的老师需要控制权限clearecho -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "该账号不存在,请检查您的输入!"returnfigrep -w "$tid" ./job_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "您还没有布置过作业!"returnfiecho "您布置过的作业是:"echo "作业号 课程号 我的工号 作业内容 完成情况(默认)"grep -w "$tid" ./job_record}check_job(){ #查看学生作业完成情况cleartouch ./stu_job_record #建立stu_job_record记录学生作业情况,该文件在老师和学生之间共享echo -n "请先输入您的工号以便匹配信息:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "该账号不存在,请检查您的输入!"returnfiecho -n "请输入需要检查的学生学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这个学生,查找无效thenecho "没有相关学生信息!"returnfigrep -w "$sid .* $tid" ./student_record 1>/dev/null 2>&1 #检查学生是否在自己的教学班if [ $? -ne 0 ]thenecho "不是本班学生,无查看权限!"returnfigrep -w "^$sid" ./stu_job_record 1>/dev/null 2>&1 #在stu_job_record中查找学生以检查学生完成情况if [ $? -ne 0 ]thenecho "该学生尚未提交作业信息!"returnelseecho "学号 姓名 课程号 作业号 完成情况 作业名称"grep "^$sid" ./stu_job_recordfiecho "您可输入作业名称打开学生提交的作业(如果要退出请按q再回车):"read lineif [ $line = q -o $line = Q ]thenecho "祝您教学愉快,再见!"sleep 1returnelsels ${line} 2>/dev/null 1>&2 #查找这个文件if [ $? -ne 0 ]thenecho "该作业不存在!"returnfiecho "作业内容是:"cat ${line} #将line当作文件名处理,输出line的内容fi}change_tpwd(){ #教师用户修改密码clearecho "您已进入密码修改界面"echo -n "请输入您的新密码(长度不少于6位):"read new_tpwd0len=`expr length $new_tpwd0` #求当前输入的长度if [ $len -lt 6 ] #如果长度小于6则给出警告thenecho "密码长度不够,请按要求输入!"returnfiecho -n "请再次输入以确认:"read new_tpwd1if [ $new_tpwd0 -ne $new_tpwd1 ] #确认两次输入是否匹配thenecho "两次输入不匹配!"returnelseecho $new_tpwd0 > ./tpwd_record #新密码写进文件echo "密码修改成功!"fi}back(){ #返回上级菜单clearexit}echo "提示:初始密码是123456,登陆后请及时修改!"echo -n "请输入教师用户密码:"read linesecret=`head -n 1 ./tpwd_record` #读取第一行,这就保证了读到的是更新后的密码if [ $line -eq $secret ]thenteacher_menu #如果密码正确,进入教师菜单elseclearecho "密码错误!"sleep 2fi#!/bin/bash#以下是学生模块(student_module)s_pwd=123456 #学生初始密码touch spwd_record #建立文件保存密码信息echo $s_pwd >> spwd_record #每次运行初始密码都会被追加到文件,但验证的时候只取第一行chmod 700 spwd_record #对文件进行权限控制student_menu(){ #学生菜单clearwhile truedoecho "================================================="echo "同学您好,请选择以下功能:"echo "1-搜索您的课程"echo "2-查看老师布置的作业"echo "3-新建作业"echo "4-修改作业"echo "5-删除作业"echo "6-查看已提交的作业"echo "7-查询作业提交信息"echo "8-修改密码"echo "0-返回上级菜单"echo "================================================="read student_choicecase $student_choice in #以下函数名与上面的功能一一对应1)find_course;;2)show_job;;3)create_doc;;4)alter_doc;;5)delete_doc;;6)show_doc;;7)check_jobinfo;;8)change_spwd;;0)back;;*)echo "无效的输入,请检查您的输入!"sleep 2clear;;esacdone}find_course(){ #搜索自己需要上的课程信息clearecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到thenecho "没有这个学号,请检查您的输入!"returnfiecho "您的课程信息是:"echo "学号 姓名 初始密码 指导老师工号 课程名"grep "^$sid" ./student_recordecho -n "如果要查询课程号,请在此输入课程名程(q+回车退出):"read lineif [ $line = q -o $line = Q ]thenecho "祝您学习进步,再见!"sleep 1returnelsegrep -w "$line" ./course_record 1>/dev/null 2>&1 #在course_record种查找课程if [ $? -ne 0 ] #如果没有找到thenecho "没有找到相关信息,请检查您的输入!"returnelseecho "查找到的记录如下:"echo "课程号 课程名 指导老师工号"grep -w "$line" ./course_recordfifi}show_job(){ #查看老师布置的作业clearecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,返回上级菜单thenecho "没有这个学号,请检查您的输入!"returnfiecho -n "请输入您的老师工号:"read tidgrep -w "$tid" ./teacher_record 1>/dev/null 2>&1 #在教师记录中查找工号if [ $? -ne 0 ] #如果工号不存在,返回上级菜单thenecho "该账号不存在,请检查您的输入!"returnfigrep -w "$sid .* $tid" ./student_record 1>/dev/null 2>&1 #检查这个学生在不在该老师的教学班if [ $? -ne 0 ] #如果不在就退出then echo "无权限查看,您不是这个老师的学生!"returnfigrep -w "$tid" ./job_record 1>/dev/null 2>&1 #在作业记录中匹配老师工号if [ $? -ne 0 ] #如果没有找到,返回上级菜单thenecho "该老师没有布置过作业!"returnfiecho "这个老师布置的作业信息是:"echo "作业号 课程号 教师工号 作业内容 完成状态(默认)"grep -w "$tid" ./job_record}create_doc(){ #新建作业clearecho "-------------------------------------------------"echo "您可以使用本功能完成作业,请注意:"echo "1)作业号命名规范为job+数字,如job1"echo "2)请不要在提交的作业名中使用特殊字符或空格,否则您的提交将会无效"echo "-------------------------------------------------"touch ./stu_job_recordecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,返回上级菜单thenecho "没有这个学号,请检查您的输入!"returnfiecho -n "请输入您的名字:"read snamegrep -w "$sid $sname" ./student_record 1>/dev/null 2>&1 #检查学号和姓名是否匹配if [ $? -ne 0 ]thenecho "输入无效,学号和姓名不匹配!"returnfiecho -n "输入作业号:"read jidgrep -w "$jid" ./job_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -ne 0 ] #如果作业不存在thenecho "输入无效,作业号不存在!"return #退出fiecho -n "输入课程号:"read cidgrep "^$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,退出thenecho "输入无效,该课程不存在!"returnfiecho -n "输入您的老师工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$sid .* $tid" ./student_record 1>/dev/null 2>&1 #检查这个学生在不在该老师的教学班if [ $? -ne 0 ] #如果不在就退出then echo "无操作权限,您不是这个老师的学生!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "输入无效,该老师不负责本课程!"returnfiecho -n "输入您要提交的作业文件名(请不要使用特殊字符或空格!):"read docnameecho "输入作业内容:"read doc_contentlen=`expr length $doc_content` #求当前输入的长度if [ $len -eq 0 ] #如果没有内容thenecho "您没有输入任何信息!本次提交无效!"returnfiecho $doc_content > ${docname} #提交内容写进文件echo $sid $sname $cid $jid "YES" $docname >> stu_job_record #学生信息写进保存作业提交信息的文件}alter_doc(){ #修改作业cleartouch ./stu_job_recordecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,返回上级菜单thenecho "没有这个学号,请检查您的输入!"returnfiecho -n "请输入您的名字:"read snamegrep -w "$sid $sname" ./student_record 1>/dev/null 2>&1 #检查学号和姓名是否匹配if [ $? -ne 0 ]thenecho "输入无效,学号和姓名不匹配!"returnfiecho -n "输入您要修改提交的作业号:"read jidgrep -w "$jid" ./stu_job_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -ne 0 ] #如果不存在thenecho "输入无效,该作业号未出现在您的提交记录里!"return #退出fiecho -n "输入课程号:"read cidgrep -w "$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,退出thenecho "输入无效,该课程不存在!"returnfigrep -w "$jid $cid" ./job_record 1>/dev/null 2>&1 #匹配作业号和课程号if [ $? -ne 0 ] #如果匹配失败则退出thenecho "输入无效,作业号与课程号不匹配!"returnfiecho -n "输入您的老师工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$sid .* $tid" ./student_record 1>/dev/null 2>&1 #检查这个学生在不在该老师的教学班if [ $? -ne 0 ] #如果不在就退出then echo "无操作权限,您不是这个老师的学生!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "输入无效,该老师不负责本课程!"returnfigrep -wv "$sname .* $jid" ./stu_job_record > stu_job_record_tmp #全字查找并反转输出到新文件grep -w "$sname .* $jid" ./stu_job_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./stu_job_record #删除原来的记录mv stu_job_record_tmp stu_job_record #改回原名字echo -n "输入您要重新提交的作业文件名(请不要使用特殊字符!):"read new_docnameecho "输入作业内容:"read new_doc_contentecho $new_doc_content > ${new_docname} #提交内容写进文件echo $sid $sname $cid $jid "YES" $new_docname >> stu_job_record #学生信息写进保存作业提交信息的文件echo "修改成功!"}delete_doc(){ #删除作业cleartouch ./stu_job_recordecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,返回上级菜单thenecho "没有这个学号,请检查您的输入!"returnfiecho -n "请输入您的名字:"read snamegrep -w "$sid $sname" ./student_record 1>/dev/null 2>&1 #检查学号和姓名是否匹配if [ $? -ne 0 ]thenecho "输入无效,学号和姓名不匹配!"returnfiecho -n "输入您要删除提交的作业号:"read jidgrep -w "$jid" ./stu_job_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -ne 0 ] #如果不存在thenecho "输入无效,该作业号不在您的提交列表里!"return #退出fiecho -n "输入课程号:"read cidgrep "^$cid" ./course_record 1>/dev/null 2>&1 #查找匹配的课程号if [ $? -ne 0 ] #如果没有这门课,退出thenecho "输入无效,该课程不存在!"returnfiecho -n "输入您的老师工号:"read tidif [ ${tid:0:1} != t ] #检查工号是否符合命名规范,为了统一起见,这里规定工号以t开头thenecho "不符合命名规范,本次输入无效!"returnfiif [[ ${tid:1} == *[!0-9]* ]] #从工号第二位开始检查后面是不是数字thenecho "不符合命名规范,本次输入无效!"returnfiif [ ${#tid} -ne 6 ] #检查工号长度满足要求thenecho "工号长度不符合要求,本次输入无效!"returnfigrep -w "$sid .* $tid" ./student_record 1>/dev/null 2>&1 #检查这个学生在不在该老师的教学班if [ $? -ne 0 ] #如果不在就退出then echo "无操作权限,您不是这个老师的学生!"returnfigrep -w "$cid .* $tid" ./course_record 1>/dev/null 2>&1 #检查这个老师是不是教这门课if [ $? -ne 0 ]thenecho "输入无效,该老师不负责本课程!"returnfigrep -wv "$sname .* $jid" ./stu_job_record > stu_job_record_tmp #全字查找并反转输出到新文件grep -w "$sname .* $jid" ./stu_job_record > dustbin #为了安全,将删除的记录放到dustbin文件rm ./stu_job_record #删除原来的记录mv stu_job_record_tmp stu_job_record #改回原名字echo "删除成功!"}show_doc(){ #查看已提交的作业clearecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到,返回上级菜单thenecho "没有这个学号,请检查您的输入!"returnfiecho -n "请输入您要查看的作业号:"read jidgrep -w "$jid" ./job_record 1>/dev/null 2>&1 #查找匹配的行,将错误信息重定向到标准输出if [ $? -ne 0 ] #如果作业不存在thenecho "输入无效,作业号不存在!"return #退出figrep -w "$sid .* $jid" ./stu_job_record 1>/dev/null 2>&1 #判断学号和作业号是否匹配if [ $? -ne 0 ]thenecho "您没有这个作业!请检查您的输入!"returnfiecho -n "请输入您的作业文件名:"read docnamels ${docname} 2>/dev/null 1>&2 #查找这个文件if [ $? -ne 0 ]thenecho "该作业不存在!"returnfiecho "您提交的作业内容是:"cat ${docname} #将line当作文件名处理,输出line的内容}check_jobinfo(){ #查询作业提交信息clearecho -n "请输入您的学号:"read sidgrep -w "$sid" ./student_record 1>/dev/null 2>&1 #首先查找这个idif [ $? -ne 0 ] #如果没有找到thenecho "没有这个学号,请检查您的输入!"returnfigrep -w "$sid" ./stu_job_record 1>/dev/null 2>&1 #再提交记录里查找这个idif [ $? -ne 0 ] #如果没有找到thenecho "没有关于这个学号的作业提交信息!"returnfiecho "您的作业提交信息是:"echo "学号 姓名 课程号 作业号 是否提交 提交文件名称"grep "^$sid" ./stu_job_record}change_spwd(){ #学生用户修改密码clearecho "您已进入密码修改界面"echo -n "请输入您的新密码(长度不少于6位):"read new_spwd0len=`expr length $new_spwd0` #求当前输入的长度if [ $len -lt 6 ] #如果长度小于6则给出警告thenecho "密码长度不够,请按要求输入!"returnfiecho -n "请再次输入以确认:"read new_spwd1if [ $new_spwd0 -ne $new_spwd1 ] #确认两次输入是否匹配thenecho "两次输入不匹配!"returnelseecho $new_spwd0 > ./spwd_record #新密码写进文件echo "密码修改成功!"fi}back(){ #返回上级菜单clearexit}echo "提示:初始密码是123456,登陆后请及时修改!"echo -n "请输入学生用户密码:"read linesecret=`head -n 1 ./spwd_record` #读取第一行,这就保证了读到的是更新后的密码echo $secretif [ $line -eq $secret ]thenstudent_menu #如果密码正确,进入教师菜单elseclearecho "密码错误!"sleep 2fi

有个人信息,不放图了。。。


原创粉丝点击