c++封装链表实现-->学生信息管理分析系统

//class.h 头文件
#include <string>
#include <iostream>
#include <iomanip>            //实现setw()宽字节输出
using namespace std;

class stuDate
{
public:
		struct student
		{
			string name;		//姓名
			string sex;			//性别
			int id;
			float eng,math,chinese,c,sum;
			struct student *next;
		};
};

class stuList :public stuDate
{
private:
	int num;		//人数
	struct student *head;
public:
	stuList();
	void _creat();
	void _print();
	void _sort();
};

stuList::stuList()
{
	this->head=NULL;
	this->num=0;
}

void stuList::_creat()
{
	char res = ‘Y‘;
	struct student *p1,*p2;
	p1=p2=new struct student;
	while(res==‘Y‘ || res == ‘y‘)
	{
		if(this->head == NULL)
		{
			this->head=p1;
			p1->id=0;
		}
		else
		{
			p2->next=p1;
		}
		cout<<"Name:";
		cin>>p1->name;
		cout<<"Sex:";
		cin>>p1->sex;
		cout<<"Chinese:";
		cin>>p1->chinese;
		cout<<"Math:";
		cin>>p1->math;
		cout<<"English:";
		cin>>p1->eng;
		cout<<"C语言:";
		cin>>p1->c;
		p1->id=this->num+1;
		p1->sum=p1->chinese+p1->math+p1->eng+p1->c;
		this->num++;
		p2=p1;
		p1=new struct student;
		cout<<"\n是否继续输入(Y/N):";
		cin>>res;
		if(res ==‘N‘|| res == ‘n‘)
			break;
	}
	p2->next=NULL;
}

void stuList::_print()
{
	struct student *temp;
	temp=this->head;
	cout<<"id"<<setw(5)<<"name"<<setw(5)<<"sex"<<setw(10)<<"Chinese"<<setw(5)
		<<"Math"<<setw(8)<<"English"<<setw(5)<<"C"<<setw(5)<<"Sum"<<endl;
	for(int i=0;i<this->num;i++)
	{
		cout<<temp->id<<setw(5)<<temp->name<<setw(5)<<temp->sex<<setw(5)<<temp->chinese<<setw(5)
			<<temp->math<<setw(5)<<temp->eng<<setw(5)<<temp->c<<setw(5)<<temp->sum<<endl;
		temp=temp->next;
	}
	cout<<endl;
	cout<<"------------------------------------------------------------总人数:"<<this->num;
	cout<<endl;
}

void stuList::_sort()
{
	struct student *first;			/*排列后有序链的表头指针*/
	struct student *tail;				/*排列后有序链的表尾指针*/
	struct student *p_max;
	struct student *max;
	struct student *p;
	p=this->head;
	if(this->head!=NULL)
	{
		first=NULL;
			while (head != NULL)
			{
				for (p=this->head,max=this->head; p->next!=NULL; p=p->next)
				{
					if (p->next->sum > max->sum)			//以总分排序
					{
						p_max=p;
						max=p->next;
					}
				}
				if(first==NULL)
				{
					first=max;
					tail=max;
				}
				else
				{
					tail->next=max;
					tail=max;
				}
				if(max==this->head)
				{
					this->head=this->head->next;
				}
				else
				{
					p_max->next=max->next;
				}
			}
			if(first!=NULL)
			{
				tail->next=NULL;
			}
			cout<<"id"<<setw(5)<<"name"<<setw(5)<<"sex"<<setw(10)<<"Chinese"<<setw(5)
				<<"Math"<<setw(8)<<"English"<<setw(5)<<"C"<<setw(5)<<"Sum"<<endl;
			for(int i=0;i<this->num;i++)
			{
				cout<<first->id<<setw(5)<<first->name<<setw(5)<<first->sex<<setw(5)<<first->chinese<<setw(5)
					<<first->math<<setw(5)<<first->eng<<setw(5)<<first->c<<setw(5)<<first->sum<<endl;
				first=first->next;
			}
	}
}

//stu.cpp    调用class。h
#include "class.h"
int main()
{
	stuList A;
	A._creat();
	A._print();
	A._sort();
	return 0;
}
时间: 2024-11-25 12:37:10

c++封装链表实现-->学生信息管理分析系统的相关文章

Java课程设计—学生成绩分析系统

Java课程设计 - 我的选题是学生成绩分析系统. 下面是课程的需求图: 完成的这个小系统其实逻辑代码是非常简单的,唯一感觉有难点的地方在于涉及到了知识点比较多.当时只是匆匆地大概学了Java的一些基本知识,书上的例题和代码也没怎么敲过, 几乎都是在边做的过程中边学具体需要用到的东西: 其中感觉最麻烦的地方就是JTable.文件读取IO流以及绘图和给各个组件布局的时候. 另外还花了些功夫在UI上面:我这次是用到了substance.jar的swing美化包,想了解的可以百度下,网上有很多教程.

