我是靠谱客的博主 无私嚓茶,最近开发中收集的这篇文章主要介绍嵌入式培训经验分享——数据结构小项目(动态学生信息存储),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学习数据结构之后,我们可以将这些综合起来,利用C语言和数据结构,可以完成一个简单的学生信息的管理系统,动态申请存储,可以对学生信息进行排序,查找,删除等操作,下面是我简单完成的学生信息管理系统,大体功能实现了,细化的没时间弄,大家可以相互借鉴一下,勿喷!!!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

float average=0;
int count=0;

struct student
{
	char name[10];
	int id;
	char sex;
	int class;
	float score;
	struct student * next;
};

typedef struct student student_info;

student_info stuHead;

//打印所有学生的信息
void pr_All(student_info *pt)
{
	student_info *pt1=pt->next;
	while(pt1)
	{
		printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pt1->name,pt1->id,
																			pt1->sex,pt1->score,pt1->class);
		pt1=pt1->next;
	}
}


//录入学生信息
void add_stu(student_info *pSTU)
{		
	student_info *pt;
	student_info *pHead=pSTU;
	while(1){
		pt=malloc(sizeof(student_info));
		memset(pt,0,sizeof(student_info));

		printf("请输入学生信息:(姓名 学号 性别 成绩 班级n");
		scanf("%s %d %c %f %d",pt->name,&pt->id,&pt->sex,&pt->score,&pt->class);
		//printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pt->name,pt->id,
		//																				pt->sex,pt->score,pt->class);
		if(strcmp(pt->name,"#")==0)
		{
			free(pt);
			break;
		}
		count++;
		pHead->next=pt;
		pHead=pHead->next;
	}

	return ;
}

//删除学生信息
int del_stu(student_info *pSTU)
{
	char num[10];
	student_info* pre=pSTU;
	student_info* p=pSTU->next;
	printf("请输入学生的姓名:");
	scanf("%s",num);

	while(p)
	{
		pre=pre->next;
		p=p->next;
		if(strcmp(p->name,num))
		{
			//printf("找打了");
			pre->next=p->next;
			free(p);
			return 1;
		}
	}
	return 0;
}

//查询学生信息
int look_info(student_info *pSTU)
{
	char num[10];
	int i;
	printf("请输入学生的姓名:");
	scanf("%s",num);
	while(pSTU)
	{
		if(strcmp(pSTU->name,num)==0)
		{
			printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pSTU[i].name,pSTU[i							].id,pSTU[i].sex,pSTU[i].score,pSTU[i].class);
			return 1;
		}
		pSTU=pSTU->next;
	}
	return 0;
}

//查询学生平均成绩
void aver_sc(student_info *pSTU)
{
	int i;
	while(pSTU){
			average+=pSTU->score;
			pSTU=pSTU->next;
	}
	average=average/(float)(count);
	printf("平均成绩:%fn",average);
	return ;
}

//更改学生信息
int chang_stuinfo(student_info *pSTU)
{
	char num[10];
	int a;
	printf("请输入学生的姓名:");
	scanf("%s",num);
	while(pSTU)
	{
		if(strcmp(pSTU->name,num)==0)
		{

				printf("请选择要更改的内容:n1、姓名n2、学号n3、性别n4、成绩n5、班级n");
				scanf("%d",&a);
				switch(a)
				{
					case 1: //更改姓名
									printf("请输入更改后的内容:n");
									scanf("%s",pSTU->name);
									break;
					case 2: //更改学号
									printf("请输入更改后的内容:n");
									scanf("%d",&pSTU->id);
									break;
					case 3: //更改性别					
									printf("请输入更改后的内容:n");
									scanf("%c",&pSTU->sex);
									break;
					case 4: //更改成绩
									printf("请输入更改后的内容:n");
									scanf("%f",&pSTU->score);
									break;
					case 5:	//更改班级
									printf("请输入更改后的内容:n");
									scanf("%d",&pSTU->class);
									break;
		}
			//printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pSTU->name,pSTU->				id,pSTU->sex,pSTU->score,pSTU->class);
			return 1;
		}
		pSTU=pSTU->next;
	}
	
	return 0;
}
//插入学生信息
int	inset_Stu(student_info *phead,char *name,student_info *insertname)
{
	student_info *p = phead->next;
	while(p){
		if( strcmp(p->name, name) == 0){
			break;
		}
		p=p->next;
	}
	// p is somebody
	if(p==NULL){
		printf("sorry,no found name=%sn",name);
		return 0;	
	}
	//insert 
	insertname->next=p->next;
	p->next=insertname;
	return 1;
}

int main(int val, char *argv[])
{
	int a;
	student_info *pt1;
	student_info *p=NULL;
	while(1)
	{
		printf("1、录入学生信息n2、删除学生信息n3、学生信息查询n4、查看平均成绩n5、修改学生信息n6、查看全部学生信息n7、插入学生信息n8、退出n请输入要操作指令:");
		scanf("%d",&a);
		switch(a)
		{
			case 1: //添加学生数据
							add_stu(&stuHead);
							//pr_All(&stuHead);							
							break;
			case 2: //删除学生数据
							if(del_stu(&stuHead)){
									printf("删除成功n");
							}else{
									printf("没有查询到相关的信息!!!n");
							}
							break;
			case 3: //查询学生信息
							if(!look_info(&stuHead)){
									printf("没有查询到相关的信息!!!n");
							}
							break;
			case 4: //查看平均成绩
							aver_sc(&stuHead);
							break;
			case 5:	//更改学生信息
							if(chang_stuinfo(&stuHead)) printf("修改成功n");
							else  printf("未查询到此人n");
							break;
			case 6: //打印所有学生的信息
							pr_All(&stuHead);
							break;
			case 7://插入学生信息					
							pt1=malloc(sizeof(student_info));
							memset(pt1,0,sizeof(student_info));
							printf("请输入学生信息:(姓名 学号 性别 成绩 班级n");
							scanf("%s %d %c %f %d",pt1->name,&pt1->id,&pt1->sex,&pt1->score,&pt1->class);

							if(inset_Stu(&stuHead,"li",pt1)) printf("插入成功n");
							else printf("未查询到此人n");
							break;
			case 8://退出
							return 0;
		}

	}
	return 0;

}

最后

以上就是无私嚓茶为你收集整理的嵌入式培训经验分享——数据结构小项目(动态学生信息存储)的全部内容,希望文章能够帮你解决嵌入式培训经验分享——数据结构小项目(动态学生信息存储)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部