⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 学生学习管理系统.txt

📁 设计一个学生信息管理系统
💻 TXT
字号:
#include <iostream>
using namespace std;
#include <string>
#define MAXSIZE 100 //设记录不超过20个
typedef  struct  //定义每个记录(数据元素)的结构
{              
	string xingming;             //姓名
	string xingbei;              //性别
	float xuehao;                  //学号
	float chengji1,chengji2;       //成绩1成绩2
	float zong;                    //总分
}RecordType;
typedef  struct //定义顺序表的结构
{                       
  RecordType  r[ MAXSIZE +1 ]; //存储顺序表的向量       
  int length ; //顺序表的长度
}SqList;
void caidan(SqList &ST);
void CreatList(SqList &ST)//创建学生的相关信息
{
	cout<<"输入学生个数"<<endl;
	cin>>ST.length;
	for(int i=0;i<ST.length;i++)
	{
        cout<<"输入第"<<i+1<<"学生的信息"<<endl;
		cout<<"学号"<<endl;
		cin>>ST.r[i].xuehao;
		cout<<"姓名"<<endl;
		cin>>ST.r[i].xingming;
		cout<<"性别"<<endl;
		cin>>ST.r[i].xingbei;
		cout<<"成绩1"<<endl;
		cin>>ST.r[i].chengji1;
		cout<<"成绩2"<<endl;
		cin>>ST.r[i].chengji2;
	}
	cout<<"输入完毕"<<endl;
}

void zong(SqList &ST)  //计算总分      
{
		for(int i=0;i<ST.length;i++)
		{
			ST.r[i].zong=ST.r[i].chengji1+ST.r[i].chengji2;

		}

}


void shuchu(SqList &ST)//输出
{
	
	cout<<"              学生的信息如下"<<endl;
	cout<<"学号     姓名     性别     成绩1     成绩2     总分 "<<endl;
	for(int i=0;i<ST.length;i++)
	{
		cout<<ST.r[i].xuehao<<"        "<<ST.r[i].xingming<<"        "<<ST.r[i].xingbei
			<<"        "<<ST.r[i].chengji1<<"        "<<ST.r[i].chengji2<<"        "
			<<ST.r[i].zong<<"        "<<endl;
	}
}


void chaxun(SqList &ST)  //查询信息
{
l1:	cout<<endl;
	cout<<"(1)根据学号查询"<<endl;
	cout<<"(2)根据姓名查询"<<endl;
	cout<<"(3)根据性别查询"<<endl;
	cout<<"(4)推出"<<endl;
	int n,m;
	string name;
	string xb;
	cin>>m;
	if(m==1)                       //折半查找
	{

		RecordType LI;            //使学号变为有序
		for(int i=1;i<ST.length;i++)
		for(int j=i;j>=1;j--)
		if(ST.r[j].xuehao<ST.r[j-1].xuehao)
		{
			LI=ST.r[j];
			ST.r[j]=ST.r[j-1];
			ST.r[j-1]=LI;
		}

		l2:	int a=0;
		cout<<"输入要查找的学号"<<endl;
		cin>>n;
		int low,high,mid;
		low=0;high=ST.length-1;     // 置区间初值
		while (low<=high) 
		{
			mid=(low+high)/2;
			if(n==ST.r[mid].xuehao) 
			{
				cout<<ST.r[mid].xuehao<<"  "<<ST.r[mid].xingming<<"   "<<ST.r[mid].xingbei<<"   "
				<<ST.r[mid].chengji1<<"  "<<ST.r[mid].chengji2<<"  "<<ST.r[mid].zong<<endl;
				a=1;
				break;
			}
			else  if(n<ST.r[mid].xuehao )
			high=mid-1;       // 继续在前半区间进行查找
			else  
			low=mid+1;     // 继续在后半区间进行查找
		}
		if(!a)
		{
		
			cout<<"所查信息不存在!"<<endl;
			cout<<"请重新输入"<<endl;
			goto l2;
		}
		goto l1;
	}




	if(m==2)                           //顺序查找
	{
l3:		int a=0;
		cout<<"输入要查找的姓名"<<endl;
		cin>>name;
		for(int i=0;i<ST.length;i++)
		{

			if(name==ST.r[i].xingming)
			{
				cout<<ST.r[i].xuehao<<"  "<<ST.r[i].xingming<<"   "<<ST.r[i].xingbei<<"   "
				<<ST.r[i].chengji1<<"  "<<ST.r[i].chengji2<<"  "<<ST.r[i].zong<<endl;
				a=1;
				
			}
		}
			if(!a)
			{
		
				cout<<"所查信息不存在!"<<endl;
				cout<<"请重新输入"<<endl;
				goto l3;
			}
		goto l1;
	}
	if(m==3)                            //顺序查找
	{
l4:		int a=0;
		cout<<"输入要查找性别"<<endl;
		cin>>xb;
		for(int i=0;i<ST.length;i++)
		{
			if(xb==ST.r[i].xingbei)
			{
				cout<<ST.r[i].xuehao<<"  "<<ST.r[i].xingming<<"   "<<ST.r[i].xingbei<<"   "
				<<ST.r[i].chengji1<<"  "<<ST.r[i].chengji2<<"  "<<ST.r[i].zong<<endl;
				a=1;
				

			}
		}
		if(!a)
		{
		
			cout<<"所查信息不存在!"<<endl;
			cout<<"请重新输入"<<endl;
			goto l4;
		}
		goto l1;
	}	
	if(m==4)
	{
		caidan(ST);
	}

}


