学生信息管理系统——C语言

#include<stdio.h>
#include<io.h>
#include<stdlib.h>
#include<string.h>
struct STU {
	char stuNo[11];
	char name[4];
	int age;
	int gender;
	float score[3];
	float sum;
}stu[300];
int m=0;
int n=1;
void menu_select();
void help();  
void add();	
void alter();
void dele();
void check();
void display();
void save();
void sort();
void to_menu();
void menu_select()
{
	int num;
	printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf("\t\t\t\t*			欢迎来到学生信息管理系统!!!          *\n");
	printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf("\t\t\t\t*			0、系统帮助及说明                       *		\n");
	printf("\t\t\t\t*			1、添加学生信息                         *		\n");
	printf("\t\t\t\t*			2、修改学生信息                         *		\n");
	printf("\t\t\t\t*			3、删除学生信息                         *		\n");
	printf("\t\t\t\t*			4、查找学生信息                         *		\n");
	printf("\t\t\t\t*			5、显示所有学生信息                   *		\n");
	printf("\t\t\t\t*			6、退出系统                             *		\n");
	printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf("\n\n\n");
	printf("\t\t\t\t请输入数字以选择相应操作:");
	scanf("%d",&num);
	getchar();
	printf("\n\n");
	system("cls");
	switch (num)
	{
	case 0:help();
		break;
	case 1:add();
		break;
	case 2:alter();
		break;
	case 3:dele();
		break;
	case 4:check();
		break;
	case 5:display();
		break;
	case 6:return;
		break;
	default:
		break;
	}
}
void help()
{
	int num0;
	int num1;
	printf("\t\t\t\t ________________________________________________________________________________________________\n\n");
	printf("\t\t\t\t|	    欢迎您使用学生信息管理系统!                                                             |\n\n");
	printf("\t\t\t\t|	    如下是一些关于本系统的一些信息与建议,希望能够对您的使用有所帮助,感谢您对本系统的支持   |\n\n");
	printf("\t\t\t\t|	    一、初次进入系统时,请先“按照学号大小”添加学生信息;                                                   |\n\n");
	printf("\t\t\t\t|	    二、添加学生信息后,系统会自动保存;                                                           |\n\n");
	printf("\t\t\t\t|	    三、当你想要实现某操作时,请输入其所代表的数字                                           |\n\n");
	printf("\t\t\t\t|	    感谢您的使用!                                                                           |\n\n");
	printf("\t\t\t\t|________________________________________________________________________________________________|\n\n\n\n");
	to_menu();
}
void add()
{
	int num0;
	int num1;
	int i;
	int flag;		//作为判断条件
	char sex;
	printf("\t\t\t\t请输入待添加信息的学生数量:");
	scanf("%d",&m);
	getchar();
	int j = n;		//已有人数
	n = n + m;
	printf("\n\n");
	if (m)
	{
		do
		{
			int flag = 1;
			while (flag)	//为了避免学号重复出现
			{
				flag = 0;
				printf("\t\t\t\t请输入第 %d 位学生的学号:", j);
				scanf("%s",stu[j].stuNo);
				getchar();
				printf("\n\n");
				if (n > 2) 
				{
							//判断该学号是否已经存在
					for (int i = 2; i <= n; i++)
					{
						for (int j = 1; j <i; j++)
						{
						if (strcmp(stu[i].stuNo, stu[j].stuNo) == 0)
							{
									printf("\t\t\t\t该学号已经存在,请重新录入!!!\n");
									flag = 1;
									break;
							}
						}
					}
				}
			}
			printf("\n\n");
			printf("\t\t\t\t请输入第 %d 个学生的姓名:", j);
			scanf("%s",stu[j].name);
			printf("\n\n");
			printf("\t\t\t\t请输入第 %d 个学生的年龄:", j);
			scanf("%d",&stu[j].age);
			getchar();
			printf("\n\n");
			printf("\t\t\t\t请输入第 %d 个学生的性别(输入1代表男生,0代表女生):", j);
			scanf("%d", &stu[j].gender);
			getchar();
			printf("\n\n");
			printf("\t\t\t\t请输入第 %d 个学生的数学成绩:", j);
			scanf("%f", &stu[j].score[0]);
			getchar();
			printf("\n\n");
			printf("\t\t\t\t请输入第 %d 个学生的英语成绩:", j);
			scanf("%f", &stu[j].score[1]);
			getchar();
			printf("\n\n");
			printf("\t\t\t\t请输入第 %d 个学生的大物成绩:", j);
			scanf("%f", &stu[j].score[2]);
			getchar();
			printf("\n\n");
			system("cls");
			if (flag == 0) {
				j++;
			}
		} while (j <n);
		printf("\t\t\t\t信息添加完毕!\n\n\n");
		save();
		sort();
		to_menu();
		m--;
	}
	else {
		printf("\t\t\t\t待增加学生人数不得小于1!!!\n");
	}
}
void dele()
{
	if (n > 1) {
		int i;
		int j;
		int flag = 0;
		char s[11];
		printf("\t\t");
		printf("\t\t请输入要删除信息的学生的学号:");
		scanf("%s", s);
		printf("\n\n\n");
		for (i = 1; i <= n; i++)
			if (strcmp(stu[i].stuNo, s) == 0)
			{
				flag = 1;
				for (j = i; j <= n - i; j++)
					stu[j] = stu[j + 1];
			}
		if (flag = 0) {
			printf("\t\t\t\t该学号不存在!!!\n\n\n");
		}
		else {
			printf("\t\t\t\t删除成功!!!\n\n\n");
			n--;
			if (n > 1)
			{			
				save();
			}
		}
		to_menu();
	}
	else {
		printf("无任何学生信息,请先添加信息!!!");
		to_menu();
	}
}
void sort()
{
	/*按学号排序*/
	char stuNo[11];
	char name[4];
	int age;
	int gender;
	float score[3];
	if (n > 2) {
		for (int i = 2; i <= n; i++)
		{
			for (int j = 1; j <= i; j++)
			{
				if (strcmp(stu[i].stuNo, stu[j].stuNo) <0)
				{
					strcpy(stuNo, stu[i].stuNo);
					strcpy(stu[i].stuNo, stu[j].stuNo);
					strcpy(stu[j].stuNo, stuNo);
					strcpy(name, stu[i].name);
					strcpy(stu[i].name, stu[j].name);
					strcpy(stu[j].stuNo, name);
					gender = stu[i].gender;
					stu[i].gender = stu[j].gender;
					stu[j].gender = gender;
					age = stu[i].age;
					stu[i].age = stu[j].age;
					stu[j].age = age;
					for (int k = 0; k < 3; k++)
					{
						score[k] = stu[i].score[k];
						stu[i].score[k] = stu[j].score[k];
						stu[j].score[k] = score[k];
					}

				}
			}
		}
		printf("按学号排列");
	}	
}
void alter()
{
	int i;
	int k;
	int flag=1;
	char no[11];			//用来存放输入的学号
	char name[5];
	char gender[1];
	if (n >1) {
		printf("\t\t\t\t请输入相应的学号:");
		scanf("%s", no);
		getchar();
		for (i = 1; i <= n; i++)
		{
			if (strcmp(stu[i].stuNo, no) == 0)
			{
				k = i;				//记下是第几个学生	
			}
			else {
				printf("\t\t\t\t您输入的学号不存在,请重新输入!\n");
				break;
			}

			printf("\t\t\t\t				1、修改姓名				\n\n");
			printf("\t\t\t\t				2、修改年龄				\n\n");
			printf("\t\t\t\t				3、修改性别				\n\n");
			printf("\t\t\t\t				4、修改数学成绩			\n\n");
			printf("\t\t\t\t				5、修改物理成绩			\n\n");
			printf("\t\t\t\t				6、修改英语成绩	 		\n\n");
			printf("\t\t\t\t				7、退出本菜单			\n\n");
			int num;
			int age;
			while (flag)
			{
				flag = 0;
				printf("\t\t\t\t请输入相应操作的编号:");
				scanf("%d", &num);
				switch (num)
				{
				case 1:
					printf("\n\n");
					printf("\t\t\t\t请输入新的姓名:");
					scanf("%s", name);
					printf("\n\n");
					strcpy(stu[k].name, name);
					save();
					break;
				case 2:
					printf("\n\n");
					printf("\t\t\t\t请输入新的年龄:");
					scanf("%d", &stu[k].age);
					save();
					break;
				case 3:
					printf("\n\n");
					printf("\t\t\t\t请输入性别:");
					scanf("%d", &stu[k].gender);
					save();
					break;
				case 4:
					printf("\n\n");
					printf("\t\t\t\t请输入新的数学成绩:");
					scanf("%f", &stu[k].score[0]);
					save();
					break;
				case 5:
					printf("\n\n");
					printf("\t\t\t\t请输入新的物理成绩:");
					scanf("%f", &stu[k].score[1]);
					save();
					break;
				case 6:
					printf("\n\n");
					printf("\t\t\t\t请输入新的英语成绩:");
					scanf("%f", &stu[k].score[2]);
					save();
					break;
				case 7:
					break;
				default:printf("\t\t\t\t请在1~7之间选择");

				}
			}
		}
		to_menu();
	}
	else {
		printf("系统内不存在学生信息,请先添加学生信息!!!\n\n\n");
		to_menu();
	}
}
void check()
{
	int i;
	int j=1;
	int num;
	int flag = 0;
	char no[11];
	char s[20];
	int k;				//用来记录相应的学生序号
	if (n > 1) {
		while (j)
		{
			printf("\t\t\t\t				1、按学号查找					\n\n\n");
			printf("\t\t\t\t				2、按姓名查找					\n\n\n");
			printf("\t\t\t\t				3、退出本菜单					\n\n\n");
			printf("\t\t\t\t请选择子菜单编号:");
			scanf("%d", &num);
			getchar();
			printf("\n\n");
			switch (num)
			{
			case 1:printf("\t\t\t\t请输入学号:");
				scanf("%s", &no);
				getchar();
				printf("\n\n");
				for (i = 1; i <= n; i++)
					if (strcmp(stu[i].stuNo, no) == 0)
					{
						flag = 1;
						k = i;
						stu[k].sum = stu[k].score[0] + stu[k].score[1] + stu[k].score[2];
						printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
						printf("*\t学号\t*\t姓名\t*\t年龄\t*\t性别\t*\t数学成绩\t*\t物理成绩\t*\t英语成绩\t*\n");
						printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
						printf("%s\t\t\t%s\t\t%d\t\t", stu[k].stuNo, stu[k].name, stu[k].age);
						if (stu[k].gender == 1) {
							printf("男");
						}
						else {
							printf("女");
						}
						printf("\t\t\t%.2f\t\t%.2f\t\t\t%.2f\t\t%.2f\n", stu[k].score[0], stu[k].score[1], stu[k].score[2], stu[k].score[0] + stu[k].score[1] + stu[k].score[2]);
						printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
					}
				if (flag == 0)
					printf("\t\t\t\t您输入的学号有误!!!\n\n\n");
				break;
			case 2:printf("\t\t\t\t请输入姓名:");
				scanf("%s", &s);
				getchar();
				for (i = 1; i < n; i++)
				{
					if (strcmp(stu[i].name, s) == 0)
					{
						flag = 1;
						k = i;
						printf("\n\n\n");
						printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
						printf("*\t学号\t*\t姓名\t*\t年龄\t*\t性别\t*\t数学成绩\t*\t物理成绩\t*\t英语成绩\t*\n");
						printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
						printf("%s\t\t\t%s\t\t%d\t\t", stu[k].stuNo, stu[k].name, stu[k].age);
						if (stu[k].gender == 1) {
							printf("男");
						}
						else {
							printf("女");
						}
						printf("\t\t\t%.2f\t\t%.2f\t\t\t%.2f\t\t%.2f\n", stu[k].score[0], stu[k].score[1], stu[k].score[2], stu[k].score[0] + stu[k].score[1] + stu[k].score[2]);
						printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
					}
					if (flag == 0) {
						printf("\n\n\n");
						printf("\t\t\t\t您输入的姓名不存在!!!\n\n\n");
					}
				}
				break;
			case 3:break;
			default:printf("\t\t\t\t请在数字1~3之间选择!!!\n\n\n");
			}
			j = 0;
		}
		to_menu();
	}
	else {
		printf("\n\n\n");
		printf("不存在任何学生的信息,请先添加信息!!!\n\n\n");
		to_menu();
	}
}
void save()
{
	int num0;
	int num1;
	int i;
	FILE* fp;
	fp = fopen("D:\\CC\\学生信息.txt", "w");
	fprintf(fp, "学号\t姓名\t年龄\t性别\t数学\t英语\t物理\t\n ");
	for (i = 1; i <n; i++)
	{
		fprintf(fp, "%s\t%s\t%d\t", stu[i].stuNo, stu[i].name, stu[i].age);
		if (stu[i].gender == 0) {
			fprintf(fp,"女");
		}
		else {
			fprintf(fp,"男");
		}
		fprintf(fp, "\t%.2f\t%.2f\t%.2f\t\n",  stu[i].score[0], stu[i].score[1], stu[i].score[2]);
	}
	printf("\t\t\t\t信息保存完毕!");
	printf("\n\n\n");
	fclose(fp);
	to_menu();

}
void display()
{
	int i;
	int j;
	int flag = 1;
	int count = n;//人数
	if (n > 1) {
		printf("__________________________________________________________________________________________________________________________________________________________________________________\n");
		printf("*\t学号\t*\t姓名\t*\t年龄\t*\t性别\t*\t数学成绩\t*\t物理成绩\t*\t英语成绩\t*\t总分\t*\n");
		printf("________________________________________________________________________________________________________________________________________________________________________________\n");
		for (i = 1; i < n; i++)
		{
			printf("%s\t\t\t%s\t\t%d\t\t", stu[i].stuNo, stu[i].name, stu[i].age);
			if (stu[i].gender == 1) {
				printf("男");
			}
			else {
				printf("女");
			}
			printf("\t\t\t%.2f\t\t%.2f\t\t\t%.2f\t\t%.2f\n", stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[0] + stu[i].score[1] + stu[i].score[2]);
		}
		printf("___________________________________________________________________________________________________________________________________________________________________________________\n");
		to_menu();
	}
	else {
		printf("系统内不存在任何学生的信息,请先添加信息!!!");
		to_menu();
	}
}
void to_menu()
{
	int num0;
	int num1;
	printf("\n\n\n");
	printf("\t\t\t\t1、返回主菜单\n\n");
	printf("\t\t\t\t2、退出本栏\n\n\n");
	printf("\t\t\t\t请输入相应的数字:");
	scanf("%d",&num0);
	getchar();
	system("cls");
	printf("\n\n\n");
	switch (num0)
	{
	case 1:
		int num;
		printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("\t\t\t\t*			欢迎来到学生信息管理系统!!!          *\n");
		printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("\t\t\t\t*			0、系统帮助及说明                       *		\n");
		printf("\t\t\t\t*			1、添加学生信息                         *		\n");
		printf("\t\t\t\t*			2、修改学生信息                         *		\n");
		printf("\t\t\t\t*			3、删除学生信息                         *		\n");
		printf("\t\t\t\t*			4、查找学生信息                         *		\n");
		printf("\t\t\t\t*			5、显示所有学生信息                   *		\n");
		printf("\t\t\t\t*			6、退出系统                             *		\n");
		printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("\n\n\n");
		printf("\t\t\t\t请输入数字以选择相应操作:");
		scanf("%d", &num);
		getchar();
		printf("\n\n");
		system("cls");
		switch (num)
		{
		case 0:help();
			break;
		case 1:add();
			break;
		case 2:alter();
			break;
		case 3:dele();
			break;
		case 4:check();
			break;
		case 5:display();
			break;
		case 6:printf("\t\t\t\tloading......\n\n\n");
			break;
		default:
			break;
		}
		break;
	case 2:break;
		break;
	default:printf("\t\t\t\t请输入1~2之间的数字!!!\n\n\n");
		break;
	}
}

int main()
{
	menu_select();
	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值