从零开始的c语言日记番外篇——课程设计做一个成绩管理系统

本项目里主要使用到了结构体以及结构体数组,函数的调用,指针的运用,各种库函数的使用需要理解注意的点是:

1.如何创建结构体变量

2.如果使用结构体数组

3.函数指针传参

4.结构体的使用

5.各类库函数的使用以及需要的头文件

本程序我使用了4个文件来编写

test.c——————是主程序的位置,负责主程序的逻辑运行

administrator.c————主要是管理员的功能,录入账号密码、修改

Teacherfuntion.c————老师学生的功能主要放这

Management.h————结构体定义以及头文件定义,函数定义,常量定义

如果对你有帮助请点个赞、评论一下

如果对你有帮助请点个赞、评论一下

如果对你有帮助请点个赞、评论一下

如果对你有帮助请点个赞、评论一下

如果对你有帮助请点个赞、评论一下

有什么问题或者意见欢迎指导

一、test.c文件

主要的逻辑

#define _CRT_SECURE_NO_WARNINGS 1
#include "Management.h"//所有定义、结构体、函数都在management头文件里


void menu1()//欢迎界面菜单
{
	printf("—————————————————————————————————————————————————————\n");
	printf("————————       欢迎进入柳州大学成绩管理系统     —————————\n");
	printf("————————           【0. 退出系统 】             —————————\n");
	printf("————————          【1.账号密码查询】            —————————\n");
	printf("————————           【2.教师登录】               —————————\n");
	printf("————————           【3.学生登录】               —————————\n");
	printf("————————          【4. 管理员登录 】            —————————\n");
	printf("—————————————————————————————————————————————————————\n");
}


void menu3()//老师界面
{
	printf("———————————————————————————————————————————————————————————————————\n");
	printf("———                           老师界面                       ———\n");
	printf("———           【0. 退出系统 】         【1.学生成绩录入】     ———\n");
	printf("———         【2.学生成绩修改】         【3.学生成绩查询】     ———\n");
	printf("———         【4.学生成绩显示】         【5.排名成绩查询】     ———\n");
	printf("———         【6.学生成绩删除】                                ———\n");
	printf("———————————————————————————————————————————————————————————————————\n");
}


void menu4()//学生界面
{
	printf("———————————————————————————————————————————————————————————————————\n");
	printf("———                           学生界面                        ———\n");
	printf("———                       【0. 退出系统 】                    ———\n");
	printf("———         【1.学生成绩查询】         【2.排名成绩查询】     ———\n");
	printf("———————————————————————————————————————————————————————————————————\n");
}


void menu5()//账号密码查询界面
{
	printf("———————————————————————————————————————————————————————————————————\n");
	printf("———                      账号密码查询界面                     ———\n");
	printf("———                       【0. 退出系统 】                    ———\n");
	printf("———         【1.学生查询】                 【2.老师查询】     ———\n");
	printf("———————————————————————————————————————————————————————————————————\n");
}

void gly()//管理员密码为程序直接设置
{
	ManAP s1;//存到的地方
	strcpy(s1.Account, "gly");//管理员账号为gly
	strcpy(s1.password, "gly");//密码为gly
}




