交一下这个程序该怎么设计

 

#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");

}

参考我写的这个学生成绩系统,你做一些修改,就能满足你的需求了。

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632