Linux系统下的学生信息管理系统
代码功能:区分教师、学生登录两种模式,教师登录需要密码验证,可以进行学生信息的添加、删除、修改、排序、查找、打印、退出等功能,学生登录不需要密码验证,但只能进行查询操作。
首先要有一个链表,用来记录学生的姓名/学号/各科成绩/总分等信息。然后将链表的操作函数一起写在头文件中。
vi StuList.h //编写头文件
#ifndef STULIST_H
#define STULIST_H
typedef struct Node{
int id;
char name[32];
double yu;
double shu;
double ying;
double sum;
struct Node * next;
}node_t;
int len(node_t *p);//求已记录学生的数量
int add(node_t *p,node_t* n);//增加学员
void show(node_t* p);//打印所有的学员数据
int del(node_t* p,int id);//删除学员
int seek(node_t* p,char* name);//查找学员
//void seek(node_t* p,int id);//查找学员
int keep(node_t* p,node_t* n);//修改学员信息
int sort(node_t* p,int op);//排序
int ReadFile(node_t* p);//读物文件的记录
int WriteFile(node_t* p);//向文件写入数据
int clear(node_t* p);//清空链表
#endif //STULIST_H在这里插入代码片
vi Ui.h //编写登录界面的头文件
#ifndef UI_H
#define UI_H
void initUi();//开始界面
void AddUi();//增加学员界面
void DateUi();//数据显示界面
void DelUi();//删除界面
void SortUi();//排序界面
void QuitUi();//退出界面
#endif //UI_H
vi StuList.c //编写StuList源文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "StuList.h"
int len(node_t *p)//求已记录学生的数量
{
int size = 0;
while(p->next!=NULL){
p=p->next;
size++;
}
return size;
}
int add(node_t *p,node_t* n)//增加学员
{
//循环便利链表找到尾节点
while(p->next!=NULL){
p=p->next;
}
n->next = NULL;
p->next = n;
}
void show(node_t* p)//打印所有的学员数据
{
while(p->next!=NULL){
p = p->next;
printf("%d\t%s\t%lg\t%lg\t%lg\t%lg\n",p->id,p->name,p->ying, p->yu,p->shu,p->sum);
}
}
int del(node_t* p,int id)//删除学员
{
node_t* p1 = p;//记录上一个节点
while(p->next!=NULL){
p1 = p;
p = p->next;
if(p->id == id){
p1->next = p->next;
free(p);
p = NULL;
return 0;
}
}
return -1;
}
int seek(node_t* p,char* name)//查找学员
{
int i = -1;
while(p->next!=NULL){
p=p->next;
if(strcmp(p->name,name)==0){
printf("%s\t的学号是%d\t,英语成绩为%lg\t语文成绩为%lg\t> 数学成绩为%lg\t总分为%lg\n",p->name,p->id,p->ying,p->yu,p->shu,p->su m