C语言实现字符界面下的学生管理成绩系统

源码在此

本系统学生信息由链表存储,账号由结构体数组存储,在程序开始时从文件中读入所有信息。如有信息变动即时保存到文件。文件为文本文件。再分为管理员端,教师端,学生端进行功能区分与权限管理。不足之处:仅仅区分了班级未区分专业
本系统不能直接注册账号,注册信息存到文件,管理员可见。未注册时仅可进行申诉


各端主要功能
学生端 教师端 管理员端
成绩查询及分析 班级及个人成绩查询及分析、排序 全专业的教师成绩功能
查询当天课表 学生的添加及成绩的修改 学生账号的增删改查
成绩申诉 下载全专业成绩到指定目录 查看账号注册与申诉
密码修改 查看申诉 账号登录记录
密码修改 密码修改

上表中各功能对应的C语言知识

成绩查询、更改、排序输出—>链表的排序与查找与更改
学生的增删—>链表的增删更改与文件读写
账号的增删改查—>结构体数组的增删改查与文件读写
成绩、账号申诉与登录记录—>文件的读写


输入检查
方法一 函数的递归调用

  将输入的获取写成一个函数。若在在函数内进行自身调用,则难以进行计数退出(达到一定错误次数后退出),除非传参计数。然而传参会使函数使用更加复杂,无需计数调用时此参数又更加鸡肋。若在函数外进行重复调用或计数,则更像第二种方法,且此时函数调用时又要裹一层壳,显得重复代码过多或不直观。然而我喜欢这种用法

方法二  while循环控制

  在输入获取外包裹一层while,出口为合法输入或计数退出。缺点同上。
解决方法
  写这样一个函数
  

void exam_input(    //获取输入的函数的入口    ){
        while(//计数||输入不合法  ){
        //调用函数
    }
}

好像并没有什么用


获取系统时间

time.h函数使用指南


一些辅助函数
rewind(stdin);//清空输入缓存区
Sleep(3000);//睡眠函数  停止程序3000ms
system("CLS");//清屏函数
system("color 70");//更改颜色设定
/*颜色属性由两个十六进制数字指定, 第一个为背景色, 第二个为前景色。
        每个数字可以为下列值之一:
        黑色 = 0      蓝色 = 1      绿色 = 2      湖蓝色 = 3
        红色 = 4      紫色 = 5      黄色 = 6      白色 = 7
        灰色 = 8      淡蓝色=9      淡绿色=A      白色=C
        淡紫色=D      淡黄色=E      亮白色=F
*/

文件操作

1.读取文件内容到链表/数组
2.更改链表/数组内容后重新写文件 若不想修改生效,则重新读取文件到  链表/数组
3.清空文件 用w+等格式打开即可


链表的操作

链表:单向链表的理解,创建及基本操作

2018/5/7

原文地址:https://www.cnblogs.com/kafm/p/12721869.html