int main()
{
	int c = 0;
	c = c + 1;
	if (c <= 0)//程序初始化有点小bug
	{
		InitAPStu(&Stu);
		InitAPTea(&Tea);
		InitGrades(&Gra);
	}
	
	gly();//管理员账号密码函数
	int input = 0;
	int input1 = 0;
	int input2 = 0;
	int input3 = 0;
	int input4 = 0;//定义选择用的变量
	
	do
	{
		menu1();
		printf("请选择:》》》");//欢迎菜单选择
		scanf("%d", &input);
		switch (input)//欢迎菜单大循环
		{


			//选择一
		case 1://账号密码查询
			

			do
			{
				menu5();
				printf("请输入查找类型\n");
				scanf("%d", &input4);

				switch (input4)//选择学生账号查询还是老师
				{
				case 1:
					StuAPsearch(&Stu);//查找学生账号密码
					break;
				case 2:
					TeaAPsearch(&Tea);//查找老师账号密码
					break;
				case 0:
					printf("退出程序!!\n");
					break;
				default:
					printf("请重新输入\n");
					break;
				}

			} while (input4);
			break;
			//账号密码查询


			//选择二
		case 2:
			Teacher_enter(&Tea);//老师登录

			do
			{
				menu3();
				printf("请选择:>>");//老师欢迎界面选择
				scanf("%d", &input2);
				switch (input2)
				{
				case 1:
					StuGradesadd(&Gra);//学生成绩添加
					break;
				case 2:
					StuGradesrevise(&Gra);//成绩修改
					break;
				case 3:
					StuGradessearch(&Gra);//成绩查询
					break;
				case 4:
					ShowStuGrade(&Gra);//学生成绩显示
					break;
				case 5:
					SortStuGrade(&Gra);//学生成绩查找
					break;
				case 6:
					StuGradedelete(&Gra);//学生成绩删除
					break;
				case 0:
					printf("退出系统\n");
					break;
				default:
					printf("请重新输入!\n");
					break;
				}

			} while (input2);

			break;

			///


		case 3://学生登录
			Student_enter(&Stu);



			do
			{
				menu4();
				printf("请选择:>>");//学生欢迎界面
				scanf("%d", &input3);
				switch (input3)
				{
				case 1:
					StuGradessearch(&Gra);//学生成绩查找
					break;
				case 2:
					SortStuGrade(&Gra);//学生查找成绩显示
					ShowStuGrade(&Gra);//学生查找成绩显示
					break;
				case 0:
					printf("退出程序\n");
					break;
				default:
					printf("请重新输入!!\n");
					break;
				}



			} while (input3);
		

			break;




			//
		case 4:
			mamagement_enter();//管理员登录


			do
			{
				menu2();
				printf("请选择:》》》");//管理员欢迎界面
				scanf("%d", &input1);

				switch (input1)
				{
				case 1:
					StuAPenter(&Stu);//学生账号密码录入
					break;
				case 2:
					TeaAPenter(&Tea);//老师账号密码录入
					break;
				case 3:
					StuAPsearch(&Stu);//学生账号密码查找
					break;
				case 4:
					TeaAPsearch(&Tea);//老师账号密码查找
					break;
				case 5:
					StuAPrevise(&Stu);//老师账号密码修改
					break;
				case 6:
					TeaAPrevise(&Tea);//老师账号密码修改
					break;
				case 7:
					ShowstuAP(&Stu);//学生账号密码显示
					break;
				case 8:
					ShowteaAP(&Tea);//老师账号密码显示
					break;
				case 9:
					StuAPdelete(&Stu);//学生账号密码删除
					break;
				case 10:
					TeaAPdelete(&Tea);//老师账号密码删除
					break;
				case 0:
					printf("退出系统!\n");
					break;
				default:
					printf("输入错误请重新输入!\n");
					break;
				}

			} while (input1);
			break;






		case 0:
			printf("退出系统!\n");
			break;
		default:
			printf("输入错误请重新输入!\n");
			break;
		}

	} while (input);
	return 0;
}


二、administrator.c

主要负责管理员的各项功能

#define _CRT_SECURE_NO_WARNINGS 1
#include "Management.h"


void menu2()
{
	printf("———————————————————————————————————————————————————————————————————\n");
	printf("———                            管理员界面                         ———\n");
	printf("———           【0. 退出系统 】         【1.学生账号密码录入】     ———\n");
	printf("———         【2.老师账号密码录入】     【3.学生账号密码查询】     ———\n");
	printf("———         【4.老师账号密码查询】     【5.学生账号密码修改】     ———\n");
	printf("———         【6.老师账号密码修改】     【7.学生账号密码显示】     ———\n");
	printf("———         【8.老师账号密码显示】     【9.学生账号密码删除】     ———\n");
	printf("———         【10.老师账号密码删除】                               ———\n");
	printf("———————————————————————————————————————————————————————————————————\n");
}

void InitAPStu(StuAParr* pc)//初始化
{
	assert(pc);
	pc->count1 = 0;//人数计数
	memset(pc->data1, 0, sizeof(pc->data1));
}

void InitAPTea(TeaAParr* pc)//初始化
{
	assert(pc);
	pc->count2 = 0;
	memset(pc->data2, 0, sizeof(pc->data2));
}

void InitGrades(Gradesarr* pc)
{
	assert(pc);
	pc->count3 = 0;
	memset(pc->data3, 0, sizeof(pc->data3));
}

