6.4排序模块
对保存的学生信息按数据结构成绩依次进行排序,包括插入排序,冒泡排序,选择排序。其示意图如下: 调用sort_SGscore1函数 调用sort_SGscore2函数 调用sort_SGscore3函数 输出学生信息排序结果 图6.4 排序示意图 其代码如下:
void sort_SGscore1(student &L) { int i,j;
for (i=2;i<=L.len;i++) { L.data[0]=L.data[i];
for(j=i-1; L.data[0].SGscore void sort_SGscore2(student L) { int i,j; for(i=1;i<=L.len;i++) { int noswap=1; for(j=L.len;j>=i+1;j--) 16 if(L.data[j].SGscore void sort_SGscore3(student L) { int i,j; for(i=1;i<=L.len;i++) { int min=i; for(j=i+1;j<=L.len;j++) if(L.data[j].SGscore 6.5添加模块 在原有信息基础上添加其他的学生信息。其示意图如下: 调用Sert函数 输入要添加的学生信息 图6.5 添加示意图 17 其代码如下:int insert(student &L) { int i=0; elemtype S; i=L.len; cout<<\请输入插入学生的学号、姓名、性别、年龄、数构成绩:\ cin>>S.id>>S.name>>S.sex>>S.age>>S.SGscore; if (L.len==maxsize ) { cout<<\表已满,无法插入!\ return 0; } for(i=L.len;i>=1&& L.data[i].id>S.id;i--) L.data[i+1]=L.data[i]; L.data[i+1]=S; L.len++; cout<<\插入成功!\ return 1; } 6.6删除模块 首先由用户输入要删除的单个学生信息位置,然后调用删除函数,删除该名学生的信息。其示意图如下: 输入要删除的信息位置 调用delete函数 删除学生信息 图6.6 删除示意图 其代码如下:int delet(student &L,int i) { int j; if (L.len { cout<<\表无此位置,无法删除!\ return 0; } for(j=i;j<=L.len;j++) 18 L.data[j]=L.data[j+1]; L.len--; return 1; } 6.7修改模块 首先由用户输入要修改的学生的学号或姓名,然后调用修改函数,对学生信息进行修改,包括学号,姓名,性别,年龄,数据结构成绩。其示意图如下: 输入要修改学生的学号或姓名 调用modify函数 修改学生信息 图6.7 修改示意图 其代码如下: void modify(student &L) { int i,x,a=0; int id; char name[50]; char sex[50]; int age; int SGscore; cout<<\请选择你要修改的学生学号\ cin>>id; cout<<\请输入你要修改的学生信息\ cout<<\修改学生学号\ cout<<\修改学生姓名\ cout<<\修改学生性别\ cout<<\修改学生年龄\ cout<<\修改学生数构成绩\ cin>>x; 19 switch(x) { case 1: for(i=0;i cout<<\请输入新学号\ cin>>id; L.data[i].id=id; a=1; } } if(a=0) cout<<\对不起你要改的名字不存在\ break; for(i=0;i 20