学生信息管理系统(C语言)-创新互联

相信许多童鞋的第一次都给了这个项目吧,嘿嘿……嘿    0.0

员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联建站坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供成都网站建设、网站建设、微信公众号开发、电商网站开发,微信小程序定制开发,软件按需规划网站等一站式互联网企业服务。

  

 这里提供了一份源码供大家参考,请自行食用。

项目功能:

 

(1)help函数,打印菜单,获取帮助信息。

(2)insert函数:插入数据信息。

(3)sort函数:对已有信息进行排序。

(4)find函数:索引查找信息。

(5)output函数:遍历信息。

(6)delete函数:通过索引删除信息。

运行展示:

初始化界面:

运行界面:

到这里,我猜有人要说:"你啰嗦***呢?我不会自己操作吗,还不快把源码给朕呈上来?”

 
TNND

 

源码参上:

main.c文件

#include"student.h"
int main()
{
	printf("\t\t\t\t\t迎使用学生信息管理系统\n"); 
	Menu();
	STU *head=NULL;
	while(1)
	{
		printf("\t\t\t请输入操作指令:  ");
		char str[32]=" ";
		scanf("%s",str);
		if(strcmp(str,"insert")==0)
		{
			printf("\t\t\t请输入学生信息(学号 姓名 性别 年龄 四科成绩):\n");
			STU tmp;
			printf("\t\t\t");
			scanf("%d %s %s %d %d %d %d %d",&tmp.num,tmp.name,tmp.sex,&tmp.age,&tmp.score_Chinese,&tmp.score_Math,&tmp.score_Computer,&tmp.score_English);
			tmp.score_average=(tmp.score_Chinese+tmp.score_Computer+tmp.score_English+tmp.score_Math)/4.0;
			tmp.score_sum=tmp.score_Chinese+tmp.score_Computer+tmp.score_English+tmp.score_Math;
			head=Insert(head,tmp);
		}
		else if(strcmp(str,"sort")==0)
		{
			Sort_num(head);
		}
		else if(strcmp(str,"find")==0)
		{
			STU *pf=NULL;
			int num;
			printf("\t\t\t按照学号查找为1,按照姓名查找为2\n");
			int t;
			printf("\t\t\t");
			scanf("%d",&t);
			if(t==1)
			{
				printf("\t\t\t请输入查询学生的学号:\n");
				printf("\t\t\t");
				scanf("%d",&num);
				pf=Find_num(head,num);
			}
			else if(t==2)
			{
					printf("\t\t\t请输入查询学生的姓名:\n");
					char n_name[32];
					printf("\t\t\t");
					scanf("%s",n_name);
					STU *pi=head;
					while(pi!=NULL&&strcmp(pi->name,n_name)!=0)
					{
						pi=pi->next;
					}
					if(pi!=NULL)
					{
						pf=Find_num(head,pi->num);
					}
			}
			if(pf!=NULL)
			{
				print_data(pf);
			}
			else
			{
				printf("\t\t\t未查询到该学生信息\n");
			}
		}
		else if(strcmp(str,"output")==0)
		{
			output_a(head);
		}
		else if(strcmp(str,"delete")==0)
		{
			int num = 0;
			printf("\t\t\t按照学号删除为1,按照姓名删除为2:\n");
			int temp;
			printf("\t\t\t");
			scanf("%d",&temp);
			if(temp == 1)
			{
				printf("\t\t\t请输入删除学生信息的学号:\n");
				printf("\t\t\t");
				scanf("%d",&num);
				Delete_num(&head,num);
			}
			else 
			{
				printf("\t\t\t请输入查询学生的姓名:\n");
				char n_name[32];
				printf("\t\t\t");
				scanf("%s",n_name);
				STU *pi = head;
				while(pi && strcmp(pi->name,n_name) != 0)
				{
					pi = pi->next;
				}
				if(pi != NULL)
				{
					Delete_num(&head,pi->num);
				}
			}
		}
		else if(strcmp(str,"quit")==0)
		{
			printf("\t\t\t成功退出程序\n");
			break;
		}
		else 
		{
			printf("\t\t\t输出错入指令,请重新输入\n");
		}	
	}
	return 0;
}

student.h文件

#ifndef STUDENT_H
#define STUDENT_H
#include#include#includetypedef struct Student
{
	//数据域
	int num;
	char name[20];
	char sex[10];
	int age;
	int score_Chinese;
	int score_Math;
	int score_Computer;
	int score_English;
	double score_average;
	int score_sum; 
	//指针域
	struct Student *next;
	 
}STU;
void Menu(void);
STU* Insert(STU *head,STU tmp);//按照顺序插入 
void Sort_num(STU *head);//排序 
STU* Find_num(STU *head,int num);//按照学号查找,按照姓名查找 
void output_a(STU *head);//遍历所有学生信息 
void Delete_num(STU **head,int num);//按照学号删除,按照学号删除 
void print_data(STU* pf);//遍历单个学生信息 
#endif

