课程设计-学生成绩系统

程序代码:

/**********************************************
*版权所有 (C)2015,wangxiao
*
*文件名称:chengjixitong.cpp
*文件标识:无
*内容摘要:实现学成成绩的输入、插入、删除、修改、统计和输出
*其他内容:无
*当前版本:V1.0
*作者:王晓
*完成日期:20151224
*
*修改记录:
*修改日期:20151224
*版本号:V1.0
*修改人:王晓
*修改内容:创建
*************************************************/

#include
#include
#include
#include 

typedef struct STUDENT
{
	
	char   name[20];//名字
	char    num[10];//学号
	int    score;//成绩
	struct STUDENT *next;
}STUDENT, *StudentList;
void Create(StudentList &H);//输入学生成绩
void Insert(StudentList &H);//插入学生成绩
void Delete(StudentList &H);//删除学生成绩
void Locate(StudentList H);//查找学生成绩
void Modify(StudentList H);//修改学生信息
void Sum(StudentList H);//统计学生成绩      	
void PrintList(StudentList H);//输出学生成绩

 /******************************
 *功能描述:建立链表,输入并存储数据
 *输入参数:姓名、学号、成绩
 ********************************/
void Create(StudentList &H)
{     
	int a,i;
	
	system("cls");//清屏
	printf("\t\t**************************************************\n"); 
	printf("\t\t-------------------成绩链表的输入-------------------\n");
	
	
	printf("输入学生的个数:\n");
	scanf("%d",&a);

	StudentList q=H; 
	
	for (i=0;iname,p->num,&p->score);
		p->next=NULL;
		q->next=p;
		q=q->next;
	}
	
	PrintList(H);

	printf("按任意键返回主菜单\n");
	getch();
}
/******************************
 *功能描述:插入学生成绩
 *输入参数:所要插入的位置
 ********************************/
void Insert(StudentList &H)

{
	system("cls");//清屏
	printf("\t\t**************************************************\n"); 
	printf("\t\t-------------------学生信息插入操作-------------------\n");
	if(!H->next)
	{
		printf("错误:链表未创建!\n");
		printf("按任意键返回主菜单\n");
		getchar();
		return ;
	}
	int i;
	printf("插入的位置:");
	scanf("%d",&i);
	StudentList p = H;   
	int j = 0;
	while (p && j < i-1)
	{  
		p = p->next;
		++j;
	} 
	if (!p || j > i-1) 
	{
		printf("输入位置错误!") ;
		printf("按任意键返回主菜单\n");
		getch();
		return;
	}
	StudentList s = (StudentList )malloc(sizeof(STUDENT));  
	printf("\n输入姓名:\t学号:\t成绩:\n");
	scanf("%s %s %d",s->name,s->num,&s->score);
	s->next = p->next;      
	p->next = s;

	PrintList(H);
	printf("按任意键返回主菜单\n");
	getchar();
} 
/******************************
 *功能描述:删除学生成绩
 *输入参数:所要删除的位置
 ********************************/
void Delete(StudentList &H)                                          //删除节点

{ 
	system("cls");//清屏
	printf("\t\t**************************************************\n"); 
	printf("\t\t-------------------学生信息删除操作-------------------\n");
	if(!H->next)
	{
		printf("错误:链表未创建!\n");
		printf("按任意键返回主菜单\n");
		getchar();
		return ;
	}
	int i;
	printf("输入要删除的位置:");
	scanf("%d",&i);
	StudentList p = H;  
	int j = 0;
	while (p->next && j < i-1)
	{  
		p = p->next;
		++j;
	} 
	if (!p->next || j > i-1) 
	{
		printf("输入位置错误!") ;
		printf("按任意键返回主菜单\n");
		getch();
		return;
	}
	StudentList q=p->next;
	p->next=q->next;
	free(q);
	

	PrintList(H);
	printf("按任意键返回主菜单\n");
	getchar();

} 
/******************************
 *功能描述:查找学生成绩
 *输入参数:学号
 ********************************/
void Locate(StudentList H)                                       

{   
	system("cls");//清屏
	printf("\t\t**************************************************\n"); 
	printf("\t\t-------------------学生信息查询操作-------------------\n");
	if(!H->next)
	{
		printf("错误:链表未创建!\n");
		printf("按任意键返回主菜单\n");
		getchar();
		return ;
	}
		
    char num[10];
    printf("\n输入要查询的学号:");
    scanf("%s",num);
	StudentList p=H->next;
    int i=1;
	
	
	
	while(p)
	{ 
		if(!strcmp(num,p->num))
			
		{  
			printf("找到了,它是链表的第%d个元素\n",i);
			printf("\n姓名\t学号\t成绩\n");
						
			printf("%s\t%s\t%d\t\n",p->name,p->num,p->score); 
			getchar();
			break;
		}
		p=p->next;
		i++;
		
	}
	if (!p)
	{
		printf("你要查询的学号不存在!!\n");
		getchar();
	}
	printf("按任意键返回主菜单\n");
	getchar();
}
/******************************
 *功能描述:修改学生成绩
 *输入参数:要修改的位置
 ********************************/
