设计并实现简单学生成绩管理系统:含多操作及实训详情

设计并实现一个简单的学生成绩管理系统

设计并实现简单学生成绩管理系统:含多操作及实训详情

学生成绩表信息包含学号,包含姓名,包含各科课程成绩,各科课程成绩有语文、数学、英语、政治,还包含总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,可根据需要进行插入操作,可根据需要进行删除操作,可根据需要进行排序操作,可根据需要进行输出操作。

一、实训环境

在信息工程学院双创交流中心的******电脑室开展实训,企业老师带领我们复习C语言的基本知识,之后讲解学生成绩管理系统各个组件功能的构成部分,还讲解每部分的代码详解。

二、项目开发过程

1. 学生成绩管理系统主页面功能全览

#include
#include
#include 
#include
using namespace std;
定义一种结构体类型,结构体类型名为PNode,用LinkList作为指向该结构体类型指针的别名;
typedef struct PNode{
	int stdio;
	char name[30];
	double chinese;
	double math;
	double english;
	double politics;
	double sum;
	PNode *next;
}PNode;
int main(){	
创建一个名为llist的链表,将其初始化为指向通过动态内存分配得到的节点,该节点的大小由PNode类型决定。
    llist->next=NULL;
	int a,b=1;
	while(b){
打印换行符,打印字符串“-----------------------学生成绩管理系统-----------------------”,再打印换行符
		printf("请选择你需要的功能:\n");
打印出“ 1.查找     2.插入    3.排序     4.展示     5.删除     6.退出”
		scanf("%d",&a);
		switch(a){
情况1:打印换行,输出“-----------------------学生成绩查找功能-----------------------”,调用check函数并传入llist,然后跳出循环。
情况2:打印换行,打印“-----------------------学生成绩插入功能-----------------------”,调用input函数并传入llist,然后跳出循环。
第三种情况,输出换行后的“-----------------------学生成绩排序功能-----------------------”,调用sortList函数并传入llist,然后跳出循环。
情况4:输出换行,输出“-----------------------学生成绩展示功能-----------------------”,调用display函数并传入llist,然后跳出循环;
情况5:输出换行,输出“-----------------------学生成绩删除功能-----------------------”,调用删除列表函数(llist),然后跳出循环;
			case 6:b = 0; break; 
默认情况下,打印输出“输入有误!请重新输入!” ,并换行
		}	
	}
输出换行,输出“-----------------------已退出成绩管理系统-----------------------”,再输出换行
	return 0;
}

输入学生信息,按照输入顺序建立一个带头结点的单链表,一直持续到输入学号为0才结束。

void input(LinkList llist){
	printf("请输入考试的学生人数:\n");
	int n;scanf("%d",&n);
	LinkList p;
	for(int i=1;i<=n;i++){
		p=(LinkList)malloc(sizeof(PNode));
		printf("请输入学生学号:\n");
		scanf("%d",&p->stdio);
		
		printf("请输入学生姓名:\n");
		scanf("%s",p->name);
		
		printf("请输入学生语文成绩:\n");
		scanf("%lf",&p->chinese);
		
		printf("请输入学生数学成绩:\n");
		scanf("%lf",&p->math);
		
		printf("请输入学生英语成绩:\n");
		scanf("%lf",&p->english);
		
		printf("请输入学生政治成绩:\n");
		scanf("%lf",&p->politics);
		
p指向的结构体中的sum成员,等于p指向的结构体中的chinese成员加上p指向的结构体中的math成员,再加上p指向的结构体中的english成员,再加上p指向的结构体中的politics成员;
		p->next=llist->next;
		llist->next=p;
	}
输出换行符,输出“-----------------------学生成绩完成录入-----------------------”,输出换行符
} 

输入一个学生的姓名,在链表中开展查找操作,若存在该学生,便显示其所有信息,若不存在,就显示提示信息“查无此人”。

void check(LinkList llist){
	LinkList e=llist->next; 
    int f;
    printf("请输入查找的学号:\n");
    scanf("%d",&f);
    while(e->stdio!=f)
    e=e->next;
	if(e->stdio==f) 
输出整数,制表符,字符串,六个双精度浮点数,换行符,其中整数为e指向结构体的stdio成员的值,字符串为e指向结构体的name成员的值,六个双精度浮点数分别为e指向结构体的chinese、math、english、politics、sum成员的值 。
	else
	printf("查找值不存在!\n");
}

4.展示链表中所输入的全部学生信息。

