weixin_52228837 2021-06-03 09:32 采纳率: 100%
浏览 161
已采纳

救救孩子吧……c语言期末作业😭,要求编写管理系统

学生信息管理系统管理一个班级的学生信息,包含如下功能:创建一个班级,班级有5名同学,输入5名同学的:学号、姓名、年龄、成绩信息。有新同学转入班级,将新同学的信息插入到班级信息中。输入新同学信息以及插入的位置。有同学转出班级,通过学生的学号删除相应信息。有同学的信息错误,由用户输入信息错误的同学学号或者姓名,然后输入错误信息的属性名,输入正确信息,实现数据的修正。查询某个同学的信息,实现可以根据姓名查询,也可以根据学号查询,查询后输出该同学的全部信息。对学生信息实现排序功能,可以根据学号排序,也可以根据成绩排序,可以升序也可以降序。查询所有不及格学生的信息并输出。输出所有同学的信息。主函数实现菜单选择的功能,程序启动后由用户选择所需要的功能,用户选择后实现相应功能,然后返回主菜单。主菜单信息:A 创建班级B 转入新同学C 有同学转出D 修正同学信息E 查询同学信息F 对同学信息进行排序G 查询不及格学生信息H 输出所有同学信息z 退出系统

  • 写回答

2条回答 默认 最新

  • 关注
    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <string.h>
    
     
    #define LEN 15
    
    #define N 70
    
    struct tagStudent
    
    {
    	char chName[LEN+1];
    
    	int nAge;
    
    	char chSex;
    
    	char chNum[LEN+1];
    
    	float score[6];
    
    } stu[N];
    
    int k = 1, n = 0, m = 0;
    
    void Instruction();
    
    void InputStudent();
    
    void OrderStudent();
    
    void SaveStudent();
    
    void DisplayStudent();
    
    int ReadStudent();
    
    void SearchStudent();
    
    void ModifyStudent();
    
    void DeleteStudent();
    
    int main()
    
    {
    
    
    	printf("欢迎使用学生档案管理系统\n");
    
    	while (k)
    
    	{
    		int num;
    
    		printf("\t请选择功能列表\n");
    
    		printf("\t\t0.系统说明\n");
    
    		printf("\t\t1.录入学生信息\n");
    
    		printf("\t\t2.将学生进行排序\n");
    
    		printf("\t\t3.保存学生信息\n");
    
    		printf("\t\t4.读取学生信息\n");
    
    		printf("\t\t5.显示全部学生信息\n");
    
    		printf("\t\t6.查找学生信息\n");
    
    		printf("\t\t7.修改学生信息\n");
    
    		printf("\t\t8.删除学生信息\n");
    
    		printf("\t\t9.退出系统\n");
    
    		scanf("%d", &num);
    		printf("%d",num);
    		switch (num)
    
    		{
    			case 0:
    
    				Instruction();
    
    				break;
    
    			case 1:
    
    				InputStudent();
    
    				break;
    
    			case 2:
    
    				OrderStudent();
    
    				break;
    
    			case 3:
    
    				SaveStudent();
    
    				break;
    
    			case 4:
    
    				ReadStudent();
    
    				break;
    
    			case 5:
    
    				DisplayStudent();
    
    				break;
    
    			case 6:
    
    				SearchStudent();
    
    				break;
    
    			case 7:
    
    				ModifyStudent();
    
    				break;
    
    			case 8:
    
    				DeleteStudent();
    
    				break;
    
    			case 9:
    
    				k = 0;
    
    				printf("即将退出系统!\n");
    
    				break;
    
    			default:
    				printf("请在0-9之间进行选择!\n");
    
    		}
    	}
    	system("pause");
    
    	return 0;
    
    }
    
    void Instruction()
    
    {
    	printf("\n0.欢迎使用系统说明\n");
    
    	printf("\n1.请选择菜单上的数字\n");
    
    	printf("\n2.修改学生信息后请保存\n");
    
    	printf("\n3.谢谢使用\n");
    
    }
    
    void InputStudent()
    
    {
    	int i = n, j, flag;
    
    	printf("请输入待增加的学生数:\n");
    
    	scanf("%d", &m);
    
    	if (m > 0)
    
    	{
    		do
    
    		{
    			flag = 1;
    
    			while (flag)
    
    			{
    				flag = 0;
    
    				printf("请输入第%d位学生的学号:\n", i + 1);
    
    				scanf("%s", stu[i].chNum);
    
    				for (j = 0; j < i; j++)
    
    				{
    					if (strcmp(stu[i].chNum, stu[j].chNum) == 0)
    
    					{
    						printf("该学号已存在,请重新输入!\n");
    
    						flag = 1;
    
    						break;
    
    					}
    
    				}
    
    			}
    
    			printf("请输入第%d 个学生的姓名:\n", i + 1);
    
    			scanf("%s", &stu[i].chName);
    
    			printf("请输入第%d 个学生的年龄:\n", i + 1);
    
    			scanf("%d", &stu[i].nAge);
    
    			printf("请输入第%d 个学生的性别:\n", i + 1);
    
    			scanf(" %c", &stu[i].chSex);
    
    			printf("请输入第%d 个学生的C语言成绩\n", i + 1);
    
    			scanf("%f", &stu[i].score[0]);
    
    			printf("请输入第%d 个学生的高数成绩:\n", i + 1);
    
    			scanf("%f", &stu[i].score[1]);
    
    			printf("请输入第%d 个学生的英语成绩:\n", i + 1);
    
    			scanf("%f", &stu[i].score[2]);
    
    			printf("请输入第%d 个学生的现代成绩:\n", i + 1);
    
    			scanf("%f", &stu[i].score[3]);
    
    			printf("请输入第%d 个学生的大物成绩:\n", i + 1);
    
    			scanf("%f", &stu[i].score[4]);
    
    			printf("请输入第%d 个学生的电路成绩:\n", i + 1);
    
    			scanf("%f", &stu[i].score[5]);
    
    			if (0 == flag)
    
    			{
    				i++;
    
    			}
    
    		}
    
    		while (i < n + m);
    
    	}
    
    	n += m;
    
    	printf("学生信息录入完毕!!!\n");
    
    	system("pause");
    
    }
    
    void OrderStudent()
    
    {
    	int i, j, k, * p, * q, s;
    
    	char temp[LEN + 1], ctemp;
    
    	float ftemp;
    
    	for (i = 0; i < n - 1; i++)
    
    	{
    		for (j = n - 1; j > i; j--)
    
    			if (strcmp(stu[j - 1].chNum, stu[j].chNum) > 0)
    
    			{
    				strcpy(temp, stu[j - 1].chNum);
    
    				strcpy(stu[j - 1].chNum, stu[j].chNum);
    
    				strcpy(stu[j].chNum, temp);
    
    				strcpy(temp, stu[j - 1].chName);
    
    				strcpy(stu[j - 1].chName, stu[j].chName);
    
    				strcpy(stu[j].chName, temp);
    
    				ctemp = stu[j - 1].chSex;
    
    				stu[j - 1].chSex = stu[j].chSex;
    
    				stu[j].chSex = ctemp;
    
    				p = &stu[j - 1].nAge;
    
    				q = &stu[j].nAge;
    
    				s = *q;
    
    				*q = *p;
    
    				*p = s;
    
    				for (k = 0; k < 6; k++)
    
    				{
    					ftemp = stu[j - 1].score[k];
    
    					stu[j - 1].score[k] = stu[j].score[k];
    
    					stu[j].score[k] = ftemp;
    
    				}
    
    			}
    
    	}
    
    }
    
    void SaveStudent()
    
    {
    	int i;
    
    	FILE* fp;
    
    	char filename[LEN + 1];
    
    	printf("请输入要保存的文件名:\n");
    
    	scanf("%s", filename);
    
    	fp = fopen(filename, "w");
    
    	for (i = 0; i < n; i++) {
    		fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex,
    
    		        stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]);
    
    	}
    
    	printf("保存成功!!!\n");
    
    	fclose(fp);
    
    	system("pause");
    
    }
    
    int ReadStudent()
    
    {
    	char filename[LEN + 1];
    
    	int i = 0;
    
    	int j = 0;
    
    	FILE* fp;
    
    	printf("请输入要读取学生信息的文件名:\n");
    
    	scanf("%s", filename);
    
    	if ((fp = fopen(filename, "r")) == NULL)
    
    		return 0;
    
    	while (fscanf(fp, "%s %s %d %s %d %d %d %d %d %d ", &stu[j].chNum, &stu[j].chName, &stu[j].nAge, &stu[j].chSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2], &stu[j].score[3], &stu[j].score[4], &stu[j].score[5]) == 10)
    
    	{
    		j++;
    
    	}
    
    	n = j;
    
    	return n;
    
    }
    
    void DisplayStudent()
    
    {
    	int i;
    
    	printf("共有%d位学生的信息:\n", n);
    
    	if (0 != n)
    
    	{
    		printf("学生学号 \t学生姓名 \t年龄   \t性别   \tC语言\t高数\t英语\t线代\t大物\t电路\n");
    
    		printf("--------------------------------------------------------------------\n");
    
    		for (i = 0; i < n; i++)
    
    		{
    			printf("%s \t%s \t%d   \t%c   \t%.1f \t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]);
    
    		}
    
    	}
    
    	system("pause");
    
    }
    
    void SearchStudent()
    
    {
    	int i, item, flag;
    
    	char s1[21];
    
    	printf("------------------\n");
    
    	printf("-----1.按学号查询-----\n");
    
    	printf("-----2.按姓名查询-----\n");
    
    	printf("-----3.退出本菜单-----\n");
    
    	printf("------------------\n");
    
    	while (1)
    
    	{
    		printf("请选择子菜单编号:");
    
    		scanf("%d", &item);
    
    		flag = 0;
    
    		switch (item)
    
    		{
    			case 1:
    
    				printf("请输入要查询的学生的学号:\n");
    
    				scanf("%s", s1);
    
    				for (i = 0; i < n; i++)
    
    					if (strcmp(s1, stu[i].chNum) == 0)
    
    					{
    						flag = 1;
    
    						printf("学生学号\t学生姓名\t年龄\t性别\tC语言\t高数\t英语\t现代\t大物\t电路\n");
    
    						printf("--------------------------------------------------------------------\n");
    
    						printf("%s\t%s\t%d\t%6c\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]);
    
    					}
    
    				if (0 == flag)
    
    					printf("该学号不存在!\n");
    
    				break;
    
    			case 2:
    
    				printf("请输入要查询的学生的姓名:\n");
    
    				scanf("%s", s1);
    
    				for (i = 0; i < n; i++)
    
    					if (strcmp(stu[i].chName, s1) == 0)
    
    					{
    						flag = 1;
    
    						printf("学生学号\t学生姓名\t年龄\t性别\tC语言\t高数\t英语\t现代\t大物\t电路\n");
    
    						printf("--------------------------------------------------------------------\n");
    
    						printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]);
    
    					}
    
    				if (0 == flag)
    
    					printf("该姓名不存在!\n");
    
    				break;
    
    			case 3:
    
    				return;
    
    			default:
    				printf("请在1-3之间选择\n");
    
    		}
    
    	}
    
    }
    
    void ModifyStudent()
    
    {
    	int i, item, num = -1;
    
    	char sex1, s1[LEN + 1], s2[LEN + 1];
    
    	float score1;
    
    	printf("请输入要要修改的学生的学号:\n");
    
    	scanf("%s", s1);
    
    	for (i = 0; i < n; i++) {
    		if (strcmp(stu[i].chNum, s1) == 0)
    
    		{
    			num = i;
    
    			printf("------------------\n");
    
    			printf("1.修改姓名\n");
    
    			printf("2.修改年龄\n");
    
    			printf("3.修改性别\n");
    
    			printf("4.修改C语言成绩\n");
    
    			printf("5.修改高数成绩\n");
    
    			printf("6.修改英语成绩\n");
    
    			printf("7.修改现代成绩\n");
    
    			printf("8.修改大物成绩\n");
    
    			printf("9.修改电路成绩\n");
    
    			printf("10.退出本菜单\n");
    
    			printf("------------------\n");
    
    			while (1)
    
    			{
    				printf("请选择子菜单编号:");
    
    				scanf("%d", &item);
    
    				switch (item)
    
    				{
    					case 1:
    
    						printf("请输入新的姓名:\n");
    
    						scanf("%s", s2);
    
    						strcpy(stu[num].chName, s2);
    
    						break;
    
    					case 2:
    
    						printf("请输入新的年龄:\n");
    
    						scanf("%d", stu[num].nAge);
    
    						break;
    
    					case 3:
    
    						printf("请输入新的性别:\n");
    
    						scanf("%s", &sex1);
    
    						stu[i].chSex = sex1;
    
    						break;
    
    					case 4:
    
    						printf("请输入新的C语言成绩:\n");
    
    						scanf("%f", &score1);
    
    						stu[num].score[0] = score1;
    
    						break;
    
    					case 5:
    
    						printf("请输入新的高数成绩:\n");
    
    						scanf("%f", &score1);
    
    						stu[num].score[1] = score1;
    
    						break;
    
    					case 6:
    
    						printf("请输入新的英语成绩:\n");
    
    						scanf("%f", &score1);
    
    						stu[num].score[2] = score1;
    
    						break;
    
    					case 7:
    
    						printf("请输入新的现代成绩:\n");
    
    						scanf("%f", &score1);
    
    						stu[num].score[3] = score1;
    
    						break;
    
    					case 8:
    
    						printf("请输入新的大物成绩:\n");
    
    						scanf("%f", &score1);
    
    						stu[num].score[4] = score1;
    
    						break;
    
    					case 9:
    
    						printf("请输入新的电路成绩:\n");
    
    						scanf("%f", &score1);
    
    						stu[num].score[5] = score1;
    
    						break;
    
    					case 10:
    
    						return;
    
    					default:
    						printf("请在1-10之间选择\n");
    
    				}
    
    			}
    
    			printf("修改完毕!请及时保存!\n");
    
    		}
    
    		else
    
    		{
    			printf("没有该学生学号!!!");
    
    		}
    
    	}
    
    }
    
    void DeleteStudent()
    
    {
    	int i, j, flag = 0;
    
    	char s1[LEN + 1];
    
    	printf("请输入要删除学生的学号:\n");
    
    	scanf("%s", s1);
    
    	for (i = 0; i < n; i++) {
    		if (strcmp(stu[i].chNum, s1) == 0)
    
    		{
    			flag = 1;
    
    			for (j = i; j < n - 1; j++)
    
    			{
    				stu[j] = stu[j + 1];
    
    			}
    
    		}
    
    	}
    
    	if (0 == flag)
    
    	{
    		printf("该学号不存在!!!\n");
    
    	}
    
    	if (1 == flag)
    
    	{
    		printf("删除成功!!!");
    
    		n--;
    
    	}
    
    	system("pause");
    
    }
    
    

    大致代码如上,你可以参考一下,如果我的回答对你有帮助,麻烦点一下我的回答右上角的采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?