C语言小程序-基于链表的学生信息管理

程序支持增加.查询.删除.存盘和读取操作 1. 头文件studentsys.h定义如下 /* student management system by list */ #ifndef _StudentSys_H #define _StudentSys_H #define MAX 25 /* lenth of name string */ typedef struct _Grade Grade;; typedef struct StdNode Std;; typedef struct ListNo

【mfc】学生信息管理,实现List控件节点的增删改查

之前在mfc这个专栏里面,写了很多关于win32的程序, 其实也没什么的,win32是mfc的基础, mfc只是win32的扩展,系统自带的扩展,新建一个mfc如同新建一个win32程序,不过这个win32程序一开始就带了很多空函数框架. 一.基本目标 要建立如下图所示的学生信息管理mfc程序,当然这个程序以后应该考虑连接数据库,access,sql server都可以, 同时连同<[mfc]用对话框分页实现用户登录>(点击打开链接),让用户登录之后才能够管理信息,当然这是后话. 1.这个程序

学生信息管理(mvc模式)

简单的学生信息管理: student类封装属性,一个构造方法 package com.hanqi.dao; import java.util.Date; //映射student表的实体类 //类名映射表名 public class Student { //属性名映射字段名 private String sno; private String sname; private String ssex; private Date sbirthday; private String sclass; pub

Qt-实现简单的学生信息管理_初识QT

项目介绍:利用Qt实现简单的学生信息管理 实现功能:实现对信息的添加,删除,查询,修改 废话不多说,直接进入主题:(刚刚学,界面做的不是太美观,请多包涵) 主界面 -  mainWindow && login 一.添加学生 - 1.使用组件有:Dialog 窗口,Label标签,Line Edit,Spin Box,radio button,check Box,push button. 2.实现思路: 1. 获取面板上的信息 2.将获得的信息写入一个.txt文件中去 3.实现步骤: 1.

作业5——需求分析(学生成绩录入系统)

[必做 1] 列出该学生成绩录入系统的利益相关者(stakeholder) 学生成绩录入系统的利益相关者(stakeholder):  1.用户:教师  2.顾客:教务管理人员 .学生   3.市场分析师:评估该系统的价值  3. 监管机构:学校 .教育局  4.软件工程师:学生成绩录入系统软件系统开发团队 [必做 2] 如果让你改进已有的成绩录入系统,请利用 NABCD 分析框架,开展竞争需求分析(表格形式) 竞争需求分析:   内容 N(Need需求) 1.验证码要不区分大小写输入 2.设置

大数据实战:用户流量分析系统

本文是结合hadoop中的mapreduce来对用户数据进行分析,统计用户的手机号码.上行流量.下行流量.总流量的信息,同时可以按照总流量大小对用户进行分组排序等.是一个非常简洁易用的hadoop项目,主要用户进一步加强对MapReduce的理解及实际应用.文末提供源数据采集文件和系统源码. 本案例非常适合hadoop初级人员学习以及想入门大数据.云计算.数据分析等领域的朋友进行学习. 一.待分析的数据源 以下是一个待分析的文本文件,里面有非常多的用户浏览信息,保扩用户手机号码,上网时间,机器序

Flume+Hadoop+Hive的离线分析系统基本架构

PS:历史原因作者账号名为:ymh198816,但事实上作者的生日并不是1988年1月6日 最近在学习大数据的离线分析技术,所以在这里通过做一个简单的网站点击流数据分析离线系统来和大家一起梳理一下离线分析系统的架构模型.当然这个架构模型只能是离线分析技术的一个简单的入门级架构,实际生产环境中的大数据离线分析技术还涉及到很多细节的处理和高可用的架构.这篇文章的目的只是带大家入个门,让大家对离线分析技术有一个简单的认识,并和大家一起做学习交流. 离线分析系统的结构图 整个离线分析的总体架构就是使用F

打造基于hadoop的网站日志分析系统(5)之spark在日志分析系统里的简单应用

1.下载spark和运行 wget http://apache.fayea.com/apache-mirror/spark/spark-1.0.0/spark-1.0.0-bin-hadoop2.tgz 我这里下载的是1.0.0版,由于我们只是测试spark的用法所以不需要配置spark集群,只需把下好的文件解压,进入bin/文件夹. spark支持scala,java和python. scala和java输入命令:./spark-shell python 输入命令 ./pyspark 进入控制