制作人: 学号: 指导老师:时间:
设 计 报 告 告
一、 设计内容和设计要求
1、 设计内容
题目:学生成绩管理系统设计
该系统包含20个学生姓名和成绩信息,可对成绩进行排序, 并实现由姓名查找成绩及由成绩查找姓名。
2、 设计要求
1)由键盘输入20个学生(姓名)的某门课程的学习成 绩60~99 分。 2 )将分数由低到高排序(用直接排序法和冒泡法),并显示学 生姓名和
对应的分数。
3) 用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。 4 )* 对分搜索法检索某个学生的成绩(输入成绩,显示姓名)。
二、 设计思路
首先是要建立20个学生信息,即学生姓名和学生成绩, 使用子函数input输入,学生成绩使用一维数组,学生姓名 使用二维数组。然后分别定义四个子函数,即直接排序法、 冒泡排序法和线性查找法、对分查找法。在两个排序法中, 用字符串拷贝函数来实现姓名的交换,另外,在用成绩查找 姓名时,可以用直接查找,也可以用对分查找法,在这里我 两种方法都使用了。最后在主函数中来设计人机界面,用 switch函数来实现操作选择,对应的情况中就调用之前定义 的子函数来完成排序或查找。
三、程序设计流程图
1 、程序总体流程
开始
2 、直接排序法流程图
3、冒泡排序法流程图
4、线性搜索法
5、对分搜索法
四、程序设计中遇到的问题和解决方案
最开始编程时,直接排序和冒泡排序法中都是通过
swap函
数来实现成绩交换和姓名交换, 以达到排序目的,但在主函数中 调用时却调用不了,程序在排序时就不能正常运行, 我的解决方 案就是去掉swap函数,因为有可能有些函数的调用有条件, 这样改变之后,就不存在问题,可以正常排序。
另外一个问题就是姓名数组的交换问题, 这个之前是用中间 变量的方式实现交换,结果调试时显示非法,于是经过多次改变 和尝试,发现姓名用二维数组更不容易出现问题,
于是就将姓名
以达到最
设置为二维数组,然后用字符串拷贝函数来实现交换,
终排序的目的。这样解决之后,一方面可以使姓名不至于在 一个字符内,另外一个好处就是解决了排序过程中姓名交换的问 题。
五、源程序(含注释)及运行界面 1、源程序
#in clude #in clude #define NUM 20 void in put(i nt a[],char b[][30]) /* 子函数 in put 输入 20 个学生姓 名*/ { int i; for(i=0;i 请输入第%d个学生的姓名:\ scan f(\"%s\ scan f(\"%d\if(a[i]>99||a[i]<60) { 成绩大于99或小于60则显示错误 prin tf(\"error!\\n\"); /* */ i=i-1; } } } void zhijie(i nt a[],char b[][30]) /* {
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务