void mamagement_enter()
{

	int i = 0;
	int c = 3;
	char zhanghao[MAX_Man] = { 0 };
	char mima[MAX_Man] = { 0 };
	for (i = 0; i < 3; i++)
	{
		printf("请输入账号:>>\n");
		scanf("%s", zhanghao);
		printf("请输入密码:>>\n");
		scanf("%s", mima);
		if (strcmp(zhanghao, "gly") == 0 && strcmp(mima, "gly") == 0)//对比管理员账号是否正确
		{
			printf("登录成功\n");
			break;

		}
		else
		{
			c = c - i;
			printf("密码错误!您还剩%d次机会!\n", 2 - i);
			
		}
	}
	
	if (c == 0)
	{
		main();
	}
}


void StuAPenter(StuAParr* pc)
{
	assert(pc);
	if (pc->count1 == MAX_Stu)
	{
		printf("密码库已满,无法添加\n");
		return;
	}
	printf("请输入名字:>");
	scanf("%s", &pc->data1[pc->count1].name);
	printf("请输入账号:>");
	scanf("%s", &pc->data1[pc->count1].Account);
	printf("请输入密码:>");
	scanf("%s", &pc->data1[pc->count1].password);
	pc->count1++;
	printf("增加成功\n");
}



void ShowstuAP(StuAParr* pc)
{
	assert(pc);
	int i = 0;
	printf("%-20s\t%-10s\t%-12s\n", "名字", "账号", "密码");
	for (i = 0; i < pc->count1; i++)
	{
		printf("%-20s\t%-10s\t%-12s\n", pc->data1[i].name,
			pc->data1[i].Account,
			pc->data1[i].password);
	}
}

int StuFindbyname(StuAParr* pc, char name[])//查找名字函数
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count1; i++)//for循环判断用的是结构体里记录人数的count1,指向他
	{
		if (0 == strcmp(pc->data1[i].name, name))//strcmp库函数用来判断是否相同如果相同等于0
		{
			return i;
		}
	}
	return -1;
}


void StuAPsearch(StuAParr* pc)
{
	assert(pc);
	int i = 0;
	char name[MAX_Name] = { 0 };
	printf("请输入要查找人的名字:》\n");
	scanf("%s", name);
	int pos = StuFindbyname(pc, name);//查找需要进入结构体里进行一一比对调用函数进行
	if (pos == -1)
	{
		printf("查找的人不存在\n");
		return;
	}
	else
	{
		printf("%-20s\t%-10s\t%-12s\n", "名字", "账号", "密码");
		printf("%-20s\t%-10s\t%-12s\n", pc->data1[pos].name,
			pc->data1[pos].Account,
			pc->data1[pos].password);
	}
}

void StuAPrevise(StuAParr* pc)
{
	assert(pc);
	int i = 0;
	char name[MAX_Name] = { 0 };
	printf("请输入要修改人的名字:》\n");
	scanf("%s", name);
	int pos = StuFindbyname(pc, name);//查找名字
	if (pos == -1)
	{
		printf("修改的人不存在\n");
		return;
	}
	else
	{
		printf("已查询到该联系人,接下来开始修改:\n");
		printf("请输入名字:>");
		scanf("%s", pc->data1[pos].name);
		printf("请输入账号:>");
		scanf("%s", pc->data1[pos].Account);
		printf("请输入密码:>");
		scanf("%s", pc->data1[pos].password);
		printf("修改成功");
	}


}

void StuAPdelete(StuAParr* pc)
{
	char name[MAX_Name] = { 0 };
	assert(pc);
	int i = 0;
	printf("请输入要删除人的名字:》");
	scanf("%s", name);

	//查找
	int pos = StuFindbyname(pc, name);
	if (pos == -1)
	{
		printf("要删除的人不存在");
		return;
	}
	//删除
	for (i = pos; i < pc->count1 - 1; i++)
	{
		pc->data1[i] = pc->data1[i + 1];
	}
	pc->count1--;
	printf("删除成功\n");
}



void TeaAPenter(TeaAParr* pc)
{
	assert(pc);
	if (pc->count2 == MAX_Tea)
	{
		printf("密码库已满,无法添加\n");
		return;
	}
	printf("请输入名字:>");
	scanf("%s", &pc->data2[pc->count2].name);
	printf("请输入账号:>");
	scanf("%s", &pc->data2[pc->count2].Account);
	printf("请输入密码:>");
	scanf("%s", &pc->data2[pc->count2].password);
	pc->count2++;
	printf("增加成功\n");
}

