基于c语言设计学生管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//创建学生结构
struct stu_type
{
	char num[15];//学生学号
	char name[10];//学生姓名
	char gender[10];//学生性别
	int dormitory_num;//学生宿舍号
	char phone_num[20];//学生电话号码
	int c;//学生成绩
}; 
struct stu_type stu[100];
int stu_num=0;//初始化学生个数为0
void add(); //添加信息
int display(char str[]);//显示信息
void id_find();//学号id查找
void name_find();//name查找
void sort_jx();//按成绩降序排序
void sort_sx();//按成绩升序排序
void save_txt();//保存txt信息
void load_txt();//查询txt信息
void main()
{
	while(1)
	{
		int choice;//可以选择的int类型的号码
		printf("\n	欢迎使用学生信息管理系统\n");
		printf("--------------------------------------------\n");
		printf("1.添加学生信息	2.显示学生信息\n");
		printf("3.(学号)查找学生信息	4.(姓名)查找学生信息\n");
		printf("5.按成绩排序降序        6.按成绩排序升序\n");
		printf("7.保存至文本文件        8.从文本文件读入\n");
		printf("9.退出程序\n");
		printf("--------------------------------------------\n");
		printf("请选择功能模块,输入数字1-9");
		while(1)
		{
			scanf("%d",&choice);
			if(choice>=1 && choice<=9)
				break;
			else
				printf("输入数字不正确,请重输入1-9:");
		}
		switch(choice)
		{
			case 1:	add();	break;//添加信息
			case 2:	display("");	break;//显示,默认是输入字符串长度为0
			case 3: id_find();	break;//按学生学号查找
			case 4:	name_find();	break;//按学生姓名查找
			case 5:	sort_jx();	break;//按成绩降序
			case 6:	sort_sx();	break;//按成绩升序
			case 7:	save_txt();	break;//保存为txt
			case 8:	load_txt();	break;//从本地txt读取
			case 9: exit(0);//退出程序
		}
	}
}
//添加信息
void add()
{
	int i=stu_num;
	printf("说明:依次输入学生信息,当输入的学号为0时表示输入结束\n");
	while(1)
	{
		printf("请输入第%d个学生的信息\n",i+1);
		printf("请输入学号:");
		scanf("%s",stu[i].num);
		if(strcmp(stu[i].num,"0") == 0) break;
		printf("请输入姓名:");
		scanf("%s",stu[i].name);
		printf("请输入性别:");
		scanf("%s",&stu[i].gender);
		printf("请输入数宿舍号:");
		scanf("%d",&stu[i].dormitory_num);
		printf("请输入电话号:");
		scanf("%s",&stu[i].phone_num);
		printf("请输入成绩:");
		scanf("%d",&stu[i].c);
		i++;
	 } 
	 stu_num = i;
	 printf("总共已输入%d个学生的信息\n",stu_num);
}
//显示信息如果输入字符串长度为0则执行遍历功能,如果长度不为0则启动查找功能(按学号或姓名查找)
int display(char str[])
{
	int i, k=-1;//设置初值
	//显示信息如果输入字符串长度为0则执行遍历功能
	if(strlen(str) == 0)
	{
		if(stu_num>0)
		{
			printf("学号\t姓名\t性别\t宿舍号\t电话号\t\t成绩\n");
			for(i=0; i<stu_num; i++)
				printf("%s\t%s\t%s\t%d\t%s\t%d\t\n",stu[i].num,stu[i].name,
				stu[i].gender, stu[i].dormitory_num, stu[i].phone_num, stu[i].c);
		 } 
		 else
		 	printf("学生信息为空!");
	 }
	//如果长度不为0则启动查找功能
	else
	 {
	 	for(i=0; i<stu_num; i++)
	 	{
	 		//按学号查找
	 		if(strcmp(str,stu[i].num) == 0)
	 		{
	 			printf("学生学号\t姓名\t性别\t宿舍号\t电话号\t\t成绩\n");
	 			printf("%s\t\t%s\t%s\t%d\t%s\t%d\t\n",stu[i].num,stu[i].name,
				stu[i].gender, stu[i].dormitory_num, stu[i].phone_num, stu[i].c);
				k = i;
			 }
			//按姓名查找
			else if(strcmp(str,stu[i].name) == 0)
	 		{
	 			printf("学生学号\t姓名\t性别\t宿舍号\t电话号\t\t成绩\n");
	 			printf("%s\t\t%s\t%s\t%d\t%s\t%d\t\n",stu[i].num,stu[i].name,
				stu[i].gender, stu[i].dormitory_num, stu[i].phone_num, stu[i].c);
				k = i;
			}
		}
			 if(k==-1)
			 	printf("没有找到符合条件的学生\n"); 
	}
	return k;
}
//按学生学号查找
void id_find()
{
	char str[15];
	printf("请输入要查找的学生学号:");
	scanf("%s",str);
	display(str);
}
//按学生姓名查找
void name_find()
{
	char str[20];
	printf("请输入要查找的学生姓名:");
	scanf("%s",str);
	display(str);
}
//读取本地txt
void load_txt()
{
	FILE * fp;
	char fname[20];
	int i=0, flag;
	printf("请输入文件名(如:list.txt):");
	scanf("%s",fname);
	if((fp=fopen(fname,"r"))==NULL)
	{
		printf("不能打开文件,文件读取失败!\n");
		return;
	}
	while(1)
	{
		flag=fscanf(fp, "%s %s %s %d %s %d \n",stu[i].num,
		stu[i].name, stu[i].gender, &stu[i].dormitory_num, stu[i].phone_num, &stu[i].c);
		if(flag == EOF)
			break;
		i++; 
	}
	stu_num = i;
	printf("从文件中成功读取%d条记录!\n",i);
	fclose(fp); 
}
//保存的本地txt
void save_txt()
{
	FILE * fp;
	char fname[20];
	int i;
	printf("请输入文件名(如:stu.txt):");
	scanf("%s",fname);
	if((fp=fopen(fname,"w"))==NULL)
	{
		printf("不能打开文件,文件保存失败!\n");
		return;
	}
	for(i=0; i<stu_num; i++)
		fprintf(fp, "%s %s %s %d %s %d \n",stu[i].num,
		stu[i].name, stu[i].gender, stu[i].dormitory_num, stu[i].phone_num, stu[i].c);
	printf("文件保存成功!\n");
	fclose(fp); 
}
//降序排序(应用经典冒泡排序)
void sort_jx()
{
	int i,j;
	struct stu_type temp;
	for(i=0; i<stu_num-1; i++)
	{
		for(j=0; j<stu_num-i-1; j++)
		{
			if(stu[j].c<stu[j+1].c)
			{
				temp = stu[j];
				stu[j] = stu[j+1];
				stu[j+1] = temp;
			}
		}
	}
	printf("排序结果如下:\n");
	printf("名次\t学生学号 姓名\t\t性别\t宿舍号 \t电话号\t\t成绩\n");
	for(i=0; i<stu_num; i++)
	{
		printf( "%d\t %s\t %s \t %s \t %d \t %s \t %d\n",i+1,stu[i].num,
		stu[i].name, stu[i].gender, stu[i].dormitory_num, stu[i].phone_num, stu[i].c); 
	}
}
//升序排序(应用经典冒泡排序)
void sort_sx()
{
	int a,b;
	struct stu_type temp_2;
	for(a=0; a<stu_num-1; a++)
	{
		for(b=0; b<stu_num-a-1; b++)
		{
			if(stu[b].c>stu[b+1].c)
			{
				temp_2 = stu[b];
				stu[b] = stu[b+1];
				stu[b+1] = temp_2;
			}
		}
	}
	printf("排序结果如下:\n");
	printf("名次\t学生学号 姓名\t\t性别\t宿舍号 \t电话号\t\t成绩\n");
	for(a=0; a<stu_num; a++)
	{
		printf( "%d\t %s\t %s \t %s \t %d \t %s \t %d\n",a+1,stu[a].num,
		stu[a].name, stu[a].gender, stu[a].dormitory_num, stu[a].phone_num, stu[a].c); 
	}
}

