shell脚本学生管理系统(1)系统允许学生或教师登录 (2)系统允许学生选课 (3)系统允许学生查看个人信息及选课信息 (4)系统允许教师查看某个课程的相关信息

时间: 2023-11-18 19:13:22 浏览: 28
好的,这是一个更完整的学生选课管理系统的示例代码,包括学生和教师登录、选课、查看个人信息和课程信息等功能。代码如下: ```shell #!/bin/bash # 学生账户信息 students=( "student1,123456" "student2,654321" ) # 学生选课信息 courses=( "course1,student1" "course2,student2" ) # 教师账户信息 teachers=( "teacher1,123456" "teacher2,654321" ) # 课程信息 course_info=( "course1,teacher1,10" "course2,teacher2,20" ) # 学生登录函数 function student_login() { read -p "请输入学生账号:" username read -s -p "请输入学生密码:" password echo "" for student in ${students[@]} do if [[ $student == "$username,$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 ]] then echo "您已经选修了该课程!" return elif [[ `echo $item | cut -d ',' -f 2` == $1 ]] then echo "您已经选修了其他课程,不能再选修该课程!" return fi done if [[ ${#courses[@]} -ge $course_capacity ]] then echo "该课程已经选满!" return fi courses+=("$course_name,$1") echo "选课成功!" return fi done echo "该课程不存在!" } # 查看学生个人信息函数 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`" return 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 } # 教师登录函数 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 "==========================" read -p "请输入菜单编号:" choice case $choice in 1) view_course;; 2) echo "退出系统!" exit;; *) echo "无效的菜单编号,请重新输入!" teacher_menu;; esac } # 查看课程信息函数 function view_course() { 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 } # 主程序 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 ``` 这个学生选课管理系统的实现需要一些数据结构,比如 `students` 数组存储学生账户信息,`courses` 数组存储学生选课信息,`teachers` 数组存储教师账户信息,`course_info` 数组存储课程信息。通过条件语句、循环语句和函数来实现学生和教师登录、选课、查看个人信息和课程信息等功能。 以上是一个简单的学生选课管理系统的示例代码,希望对您有所帮助。如果您有其他问题或需要进一步了解,请随时向我提问。

相关推荐

最新推荐

recommend-type

2层设计-2.4G RF高频信号收发模块硬件(cadence原理图+PADS PCB图+BOM)文件.zip

2层设计-2.4G RF高频信号收发模块硬件(cadence原理图+PADS PCB图+BOM)文件,可供学习及设计参考。
recommend-type

JAVA文件传输(lw+源代码).zip

FTP(File Transfer Protocol)是文件传输协议的简称。 FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 目前FTP服务器软件都为国外作品,例如Server_U、IIS,国内成熟的FTP服务器软件很少,有一些如(Crob FTP Server),但从功能上看来远不能和那些流行的服务器软件媲美。
recommend-type

语音端点检测及其在Matlab中的实现.zip

语音端点检测及其在Matlab中的实现.zip
recommend-type

Matlab 交互式多模型目标跟踪IMM.zip

Matlab 交互式多模型目标跟踪IMM.zip
recommend-type

numpy试题(2021年整理精品文档).zip

numpynumpy试题(2021年整理精品文档).zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解答下列问题:S—>S;T|T;T—>a 构造任意项目集规范族,构造LR(0)分析表,并分析a;a

对于这个文法,我们可以构造以下项目集规范族: I0: S -> .S S -> .T T -> .a I1: S -> S. [$ T -> T. [$ I2: S -> T. I3: S -> S.;S S -> S.;T T -> T.;a 其中,点(.)表示已经被扫描过的符号,;$表示输入串的结束符号。 根据项目集规范族,我们可以构造出LR(0)分析表: 状态 | a | $ ---- | - | - I0 | s3| I1 | |acc I2 | | 其中s3表示移进到状态3,acc表示接受。在分析字符串a;a时,我们可以按照以下步骤进行
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。