c语言程序设计报告.docx

上传人:b****8 文档编号:10021258 上传时间:2023-02-08 格式:DOCX 页数:18 大小:195.07KB
下载 相关 举报
c语言程序设计报告.docx_第1页
第1页 / 共18页
c语言程序设计报告.docx_第2页
第2页 / 共18页
c语言程序设计报告.docx_第3页
第3页 / 共18页
c语言程序设计报告.docx_第4页
第4页 / 共18页
c语言程序设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

c语言程序设计报告.docx

《c语言程序设计报告.docx》由会员分享,可在线阅读,更多相关《c语言程序设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

c语言程序设计报告.docx

c语言程序设计报告

C语言课程设计

专业年级:

10级****三班

学号:

1001********

姓名:

***

指导教师:

***

 

****/**/**

目录

一.设计内容及设计要求…………..1

二.设计思路………………………..1

三.程序设计流程图………………..2

四.源程序(含注释)…………….9

五.设计及调试中所遇问题,和解决方法…………………………..19

六.体会及收获…………………..20

一.设计内容,设计要求

1,由键盘输入20个学生a~t的某门课程的学习成绩60~99分。

(也可自己定义)

2,将分数由高到低排序(用直接排序法和冒泡法),并显示学生学号、姓名和对应的分数。

3,用线性搜索法检索某个学生的成绩(输入姓名,显示学号和成绩)

4,对分搜索法检索某个学生的成绩(输入学号,显示成绩)

二.设计思路

建立结构体类型(structstudent),此结构体中包括num(学号)、name(名字)、score(成绩)。

在输入数据时只需要输入学号、姓名和成绩,在每个调用函数中输出结果。

在主函数中先用逻辑语句完成了一个引入界面

按任意键即可开始进入菜单函数。

在主函数还有个菜单函数,再用switch语句实现函数调用,主要调用函数是输入信息函数,直接排序函数和冒泡法排序函数,直接搜索法函数和对分(学号的对分)搜索法函数。

下面图就是主菜单:

再就在每个调用函数中实现各自功能。

由与20人过多,在此程序中宏定义的人数为4人。

此函数可以在输入信息后跳入任何一个调用函数中实现要求的功能。

将在下面流程图中更加具体说明个函数的使用。

三.程序设计流程图

先是主函数的流程图,在分别是输入信息,对分搜索法(提前的原因主要是说明可以从第一步直接跳到第五步),直接排序法,冒泡排序法,最后是直接查找法。

(中间将穿插截屏说明)

(1)程序总体框图

这是这次函数的主要设计框架,再将分别一一介绍。

(2)输入学生信息

 

 

截屏如下:

 

(3)对分搜索法

截屏如下:

(3)直接排序法

查询结果截屏如下:

(由于考虑的学号和名次冲突,没有排序学号)

 

(4)冒泡排序法

 

输出结果截屏如下:

(5)直接搜索发

查询结果截屏如下:

以上就是所有流程图,可能很粗糙,尽情原谅。

为了使图形看起来都不一样,采用不同构造。

四.源程序(含注释)

#include

#include

#include

#include//用getch();

#defineN4/*定义班级人数*/

structstudent/*建立结构体类型*/

{

charname[50];

intscore,num;

}stu1,stu2,stu3,student[N];/*定义结构体变量stu1,stu2,stu3,用作交换时的临时变量*/

intmenu()