student.c文件

#include"student.h"
extern void Menu(void)
{
	printf("\t\t\t----------------------------------------------------------\t\t\t\n");
	printf("\t\t\t|                 (1)添加信息  insert                    |\n");               
	printf("\t\t\t|                 (2)信息排序  sort                      |\n");                 
	printf("\t\t\t|                 (3)查找信息  find                      |\n");
	printf("\t\t\t|                 (4)删除信息  delete                    |\n");
	printf("\t\t\t|                 (5)遍历信息  output                    |\n");
	printf("\t\t\t|                 (6)退出程序  quit                      |\n"); 
	printf("\t\t\t----------------------------------------------------------\t\t\t\n");
	return ;
}
STU* Insert(STU *head,STU tmp)
{
	STU *pi=(STU*)calloc(1,sizeof(STU));
	if(pi==NULL)
	{
		perror("calloc");
		exit(-1);//如果申请失败直接结束程序 
	}
	*pi=tmp;
	pi->next=NULL;	
	if(head==NULL)
	{
		head=pi;
	}
	else
	{
		STU *pf=head;
		while(pf->next!=NULL)
		{
			pf=pf->next;
		}
		pf->next=pi;
		pi->score_average=(pi->score_Computer+pi->score_English+pi->score_Math+pi->score_Chinese)/4;
		pi->score_sum=pi->score_Computer+pi->score_English+pi->score_Math+pi->score_Chinese;
	}
	return head;
}
void Sort_num(STU *head)
{
	if(head==NULL)
	{
		printf("\t\t\t信息库为空\n");
	}
	else
	{
		STU *pi=head;
		STU *pj=head;
		//选择法排序 
		while(pi->next!=NULL)
		{
			STU *min=pi;
			pj=pi->next;
			while(pj!=NULL)
			{
				if(min->num>pj->num)
				{
					min=pj;
				}
				pj=pi->next; 
				
			}
			if(pi!=pj)
			{
				//交换数据 
				STU tmp=*pi;
				*pi=*min;
				*min=tmp;
				//交换指针
				tmp.next=pi->next;
				pi->next=pj->next;
				pj->next=tmp.next;
				
			}
			pi=pi->next;
		}
	}
	return ;
}
STU* Find_num(STU *head,int num)
{
	STU *pf=head;
	if(head==NULL)
	{
		printf("\t\t\t信息库为空\n");
	}
	else
	{
		while(pf!=NULL&&pf->num!=num)
		{
			pf=pf->next;
		}
	}
	return pf;
}
void output_a(STU *head)
{
	STU *pf = head;
	if(pf == NULL)
	{
		printf("\t\t\t信息库为空\n"); 
	}
	else
	{
		printf("\t\t\t学号 姓名 性别 年龄 语文成绩 电脑成绩 数学成绩 英语成绩 平均成绩 总成绩 \n");
		while(pf != NULL)
		{
		printf("\t\t\t%d  %s  %s   %d     %d      %d      %d       %d      %.2f     %d\n",pf->num,pf->name,pf->sex,pf->age,pf->score_Chinese,pf->score_Math,pf->score_Computer,pf->score_English,pf->score_average,pf->score_sum);
		pf = pf->next;
		}
	}
	return ;
}
void Delete_num(STU **head,int num)
{
	STU **pf = head;
	STU **pi = NULL;
	if(*head == NULL)
	{
		printf("\t\t\t信息库为空\n");
	}
	else
	{
		while(((*pf)->next != NULL) && ((*pf)->num != num))
		{
			*pi = *pf;
			*pf = (*pf)->next;
		} 
		if((*pf)->num == num)
		{
			if((*pf) == head)//头部删除
			{
				*head = (*head)->next;
				//free(pf);
			} 
			else//删除中尾部节点 
			{
				(*pf)->next = (*pf)->next;
				//free(pf);
			}
			free(*pf);
			printf("\t\t\t信息删除成功\n");
		}
		else
		{
			printf("\t\t\t未查询到该学生信息\n");
		}
	}
}
void print_data(STU* pf)
{
	printf("\t\t\t学号 姓名 性别 年龄 语文成绩 电脑成绩 数学成绩 英语成绩 平均成绩 总成绩 \n"); 
	printf("\t\t\t%d  %s  %s   %d     %d      %d      %d       %d      %.2f     %d\n",pf->num,pf->name,pf->sex,pf->age,pf->score_Chinese,pf->score_Math,pf->score_Computer,pf->score_English,pf->score_average,pf->score_sum);
	return;
}

到这里,作为戏精的我已经忍不住开始得瑟了,又拯救哪个小伙伴的世界嘞?

 

 木哈哈哈哈!!! 哈?看到这了竟还想要白嫖???那个……我承认刚才说话声音有点大,给个赞吧0.0

  

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:学生信息管理系统(C语言)-创新互联
当前链接:http://scyanting.com/article/djpdoi.html