void ShowteaAP(TeaAParr* pc)
{
	assert(pc);
	int i = 0;
	printf("%-20s\t%-10s\t%-12s\n", "名字", "账号", "密码");
	for (i = 0; i < pc->count2; i++)
	{
		printf("%-20s\t%-10s\t%-12s\n", pc->data2[i].name,
			pc->data2[i].Account,
			pc->data2[i].password);
	}
}

int TeaFindbyname(TeaAParr* pc, char name1[])
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count2; i++)
	{
		if (0 == strcmp(pc->data2[i].name, name1))
		{
			return i;
		}
	}
	return -1;
}

void TeaAPrevise(TeaAParr* pc)
{
	assert(pc);
	int i = 0;
	char name1[MAX_Name] = { 0 };
	printf("请输入要修改人的名字:》");
	scanf("%s", name1);
	int pos = TeaFindbyname(pc, name1);
	if (pos == -1)
	{
		printf("修改的人不存在");
		return;
	}
	else
	{
		printf("已查询到该联系人,接下来开始修改:");
		printf("请输入名字:>");
		scanf("%s", pc->data2[pos].name);
		printf("请输入账号:>");
		scanf("%s", pc->data2[pos].Account);
		printf("请输入密码:>");
		scanf("%s", pc->data2[pos].password);
		printf("修改成功");
	}
}

void TeaAPsearch(TeaAParr* pc)
{
	assert(pc);
	int i = 0;
	char name1[MAX_Name] = { 0 };
	printf("请输入要查找人的名字:》");
	scanf("%s", name1);
	int pos = TeaFindbyname(pc, name1);
	if (pos == -1)
	{
		printf("查找的人不存在");
		return;
	}
	else
	{
		printf("%-20s\t%-10s\t%-12s\n", "名字", "账号", "密码");
		printf("%-20s\t%-10s\t%-12s\n", pc->data2[pos].name,
			pc->data2[pos].Account,
			pc->data2[pos].password);

	}
}

void TeaAPdelete(TeaAParr* pc)
{
	char name1[MAX_Name] = { 0 };
	assert(pc);
	int i = 0;
	printf("请输入要删除人的名字:》");
	scanf("%s", name1);

	//查找
	int pos = TeaFindbyname(pc, name1);
	if (pos == -1)
	{
		printf("要删除的人不存在");
		return;
	}
	//删除
	for (i = pos; i < pc->count2 - 1; i++)
	{
		pc->data2[i] = pc->data2[i + 1];
	}
	pc->count2--;//删除完后人数计数--
	printf("删除成功\n");
}

三、Management.h

此项目的头文件,主要是负责定义各类函数的结构体,和声明

#pragma once
#include
#include
#include
#include//库函数

#define MAX_Stu 20
#define MAX_Tea 20
#define MAX_Man 20
#define MAX_Name 50//标识符常量
//账号密码
typedef struct StuAP//学生账号密码类型
{
	char name[MAX_Stu];//名字
	char Account[MAX_Stu];//账号
	char password[MAX_Stu];//密码
} StuAP;

typedef struct TeaAP//老师账号密码类型
{
	char name[MAX_Tea];//名字
	char Account[MAX_Tea];//账号
	char password[MAX_Tea];//密码
} TeaAP;


typedef struct ManAP//管理账号密码类型
{
	char name[MAX_Name];
	char Account[MAX_Man];
	char password[MAX_Man];
} ManAP;


typedef struct StuAParr
{
	StuAP data1[MAX_Stu];//存放学生账号密码
	int count1;//记录实际人数
}StuAParr;

typedef struct TeaAParr
{
	TeaAP data2[MAX_Tea];//存放老师账号密码
	int count2;//记录实际人数
}TeaAParr;

typedef struct Grades//学生分数类型
{
	char name[MAX_Name];
	int Chinese;
	int Mathematics;
	int English;
	int sum;
}Grades;


typedef struct Gradesarr
{
	Grades data3[MAX_Stu];//存放学生成绩结构体数组
	int count3;//记录实际人数
}Gradesarr;

struct StuAParr Stu;
struct TeaAParr Tea;
struct Gradesarr Gra;

