您的当前位置:首页正文

数据结构实验报告五,查找与排序-

来源:一二三四网


实验六 查找与排序

一、实验目的:

1.理解掌握查找与排序在计算机中的各种实现方法。 2.学会 针对 所给问题选用最适合的算法。 3.熟练掌握常用排序算法在顺序表上的实现。

二、实验要求:

掌握利用常用的查找排序算法的思想来解决一般问题的方法和技巧,进行算法分析并写出实习报告。

三、实验内容及分析:

设计一个学生信息管理系统,学生对象至少要包含:学号、性别、成绩1、成绩总成绩等信息。要求实现以下功能: 1.平均成绩要求自动计算;

2.查找:分别给定学生学号、性别,能够查找到学生的基本信息(要求至少用两种查找算法实现);

3. 排序:分别按学生的学号、成绩1、成绩2、平均成绩进行排序(要求至少用两种排序算法实现)。

四、程序的调试及运行结果

五、程序代码

#include #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;iprintf(\"%d\ \%s\\\%f\\n\

} } {

void paixv() //排序

int i,j;

struct student zl1; printf(\"排序前:\\n\"); xianshi();

for(i=0;ifor(j=1;j{ }

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;iif(zl[i].num==num) {

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;iif(zl[i].num==num) { break;

}

} 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;iif(zl[i].num==num) { }

for(j=i;jzl[j]=zl[j+1];

}

}

count--; xianshi(); diaoyong(count);

因篇幅问题不能全部显示,请点此查看更多更全内容

Top