C 语言学生成绩管理系统小程序

该程序有录入学生成绩,查询学生成绩,排列学生成绩的功能。本程序采用了多文件格式

主程序

#include<stdio.h>
#include "teacher.h"

int main()
{
	stu st[100];//定义结构体数组
	int len;
	int m;
	welcome();
	
	while (1)
	{
		showchoice();
		scanf("%d", &m);
		switch (m)
		{
		case 1:len = input(st); break;
		case 2:show_message(st, len); break;
		case 3:find(st,len); break;
		case 4:sort(st,len); break;
		}
	}
	return 0;
}

子程序头文件

#ifndef _TEACHER_H_
#define _TEACHER_H_

struct student
{
	char name[20];
	char sex[10];
	long long int id;
	int chinese;
	int math;
};
typedef struct student stu;

void welcome();
void showchoice();
int input(stu *st);
void out(stu *st, int i);
void show_message(stu *st, int len);
void find(stu *st, int len);
void sort(stu *st, int len);

#endif

子程序

#include<stdio.h>
#include<string.h>
#include "teacher.h"

void welcome()
{
    printf("****************************\n");
	printf("欢迎来到教学系统\n");
	printf("****************************\n");
}

void showchoice()
{
	printf("****************************\n");
	printf("1.输入信息    2.显示所有信息\n");
	printf("3.查找信息    4.排列成绩\n");
	printf("****************************\n");
	printf("请输入你的选择:");
}

int input(stu *st)
{
	int i;
	printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
	for (i = 0; i < 100; i++)
	{
		scanf("%s", st[i].name);
		if ((!strcmp(st[i].name, "end")))
		{
			return i;
		}
		scanf("%d", &st[i].id);
		scanf("%s", st[i].sex);
		scanf("%d", &st[i].chinese);
		scanf("%d", &st[i].math);
	}
	return i;
}

void out(stu *st, int i)
{
	printf("%10s", st[i].name);
	printf("%12d", st[i].id);
	printf("%4s", st[i].sex);
	printf("%4d", st[i].chinese);
	printf("%4d", st[i].math);
	printf("\n");
}

void show_message(stu *st,int len)
{
	int i;
	printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
	for (i = 0; i < len; i++)
	{
		out(st, i);
	}
}

void find(stu *st, int len)
{
	char tmp[20];
	int i;
	printf("请输入查找的姓名:");
	scanf("%s", tmp);
	printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
	for (i = 0; i < len; i++)
	{
		if (!strcmp(st[i].name, tmp))
		{
			out(st, i);
		}
	}
}

void sort(stu *st, int len)
{
	int tmp;
	int i, j, k;
	long long int id;
	char name[20];
	char sex[10];
	int chinese, math;
	int choice;
	printf("\n");
	printf("1.数学成绩排列     2.语文成绩排列\n");
	printf("请输入你的选择:");
	scanf("%d", &choice);
	printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
	if (1 == choice)
	{
		for (i = 0; i < len - 1;i++)
		{
			for (j = 0; j < len - 1 - i; j++)
			{
				if (st[j].math > st[j + 1].math)
				{
					tmp = st[j].math;
					st[j].math = st[j + 1].math;
					st[j + 1].math = tmp;

					strcpy(name, st[j].name);
					strcpy(st[j].name, st[j + 1].name);
					strcpy(st[j + 1].name, name);
					
					id = st[j].id;
					st[j].id=st[j + 1].id;
					st[j + 1].id = id;

					strcpy(sex, st[j].sex);
					strcpy(st[j].sex, st[j + 1].sex);
					strcpy(st[j + 1].sex,sex);

					chinese = st[j].chinese;
					st[j].chinese = st[j + 1].chinese;
					st[j + 1].chinese = chinese;
				}
			}
		}
		printf("排列后的数学成绩\n");
		for (k = 0; k < len; k++)
		{
			out(st, k);
		}

	}
	else if (2 == choice)
	{
		for (i = 0; i < len - 1; i++)
		{
			for (j = 0; j < len - 1 - i; j++)
			{
				if (st[j].chinese > st[j + 1].chinese)
				{
					tmp = st[j].chinese;
					st[j].chinese = st[j + 1].chinese;
					st[j + 1].chinese = tmp;

					strcpy(name, st[j].name);
					strcpy(st[j].name, st[j + 1].name);
					strcpy(st[j + 1].name, name);

					id = st[j].id;
					st[j].id = st[j + 1].id;
					st[j + 1].id = id;

					strcpy(sex, st[j].sex);
					strcpy(st[j].sex, st[j + 1].sex);
					strcpy(st[j + 1].sex, sex);

					math= st[j].math;
					st[j].math = st[j + 1].math;
					st[j + 1].math = math;
				}
			}
		}
		printf("排列后的语文成绩\n");
		for (k = 0; k < len; k++)
		{
			out(st, k);
		}
	}
}

成绩录入界面
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qinshiyang/article/details/82851237