学生成绩管理系统C语言课程设计报告.docx

上传人:b****6 文档编号:4774928 上传时间:2022-12-08 格式:DOCX 页数:13 大小:138.54KB
下载 相关 举报
学生成绩管理系统C语言课程设计报告.docx_第1页
第1页 / 共13页
学生成绩管理系统C语言课程设计报告.docx_第2页
第2页 / 共13页
学生成绩管理系统C语言课程设计报告.docx_第3页
第3页 / 共13页
学生成绩管理系统C语言课程设计报告.docx_第4页
第4页 / 共13页
学生成绩管理系统C语言课程设计报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统C语言课程设计报告.docx

《学生成绩管理系统C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统C语言课程设计报告.docx

学生成绩管理系统C语言课程设计报告

                                                                                                C语言课程设计

 

制作人:

学号:

指导老师:

时间:

一、设计内容和设计要求

1、设计内容

题目:

学生成绩管理系统设计

该系统包含20个学生姓名和成绩信息,可对成绩进行排序,

并实现由姓名查找成绩及由成绩查找姓名。

2、设计要求

1)由键盘输入20个学生(姓名)的某门课程的学习成绩60~99分。

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

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

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

2、设计思路

首先是要建立20个学生信息,即学生姓名和学生成绩,使用子函数输入,学生成绩使用一维数组,学生姓名使用二维数组。

然后分别定义四个子函数,即直接排序法、冒泡排序法和线性查找法、对分查找法。

在两个排序法中,用字符串拷贝函数来实现姓名的交换,另外,在用成绩查找姓名时,可以用直接查找,也可以用对分查找法,在这里我两种方法都使用了。

最后在主函数中来设计人机界面,用函数来实现操作选择,对应的情况中就调用之前定义的子函数来完成排序或查找。

3、程序设计流程图

1、程序总体流程

开始

输入学生姓名和成绩

 

主菜单

 

排序退出查找

直接排序冒泡排序查找成绩查找姓名

对分查找

 

2、直接排序法流程图

 

3、冒泡排序法流程图

 

4、线性搜索法

5、对分搜索法

 

4、程序设计中遇到的问题和解决方案

最开始编程时,直接排序和冒泡排序法中都是通过函数来实现成绩交换和姓名交换,以达到排序目的,但在主函数中调用时却调用不了,程序在排序时就不能正常运行,我的解决方案就是去掉函数,因为有可能有些函数的调用有限制条件,这样改变之后,就不存在限制问题,可以正常排序。

 

另外一个问题就是姓名数组的交换问题,这个之前是用中间变量的方式实现交换,结果调试时显示非法,于是经过多次改变和尝试,发现姓名用二维数组更不容易出现问题,于是就将姓名设置为二维数组,然后用字符串拷贝函数来实现交换,以达到最终排序的目的。

这样解决之后,一方面可以使姓名不至于限制在一个字符内,另外一个好处就是解决了排序过程中姓名交换的问题。

5、源程序(含注释)及运行界面

1、源程序

<>

<>

<>

20

(a[]b[][30])/*子函数输入20个学生姓名*/

{

i;

(0<)

{

("请输入第个学生的姓名:

"1);

(""[i]);

("请输入第个学生的成绩:

"1);

(""[i]);

(a[i]>99[i]<60)

{

("!

\n");/*成绩大于99或小于60则显示错误*/

1;

}

}

}

(a[]b[][30])/*直接排序法*/

{

1[30];

(0<1)

{

;

(1<)

(a[j]

{

[j];

a[j][];

a[];

(1[j]);/*字符串拷贝函数进行字符数组交换*/

(b[j][]);

(b[]1);

}

}

("排序后的学生姓名和成绩为:

\n");

(0<)

("\n"[i][i]);

}

(a[]b[][30])/*冒泡排序法*/

{

;

1[30];

(0<1)

(0<1)

(a[j]>a[1])

{

[j];

a[j][1];

a[1];

(1[j]);

(b[j][1]);

(b[1]1);

}

("排序后的学生姓名和成绩为:

\n");

(0<1)

("\n"[i][i]);

}

1(a[]b[][30])/*线性查找,由姓名查找成绩*/

{

[30]0;

("");

(0<)

(([i])0)

{

("该学生成绩为\n"[i]);

1;

;

}

(0)

{

("!

\n");

}

}

2(a[]b[][30])/*由成绩查找姓名*/

{

0k;

("请输入成绩:

");

("");

(0<)

([i])

{

("该学生姓名为,成绩为\n"[i][i]);

1;

;

}

(0)

{

("!

\n");

}

}

(a[]b[][30])/*对分查找,由成绩查找姓名(排序后)*/

{

;

("对分查找,请输入成绩:

");

("");

01;

((ka[1]))

("!

\n");

(n<)

{

()/2;

([i])

{("学生姓名为,成绩为\n"[i][i]);

;

}

(k>a[i])

1;

1;

}

((a[i])(n>m))

("!

\n");

}

()/*主函数及界面*/

{

[][][30];

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

("欢迎来到学生成绩管理系统\n");

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

("请输入20个学生的姓名和成绩\n");

();

("输入的学生姓名和成绩分别为:

\n");

(0<)

{

("\t"[x][x]);

}

("\n");

("*****************学生成绩管理系统***************\n");

("*********成绩排序直接法请按0成绩排序冒泡法请按1*******\n");

("*********姓名查找方法一请按2成绩查找方法二请按3*******\n");

("*********退出系统请按4*******\n");

("请选择:

\t");

(1)

{

("");

(t)/*操作选择*/

{

0:

();

();

;

1:

();

();

;

2:

("请输入学生姓名:

\n");

1();

;

3:

2();

;

4:

(0);/*退出系统*/

;

:

("请在0到4之间选择!

\n");

}

}

}

2、运行界面

输入学生信息

主菜单

直接排序

冒泡排序

线性查找

对分查找

6、体会及收获

1、关于体会

这次C语言课程设计给我最大的体会是充分调用了我们已有的C语言知识储备,我想,难度就在于这里,要求我们对每一个知识点,每一个内容板块都了如指掌。

如果有哪里不清楚,编程时就会频繁出错,或者是达不到想要的结果,比如像循环语句、条件语句、选择语句这些常用的就必须烂熟于心。

如遇到问题,尝试独立思考,若还没有解决就再翻书或找找资料,自行琢磨,不断尝试用新的方法解决问题也是给我的一个很深的体会。

2、关于收获

这次有以下几方面收获:

1)再次温习了所学的C语言知识,加深了理解,同时之前没有注意的一些细节问题引起了重视;2)遇到瓶颈时,尽量独立思考,不断努力,自行解决;3)当程序没有出现语法错误但运行不正常时,就要用新的方式替换,不能一味地陷在死胡同里,用新的思维方式想问题或许会达到想要的效果;4)多花时间钻研问题,坚持不懈地努力,多掌握一些知识,今后解决学习问题才会得心应手。

编程不仅只是考查知识是否掌握牢固,也不只是一个时间问题,更重要的是一种毅力,一种坚持,一种迎难而上的韧劲!

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

当前位置:首页 > 高中教育 > 高考

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

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