📄 ѧ
字号:
/*
【实验目的】
通过这个实验的算法设计,可以巩固所学的有关各种排序与选择的基本知识,学会比较各种排序与选择算法的优劣,学会针对所给问题选用最适合的算法,掌握利用常用的排序与选择算法的思想来解决一般问题的方法和技巧。
【基本要求】
设计一个学生信息管理系统,学生对象至少要包含:学号、姓名、性别、成绩1、成绩2、总成绩等信息。要求实现以下功能:
1.总成绩要求自动计算;
2.查询:分别给定学生学号、姓名、性别,能够查找到学生的基本信息(要求至少用两种查找算法实现);
3. 排序:分别按学生的学号、成绩1、成绩2、总成绩进行排序(要求至少用两种排序算法实现)。
【测试数据】
由学生依据软件工程的测试技术自己确定。
*/
#include "iostream"
using namespace std;
#define size 2
typedef struct student
{
char name[15];
char xingbie[15];
long int num;
int ccc;
int english;
int zongfen;
}student,*chengji;
void shuru(chengji &xuesheng)
{
for(int i=1;i<=size;i++)
{
cout<<"请输入第"<<i<<"个学生信息:[学号、姓名、性别、数据结构成绩、英语成绩]"<<endl;
cin>>xuesheng[i].num;
cin>>xuesheng[i].name;
cin>>xuesheng[i].xingbie;
cin>>xuesheng[i].ccc;
cin>>xuesheng[i].english;
xuesheng[i].zongfen=0;
xuesheng[i].zongfen=xuesheng[i].ccc+xuesheng[i].english;
}
}
void shuchu(chengji xuesheng)
{
cout<<"以下是所有学生的信息:"<<endl;
cout<<"学号"<<'\t'<<'\t'<<"姓名"<<'\t'<<"性别"<<'\t'<<"数据结构"<<'\t'<<"英语"<<'\t'<<"总成绩"<<endl;
for(int i=1;i<=size;i++)
{
cout<<xuesheng[i].num<<'\t'<<xuesheng[i].name<<'\t'<<xuesheng[i].xingbie<<'\t';
cout<<xuesheng[i].ccc<<'\t'<<'\t'<<xuesheng[i].english<<'\t'<<xuesheng[i].zongfen<<endl;
}
}
void chaxun(chengji xuesheng)
{
int chaxunhao;
cout<<"[ 1:学号查询 2:姓名查询 3:性别查询 ]";
cin>>chaxunhao;
if(chaxunhao==1)
{
int xuehao;
cin>>xuehao;
int a;
for(int i=1;i<=size;i++)
{
if(xuesheng[i].num==xuehao)
{
a=i;
cout<<"学号"<<'\t'<<'\t'<<"姓名"<<'\t'<<"性别"<<'\t'<<"数据结构"<<'\t'<<"英语"<<'\t'<<"总成绩"<<endl;
cout<<xuesheng[a].num<<'\t'<<xuesheng[a].name<<'\t'<<xuesheng[a].xingbie<<'\t';
cout<<xuesheng[a].ccc<<'\t'<<'\t'<<xuesheng[a].english<<'\t'<<xuesheng[a].zongfen<<endl;
}
}
}
else if(chaxunhao==2)
{
char name[15];
cin>>name;
int a;
for(int i=1;i<=size;i++)
{
if(strcmp(name,xuesheng[i].name)==0)
{
a=i;
cout<<"学号"<<'\t'<<'\t'<<"姓名"<<'\t'<<"性别"<<'\t'<<"数据结构"<<'\t'<<"英语"<<'\t'<<"总成绩"<<endl;
cout<<xuesheng[a].num<<'\t'<<xuesheng[a].name<<'\t'<<xuesheng[a].xingbie<<'\t';
cout<<xuesheng[a].ccc<<'\t'<<'\t'<<xuesheng[a].english<<'\t'<<xuesheng[a].zongfen<<endl;
}
}
}
else if(chaxunhao==3)
{
char xingbie[15];
cin>>xingbie;
int a;
for(int i=1;i<=size;i++)
{
if(strcmp(xingbie,xuesheng[i].xingbie)==0)
{
a=i;
cout<<"学号"<<'\t'<<'\t'<<"姓名"<<'\t'<<"性别"<<'\t'<<"数据结构"<<'\t'<<"英语"<<'\t'<<"总成绩"<<endl;
cout<<xuesheng[a].num<<'\t'<<xuesheng[a].name<<'\t'<<xuesheng[a].xingbie<<'\t';
cout<<xuesheng[a].ccc<<'\t'<<'\t'<<xuesheng[a].english<<'\t'<<xuesheng[a].zongfen<<endl;
}
}
}
else cout<<"shuruhaocuowu:";
}
void tihuan(chengji xuesheng,int a,int b)
{
char name[15]="";
char xingbie[15]="";
int num;
int ccc;
int english;
int zongfen;
strcpy(name,xuesheng[a].name); strcpy(xuesheng[a].name,xuesheng[b].name); strcpy(name,xuesheng[a].name); strcpy(xuesheng[b].name,name);
strcpy(xingbie,xuesheng[a].xingbie); strcpy(xuesheng[a].xingbie,xuesheng[b].xingbie); strcpy(xingbie,xuesheng[a].xingbie); strcpy(xuesheng[b].xingbie,xingbie);
num=xuesheng[a].num;xuesheng[a].num=xuesheng[b].num;xuesheng[b].num=num;
ccc=xuesheng[a].ccc;xuesheng[a].ccc=xuesheng[b].ccc;xuesheng[b].ccc=ccc;
english=xuesheng[a].english;xuesheng[a].english=xuesheng[b].english;xuesheng[b].english=english;
zongfen=xuesheng[a].zongfen;xuesheng[a].zongfen=xuesheng[b].zongfen;xuesheng[b].zongfen=zongfen;
}
void xuehaopaixu(chengji &xuesheng)
{
xuesheng[size+1].num=xuesheng[0].num;
for(int i=1;i<size;i++)
{
if(xuesheng[i].num<xuesheng[size+1].num)
{
tihuan(xuesheng,i,size+1);
}
}
}
void shujujiegouchengjipaixu(chengji &xuesheng)
{
xuesheng[size+1].ccc=xuesheng[0].ccc;
for(int i=1;i<size;i++)
{
if(xuesheng[i].ccc<xuesheng[size+1].ccc)
{
tihuan(xuesheng,i,size+1);
}
}
}
void yingyuchengjipaixu(chengji &xuesheng)
{
xuesheng[size+1].english=xuesheng[0].english;
for(int i=1;i<size;i++)
{
if(xuesheng[i].english<xuesheng[size+1].english)
{
tihuan(xuesheng,i,size+1);
}
}
}
void zongchengjipaixu(chengji &xuesheng)
{
int low=0,high=size;
int pivotkey;
pivotkey=xuesheng[low].zongfen;
while(low<high)
{
while(low<high&&xuesheng[high].zongfen>=pivotkey)--high;
tihuan(xuesheng,low,high);
while(low<high&&xuesheng[low].zongfen<=pivotkey)++low;
tihuan(xuesheng,low,high);
}
}
void paixu(chengji &xuesheng)
{
int paixu;
cout<<"[ 1:按学号排序 2:按数据结构成绩排序 3:按英语成绩排序 4:按总成绩排序 ]";
cin>>paixu;
switch(paixu)
{
case 1:xuehaopaixu(xuesheng);break;
case 2:shujujiegouchengjipaixu(xuesheng);break;
case 3:yingyuchengjipaixu(xuesheng);break;
case 4:zongchengjipaixu(xuesheng);break;
}
}
void main()
{
chengji xuesheng;
xuesheng=new student;
int hanshu;
h1: cout<<"[ 1:输入 2:查找 3:排序 4:显示 ] ";
cin>>hanshu;
switch(hanshu)
{
case 1:shuru(xuesheng);goto h1;
case 2:chaxun(xuesheng);goto h1;
case 3:paixu(xuesheng);goto h1;
case 4:shuchu(xuesheng);goto h1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -