Linux下的简易的学生教务系统(C)
C语言的基础工具学习完后,做了一个比较综合的小程序,就是学生教务管理系统,(其实有两个,这里先说第一个)
要求很简单,共有6个功能,就是输入、查询、排名、修改、显示所有成绩、退出,就是把一些基础的C工具运用到一起的一个小程序。
首先要把界面先做好,因为要使程序一直在运行,所以这里用while(1)来维持,做好界面以后,要让终端输入选项,因为只有6个选项,所以界定一下。
每个选项做一个函数,用switch的功能来选择。这里我用结构体数组来做。
主函数就是这样,接下来进入第一个选项,插入。输入函数的功能比较简单,我用一个while(1)循环一直输入,当你输入end时就结束输入回到主菜单,当然,每个数组元素都要先开辟一个定义的结构体大小的内存空间。
输入完了信息之后,就要进入查找功能,我这里通过查找学生的姓名来查询输入的信息,因为并不能确定输入了多少条信息,所以还是用到了while循环。
再来就是给输入的信息排序了,这里我依然用自己熟悉的冒泡排序,道理很简单,但写起程序来还是有很多磕磕碰碰的地方。当用户进入排名这一功能时,我会让用户选择用哪一门的成绩来排序,因为三种情况的编写条理都一样,所以我就以其中一种情况说明。
我就以语文成绩排名来说明。当初写的时候一直就卡在这里,现在想想还蛮有趣的。
这里先遍历所有信息,记下信息的总条数,方便使用冒泡排序。因为输入的时候是以end结尾,所以只要检测到end信息就输入结束了。当初我一直都是冒泡这里卡住,要么段错误,要么死循环,一直没弄清楚问题到底出在哪了,调试了好几次,后来和同学讨论发现,问题出在了赋值上,用过冒泡排序的同学都知道要用个中间量来存较小(大)的值,一开始我用的是一个中间结构体量,直接赋值,问题一大堆,先发现了字符串不能传递,要用strcpy来覆盖,结构体之间的成员变量未初始化也不能传值,就一直卡这里,其实只要另建一个int型的变量来存结构体中的int成员就可以了,用一个未初始化的结构体成员去接另一个结构体的同类型成员就会出错,这里搞好了,下面也就轻松了。
然后就是显示了,把排好的信息显示出来。
下一个功能就是修改了,同排名一样,我也提供了3种修改,也同排名一样,不要新建一个结构体利用新结构体的成员变量去改原来的结构体的成员变量,直接定义与结构体成员同类型的变量即可。
接下来就比较简单了,
修改完了就是显示所有信息了,这也不难,遍历打印就行了。
最后一项退出可以很简单,在那个case6里直接exit(1)就行了,当然你也可以做的美观一些。因为是我的第一个小程序,所以还是加了些东西的。
总的来说,这个程序还是满综合的,也是对基础的C语言工具做个小结吧。