效果:

1.界面风格
在这里插入图片描述
2.读取之前存储在txt里的学生信息并显示(可以添加完保存后再读取)
在这里插入图片描述
3.插入信息
在这里插入图片描述
4.按学号或者姓名查找:在这里插入图片描述
5.按成绩降序排列
在这里插入图片描述
6.按程序升序排列
在这里插入图片描述

  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 好的,制作学生信息管理系统可以用C语言来实现。学生信息管理系统是一个比较典型的小型管理系统,需要用到基本的C语言知识和文件操作等技术。 首先,需要定义一个学生信息结构体,包括学生姓名、学号、性别、年龄等信息,也可以加入其它相关信息。然后,可以通过输入和输出流来实现数据的读取和写入,将学生信息保存在一个文件中。 接着,可以定义一些操作函数,如添加学生信息、删除学生信息、修改学生信息、查询学生信息等。在实现这些函数的过程中,需要运用到C语言的条件语句、循环语句、函数等基本语法。 最后,将这些函数组合起来,形成一个完整的学生信息管理系统。用户可以通过命令行界面来操作该系统,实现对学生信息的管理和查询。 当然,学生信息管理系统的实现可以有不同的方式和思路,以上只是一种简单的实现方式。需要注意的是,在开发过程中,要注重代码的可读性和可维护性,避免出现不必要的错误和BUG。 ### 回答2: 学生信息管理系统是一个可以方便地管理学生的基本信息和成绩信息的软件。使用C语言编写学生信息管理系统的主要步骤如下: 1. 确定程序的主要功能:首先,我们需要确定学生信息管理系统所需实现的功能,如新增学生、删除学生、修改学生信息、查询学生信息等。 2. 设计数据结构:然后,我们需要设计适当的数据结构来表示学生信息。可以使用结构体来定义包含学生基本信息的数据类型,如姓名、学号、性别、年龄等。 3. 实现基本功能:根据之前设计功能,我们可以在主函数中编写对应的代码来实现新增学生、删除学生、修改学生信息和查询学生信息等功能。例如,当需要添加新的学生时,可以通过用户输入来获取学生的信息,然后将这些信息存储到数组或链表中。 4. 文件存储:为了保证学生信息的持久保存,我们可以将学生信息存储到文件中。可以使用文件操作函数来实现信息的写入和读取。 5. 菜单设计:为了方便用户使用,可以使用菜单来展示系统的功能选项。可以使用循环和分支结构来实现菜单的设计,并根据用户输入调用对应的功能函数。 6. 异常处理:在程序编写过程中,考虑到用户可能会输入错误的数据或产生其他异常情况,我们可以通过添加适当的异常处理代码来避免程序崩溃或出现错误结果。 最后,经过以上步骤,我们就可以完成使用C语言制作学生信息管理系统了。这个系统可以方便地进行学生信息的管理和查询,并且可以持久保存学生信息,提高信息管理的效率和准确性。 ### 回答3: 学生信息管理系统是一个用来存储和管理学生信息的软件应用程序。利用C语言可以方便地实现该系统。 首先,在设计学生信息管理系统之前,需要确定学生信息的数据结构。可以使用结构体来表示学生的相关信息,如学号、姓名、性别、年龄、班级等。结构体的定义可以放在头文件中。 其次,需要实现以下基本功能: 1. 添加学生信息:通过键盘输入学生的相关信息,例如学号、姓名、性别、年龄、班级等,然后将信息存储到文件或内存中。 2. 查询学生信息:提供学号或姓名作为查询条件,通过遍历学生信息列表或使用查找算法在数据中找到对应的学生信息并打印出来。 3. 修改学生信息:根据学号或姓名查询到学生信息后,可以选择修改某个字段,如年龄、班级等,然后更新到数据中。 4. 删除学生信息:根据学号或姓名查询到学生信息后,可以选择删除该学生的记录,从数据中将其移除。 5. 显示所有学生信息:遍历学生信息列表并逐个打印。 最后,需要一个用户界面,用户可以通过命令行界面输入指令来实现上述功能。例如,用户可以选择添加学生信息、查询学生信息、修改学生信息、删除学生信息或显示所有学生信息。根据用户输入,系统将调用相应的函数来实现功能。 总之,使用C语言可以实现一个简单的学生信息管理系统。通过定义合适的数据结构和实现基本功能,可以方便地存储、查询、修改和删除学生信息。同时,提供一个友好的用户界面,使用户能够方便地使用该系统。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

visual_eagle

欢迎交流学习

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值