数据结构课程设计 学生成绩管理

本次实验设计了一个学生管理系统,程序运用结构体 链表,学生的信息分为了四大项,分别是学生的学号、姓名、年龄、成绩,这四项一起作为链表节点的数据部分,程序功能如下:
(1)输入成绩
(2)输出成绩
(3)删除成绩
(4)学生总数的显示
(5)查找成绩
(6)插入成绩
(7)根据学生的成绩进行排序
(8)统计不及格的人数并显示出来




程序代码如下:
 
  

xueshengchengji.h

#define N 50
typedef struct LNode//数据节点定义
{
	char num[N];//学号
	char name[N];//姓名
	int age;//年龄
	float Score;//成绩
	LNode *next;
}LNode;
class LinkList//链表类
{
private://将节点封装为私有变量
	LNode *head;
	int length;
public:
	LinkList();//构造函数
	bool IsCreate();//判断是否建立链表
	void ListSize();//求链表长度
	void CreatList(); //建立链表
	void InsertList();//插入
	void DeleteList();//删除
	void Find(); //查找
	void Display(); //显示数据
	void BubbleSortList();//链表的冒泡排序法
	void Count();//统计成绩不及格的人数
};


xueshengchengji.cpp

#include "xueshengchengji.h"
#include 
#include 
#include 
#include 
using namespace std;


LinkList::LinkList()//链表的初始化
{
	head=(LNode *)malloc(sizeof(LNode));
	head->next=NULL;
	length=0;
}
//判断用户是否建立了链表,如果是,则返回值为1,反之为0
bool LinkList::IsCreate()

 {

   if(length==0)
		return 0;
	return 1;
}
//数据长度
void LinkList::ListSize()
{
	if(!IsCreate())
	{
		cout<<"您还没有建表,请先建表!"<>n;
		LNode *p=head;//头插法建立链表
		length=n;
		for(int i=n;i>0;i--)
		{
			LNode *p=(LNode *)malloc(sizeof(LNode));
			cout<<"请输入学号: ";cin>>p->num;
			cout<<"请输入姓名: ";cin>>p->name;
			cout<<"请输入年龄: ";cin>>p->age;
			cout<<"请输入成绩: ";cin>>p->Score;
            p->next=head->next;//指向头节点的指针指向指针指向的下一个节点
			head->next=p;
		}
		cout<<"********************************************************************************"<>num;
		LNode *p=head->next;
		while(p&&strcmp(p->num,num)!=0)
		{
			p=p->next;
		}
		if(!p)cout<<"无法查找到所要查找的学生成绩!"<name<age<Score<>num;
		LNode *p=head;
		while(p->next&&strcmp(p->next->num,num)!=0)
		{
			p->next=p->next->next;
		}
		if(!(p->next))
		cout<<"找不到所要删除的内容,操作失败!";
		else//找到后将当前节点的前一个节点的next指针指向当前节点的下一个节点,并且释放当前节点
		{
			length--;
			LNode *q=p->next;
			p->next=p->next->next;
			free(q);
		}
		cout<<"********************************************************************************"<next;
		while(p)
		{
			cout<<"学号: "<num<name<age<Score<next;
		}
		cout<<"********************************************************************************"<>n;
		if(n<1||n>length+1)cout<<"插入的位置不正确,操作失败!"<next;
				i++;
			}
			cout<<"请输入学号: ";cin>>q->num;
			cout<<"请输入姓名: ";cin>>q->name;
			cout<<"请输入年龄: ";cin>>q->age;
			cout<<"请输入成绩: ";cin>>q->Score;

			/*先将要插入的节点的next指针指向找到的节点的下一个节点,
                             再将找到的节点的next指针指向要插入的节点*/
			q->next=p->next;
			p->next=q;
			length++;
			cout<<"********************************************************************************"<next;
		LNode *_node=head->next;
		char temp1[N],temp2[N];
		int temp3;
		float temp4;
		for(;_temp->next;_temp=_temp->next)
		{
			for(_node=head->next;_node->next;_node=_node->next)
			{
				if(_node->Score<_node->next->Score)
				{
					strcpy(temp1,_node->num);
					strcpy(_node->num,_node->next->num);
					strcpy(_node->next->num,temp1);
					strcpy(temp2,_node->name);
					strcpy(_node->name,_node->next->name);
					strcpy(_node->next->name,temp2);
					temp3=_node->age;
					_node->age=_node->next->age;
					_node->next->age=temp3;
					temp4=_node->Score;
					_node->Score=_node->next->Score;
					_node->next->Score=temp4;

				}
			}
		}
	}
}
//统计不及格人数模块
void LinkList::Count()
{
	if(!IsCreate())
	{
		cout<<"您还没有建表,请先建表!"<next;
		int count=0;//设置一个计数变量count并赋初值为0
		while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数
		{
			if(p->Score<60) count++;
			p=p->next;
		}
		cout<<"这"<


main.cpp

#include "xueshengchengji.h"
#include 
#include 
#include 
#include 
using namespace std;

int main()
{
	LinkList L;
	int order,flag=1,confirm=1;
	char a[50];
	cout<<"       *********************欢迎进入学生信息管理系统**********************"<>order;
			switch(order)
			{
				case 1:	L.CreatList();break;
				case 2:	L.Display();;break;
				case 3:	L.InsertList();break;
				case 4:	L.DeleteList();;break;
				case 5:	L.Find();break;
				case 6:	L.ListSize();break;
				case 7:	L.BubbleSortList();break;
				case 8: L.Count();break;
				case 9:	flag=0;break;
			}
			cout<>a;
		if(!strcmp(a,"Y")||!strcmp(a,"y"))
		{
			cout<<"欢迎下次再使用本系统,谢谢!"<


(1)输入成绩运行结果如下:

数据结构课程设计 学生成绩管理_第1张图片

(2)输出成绩运行结果如下:

数据结构课程设计 学生成绩管理_第2张图片

(3)删除成绩运行结果如下:

数据结构课程设计 学生成绩管理_第3张图片

(4)显示学生总数运行结果如下:

数据结构课程设计 学生成绩管理_第4张图片

(5)查找成绩运行结果如下:

数据结构课程设计 学生成绩管理_第5张图片

(6)插入成绩运行结果如下:

数据结构课程设计 学生成绩管理_第6张图片

数据结构课程设计 学生成绩管理_第7张图片

(8)显示不及格的人数运行结果如下:

数据结构课程设计 学生成绩管理_第8张图片

 

你可能感兴趣的:(数据结构课程设计 学生成绩管理)