您的位置:首页 > 运维架构 > Linux

Linux趣事 -- (2.2)学生信息管理系统

2017-11-10 17:42 417 查看
这篇是在 http://blog.csdn.net/wjf_1997/article/details/78474118 基础上继续完善学生信息管理系统的功能。

实现的功能:增加

一、由于设计问题,表的数据要发生改变,否则会发生问题;所以,以后就用下面的数据形式:

(1)DBCollegeInfo.txt



(2)DBStudentInfo.txt



(3)DBGradeInfo.txt



二、功能描述

增加功能从三个方面进行数据的添加,涉及到的函数有三个:

(1)insert_college_info():通过比较 添加的学院编号 和 已存在的学院编号 比较,如果相等,那么插入失败;否则将新添加的数据信息写入到文件尾部。

(2)insert_stu_info ():通过比较 添加的学生编号 和 已存在的学生编号 比较,如果相等,那么插入失败;否则将新添加的数据信息写到文件尾部。

(3)insert_stugrade_info():通过比较 添加的学生编号 和 已存在的学生编号 比较,如果相等,那么插入失败;否则将新添加的数据信息写到文件尾部。

三、代码

3.1 insert_college_info()

insert_college_info(){
show_college_info;
echo "请输入要添加的学院编号(若存在,则插入失败!):"
read collegeNo
export existFlag=false
while read line
do
lineCollegeNo=${line/,*/}
if [ "$lineCollegeNo" = "$collegeNo" ]; then
{
export existFlag=true
break
}
fi
done<$DBCollegeInfoPath

if [ "$existFlag" == "true" ]; then
{
export exitFlag=false
echo "此学院已经存在,插入失败!"
}
else {
echo "请输入学院的名称:"
read collegeName
echo "$collegeNo,$collegeName" >> $DBCollegeInfoPath
echo "学院记录插入成功!"
show_college_info;
}
fi
}


3.2 insert_stu_info()

insert_stu_info(){
show_stu_info;
echo "请输入要添加的学生编号(若存在,则插入失败!)"
read studentNo
export existFlag=false
while read line
do
lineStuNo=${line/,*/}
if [ "$lineStuNo" = "$studentNo" ]; then
{
export existFlag=true
break
}
fi
done<$DBStudentInfoPath

if [ "$existFlag" = "true" ]; then
echo "输入的学生编号已经存在,插入失败!"
else {
export existFlag=false
echo "请输入学生的姓名:"
read stuName
echo "请输入该学生所在的院校编号(必须是已经有记录的学院):"
read stuCollegeNo
while read line
do
collegeNo=${line/,*/}
if [ "$collegeNo" = "$stuCollegeNo" ]; then
{
export existFlag=true
break
}
fi
done<$DBCollegeInfoPath

if [ "$existFlag" = "false" ]; then
{
echo "输入的学院编号不存在!"
}
else {
echo "请输入该学生的说明信息( 1.在校inschool 2.休学suspend 3.辍学dropout ):"
read choice
case $choice in
"1")
echo "$studentNo,$stuName,$stuCollegeNo,inschool" >> $DBStudentInfoPath
echo "学生记录插入成功!"
show_stu_info;
;;
"2")
echo "$studentNo,$stuName,$stuCollegeNo,suspend" >> $DBStudentInfoPath
echo "学生记录插入成功!"
show_stu_info;
;;
"3")
echo "$studentNo,$stuName,$stuCollegeNo,dropout" >> $DBStudentInfoPath
echo "学生记录插入成功!"
show_stu_info;
;;
*)
echo "Usage:$0{1|2|3}"
echo "学生记录插入失败!"
show_stu_info;
;;
esac
}
fi

}
fi
}


3.3 insert_stugrade_info()

insert_stugrade_info(){
show_stugrade_info;
echo "请输入要
d2e3
添加的学生编号(若不存在,则插入失败!):"
read studentNo
export existFlag=false
export nowline=0;
export stuName=""
while read line
do
lineStudentNo=${line/,*/}
export nowline=$(($nowline+1))
if [ "$lineStudentNo" = "$studentNo" ]; then
{
export existFlag=true
export stuName=`echo "$line" | awk -F',' '{print $2}'`
break
}
fi
done<$DBStudentInfoPath

if [ "$existFlag" = "false" ]; then
{
echo "学生记录中没有这个学生,插入失败!"
}
else {
export existFlag=false
echo "请科目名称:"
read objectName
echo "请输入科目成绩(0-100):"
read gradeResult
if [ $gradeResult -le  100 ] && [ $gradeResult -ge 0 ]; then
{
echo "请输入该成绩的说明信息( 1.期末final 2.补考makeup ):"
read choice
case $choice in
"1")
echo "$studentNo,$stuName,$objectName,$gradeResult,final" >> $DBStudentGradeInfoPath
echo "插入成功!"
show_stugrade_info;
;;
"2")
echo "$studentNo,$stuName,$objectName,$gradeResult,makeup" >> $DBStudentGradeInfoPath
echo "插入成功!"
show_stugrade_info;
;;
*)
echo "Usage:$0{1|2}"
echo "插入失败!"
show_stugrade_info;
;;
esac
}
else {
echo "输入成绩不符合要求,插入失败!"
}
fi
}
fi
}


四、界面设计

while true
do

echo "=========================学生信息管理系统========================="
echo "0.退出"
echo "1.显示"
echo "2.增加"
echo "3.删除"
echo "4.修改"
echo "5.查找"
echo "输入choice:"

read choice
case $choice in

#零、退出
"0")
echo "退出!"
exit 0
;;

#一、显示(show)
"1")
echo "1.显示所有学院信息"
echo "2.显示所有学生信息"
echo "3.显示所有学生成绩信息"
echo "4.显示学生成绩统计结果"
echo "输入choice:"
read choice
case $choice in
"1")
show_college_info
;;
"2")
show_stu_info
;;
"3")
show_stugrade_info
;;
"4")
show_stu_grade_info
;;
*)
echo "Usage:$0{1|2|3|4}"
;;
esac ;;

#二、增加(insert)
"2")
echo "1.增加学院信息"
echo "2.增加学生信息"
echo "3.增加学生成绩信息"
echo "输入choice"
read choice
case $choice in
"1")
insert_college_info
;;
"2")
insert_stu_info
;;
"3")
insert_stugrade_info
;;
*)
echo "Usage:$0{1|2|3}"
esac ;;

#三、删除(delete)
"3")
echo "1.删除学院信息"
echo "2.删除学生信息"
echo "3.删除学生成绩信息"
echo "输入choice"
read choice
case $choice in
"1")
delete_college_info
;;
"2")
delete_stu_info
;;
"3")
delete_stugrade_info
;;
*)
echo "Usage:$0{1|2|3}"
esac ;;

#四、修改(update)
"4")
echo "1.修改学生的姓名"
echo "2.修改学院编号"
echo "输入choice"
read choice
case $choice in
"1")
update_stuName_info
;;
"2")
update_stuCollege_info
;;
*)
echo "Usage:$0{1|2}"
esac ;;

#五、查找(find)
"5")
find_stu_info
;;

*)
echo "Usage:$0{0|1|2|3|4|5}"
;;
esac
done


分析:区别 echo < 和 echo <<

前者会将目标文件中的内容覆盖掉,后者直接追加到文件的末尾。

参考资料:

(1)collegeNo=line/,∗/即{}的用法:

https://www.cnblogs.com/xd502djj/p/3895738.html

http://blog.csdn.net/xcxinghai/article/details/11692675
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: