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()
3.2 insert_stu_info()
3.3 insert_stugrade_info()
四、界面设计
分析:区别 echo < 和 echo <<
前者会将目标文件中的内容覆盖掉,后者直接追加到文件的末尾。
参考资料:
(1)collegeNo=line/,∗/即{}的用法:
https://www.cnblogs.com/xd502djj/p/3895738.html
http://blog.csdn.net/xcxinghai/article/details/11692675
实现的功能:增加
一、由于设计问题,表的数据要发生改变,否则会发生问题;所以,以后就用下面的数据形式:
(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
相关文章推荐
- Linux趣事 -- (2.5)学生信息管理系统
- Linux趣事 -- (2.6)学生信息管理系统(完结)
- Linux趣事 -- (2.3)学生信息管理系统
- Linux趣事 -- (2.4)学生信息管理系统
- Linux趣事 -- (2.1)学生信息管理系统
- 学生信息管理系统(在LINUX下用GCC编译需要更改conio.h为curses.h并修改相关代码)
- linux终端版学生信息管理系统【C语言实现】
- Linux环境下C语言实现简单的基于文件的学生信息管理系统
- linux终端版学生信息管理系统【C语言实现】
- LINUX下的C学生信息管理系统
- LINUX下的C学生信息管理系统
- 基于linux下的学生信息管理系统
- linux下C/C++学生信息管理系统
- 基于linux socket 简单学生信息管理系统server程序
- 基于linux socket 简单学生信息管理系统client程序
- (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)
- linux下c/c++实例之十五简单的学生信息管理系统
- linux学习笔记-学生信息管理系统(shell编程)
- C语言学生信息管理系统
- 学生信息管理系统之零碎拾取