}
intMakeSrand(intx,inty)
{intn;
n=rand()%(y-x);
returnn+x;
}
6.1个人测试
6.1.1陈柯铮测试
6.1.2杨兵测试
7.1个人总结
7.1.1陈柯铮总结
在编写的时候只使用了相对较为简单的基础语言,代替了相对较为复杂的语言,降低了运行效率。
测试输入的数据也有一定的局限性,但是基本可以满足订票系统的需求。
1总体过程
编译和调试工具:
选择VisualC++6.0,该工具稳定,其中有一个强大的调试工具,但我不是熟悉。
还需要进一步的练习。
2在一周半的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题:
(1)因本人能力有限,在编写的时候只使用了相对较为简单的基础语言,代替了相对较为复杂的语言,降低了运行效率。
(2)程序在起初设计的时候,经常出现溢出错误,而且不只一处。
为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作,
(3)由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。
例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。
(4)测试用例具有一定的广泛性。
运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。
说明程序具有一定的可靠性和稳定性。
3通过调试我自己认为,在哈夫曼编码译码系统中用出栈入栈进行哈夫曼译码编码译码要简单于使用数组,而使用结构体数组来存储待编译的字符,编码译码时通过结构体数组来实现要优于使用链表。
4.调试体会
经过这次实习,我对调试掌握的更加熟练了,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。
7.1.2杨兵总结
通过对这一课题的设计和实现,我认识到编程时要养成良好的风格,注意相同内容的缩进和对齐。
这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。
通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。
这个程序设计主要涉及到了《数据结构》中的随机函数、顺序栈及双端队列操作等内容,只有充分掌握了这些内容,才有可能组织好这些代码,使之符合运算逻辑,得到理想的结果。
善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。
对我们而言,知识上的收获重要,精神上的丰收是可喜的。
挫折是一份财富,经历是一份拥有。
这次实际操作必将成为我们人生旅途上一个非常美好的回忆!
回顾起此次课程设计,我至今仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在这段日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
同时,在助教老师的身上我学得到很多实用的知识,在此表示感谢!
同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
7.1.3王正海总结
在课程结束之际,我们按老师要求进行了课程设计。
在课程设计的过程中,我收获颇丰,不仅深切感受到了团队合作的优势,而且也对课堂上所学的知识有了进一步的了解。
这次的课程设计让我更熟悉了从理论到实践的跨越。
从当初的查阅图书,请教老师及同学,到现在的程序成功运行,这中间有很多值得回味的地方。
记得从几周前开始准备的时候,我们常常在一些简单的问题上花费大量的时间。
按照安排,我主要负责栈的基本操作。
课程设计可以检验学生对知识的掌握程度。
同时更反映了一个学生对课程设计的态度,对待任何事都要认真,可以不会,可以做的不是最好的,但是一定要尽自己最大的努力去完成一件哪怕再小的事。
在这次课程设计中学到了很多新的知识,同时也巩固了之前学过知识。
对拓扑排序有了更深的理解。
虽然,最后根据要求完成了任务,但期间还是出现了种种的问题。
同时,为了更好的完成任务还查阅了好多资料,不懂的就到处搜索,去图书馆借相应的书籍来看,锻炼了自己查阅资料的能力。
除此之外,我觉得本此课程设计最大的收获就是学会按部就班的完成任务。
首先想好用什么数据结构,主要的思想要明确的认定。
然后选一个简单的例子,按照你选定的思想,一步一步的走程序,才能更早的发现程序还存在那些没有考虑到的缺陷。
特别忌讳的是到写程序的时候,对主要思想和数据结构还不是很确定。
最后在调试程序的阶段,这次我开始用设置断点的方法,一步一步看是否达到你要的理想结果,从而来找出程序中出错的地方。
还有,一种方法也是用一个输出语句,分别放在程序的不同位置,通过输出结果,也可以快速判断出程序不能运行的是那一个语句了。
从而方便你修改,快速得到正确的结果。
还有,这次调试的过程中,我表现的比以前要更有耐心,这也是一个很好的收获。
还有一个更重要的体会就是,遇到不会的地方,我开始习惯到图书馆或是网上去找资料。
这是一个很好的学习过程,它不仅仅是可以解决这个问题,关键是你会从找资料学习的过程中,会学好很多很多意想不到的知识。
可能会比你手头上要学习的知识多得多。
8源代码
#include
#include
#include
#include
#include
#include//搜索
#include
usingnamespacestd;
intMakeSrand(intx,inty);//产生x~y随机数的函数,不包括y
voidOP1(deque&Data,int*Resultint,intPeopleCount,intTicketCount);
voidOP2(deque&Data,int*Resultint,intPeopleCount,intTicketCount);
voidOP3(deque&Data,int*Result,int*Stack,intPeopleCount,intTicketCount,int*x);
voidDisplayResult(int*Result);//展示购票结果
voidInStack(int*Stack,intElement);//辅助栈的进栈函数
intOutStack(int*Stack);//辅助栈的出栈函数
intPTR=0;//结果数组Result的游标
intPOP=-1;//辅助栈的顶指针
voidmain()
{
srand((unsigned)time(NULL));//随机种子,这行语句必须放在主函数中,切记
//------------------------------------------------------------------------------------
intPeopleCount;//初始化排队人数和总票数
intTicketCount;
printf("\t\t========================================\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t*请输入排队购票的人数和总票数,以空格隔开*\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t========================================\n");
cin>>PeopleCount>>TicketCount;
//------------------------------------------------------------------------------------
constintMAX=(PeopleCount>TicketCount?
PeopleCount:
TicketCount);//根据具体人数和票数判断情形并构造辅助数据结构
intMIN=(PeopleCountPeopleCount:
TicketCount);
intSituation=(PeopleCount>TicketCount?
1:
2);//情形1:
人多票少;情形2:
票多人少.
int*Result=newint[