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);
		}
	}
}

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计课题一:班级成绩管理系统 一、 问题描述: 对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。 二、功能要求: 1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。 2、本系统显示这样的菜单: 请选择系统功能项: a、 成绩录入 b、 成绩显示 c、 成绩保存 d、 成绩排序 e、 成绩修改(要求先输入密码) f、 成绩统计 (1) 显示每门课程成绩最高的学生的基本信息 (2) 显示每门课程的平均成绩 (3) 显示超过某门课程平均成绩的学生人数 g、 退出系统 3、执行一个具体的功能之后,程序将重新显示菜单。 4、将学生成绩保存到文件中。 三、算法提示: 1、数据结构:结构体类型数组。 2、数据库结构:下表构成该系统的基本数据库。 姓名 学号 课程名称1 课程名称2 ●●●●●● char Char float float 四、测试数据: 学生人数N=10 课程门数M=4 课程名:数学、语文、英语、政治 五、其它 对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。 问题补充: 今天谁能给我答案啊!!!!!!!急急!!!!!!! 提问者: 342123465 - 试用期 一级 最佳答案 C语言课程设计报告—班级成绩管理系统 需要分析: 学生成绩管理系统有13种功能。把这13个功能做成13个子函数。在主函当数中设计一个菜单对这13个子数进行管理。来实现对整个系统的操作。 根据课题的要求。每一个学生的包括姓名(char)、学号(char)、M门课程的成绩(float).再加上系统功能上的要求每一学生的信息还要总分和名次等。所以自然的想到要用结构体来定义每一个学生的信息结构。然后用链表把它们组成一个有序的整体。用对链表的操作来实现对所有学生信息的统一管理(成绩显示、成绩排序、成绩修改等)。最后为了以后按照处理后的顺序保存到文件中。 . 各函数的功能: 概要设计: 程序的模块组成: 主 函 数: int main() 新建函数:STUDENT *init() 输入函数 :STUDENT *create() 显示函数: void print(STUDENT *head) 删除函数: STUDENT *delete(STUDENT *head) 按名字寻找函数: void lookup(STUDENT *head) 保存函数: void save(STUDENT *head) 按总分排序函数: STUDENT *sort(STUDENT *head) 计算总分和均分函数: void computer(STUDENT *h) 修改函数: STUDENT *Modify(STUDENT *head,STUDENT *new) 按学号排序函数: STUDENT *index(STUDENT *h) 菜单函数:int menu_select() 各个函数的主要功能: 输入函数: 随时输入数据。 菜单函数:显示系统主菜单。 显示函数: 显示所有学生的信息。 寻找函数: 方便学生查找自己的成绩。 删除函数: 删除某学生的信息。 排序函数: 按总成绩排序。 按学号排序函数: 按学号排序。 插入函数: 可以插入新的信息。 保存函数: 保存好学生成绩,以免丢失。 统计函数: l 显示每门课程成绩最高的学生的基本信息。 l 显示每门课程的平均成绩。 l 显示超过某门课程平均成绩的学生人数。 课题的功能模块的划分: 开始 菜单界面 功能选择 初始化函数 输入学生信息 删除学生信息 显示学生信息 查找学生信息 按成绩排序 保存到文件 从文件读数据 插入学生成绩 分类合计 退出系统 结束 详细设计: 整个系统除了主函数外,另外还有14个函数,实现八大功能:输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。各个函数的详细设计说明分别如下: 主函数 main() 利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。 菜单选择函数 int menu_select() 这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,返回菜单。 代码设计: 初始化函数 STUDENT *init() 这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值