{

intc;

do

{printf("\n〓〓〓〓〓〓〓〓〓〓☆主菜单☆〓〓〓〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓〓〓★☆1.输入学生个人信息☆★〓〓〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓〓〓★☆2.直接排序法排列成绩☆★〓〓〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓〓〓★☆3.冒泡排序法排列成绩☆★〓〓〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓〓〓★☆4.直接法查找信息☆★〓〓〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓〓〓★☆5.对分法查找信息☆★〓〓〓〓〓〓〓〓〓\n");

printf("\n〓〓〓〓〓〓〓〓〓★☆6.退出系统☆★〓〓〓〓〓〓〓〓〓\n");

printf("\n\n\n\n\n\n请选择操作方式:

");

scanf("%d",&c);

}while(c<1||c>5);

returnc;

}

/*********************************输入学生个人信息*******************************************/

voidinput(structstudent)

{

inti=0;

printf("请输入学生信息:

\n");/*输入学生信息*/

{

for(i=0;i

{printf("学号:

");

scanf("%5d",&student[i].num);

printf("姓名:

");

scanf("%10s",&student[i].name);

printf("成绩:

");

scanf("%5d",&student[i].score);

}

system("pause");

}

/******************************直接排列学生成绩*********************************************/

voidscore1(structstudent)/*定义直接排序法函数*/

{

inti,j,k,max;

for(i=0;i

{

k=i+1;

max=i;

for(j=k;j

if(student[j].score>student[max].score)

max=j;

stu1=student[i];

student[i]=student[max];

student[max]=stu1;

}

printf("排序后的结果:

\n");

for(i=0;i

{

printf("名次:

%d,姓名:

%s,成绩:

%d\n",i+1,student[i].name,student[i].score);/*输出信息*/

}

}

/*****************************冒泡排列法学生成绩*********************************************/

voidscore2(structstudent)/*定义冒泡法排序函数*/

{

inti,j;

for(i=0;i

for(j=i+1;j

{

if(student[i].score

{

stu1=student[i];

student[i]=student[j];

student[j]=stu1;

}

}

printf("排序后的结果:

\n");

for(i=0;i

{

printf("名次:

%d,姓名:

%s,成绩:

%d\n",i+1,student[i].name,student[i].score);/*输出信息*/

}

}

/***********************************直接查找法***************************************************/

voidsearch1(structstudent)

{

inti;

charc;

charName[50];

do{

printf("请输入您想要查询的姓名以便查找该学生的成绩:

\n");/*输入查找信息*/

scanf("%10s",Name);

for(i=0;i

{

if(strcmp(Name,student[i].name)==0)break;

}

if(i

{

printf("查询结果为:

\n");

printf("姓名:

%10s,成绩:

%5d\n",student[i].name,student[i].score)/*输出信息*/

}

else

printf("没有找到该学生的信息,不妨再次查询\n");

printf("是否继续查询:

'y'or'Y':

");/*是否继续查询*/

getchar();

c=getchar();

}while(c=='y'||c=='Y');

system("pause");

}

/****************************************对分查找法**********************************************/

voidsearch2(structstudent)

{

inti,j,k,m,x,l;

structstudenttemp;

charc;

do

{

printf("请输入你的学号:

");/*输入查找信息*/

scanf("%d",&l);

printf("***************************************************\n");

for(i=0;i

{

k=i;

for(j=i+1;j

if(student[j].num

k=j;

temp=student[k];

student[k]=student[i];

student[i]=temp;

}

x=0,m=N-1;

while(x<=m)

{

i=(m+x)/2;

if(student[i].num==l)

{

printf("学号姓名分数\n");

printf("%d%8s%6d\n",student[i].num,student[i].name,student[i].score);/*输出信息*/

break;

}

if(student[i].num

if(student[i].num>l)m=i-1;

}

printf("***************************************************\n");

printf("继续查询'y'放弃查询'n':

\n");/*是否继续查询*/

getchar();

getchar();

c=getchar();

}

while(c=='y');

}

/******************************************主函数************************************************/

voidmain()

{

{intselect;inti=0;

boolquit=false;

printf("\n﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌\n");

for(i=0;i<3;i++)

printf("\n◎\t\t\t\t\t\t\t\t\t◎");

printf("\n\n华中科技大学文华学院\n\n");

printf("\n★★★★【欢迎进入学生成绩管理系统】★★★★\n");

for(i=0;i<3;i++)

printf("\n◎\t\t\t\t\t\t\t\t\t◎");

printf("\n﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌\n");

printf("按任意键开始……");

getch();

while(!

quit)

while

(1)

{

select=menu();

switch(select)

{

case1:

input(student[N]);/*调用输入函数*/

break;

case2:

score1(student[N]);/*调用直接排序函数*/

break;

case3:

score2(student[N]);/*调用冒泡排序函数*/

break;

case4:

search1(student[N]);/*调用直接搜索法函数*/

break;

case5:

search2(student[N]);/*调用学号折半搜索法函数*/

break;

case6:

printf("谢谢使用\n");

exit(0);/*退出程序*/

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1