⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 17.c

📁 C语言写的一个成绩管理系统.希望对大家有帮助.
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define MAX_STUDENT 200

int menupos = 0;
char ochar;
int number = 0;

struct node
{
	long id;
	char name[255];
	int result[3];
};

struct node s[MAX_STUDENT];

void add()
{
	long int a;
	char b[255];
	int c, d;
	int i;

	printf("学号:");
	scanf("%ld", &a);
	printf("姓名:");
	scanf("%s", b);
	printf("数学成绩:");
	scanf("%d", &c);
	printf("程序设计成绩:");
	scanf("%d", &d);

	s[number].id = a;
	for (i = 0; i < 255; ++i)
	{
		s[number].name[i] = b[i];
	}
	s[number].result[1] = c;
	s[number].result[2] = d;
	s[number].result[0] = c + d;
	++number;

}

void del()
{
	int a, i;
	printf("要删除的编号:");
	scanf("%d", &a);
	for (i = a; i < number - 2; ++i)
	{
		s[i] = s[i + 1];
	}
	--number;
}

void swap(int a, int b)
{
	int t;
	t = a; a = b; b = t;
}

void sort(int a)
{
	int b[MAX_STUDENT], i, j;
	for (i = 0; i < number; ++i) b[i] = s[i].result[a];
	for (i = 0; i < number - 1; ++i)
		for (j = i + 1; j < number; ++j)
			if (b[i] < b[j]) swap(b[i], b[j]);
	for (i = 0; i < number; ++i)
		printf("%8ld  %10s  %3d  %3d\n", s[i].id, s[i].name, s[i].result[1], s[i].result[2]); 
	printf("总人数:%d\n", number);
}

void find(int a)
{
	int long b;
	int i;
	switch(a)
	{
	case 1:
		printf("请输入要查询的学号:");
		scanf("%ld", &b);
		for (i = 0; i < number; ++i) if (s[i].id == b) break;
		if (i < number)
		{
			printf("%8ld  %10s  %3d  %3d\n", s[i].id, s[i].name, s[i].result[1], s[i].result[2]); 
		}
		else
		{
			printf("查无记录\n"); 
		}
		break;
	case 2:
		break;
	case 3:
		break;
	case 4:
		break;
	case 5:
		break;

	}
}

void PaintMenu(int i)
{
	printf("====菜单=================\n");
	switch(i)
	{
	case 0:
		printf("1.新建数据\n2.添加数据\n3.删除数据\n4.排序\n5.查询\n6.退出\n请输入序号选择相应操作");
		break;
	case 4:
		printf("1.数学成绩排序\n2.程序设计成绩排序\n3.总分排序。\n4.返回主菜单\n请按序号选择相应操作");
		break;
	case 5:
		printf("1.学号查询\n2.姓名查询\n3.数学成绩查询\n4.程序设计成绩查询\n5.总分查询\n6.返回主菜单\n请按序号选择相应操作");
		break;
	}
}

void main()
{
	char t;
	while(menupos < 60)
	{
		PaintMenu(menupos / 10);
		while (!(ochar = getchar(), ochar >= 48 && ochar <= 58));
		ochar -= 48;
		if (0 == menupos)
		{
			menupos = ochar * 10;
			if (menupos > 30) continue;
		}
		if (10 == menupos)
		{
			menupos = 0;
		}
		else if (20 == menupos)
		{
			add();
			menupos = 0;
		}
		else if (30 == menupos)
		{
			del();
			menupos = 0;
		}
		else if (40 == menupos)
		{
			switch (ochar)
			{
			case 1:
				sort(1);
				break;
			case 2:
				sort(2);
				break;
			case 3:
				sort(0);
				break;
			case 4:
				menupos = 0;
				break;
			}
		}
		else if (50 == menupos)
		{
			switch (ochar)
			{
			case 1:
				find(1);
				break;
			case 2:
				find(1);
				break;
			case 3:
				find(1);
				break;
			case 4:
				find(1);
				break;
			case 5:
				find(1);
				break;
			case 6:
				menupos = 0;
				break;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -