C语言学生成绩管理系统

开始学习编程啦,先从一个简单的“学生成绩管理系统”入手吧,欢迎大家指正

// ConsoleApplication8.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"//包含exit函数
#pragma warning(disable:4996)
//定义学生结构体参数
struct Student
{
	int ID;
	char Name[25];
	float Mark1;
	float Mark2;
	float Total;
};
struct Student stu[1000];
int num = 0;
char c;
//

void main()//程序主入口
{
	void welcome();
	void Insert_stu();
	void Score_search();
	void Score_show();
	void Change_score();
	void Del_stu();
	int Menu;
	while (1)
	{
		welcome();
		printf("请选择编号功能编号输入(1-6):");
		scanf("%d", &Menu);
		while (Menu<1 || Menu>6)
		{
			printf("请输入正确的功能编号(1-6):");
			scanf("%d", &Menu);
		}//***遗留bug1如果用户输入小数怎么办?//if(scanf("%d", &Menu)!=1)这样判断***
		switch (Menu)
		{
		case 1:
			Score_show();
			getchar();
			break;
		case 2:
			Score_search();
			getchar();
			break;
		case 3:
			Insert_stu();
			getchar();
			break;
		case 4:
			Del_stu();
			getchar();
			break;
		case 5:
			Change_score();
			getchar();
			break;
		case 6:
			exit(0);
			break;
		}
	}
}
void Del_stu()
{
	char name[25];
	int flag = 0;
	while (1)
	{
		printf("请输入将要删除信息的学生姓名:");
		scanf("%s", name);
		getchar();
		while (1)
		{
			for (int i = 0; i <= num; i++)
			{
				if ((strcmp(name, stu[i].Name))==0)
				{
					for (int j = i; j < (num); j++)
					{
						stu[j] = stu[j + 1];
					}
					flag = 1;
					num = num - 1;
					break;
				}
			}
			if (flag == 0)
			{
				printf("对不起,没有这位学生!");
				break;
			}
			break;
		}
		printf("是否继续删除(y/n):");
		if (getchar() == 'n')
			break;
	}
	

}
void Change_score()
{
	char name[25];
	int i = 0;
	int flag = 0;
	while (1)
	{
		printf("请输入需要更改成绩的学生姓名:");
		scanf("%s", name);
		getchar();
		while (1)
		{
			for (i = 0; i <= num; i++)
			{
				if (strcmp(name, stu[i].Name) == 0)
				{
					printf("请重新输入成绩1总分:");
					scanf("%f", &stu[i].Mark1);
					printf("请重新输入成绩2总分:");
					scanf("%f", &stu[i].Mark2);
					getchar();
					stu[i].Total = stu[i].Mark1 + stu[i].Mark2;
					flag = 1;
					break;
				}
			}
			if (flag == 0)
			{
				printf("对不起,没有这位学生!");
				break;
			}
			else
			{
				flag = 0;
				break;
			}
		}
		printf("是否继续修改(y/n):");
		if (getchar() == 'n')
			break;
	}

}
void Score_show()
{
		int i = 0;
		printf("\t\t**********成绩预览**********\t\t\n\n");
		for (i = 0; i <= (num-1); i++)
		{
			printf("%d号学生学号:%d\t姓名:%s\t成绩1:%f\t成绩2:%f\t全部课程总分:%f\t\n\n", (i + 1), stu[i].ID, stu[i].Name, stu[i].Mark1, stu[i].Mark2,stu[i].Total);
		}
		printf("点击键盘回到主菜单");
		if (getchar() == 'y')
			return;
}
void Score_search()
{
	int flag = 0;//找到之后标记
	while (1)
	{
	printf("请输入学生姓名:");
	char name_search[25];
	int i = 0;
	scanf("%s", name_search);
	getchar();//清空缓冲区回车键
	while (1)
	{
		for (i = 0; i <=num; i++)
		{
			if (!(strcmp(name_search, stu[i].Name)))
			{
				printf("学号:%d\t", stu[i].ID);
				printf("姓名:%s\t", stu[i].Name);
				printf("成绩1:%f\t", stu[i].Mark1);
				printf("成绩2:%f\t", stu[i].Mark2);
				printf("总分合计:%f\t", stu[i].Total);
				flag = 1;
				break;
			}
		}
		if (flag == 0)
		{
			printf("对不起,没有这位学生!");
			break;
		}
		else
		{
			flag = 0;
			break;
		}
	}
		printf("是否继续查询(y/n):");
		if (getchar() == 'n')
			break;
	}

}
void Insert_stu()
{
	while (1)
	{
		printf("请输入学号:");
		scanf("%d", &stu[num].ID);
		printf("请输入姓名:");
		scanf("%s", &stu[num].Name);
		printf("请输入成绩1:");
		scanf("%f", &stu[num].Mark1);
		printf("请输入成绩2:");
		scanf("%f", &stu[num].Mark2);
		getchar();//如果不在这里加一个getchar把上一句的scanf输入后的回车弄掉,那么下面if语句永远不成真,while循环永远执行
		stu[num].Total = (stu[num].Mark1 + stu[num].Mark2);
		num++;
		printf("是否继续输入(y/n):");
		if (getchar() == 'n' || getchar() == 'N')
			break;
	}
}
void welcome()
{
	printf("**********欢迎使用学生成绩管理系统!**********\n\n");
	printf("\t\t功能菜单:\n\n");
	printf("\t\t1.成绩预览\n\n");
	printf("\t\t2.成绩查询\n\n");
	printf("\t\t3.增加成绩\n\n");
	printf("\t\t4.删除成绩\n\n");
	printf("\t\t5.更改成绩\n\n");
	printf("\t\t6.退出\n\n");
	printf("********************Version1********************\n\n");
}

你可能感兴趣的:(编程学习1--学生成绩管理系统)