void paixu(SqList &ST)
{
l1:	int n;
	cout<<endl;
	cout<<"(1)根据学号排序"<<endl;
	cout<<"(2)根据成绩1排序"<<endl;
	cout<<"(3)根据成绩2排序"<<endl;
	cout<<"(4)根据总成绩排序"<<endl;
	cout<<"(5)推出";
	cout<<endl;
	cin>>n;
	if(n==1)             //按学号排序,使用插入排序
	{	

		RecordType LI;            //定义存储学号向量
		for(int i=1;i<ST.length;i++)
		for(int j=i;j>=1;j--)
		if(ST.r[j].xuehao<ST.r[j-1].xuehao)
		{
			LI=ST.r[j];
			ST.r[j]=ST.r[j-1];
			ST.r[j-1]=LI;
		}
	
        shuchu(ST);
		cout<<"排序完毕"<<endl;
		goto l1;
	}

	
	if(n==2)           //按成绩1排序,用选择排序
	{
		RecordType LI;      
		for(int i=0; i<ST.length;i++)
			for (int j=i+1;j<ST.length;j++)
			{
   				if(ST.r[i].chengji1>ST.r[j].chengji1)
				{
					LI=ST.r[j];
					ST.r[j]=ST.r[i];
					ST.r[i]=LI;
				}
			}	
			shuchu(ST);
			cout<<"排序完毕"<<endl;			
			goto l1;
	}
   



	if(n==3)       // 根据成绩2排序,使用选择法排序
	{
		RecordType LI;      
		for(int i=0; i<ST.length;i++)
			for (int j=i+1;j<ST.length;j++)
			{
   				if(ST.r[i].chengji2>ST.r[j].chengji2)
				{
					LI=ST.r[j];
					ST.r[j]=ST.r[i];
					ST.r[i]=LI;
				}
			}	
			shuchu(ST);
			cout<<"排序完毕"<<endl;			
			goto l1;
	}
					
	if(n==4)  //根据总成绩排序,使用选择法排序
	{		
		RecordType LI;      
		for(int i=0; i<ST.length;i++)
			for (int j=i+1;j<ST.length;j++)
			{
   				if(ST.r[i].zong>ST.r[j].zong)
				{
					LI=ST.r[j];
					ST.r[j]=ST.r[i];
					ST.r[i]=LI;
				}
			}	
			shuchu(ST);
			cout<<"排序完毕"<<endl;			
			goto l1;	
	}

	if(n==5)      //推出
	{	
		caidan(ST);

	}

}

void caidan(SqList &ST)
{
	cout<<"请选择要进入的模块"<<endl;
	cout<<"(1)查询"<<endl;
	cout<<"(2)排序"<<endl;
	cout<<"(3)推出"<<endl;
	int c;
	cin>>c;
	if(c==1)
	{
		chaxun(ST);

	}
	if(c==2)
	{
		paixu(ST);
	}
	if(c==3)
	{
		exit(0);
	}
}

void main()
{
	SqList ST;
	CreatList(ST);
	zong(ST);
	shuchu(ST);
	caidan(ST);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -