📄 学生学习管理系统.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 + -