栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言课设 学生管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言课设 学生管理系统

目的:通过c语言设计一个学生管理系统,要求有直观的主菜单,可以录入学生的信息,实现添加学生信息、显示学生信息、查找学生信息、删除学生信息、修改学生信息以及退出等功能。

基本框架:

1.学生基本信息,用结构体实现

#include
#define MAX 60          //定义MAX最大值为60 
struct student{
	char name[20];      //学生姓名
	int age;            //年龄
	int id;             //学号
	char sex[10];       //性别
    char birthday;      //出生年月 
	char site;          //地址 
	int sum[11];        //电话号码 
	char mail;          //电子邮箱 
};

struct class_room{
	struct student st[MAX];	//定义多个学生 
	int n;					//当前班级的人数
};

2.设计主菜单,定义函数printf_menu()实现

//打印主菜单函数 
void printf_menu()                            //打印主菜单函数 
{
	printf("        学生管理系统        n");
	printf("----------------------------n");
	printf("|1、添加学生信息            |n");
	printf("|2、显示所有学生信息        |n");
	printf("|3、查询学生信息            |n");
	printf("|4、删除学生信息            |n");
	printf("|5、修改学生信息            |n");
	printf("|6、退出                    |n");
	printf("----------------------------n");
	printf("请输入相应的序号选择!       n");
}

3.访问结构成员

//主函数
int main() 
{
	struct class_room WLW;//定义一个班级为WLW存储学生 
	WLW.n=0;//初始化,学生人数为0 
	
	while(1)//无限循环
	{
		loop:
			printf_menu();//调用主菜单函数输出主菜单
			int choose;//定义一个序号
			scanf("%d",&choose);
	
		switch(choose)
		{
			case 1:
				add_student(&WLW);//添加学生
				break;
			case 2:
				show_student(&WLW);//显示学生
				break;
			case 3:
				find_student(&WLW);//查询学生
				break;
			case 4:
				remove_student(&WLW);//删除学生
				break; 
			case 5:
				change_student(&WLW);//修改学生
				break;
			case 6:
				return 0;//退出程序
			default://若输出错误的序号,则跳转至重新输出
				printf("输出错误,请重新输入!n");
				goto loop;	
		}
		
	}
}

4.功能实现,函数调用实现

void add_student(struct class_room *WLW)           //添加学生信息
void show_student(struct class_room *WLW)          //显示学生信息
int find_student(struct class_room *WLW)          //查询学生 
void remove_student(struct class_room *WLW)       //删除 
void change_student(struct class_room *WLW)       //修改
void printf_menu()			 //显示菜单
int choose(int i)        //选择所需要的内容

完整代码

#include
#include//包含头文件string.h
#define MAX 60//定义MAX最大值为60 
struct student{
	char name[20];
	int age;
	int id;
	char sex[10];
};

struct class_room{
	struct student st[MAX];	//定义多个学生 
	int n;	//当前班级的人数
};

void printf_menu()//打印主菜单函数 
{
	printf("        学生管理系统        n");
	printf("----------------------------n");
	printf("|1、添加学生信息            |n");
	printf("|2、显示所有学生信息        |n");
	printf("|3、查询学生信息            |n");
	printf("|4、删除学生信息            |n");
	printf("|5、修改学生信息            |n");
	printf("|6、退出                    |n");
	printf("----------------------------n");
	printf("请输入相应的序号选择!       n");
}

void add_student(struct class_room *WLW)//添加学生信息,其中struct class_room *WLW为结构体指针 
{
	printf("请输入学生的姓名:n");
	scanf("%s",WLW->st[WLW->n].name);	//数组名代表首地址 
	printf("请输入学生的年龄:n");
	scanf("%d",&WLW->st[WLW->n].age);	//取变量的地址 
	printf("请输入学生的id:n");
	scanf("%d",&WLW->st[WLW->n].id);
	printf("请输入学生的性别:n");
	scanf("%s",WLW->st[WLW->n].sex);
	
	WLW->n++;//班级人数加一
}

void show_student(struct class_room *WLW)//显示所有学生信息 
{
	int i;
	for(i=0;in;i++)//WLW->n为当前班级的人数
	{
		printf("the %d student name is %sn",i+1,WLW->st[i].name);//第一个学生
		printf("the %d student age is %dn",i+1,WLW->st[i].age);
		printf("the %d student id is %dn",i+1,WLW->st[i].id);
		printf("the %d student sex is %sn",i+1,WLW->st[i].sex);
	}
}

int find_student(struct class_room *WLW)//查找指定学生 
{
	int id,i; 
	printf("请输入要查找的学生id:n");
	scanf("%d",&id);
	
	for(i=0;in;i++)
	{
		if(id==WLW->st[i].id)
		{
			printf("the student is exist!n");
			printf("the %d student name is %sn",i+1,WLW->st[i].name);
			printf("the %d student age is %dn",i+1,WLW->st[i].age);
			printf("the %d student id is %dn",i+1,WLW->st[i].id);
			printf("the %d student sex is %sn",i+1,WLW->st[i].sex);
			return i;
		}
	}
	printf("the student is not exist!n");
	return -1;
}

void remove_student(struct class_room *WLW)//删除指定学生 
{
	int ret,i;
	ret=find_student(WLW);
	
	if(ret!=-1)
	{
		for(i=ret;in-1;i++)
		{
			strcpy(WLW->st[i].name,WLW->st[i+1].name);//由于是字符串类型复制使用头文件string.h中的strcpy复制函数 
			WLW->st[i].age=WLW->st[i+1].age;
			WLW->st[i].id=WLW->st[i+1].id;
			strcpy(WLW->st[i].sex,WLW->st[i+1].sex);
		}
		
		WLW->n--;
	}
	printf("该学生已经删除成功!n");
}

void change_student(struct class_room *WLW)//修改学生信息 
{
	int ret,choose;
	ret=find_student(WLW);
	if(ret!=-1)
	{
		loop1:
			printf("修改学生信息的哪一项?n");
			printf("1、姓名n");
			printf("2、年龄n");
			printf("3、idn");
			printf("4、性别n");
			scanf("%d",&choose);
			
			switch(choose)
			{
				case 1:
					printf("请输入新的学生姓名:n");
					scanf("%s",WLW->st[ret].name);//输出的代表首地址,所以不需要&取地址 
					break;
				case 2:
					printf("请输入新的学生年龄:n");
					scanf("%d",&WLW->st[ret].age);
					break;
				case 3:
					printf("请输入新的学生id:n");
					scanf("%d",&WLW->st[ret].id);
					break;
				case 4: 
					printf("请输入新的学生性别:n");
					scanf("%s",WLW->st[ret].sex);
					break;
				default:
					printf("输出错误,请重新输入!n");
					goto loop1;
			}
			
	}
}

int main() 
{
	struct class_room WLW;//定义一个班级为WLW存储学生 
	WLW.n=0;//初始化,学生人数为0 
	
	while(1)//无限循环 
	{
		loop:
			printf_menu();//调用主菜单函数输出主菜单
			int choose;//定义一个序号
			scanf("%d",&choose);
	
		switch(choose)
		{
			case 1:
				add_student(&WLW);//添加学生
				break;
			case 2:
				show_student(&WLW);//显示学生
				break;
			case 3:
				find_student(&WLW);//查询学生
				break;
			case 4:
				remove_student(&WLW);//删除学生
				break; 
			case 5:
				change_student(&WLW);//修改学生
				break;
			case 6:
				return 0;//退出程序
			default://若输出错误的序号,则跳转至重新输出
				printf("输出错误,请重新输入!n");
				goto loop;	
		}
	
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号