按总成绩进行排序
六、实验总结
通过本次实验我对查找排序的应用有了一定得了解,知道了
各种查找排序的基本知识。 同时,通过自己数次的调试、修改也搞懂了许多以前比较模糊的知识点,比如这次的界面是复制过来的,其中很多语句经过同学的讲解都理解了。但这次实验也有很多不尽人意的地方,我将在以后多学习同学优秀的地方.也会在以后的学习过程中要尽量考虑周全,使程序更有实用价值,提高编程能力。
七、源代码
#include
#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<<\输入学生个数\ cin>>ST.length;
for(int i=0;i cout<<\输入第\学生的信息\ cout<<\学号\ cin>>ST.r[i].xuehao; cout<<\姓名\ cin>>ST.r[i].xingming; cout<<\性别\ cin>>ST.r[i].xingbei; cout<<\成绩1\ cin>>ST.r[i].chengji1; cout<<\成绩2\ cin>>ST.r[i].chengji2; } cout<<\输入完毕\} void zong(SqList &ST) //计算总分 { for(int i=0;i ST.r[i].zong=ST.r[i].chengji1+ST.r[i].chengji2; } } void shuchu(SqList &ST)//输出 { cout<<\学生的信息如下\ cout<<\学号 姓名 性别 成绩1 成绩2 总分 \ for(int i=0;i cout< void chaxun(SqList &ST) //查询信息 { l1: cout< cout<<\根据学号查询\ cout<<\根据姓名查询\ cout<<\根据性别查询\ cout<<\退出\ int n,m; string name; string xb; cin>>m; if(m==1) //折半查找 { RecordType LI; //使学号变为有序 for(int i=1;i if(ST.r[j].xuehao LI=ST.r[j]; ST.r[j]=ST.r[j-1]; ST.r[j-1]=LI; } l2: int a=0; cout<<\输入要查找的学号\ 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< else if(n high=mid-1; // 继续在前半区间进行查找 else low=mid+1; // 继续在后半区间进行查找 } if(!a) { cout<<\所查信息不存在!\ cout<<\请重新输入\ goto l2; } goto l1; } if(m==2) //顺序查找 { l3: int a=0; cout<<\输入要查找的姓名\ cin>>name; for(int i=0;i if(name==ST.r[i].xingming) { cout< if(!a) { cout<<\所查信息不存在!\ cout<<\请重新输入\ goto l3; } goto l1; } if(m==3) //顺序查找 { l4: int a=0; cout<<\输入要查找性别\ cin>>xb; for(int i=0;i if(xb==ST.r[i].xingbei) { cout< if(!a)