基于Linux,用shell编程实现学生选课管理
时间: 2024-02-16 18:02:52 浏览: 102
Shell程序之学生管理系统
5星 · 资源好评率100%
使用shell编程实现学生选课管理可以通过编写一些shell脚本来实现。以下是一个简单的示例:
1. 创建一个学生选课管理的数据库
首先,我们可以创建一个名为“student_course.db”的sqlite3数据库文件,用于存储学生选课的数据信息。可以使用以下命令:
```
sqlite3 student_course.db
```
2. 创建学生和课程表
在学生选课管理系统中,我们需要一个学生表和一个课程表,用于存储所有的学生和课程信息。可以使用以下命令创建表:
```shell
sqlite3 student_course.db "CREATE TABLE student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, gender TEXT, department TEXT);"
sqlite3 student_course.db "CREATE TABLE course (id INTEGER PRIMARY KEY, name TEXT, credit INTEGER, teacher TEXT, time TEXT, max INTEGER, selected INTEGER);"
```
3. 编写shell脚本
接下来,我们可以编写一些shell脚本来实现学生选课管理的功能。以下是一个示例:
```shell
#!/bin/bash
# 显示菜单
function show_menu() {
echo "1. 添加学生"
echo "2. 添加课程"
echo "3. 学生选课"
echo "4. 查询选课情况"
echo "5. 退出"
}
# 添加学生
function add_student() {
echo "请输入学生信息:"
read -p "学号:" id
read -p "姓名:" name
read -p "年龄:" age
read -p "性别:" gender
read -p "专业:" department
# 将学生信息插入到student表中
sqlite3 student_course.db "INSERT INTO student (id, name, age, gender, department) VALUES ($id, '$name', $age, '$gender', '$department');"
echo "添加成功!"
}
# 添加课程
function add_course() {
echo "请输入课程信息:"
read -p "编号:" id
read -p "名称:" name
read -p "学分:" credit
read -p "教师:" teacher
read -p "时间:" time
read -p "最大选课人数:" max
# 将课程信息插入到course表中
sqlite3 student_course.db "INSERT INTO course (id, name, credit, teacher, time, max, selected) VALUES ($id, '$name', $credit, '$teacher', '$time', $max, 0);"
echo "添加成功!"
}
# 学生选课
function select_course() {
echo "请输入选课信息:"
read -p "学生编号:" student_id
read -p "课程编号:" course_id
# 判断选课人数是否已满
max=$(sqlite3 student_course.db "SELECT max FROM course WHERE id = $course_id;")
selected=$(sqlite3 student_course.db "SELECT selected FROM course WHERE id = $course_id;")
if [ $selected -ge $max ]; then
echo "选课失败,该课程已满!"
return
fi
# 将选课信息插入到选课表中
sqlite3 student_course.db "INSERT INTO selection (student_id, course_id) VALUES ($student_id, $course_id);"
# 更新选课人数
sqlite3 student_course.db "UPDATE course SET selected = selected + 1 WHERE id = $course_id;"
echo "选课成功!"
}
# 查询选课情况
function query_selection() {
echo "请输入查询信息:"
read -p "学生编号(输入0查询全部):" student_id
if [ $student_id -eq 0 ]; then
# 查询全部选课情况
sqlite3 student_course.db "SELECT student.id, student.name, course.id, course.name, course.credit, course.teacher, course.time FROM selection JOIN student ON selection.student_id = student.id JOIN course ON selection.course_id = course.id;"
else
# 查询指定学生的选课情况
sqlite3 student_course.db "SELECT student.id, student.name, course.id, course.name, course.credit, course.teacher, course.time FROM selection JOIN student ON selection.student_id = student.id JOIN course ON selection.course_id = course.id WHERE student_id = $student_id;"
fi
}
# 循环显示菜单
while true
do
show_menu
read -p "请输入选项:" option
case $option in
1)
add_student
;;
2)
add_course
;;
3)
select_course
;;
4)
query_selection
;;
5)
exit
;;
*)
echo "无效选项!"
;;
esac
echo
done
```
在上述脚本中,我们定义了一些函数用于实现添加学生、添加课程、学生选课和查询选课情况等功能。通过调用这些函数,我们可以实现一个简单的学生选课管理系统。
以上是一个简单的基于Linux的shell编程实现学生选课管理示例,仅供参考。实际应用中,需要根据实际需求进行修改和优化。
阅读全文