第一部分、引言
课程设计(Curriculum design):是一个有目的、有计划、有结构的产生教学计划、教学大纲以及教科书等系统化活动。
越来越多的研究者把课程设计界定为一种计划或方案。它是在学校教育环境中,旨在使学生获得的、促进其迁移的、进而促使学生全面发展的、具有教育性经验的计划。这种课程观突破了课程局限于课堂教学中,把范围拓展到整个学校教育环境中加以界定。突破了以往只注重知识、经验的积累的局限,把积累、迁移、促进学生发展等多方面因素作为指标。并将课程分为形式课程与环境课程。所谓形式课程是在教育者的直接参与或指导下完成的,而环境课程则不需要教育者的直接参与。
本课程需要实现一个能输入学生信息与上下机时间,能计算并逐个查找学生上机时间与费用的程序
第二部分、系统功能和原始数据
(1)原始数据
为方便测试,这里只输入3个学生的信息
输入时间格式不对
时出错
分出错
输入选择方式不对
结束查找
输入错误查找信息
(2)系统功能
1、输入功能:输入30名学生的学号、班级、姓名、上下机时间。
2、计算功能:计算每个学生的上机费用。
3、查询功能:按条件查询每个学生的上机费用
第三部分、程序总体设计
(1)数据结构
(2)模块划分和层次结构
函数部分:
执行部分:
(3)程序总体框架
(4)程序组织
第四部分、功能模块函数设计和调试
void money(struct time a)
voidshangjishijian(time over,timestart,student *a)
voidxuehao(student a[])
voidxingming(struct student a[])
voidbanji(struct student a[])
第五部分、程序清单
第六部分、课程设计总结
1、首先需要定义一个结构体数据类型,成员需包括学号,班级,姓名,上机时间,下机时间,其中上机时间需要另行定义一个结构体类型数据,包括时与分两个成员。
2、定义完毕后需要定义一个该结构体类型的数组,数组元素就代表了要输入学生信息的学生,这里有30个学生,于是就可令数组大小为30。
3、思考可有几种查找方式,这里可以有按学号查找,按姓名查找,按班级查找,可分开一一对其处理,其中不论按那种方式查找都需要计算其上机费用和上机时间,思考构造函数来处理计算上机费用和上机时间这两个事情。
4、由于个人水平不够,设计的函数当返回值有多个时不会用指针处理,于是就都设计成了空函数,于是要注意函数调用时的先后顺序
5、计算上机费用的函数,需要将上机时间先传入,然后通过题目所给的计算上机费用的公式计算上机费用,可以通过调用函数的先后顺序的调整使函数无需返回值,所以这里的计算上机费用的函数也不返回值。
6、计算上机时间的函数就需要知道上下机时间,而上下机时间是在输入的学生信息中的,所以要将先前定义好的结构体数组传入此函数,需传入的有上下机时间,而上下机时间传入必须要把数组元素传入,于是把结构体数组的数组名传入,共三个参数。计算时间有分和时,时与分的进制关系是60,所以将时分做分开处理时算时,分算分,而且这与之前定义的时间的数据类型里的成员类型相符合。
7、有了三中查找方式后,就可以分不同方式对应不同的处理方式,其中三种方式可以分别函数处理,于是就有如下思路
cout<<“1、学号方式查询”<<endl<<“2、姓名方式查询”<<endl<<“3、班级方式查询”<<endl;
cout<<“选择什么方式查询:”;
三个函数对应三种的查找方式
8、按学号查找的方式对应的函数,需要输入需查找的学生的学号,然后与数组元素中的学号对比去查找,如果查找到就停止查找所需的循环(因为再输入学号时,每个人的学号是不同的),于是就也许将结构体数组的数组名传去此函数,
找到此学生后需要输出此学生的学号、班级、姓名、上下机时间,然后调用计算时间的和计算上机费用的函数(由于这两个计算的函数里面有输出的过程,所以上面输出信息时不用输出上机费用和上机时间)。
这个时候发现有个问题,就是在计算上机时间函数里的算出来的时间由于没有被返回(函数是空函数),在调用完后不会传到下面要调用的计算上机费用的函数里,于是就把上机时间定义成全局变量。
9、按姓名查找方式对应的函数,需要输入需查找学生的姓名,然后与数组元素中的姓名对比去查找,由于不同学生的姓名可能会相同,所以这里再查到一个姓名对应相同的学生后不能跳出查找的循环结构,应该继续查找直到查完所有数组元素,而找到的学生可以通过将其下标保存到一个数组中,在之后输出的过程中就可以通过这些下标来访问对应查找到的数组,然后同样调用计算上机时间的函数和上机费用的函数。
其中查找姓名的过程中需要用到比较字符串的函数strcmp()。
10、处理按班级查找的函数与按姓名查找的函数类似处理。
11、处理完以上的三个函数后就差不多了,还需要解决的有数据输入过程中的错误问题的处理和查找完毕后是否继续查找的处理。前者可通过一个if语句处理,后者可以通过一个循环来解
测试过程:(为方便测试,这里只输入3个学生的数据)
输入时间格式不对
时出错
分出错
输入选择方式不对
结束查找
输入错误查找信息
小结:
1、问题的解决需要模块化才能清晰
2、大体的实现思路出来后再继续优化,这样比较清楚思路,而且不易出错
3、函数在难以通过指针处理时,可以定义成空函数,但需注意这是会用到全局变量,全局变量的使用应避免,所以应该学会利用指针处理函数有多个返回值的情况。
4、在优化代码的时候应注意保存原有代码,以防将代码写错后那一改正回来
第七部分、参考资料
《C程序设计教程》/(美)迪特尔(Deitel,H.M.),(美)迪特尔(Deitel,P.J.)著;薛万鹏等译.-北京:机械工业出版社,2000.7
共同学习,写下你的评论
评论加载中...
作者其他优质文章