void Modify(StudentList H)
{
	
	system("cls");//清屏
	printf("\t\t**************************************************\n"); 
	printf("\t\t-------------------学生信息修改操作-------------------\n");
	if(!H->next)
	{
		printf("错误:链表未创建!\n");
		printf("按任意键返回主菜单\n");
		getchar();
		return ;
	}
	
	int i;
	printf("输入要修改的位置:");
	scanf("%d",&i);
	StudentList p = H;  
	int j = 0;
	while (p->next && j < i-1)
	{  
		p = p->next;
		++j;
	} 
	if (!p->next || j > i-1) 
	{
		printf("输入位置错误!") ;
		printf("按任意键返回主菜单\n");
		getch();
		return;
	}

	StudentList q=p->next;
	

	char name[20];char num[10];int score;
	printf("\n输入更改的 姓名\t学号\t成绩:\n");
	scanf("%s %s %d",name,num,&score);
	strcpy(q->name,name);
	strcpy(q->num,num);
	q->score=score;
	PrintList(H);
	printf("按任意键返回主菜单\n");
	getchar();

}
/******************************
 *功能描述:统计学生成绩
 *输入参数:无
 ********************************/
void Sum(StudentList H)
{
	
	system("cls");//清屏
	printf("\t\t**************************************************\n"); 
	printf("\t\t-------------------学生成绩统计-------------------\n");
	StudentList t=H->next;
	if(!t)
	{
		printf("信息系统空,请添加!\n");
		return ;
	}
	printf("不及格的学生是:\r\n");
	printf("姓名\t学号\t成绩:\n");
	while(t) 
	{
		if (t->score<60)
		{
			printf("%s\t%s\t%d\t\n",t->name,t->num,t->score); 
		}
		t=t->next;
	}

	t=H->next;
	printf("\n成绩为“及格”的学生是:\r\n");
	printf("姓名\t学号\t成绩:\n");
	while(t)
	{
		if (t->score>=60&&t->score<=70)
		{
			printf("%s\t%s\t%d\t\n",t->name,t->num,t->score); 
		}
		t=t->next;
	}

	t=H->next;
	printf("\n成绩为“中”的学生是:\r\n");
	printf("姓名\t学号\t成绩:\n");
	while(t)
	{
		if (t->score>=70&&t->score<80)
		{
			printf("%s\t%s\t%d\t\n",t->name,t->num,t->score); 
		}
		t=t->next;
	}

	t=H->next;
	printf("\n成绩为“良”的学生是:\r\n");
	printf("姓名\t学号\t成绩:\n");
	while(t)
	{
		if (t->score>=80&&t->score<90)
		{
			printf("%s\t%s\t%d\t\n",t->name,t->num,t->score); 
		}
		t=t->next;
	}

	t=H->next;
	printf("\n成绩为“优”的学生是:\r\n");
	printf("姓名\t学号\t成绩:\n");
	while(t)
	{
		if (t->score>=90)
		{
			printf("%s\t%s\t%d\t\n",t->name,t->num,t->score); 
		}
		t=t->next;
	}
	printf("按任意键返回主菜单\n");
	getchar();

}
/******************************
 *功能描述:输出学生成绩
 *输出参数:姓名、学号、成绩
 ********************************/
void PrintList(StudentList H)                                             //输出链表
{   
	
	StudentList t=H->next;
	
	if(!t)
	{
		printf("信息系统空,请添加!\n");
		return ;
	}
	printf("\n姓名\t学号\t成绩\n");
	
	while(t)
	{
		
		printf("%s\t%s\t%d\t\n",t->name,t->num,t->score); 
		t=t->next;
	}
	
	printf("\n");
	getchar();
}

void main()
{
	StudentList  H; 
	H = (StudentList )malloc(sizeof(STUDENT));  //分配头结点的空间
	H->next = NULL;
	while(1)
	{
		system("cls");//清屏
		printf("======================学生成绩管理系统======================\n");
		printf("\n");
		printf("          1.建立成绩链表\n          2.插入\n          3.删除\n");
		printf("          4.查询\n          5.修改\n          6.统计\n          0.退出\n");
		
		printf("请选择:");
		switch(getch())
		{
		case '1': 
			Create(H);
			break;
		case '2': 
			Insert(H);
			break;
		case '3': 
			Delete(H);
			break;
		case '4': 
			Locate(H);
			break;
		case '5': 
			Modify(H);
			break;
		case '6': 
			Sum(H);
			break;
		case '0':
			exit(0);
		}
	}
	
}


 

运行结果:

课程设计-学生成绩系统_第1张图片

 

你可能感兴趣的:(课程设计-学生成绩系统)