//管理员

//主程序进入
void mamagement_enter();
//录入学生密码
void StuAPenter(StuAParr *pc);
//查询学生密码
void StuAPsearch(StuAParr* pc);
//显示学生账号密码
void ShowstuAP(StuAParr* pc);
//学生密码修改
void StuAPrevise(StuAParr* pc);
//学生信息删除
void StuAPdelete(StuAParr* pc);
//
//录入老师账号密码
void TeaAPenter(TeaAParr* pc);
//查询老师账号密码
void TeaAPsearch(TeaAParr* pc);
//老师账号密码显示
void ShowteaAP(TeaAParr* pc);
//老师账号修改
void TeaAPrevise(TeaAParr* pc);
//老师账号查找
void TeaAPsearch(TeaAParr* pc);
//老师账号密码删除
void TeaAPdelete(TeaAParr* pc);
//

//老师
//
//老师登录
void Teacher_enter(TeaAParr* pc);
//
void StuGradesadd(Gradesarr* pc);//学生成绩添加

void menu2();

void StuGradesrevise(Gradesarr* pc);//学生成绩修改

void StuGradessearch(Gradesarr* pc);//学生成绩查找

void ShowStuGrade(Gradesarr* pc);//学生成绩显示

void SortStuGrade(Gradesarr* pc);//学生成绩排名

void StuGradedelete(Gradesarr* pc);//学生成绩删除


//学生
void Student_enter(StuAParr* pc);


//有些函数的可以通用的不另外做定义
//

四、Teacherfuntion.c

老师和学生的账号密码功能实现

这里的账号密码对比使用了两if先判断账号再判断密码也是使用指针去结构体里寻找。

#define _CRT_SECURE_NO_WARNINGS 1
#include "Management.h"



int TeaFindbyaccount(TeaAParr* pc, char account1[], char password1[])
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count2; i++)
	{
		if (strcmp(pc->data2[i].Account, account1) == 0 )
		{
			if (strcmp(pc->data2[i].password, password1) == 0)
			{
				return i;
			}
		}
	}
	return -1;
}

void Teacher_enter(TeaAParr* pc)
{
	int i = 0;
	int c = 3;
	char zhanghao2[20] = { 0 };
	char mima2[20] = { 0 };
	for (i = 0; i < 3; i++)
	{
		printf("请输入账号:>>\n");
		scanf("%s", zhanghao2);
		printf("请输入密码:>>\n");
		scanf("%s", mima2);
		int pos1 = TeaFindbyaccount(pc, zhanghao2, mima2);
		if (pos1 == 0)
		{
			printf("登录成功!欢迎您:\n");
			break;
		}
		else
		{
			c = c - i;
			printf("账号或密码错误您还剩%d次机会,请重新输入!!\n", 2 - i);
		}
	}
	if (c == 0)
	{
		main();
	}
}



void StuGradesadd(Gradesarr* pc)
{
	
	assert(pc);
	
	if (pc->count3 == MAX_Stu)
	{
		printf("成绩库已满,无法添加\n");
		return;
	}
	printf("请输入名字:>");
	scanf("%s", pc->data3[pc->count3].name);
	printf("请输入语文成绩:>");
	scanf("%d", &(pc->data3[pc->count3].Chinese));
	printf("请输入数学成绩:>");
	scanf("%d", &(pc->data3[pc->count3].Mathematics));
	printf("请输入英语:>");
	scanf("%d", &(pc->data3[pc->count3].English));
	printf("总分为:>\n");
	pc->data3[pc->count3].sum = pc->data3[pc->count3].Chinese + pc->data3[pc->count3].Mathematics + pc->data3[pc->count3].English;
	//scanf("%d", &(pc->data3[pc->count3].sum));
	printf("%d", pc->data3[pc->count3].sum);
	pc->count3++;
	printf("增加成功\n");

}


