目录
系统简介:
该系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和智能化,其主要功能是利用计算机对学生的各种信息,如:姓名、学号、成绩等,进行日常管理,如查询、修改、增加、删除等。
student.h文件:
#ifndef STUDENT_H
#define STUDENT_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//也作为学号输入是否正确的判断条件
#define N 6 //方便以后修改班级人数,
//定义单个学生的结构体
//此时内存没有给分空间
typedef struct Student{
char name[16];
int age; //年龄
int sex; //1代表男,0女
int id; //学号
int score; //成绩
}STU;
//定义这个班级所有学生的结构体
//此时内存没有给分空间
typedef struct Class{
STU num[N]; //定义一个班级学生结构体数组
int count; //记录学生个数
}CLASS;
void Menu(); //打印菜单的函数
void ADD(CLASS *p); //增加学生信息的函数
void SEE(CLASS *p); //查看所有学生信息的函数
void MOD(CLASS *p); //根据学号修改学生信息的函数
void DEL(CLASS *p); //根据学号删除学生信息的函数
void SORT(CLASS *p); //根据成绩将学生降序排序的函数
#endif
Menu.c:
#include "./student.h"
void Menu(){
printf("----------------------------------\n");
printf("| *********学生管理系统********* |\n");
printf("| 1.ADD stu 2.SEE stu 3.MOD stu |\n");
printf("| 4.DEL stu 5.SORT score 6.EXIT |\n");
printf("----------------------------------\n");
}
function.c:
#include "./student.h"
void ADD(CLASS *p) {
while(1){
if(p->count == 6){
printf("班级已满,无法插入\n");
return;
}
STU temp;
LOOP1:
printf("请输入学生姓名 年龄 性别 学号 成绩\n");
scanf("%s",temp.name);
int i;
if(*(temp.name) == '#') {
printf("插入结束\n");
return;
}else{
strcpy(p->num[p->count].name,temp.name);
LOOP0:
scanf("%d %d %d %d",&p->num[p->count].age,&p->num[p->count].sex,
&p->num[p->count].id,&p->num[p->count].score);
for(i = 0;i < p->count;i++) {
if(p->num[p->count].id == p->num[i].id) {
printf("学号重复,请重新输入\n");
goto LOOP0;
}
}
p->count++;
printf("插入成功\n");
goto LOOP1;
}
}
}
void SEE(CLASS *p) {
int i = 0;
printf("当前班级学生信息如下:\n");
printf("姓名 年龄 性别 学号 成绩\n");
for(i = 0;i < p->count;i++) {
printf("%s %d %d %d %d\n",p->num[i].name,p->num[i].age,
p->num[i].sex,
p->num[i].id,p->num[i].score);
}
return;
}
void MOD(CLASS *p) {
printf("请输入你想修改的学生学号\n");
int temp;
scanf("%d",&temp);
if(temp > N) {
printf("学号输入有误,超过班级人数\n");
return;
}
int i,flag = 0;
for(i = 0;i < p->count;i++) {
if(temp == p->num[i].id) {
flag = 1;
printf("学生当前信息如下:\n");
printf("姓名 年龄 性别 学号 成绩\n");
printf("%s %d %d %d %d\n",p->num[i].name,p->num[i].age,
p->num[i].sex,
p->num[i].id,p->num[i].score);
printf("请修改\n");
scanf("%s %d %d %d %d",p->num[i].name,&p->num[i].age,
&p->num[i].sex,
&p->num[i].id,&p->num[i].score);
return;
}
}
if(flag == 0) {
printf("学号输入有误,该学生不存在\n");
return;
}
}
void DEL(CLASS *p) {
printf("请输入你想删除的学生学号\n");
int temp;
scanf("%d",&temp);
if(temp > N) {
printf("学号输入有误,超过班级人数\n");
return;
}
int i,flag = 0,j;
for(i = 0;i < p->count;i++) {
if(temp == p->num[i].id) {
flag = 1;
printf("学生当前信息如下:\n");
printf("姓名 年龄 性别 学号 成绩\n");
printf("%s %d %d %d %d\n",p->num[i].name,p->num[i].age,
p->num[i].sex,
p->num[i].id,p->num[i].score);
break;
}
}
if(flag == 0) {
printf("学号输入有误,该学生不存在\n");
return;
}
printf("确认删除? 1 : 0\n");
int or;
scanf("%d",&or);
if(or == 1) {
for(j = i;j < p->count;j++) {
p->num[i] = p->num[i+1];
}
p->count--;
return;
}else{
return;
}
}
void SORT(CLASS *p) {
int i, j;
STU temp;
for(i = 0;i < p->count-1;i++) {
for(j = 0;j < p->count-1-i;j++) {
if(p->num[j].score > p->num[j+1].score) {
temp = p->num[j];
p->num[j] = p->num[j+1];
p->num[j+1] = temp;
}
}
}
printf("按成绩排序完成\n");
return;
}
main.c:
#include "./student.h"//在当前路径寻找头文件
int main(int argc, const char *argv[])
{
CLASS hq51;
//用结构体申请变量空间,系统分配相应内存
hq51.count = 0;//初始化学生个数
int choose = 0;
while(1) {
Menu();
scanf("%d",&choose);
switch (choose) {
case 1:
ADD (&hq51);//传址操作
break;
case 2:
SEE (&hq51);
break;
case 3:
MOD (&hq51);
break;
case 4:
DEL (&hq51);
break;
case 5:
SORT (&hq51);
break;
case 6:
exit(0);
break;
default:
printf("输入有误,程序退出\n");
exit(-1);
}
}
return 0;
}