?? ?
字號:
/*
【實驗目的】
通過這個實驗的算法設計,可以鞏固所學的有關各種排序與選擇的基本知識,學會比較各種排序與選擇算法的優劣,學會針對所給問題選用最適合的算法,掌握利用常用的排序與選擇算法的思想來解決一般問題的方法和技巧。
【基本要求】
設計一個學生信息管理系統,學生對象至少要包含:學號、姓名、性別、成績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 + -