void display(LinkList llist){
打印换行符,输出“-----------------------学生成绩信息展示-----------------------”,再输出换行符
输出“学号”“姓名”“语文”“数学”“英语”“政治”“总分”,中间用制表符分隔\n
	LinkList p=llist->next;
	if(llist->next==NULL){
		printf("系统中无学生信息!\n");
	}
	else{
		while(p!=NULL){ 
输出格式化内容,其中包含变量p指向结构体中的stdio成员的值,p指向结构体中的name成员的值,p指向结构体中的chinese成员的值,p指向结构体中的math成员的值,p指向结构体中的english成员的值,p指向结构体中的politics成员的值,p指向结构体中的sum成员的值,输出格式为按制表符分隔,name成员的值后接lf,其余数值成员的值占6个字符宽度,最后换行。
		p=p->next;} 
	}
打印换行符,打印字符串“-----------------------学生成绩完成展示-----------------------”,再打印换行符。
}

5. 将学生成绩按总成绩从低到高排序,并输出结果。

定义一个名为sortList的函数,该函数带有一个LinkList类型的参数llist 。
	printf("请输入排序的依据:\n");
打印出“1.数学”,打印出“2.语文”,打印出“3.英语”,打印出“4.政治”,打印出“5.总分”。
	int a;
	scanf("%d",&a);
	switch(a){
		case 1:
			printf("按照数学排序已完成\n");
			if(llist->next==NULL){
		printf("学生成绩无数据!"); 
否则,如果链表中当前节点的下一个节点的下一个节点为空
		printf("学生成绩为一个,无需排序!"); 
	}else{
		LinkList p=llist->next->next;
		llist->next->next=NULL;
		LinkList q,r;
		while(p!=NULL){
			q=llist;
			r=p->next;
当q的下一个节点不为空时,且q的下一个节点的数学相关内容(这里原句不完整,推测是math相关属性等)math){
				q=q->next;
			}
			p->next=q->next;
			q->next=p;
			p=r;
		}
	}
			break;
		case 2:
			printf("按照语文排序已完成\n");
			if(llist->next==NULL){
		printf("学生成绩无数据!"); 
	} else if(llist->next->next==NULL){
		printf("学生成绩为一个,无需排序!"); 
	}else{
		LinkList p=llist->next->next;
		llist->next->next=NULL;
		LinkList q,r;
		while(p!=NULL){
			q=llist;
			r=p->next;
当q的下一个节点不为空时,且q的下一个节点的中文……(你提供的内容不完整,请补充完整以便准确改写)chinese){
				q=q->next;
			}
			p->next=q->next;
			q->next=p;
			p=r;
		}
	}
			break;
		case 3:
			printf("按照英语排序已完成\n");
			if(llist->next==NULL){
		printf("学生成绩无数据!"); 
	} else if(llist->next->next==NULL){
		printf("学生成绩为一个,无需排序!"); 
	}else{
		LinkList p=llist->next->next;
		llist->next->next=NULL;
		LinkList q,r;
		while(p!=NULL){
			q=llist;
			r=p->next;
当q的下一个节点不为空时,并且q的下一个节点的英文……(你提供的内容不完整,请补充完整以便准确改写)english){
				q=q->next;
			}
			p->next=q->next;
			q->next=p;
			p=r;
		}
	}
			break;
		case 4:
			printf("按照政治排序已完成\n");
			if(llist->next==NULL){
		printf("学生成绩无数据!"); 
	} else if(llist->next->next==NULL){
		printf("学生成绩为一个,无需排序!"); 
	}else{
		LinkList p=llist->next->next;
		llist->next->next=NULL;
		LinkList q,r;
		while(p!=NULL){
			q=llist;
			r=p->next;
当q的下一个节点不为空时,且q的下一个节点的政治相关内容(这里politics表述不完整,无法准确完整改写该部分)politics){
				q=q->next;
			}
			p->next=q->next;
			q->next=p;
			p=r;
		}
	}
			break;
		case 5:
			printf("按照总分排序已完成\n");
			if(llist->next==NULL){
		printf("学生成绩无数据!"); 
	} else if(llist->next->next==NULL){
		printf("学生成绩为一个,无需排序!"); 
	}else{
		LinkList p=llist->next->next;
		llist->next->next=NULL;
		LinkList q,r;
		while(p!=NULL){
			q=llist;
			r=p->next;
当q的下一个节点不为空时,并且q的下一个节点的和sum){
				q=q->next;
			}
			p->next=q->next;
			q->next=p;
			p=r;
		}
	}
			break;
		default:
			printf("输入有误!\n"); 
	}
}

输入一个学生的学号,查看链表中是否存在该学生信息,若存在,则将其删除。

定义一个名为deleteList的函数,该函数带有一个LinkList类型的参数llist ,
    LinkList p=llist; 
    int d;
	printf("请输入删除的学号:\n");
	scanf("%d",&d);
    while(p!=NULL){
如果p指向的下一个节点的stdio成员不等于d,那么将p更新为p指向的下一个节点,然后跳出循环;
如果p指向的下一个节点的stdio成员等于d,那么将p指向的下一个节点改为它的下下个节点;
	else
	printf("删除值不存在!\n");	
打印换行符,打印字符串“-----------------------学生成绩完成删除-----------------------”,再打印换行符。
}

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

87阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

86阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

78阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读