大家好,又见面了,我是你们的朋友全栈君。
C语言简单实现学生成绩管理系统
一、前言
- 首先,要写一个管理系统必须要先搭出一个框架来,即明确自己要实现哪些功能,将每个功能都写陈一个函数,然后再去编写实现各个功能的函数,最后再思考各个函数之间的相互调用。如果没有先搭好框架,而是直接一上手就去写代码的话,写着写着就会有种无从下手的感觉,就像你要做一道编程题目一样,首先要做的肯定是去读题目,看题目想要让我们干什么,然后才会去写代码。
- 其次,最好是实现一个功能就测试一个,因为这样比较方便调试,出现bug的时候自己先思考,然后再去查找对应的知识点,一定要自己多思考,这样才会使自己的理解和记忆更加深刻
- 最后,在写管理系统的时候会出现很多bug,在解决完之后会有很大收获。
二、涉及内容及要求
- C语言的选择,循环,数组,字符串,链表,文件的熟练掌握
- 链表的增删改查及链表排序
- 文件录入链表及把链表信息存入文件
三、小技巧
- 多文件存放信息,即将学生成绩信息,学生账号信息,教师账号信息存入不同文件中,这样方便内容的读取
- 将链表内容导入文件时一行存放一个人的信息,方便读取
- 在进入系统时就把学生成绩信息,学生账号信息,教师账号信息从文件录入链表
- 修改密码时必须验证原密码,在修改完密码后立即存入文件
- 在系统退出时将学生成绩信息导入文件,不用每次修改后就导入
- 在输入密码时在屏幕上用’*’来代替用户输入的密码
四、正文
- 界面
- 我的管理系统分了三个端口:教师端,学生端,管理员端
- 首先,这是登录界面
- 教师端功能界面
- 学生端界面
- 学生端功能界面
- 管理员功能界面
- 详情 每个端口进行登录时都会进行账号和密码验证,若账号不存在则自动退出系统,账号正确密码错误时会有三次机会,若正确则进入,若错误则输出错误信息,并提示还有几次机会,三次错误系统会自动退出:
五、代码块
- 头文件
#define MAX 20
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <unistd.h>
#include <errno.h>
typedef struct student {
char xuehao[9] ;
char name[MAX] ;
int total ;
char Advanced[4] ;
char C_language_programming[4] ;
char English[4] ;
float average ;
}Item ;
typedef struct node1 {
Item student ;
struct node1 * next ;
}Node_student;
typedef Node_student * Linklist_student ;
typedef struct account_password {
char account [9] ;
char password [MAX] ;
} AAP ;
typedef struct node2 {
AAP account_password ;
struct node2 * next ;
} Node_aap ;
typedef Node_aap * Linklist_aap ;
Linklist_student chuangjian () ; //学生链表的创建
void entering1 (Linklist_student) ; //学生信息导出
Linklist_student export1 () ; //学生信息导入
void entering2(Linklist_aap, int) ; //账号信息导出
Linklist_aap export2(int) ; //账号信息导入
void add1(Linklist_student) ; //增加学生信息
void del1(Linklist_student) ; //删除学生信息
void change1(Linklist_student) ; //修改学生信息
void add2(Linklist_aap) ; //增加账号信息
void del2(Linklist_aap) ; //删除账号信息
int change2(Linklist_aap, const char *) ; //密码修改
void find2(Linklist_aap) ; //查找账号信息
void password_change() ; //管理员密码修改
void find1(Linklist_student) ; //查找学生信息
void Performance_analysis(Linklist_student) ; //成绩分析
int Print2(Linklist_aap) ; //打印账号信息
void sort () ; //对学生链表进行排序
void Print1() ; //打印学生信息
void Print3() ; //打印某个账号信息
void show() ; //系统界面
void manager_interface() ; //管理员登录界面
void manager_login() ; //管理员登录(密码验证)
void manager_power() ; //管理员权限
void student_interface() ; //学生登录界面
void register1 () ; //用户注册
void login (int) ; //用户登录(账号密码验证)
void student_power (const char *) ; //学生用户权限界面
void teacher_register () ; //教师用户注册
void teacher_power() ; //教师用户权限
void password_input(char * p) ; //密码输入
void student_handle() ; //学生账号信息管理
void teacher_handle() ; //教师账号信息管理
char * s_gets(char * p, int n) ; //获取字符串
- 函数定义
#include "head.h"
void password_input (char * p) {
//密码输入
int i = 0 ;
while (i<19) {
char ch ;
ch = getch() ;
if (ch == 'n' || ch == 'r') {
p[i] = '