实验六 查找与排序
一、实验目的:
1.理解掌握查找与排序在计算机中的各种实现方法。 2.学会 针对 所给问题选用最适合的算法。 3.熟练掌握常用排序算法在顺序表上的实现。
二、实验要求:
掌握利用常用的查找排序算法的思想来解决一般问题的方法和技巧,进行算法分析并写出实习报告。
三、实验内容及分析:
设计一个学生信息管理系统,学生对象至少要包含:学号、性别、成绩1、成绩总成绩等信息。要求实现以下功能: 1.平均成绩要求自动计算;
2.查找:分别给定学生学号、性别,能够查找到学生的基本信息(要求至少用两种查找算法实现);
3. 排序:分别按学生的学号、成绩1、成绩2、平均成绩进行排序(要求至少用两种排序算法实现)。
四、程序的调试及运行结果
五、程序代码
#include struct student//定义结构体 { char name[30]; int a1,a2,a3,num; double pow; }zl[100]; int count=0; void jiemian1(); //主界面//函数声明 int jiemian2(); //选择界面 void luru(); //录入函数 void xianshi(); //显示 void paixv(); //排序 void diaoyong(int); //循环调用选择界面 void tianjia(); //添加信息 void chaxun1(); //按学号查询详细信息 void chaxun2(); //按姓名查询详细信息 void xiugai(); //修改信息 void shanchu(); //删除信息 void main() //main函数 { jiemian1();//函数点用 } void jiemian1() //主界面定义 { char a; printf(\"\\n\\n\\n\\n\\\学 员 信 息 管 理 器\\n\\n\\n\\\ 数据结构课程设计练习 六 \\n\\n\\n\\\ 09信计2:于学彬\\n\\n\"); printf(\"\\n\\\ 按 回 车 键 继 续:\"); } int jiemian2() //选择界面 { int a,b; printf(\"*******************************主 要 功 能 scanf(\"%c\system(\"cls\"); jiemian2(); ********************************\"); printf(\"\\n\\n\\n\\n\\\\1.录 入 信 息\\n\\n\\\\2.添 加 信 息\\n\\n\\\\3.查 看 信 息\\n\\n\\\\4.查 询 信 息\\n\\n\\\\5.修 改 信 息\\n\\n\\\\6.删 除 信 息\\n\\n\\\\7.退 出 \\n\\n\\\\请 选 择:\"); scanf(\"%d\switch(a) { case 1:system(\"cls\");luru();break; case 2:system(\"cls\");tianjia();break; case 3:system(\"cls\");paixv();break; case 4:system(\"cls\"); printf(\"1.按学号查询详细信息\\n2.按姓名查询详细信息\\n请选择:\"); scanf(\"%d\ switch(b) { case 1:system(\"cls\");chaxun1();break; case 2:system(\"cls\");chaxun2();break; } } } break; case 5:system(\"cls\");xiugai();break; case 6:system(\"cls\");shanchu();break; case 7:system(\"cls\");return a;break; void diaoyong(int b) //循环调用选择界面 { char a='y'; printf(\"是否返回选择页(y/n):\"); fflush(stdin);//清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完 一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);) a=getchar(); system(\"cls\"); while(a=='y'||a=='Y') { b=jiemian2(); if(b==7) { } break; } } void luru() //录入函数 { char a;//='y'; do { printf(\"请输入学员信息:\\n\"); printf(\"学号:\"); scanf(\"%d\调用结构体 printf(\"姓名:\"); fflush(stdin); gets(zl[count].name); printf(\"三门成绩:\\n\"); printf(\"成绩1:\"); scanf(\"%d\printf(\"成绩2:\"); scanf(\"%d\printf(\"成绩3:\"); scanf(\"%d\ zl[count].pow=(zl[count].a1+zl[count].a2+zl[count].a3)/3;//求平均数 printf(\"是否继续(y/n):\"); fflush(stdin); a=getchar(); count++; system(\"cls\"); } } while(a=='y'&&count<100); //paixv(); diaoyong(count); void tianjia() //添加信息 { char a='y'; do { printf(\"请输入学员信息:\\n\"); printf(\"学号:\"); scanf(\"%d\printf(\"姓名:\"); //fflush(stdin); gets(zl[count].name); printf(\"三门成绩:\\n\"); printf(\"成绩1:\"); scanf(\"%d\printf(\"成绩2:\"); scanf(\"%d\ printf(\"成绩3:\"); scanf(\"%d\ zl[count].pow=(zl[count].a1+zl[count].a2+zl[count].a3)/3; } } printf(\"是否继续(y/n):\"); //fflush(stdin); a=getchar(); count++; system(\"cls\"); while(a=='y'&&count<100); paixv(count); diaoyong(count); void xianshi() //显示 { int i; printf(\"学号\ \姓名\\\平均成绩\\n\"); for(i=0;i } } { void paixv() //排序 int i,j; struct student zl1; printf(\"排序前:\\n\"); xianshi(); for(i=0;i zl1=zl[j-1]; zl[j-1]=zl[j]; zl[j]=zl1; } } printf(\"排序后:\\n\"); xianshi(); diaoyong(count); void chaxun1() //按学号查询详细信息 { int i,num; printf(\"请输入要查询学员的学号:\"); scanf(\"%d\ printf(\"学号\姓名\成绩1\成绩2\成绩3\平均成绩\\n\"); for(i=0;i printf(\"%d\%s\%d\%d\%d\%.2f\\n\.pow); } } } diaoyong(count); void chaxun2() //按姓名查询详细信息 { int i; struct student zl1; printf(\"请输入要查询学员的姓名:\"); fflush(stdin); gets(zl1.name); printf(\"学号\姓名\成绩1\成绩2\成绩3\平均成绩\\n\"); for(i=0;i printf(\"%d\%s\%d\%d\%d\%.2f\\n\.pow); } } diaoyong(count); } void xiugai() //修改信息 { int i,num; printf(\"请输入要查询学员的学号:\"); scanf(\"%d\ printf(\"学号\姓名\成绩1\成绩2\成绩3\平均成绩\\n\"); for(i=0;i } } printf(\"%d\%s\%d\%d\%d\%.2f\\n\.pow); printf(\"请输入学员信息:\\n\"); printf(\"学号:\"); scanf(\"%d\printf(\"姓名:\"); fflush(stdin); gets(zl[i].name); printf(\"三门成绩:\\n\"); printf(\"成绩1:\"); scanf(\"%d\printf(\"成绩2:\"); scanf(\"%d\printf(\"成绩3:\"); scanf(\"%d\ zl[i].pow=(zl[i].a1+zl[i].a2+zl[i].a3)/3; printf(\"学号\姓名\成绩1\成绩2\成绩3\平均成绩\\n\"); printf(\"%d\%s\%d\%d\%d\%.2f\\n\ .pow); diaoyong(count); } void shanchu() //删除信息 { int num,i,j; printf(\"请输入要删除的学员学号:\"); scanf(\"%d\for(i=0;i for(j=i;j } } count--; xianshi(); diaoyong(count); 因篇幅问题不能全部显示,请点此查看更多更全内容