void StuGradesrevise(Gradesarr* pc)
{
	assert(pc);
	int i = 0;
	char name1[MAX_Name] = { 0 };
	printf("请输入要修改人的名字:》");
	scanf("%s", name1);
	int pos = StuFindbyname_Grade(pc, name1);
	if (pos == -1)
	{
		printf("修改的人不存在");
		return;
	}
	else
	{
		printf("已查询到该联系人,接下来开始修改:");
		printf("请输入名字:>");
		scanf("%s", pc->data3[pos].name);
		printf("请输入语文成绩:>");
		scanf("%d", &(pc->data3[pos].Chinese));
		printf("请输入数学成绩:>");
		scanf("%d", &(pc->data3[pos].Mathematics));
		printf("请输入英语成绩:>");
		scanf("%d", &(pc->data3[pos].English));
		printf("请输入总分成绩:>");
	    scanf("%d", &(pc->data3[pos].sum));

		printf("修改成功");
	}




}


int StuFindbyname_Grade(Gradesarr* pc, char name[])
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count3; i++)
	{
		if (0 == strcmp(pc->data3[i].name, name))
		{
			return i;
		}
	}
	return -1;
}

void StuGradessearch(Gradesarr* pc)
{
	assert(pc);
	int i = 0;
	char name[MAX_Name] = { 0 };
	printf("请输入要查找人的名字:》");
	scanf("%s", name);
	int pos3 = StuFindbyname_Grade(pc, name);
	if (pos3 == -1)
	{
		printf("查找的人不存在");
		return;
	}
	else
	{
		printf("%-20s\t%-10s\t%-10s\t%-10s\t%-10s\n", "名字", "语文", "数学","英语","总分");
		printf("%-20s\t%-10d\t%-10d\t%-10d\t%-10d\n", pc->data3[pos3].name,
			pc->data3[pos3].Chinese,
			pc->data3[pos3].Mathematics,
			pc->data3[pos3].English,
			pc->data3[pos3].sum);
	}


}

void ShowStuGrade(Gradesarr* pc)
{
	assert(pc);
	int i = 0;
	printf("%-20s\t%-10s\t%-10s\t%-10s\t%-10s\n", "名字", "语文", "数学", "英语", "总分");
	for (i = 0; i < pc->count3; i++)
	{
		printf("%-20s\t%-10d\t%-10d\t%-10d\t%-10d\n", pc->data3[i].name,
			pc->data3[i].Chinese,
			pc->data3[i].Mathematics,
			pc->data3[i].English,
			pc->data3[i].sum);
	}

}

int cmp_peo_by_name(const void* e1, const void* e2)
{
	return strcmp(&((Grades*)e2)->sum, &((Grades*)e1)->sum);
}

void SortStuGrade(Gradesarr* pc)
{
	int i = 0;
	assert(pc);
	for (i = 0; i <= pc->count3; i++)
	{
		qsort(pc->data3, pc->count3, sizeof(Grades), cmp_peo_by_name);
	}
	printf("排序成功!");

}


//学生



int StuFindbyaccount(StuAParr* pc, char account2[], char password2[])
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count1; i++)
	{
		if (strcmp(pc->data1[i].Account, account2) == 0)
		{
			if (strcmp(pc->data1[i].password, password2) == 0)
			{
				return i;
			}
		}
	}
	return -1;
}

void Student_enter(StuAParr* pc)
{
	int i = 0;
	int c = 3;
	char zhanghao3[20] = { 0 };
	char mima3[20] = { 0 };
	for (i = 0; i < 3; i++)
	{
		printf("请输入账号:>>\n");
		scanf("%s", zhanghao3);
		printf("请输入密码:>>\n");
		scanf("%s", mima3);
		int pos5 = StuFindbyaccount(pc, zhanghao3, mima3);
		if (pos5 == 0)
		{
			printf("登录成功!欢迎您:\n");
			break;
		}
		else
		{
			c = c - i;
			printf("账号或密码错误您还剩%d次机会,请重新输入!!\n", 2 - i);
		}
	}

	if (c == 0)
	{
		main();
	}

}

void StuGradedelete(Gradesarr* pc)
{
	char name[MAX_Name] = { 0 };
	assert(pc);
	int i = 0;
	printf("请输入要删除人的名字:》");
	scanf("%s", name);

	//查找
	int pos1 = StuFindbyname_Grade(pc, name);
	if (pos1 == -1)
	{
		printf("要删除的人不存在");
		return;
	}
	//删除
	for (i = pos1; i < pc->count3 - 1; i++)
	{
		pc->data3[i] = pc->data3[i + 1];
	}
	pc->count3--;
	printf("删除成功\n");


}

你可能感兴趣的:(c语言,开发语言,监督学习,学习,课程设计)