1、吉国燕、任祥、徐晟凯指导教师杨斌课程设计目的深入理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握数据结构基于的各种操作的实现方法课程设计所需环境Microsoft Visual C+ 6.0课程设计任务要求用数据结构的基本理论和数据存储的设计方法完成一个实际应用问题,在完成程序设计的同时能够写出比较规范的设计报告课程设计工作进度计划序号起止日期工 作 内 容分工情况15.20-5.23整体思路编写以及修改代码编写。25.23-5.26主函数的编写任祥3数据的保存徐晟凯4数据的计算及输出吉国燕指导教师签字: 年 月 日教研室审核意见:教研室主任签字:目录引言 1需求分析 12.1 问题描
2、述 12.2 设计思路 12.3 运行环境及开发工具 2概要设计 23.1 流程图 23.2 主要数据结构 23.3 函数及其实现的功能 3详细设计 44.1 程序代码 4调试与操作说明 95.1 操作说明 9课程设计总结与体会 10致谢 11参考文献 11课程设计的主要内容引言数据结构主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的
3、应用于信息学、系统工程等各种领域。需求分析2.1 问题描述题目、停车场管理问题 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允
4、许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一个程序模拟该停车场的管理。实现要求 要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。实现提示 汽车的模拟输入信息格式可以是:(到达离去,汽车牌照号码,到达离去的时刻)。例如,(A,1,5)表示1号牌照车在5这个时刻到达,而(D,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(E,0,0)时结束。本题可用栈和队列来实现。2.2 设计思路构造三个主要的结构体分别保存不同的数据,第一个用于保存车辆停在停车场的车辆,第二个用于保存停在便道的车辆,第三
5、用保存要离开的车辆,然后设计程序首先要把输入的数据分别保存在相应的结构体里,例如当停车场里没有停满时车辆要停在停车场,因此该车辆的相应数据要存第一个结构体里,相反要是满了就要保存在第二个结构体里,要离开的车辆要保存在第三结构体里,同时也用到队列栈,当数据输入完整后运行程序,输出要求输出的数据。最后要对车辆位置进行调整就可以了。2.3 运行环境及开发工具运行环境 Microsoft Visual C+ 6.0;开发工具 C/C+概要设计3.1 流程图 (1)设计流程图3.2 主要数据结构typedef struct /*用于保存每辆车的信息*/ char ch; int chehao; int
6、time;node;typedef struct /*用保存停在停车场的车辆*/ int lengh; /*记录车辆的个数*/ node numn;queue; char ch1; int chepai; int time1;node1;typedef struct /*保存停在便道的车辆*/ int front,reare; node1 numb20;squeue; char ch2; int cheph;node2;typedef struct /*保存要离开的车辆*/ int top;ode2 number30;stack1;3.3 函数及其实现的功能void create(queue
7、&chechang,squeue &biandao,stack1 &departure)用于创建结构体以及输入输出要求输出的数据,void xugai(queue &biandao,stack1 &departure);对离开的车辆进行删除在相应结构体的信息以及将可能停在便道上的车辆的信息移到停车场的结构体里相应位置。详细设计4.1 程序代码#includeiostream.h#define n 10typedef struct node2 number30;void main() queue chechang; squeue biandao; stack1 departure; void c
8、reate(queue & void xugai(queue & create(chechang,biandao,departure); xugai(chechang,biandao,departure);departure) int i,j,k; chechang.lengh=0; biandao.front=-1; biandao.reare=-1; departure.top=-1; coutchchepaitime; while(ch!=E|chepai!=0|time!=0) if(ch=Achechang.lenghn-1) biandao.reare+; biandao.numb
9、biandao.reare.ch1=ch; biandao.numbbiandao.reare.chepai=chepai; biandao.numbbiandao.reare.time1=time; else departure.top+; departure.numberdeparture.top.ch2=ch; departure.numberdeparture.top.cheph=chepai; departure.numberdeparture.top.time=time; cin 停在停车场的车 车牌号 停车时刻 for(i=0;ichechang.lengh;i+) coutch
10、echang.numi.chehao chechang.numi.time; ;停在便道的车 车牌号 停车时刻biandao.reare+1;biandao.numbi.chepaibiandao.numbi.time1;车牌号 停车费用 停车时间=departure.top; for(j=0;jj+) if(departure.numberi.cheph=chechang.numj.chehao) k=2*(departure.numberi.time-chechang.numj.time); coutchechang.numj.chehao;k;k/2; =biandao.reare; i
11、f(departure.numberi.cheph=biandao.numbj.chepai) k=departure.numberi.time-biandao.numbj.time1;biandao.numbj.chepai;0void xugai(queue &biandao.reare; while(jbiandao.reare-1) biandao.numbj=biandao.numbj+1; j+; biandao.reare-;chechang.lengh-1) chechang.numj=chechang.numj+1; if(biandao.front=biandao.rear
12、e) chechang.lengh-; else k=chechang.lengh-1; chechang.numk.ch=biandao.numbbiandao.front+1.ch1; chechang.numk.chehao=biandao.numbbiandao.front+1.chepai; chechang.numk.time=departure.numberi.time;调试与操作说明5.1 操作说明输入相应的数据例如(A 1 4)代表进车辆,(D 3 4)代表要离开的车辆,然后以 E 0 1, A 1 2A 2 3A 4 5A 3 6D 1 9E 0 05.2 运行结果停在停车
13、场的车 车牌号 停车时刻1 2;2 3;4 5;3 6;车牌号 停车费用 停车时间1 14 7Press ang key to continue为结束条件。车牌号 停车费用 停车时间 ( 2 )运行结果图课程设计总结与体会1)编程的核心是算法结构,数据结构又包括逻辑结构和物理结构,编程中要时刻注意这些问题。2)调试过程远远比编程过程繁琐,需要足够的耐心对一个个错误进行修改直至完全正确。并且调试过程也需要一定的技巧,能够选取适当的实验数据对程序进行验证,找到出错的地方以进行修正。 我这次的课程设计题目是关于停车场问题的,总体来说,这个题目还是比较简单的,主要是运用了栈和队列的一些知识和操作。也没
14、有用到其他太多的数据结构知识。程序基本上还是能够运行,结果也正确,能够实现那些基本的车辆到达、离开、收费、遍历显示等主要功能。 但我觉得这个程序还有很多小的地方是可以完善的,比如:在输入登记车辆到达时间的时候,没有相关的小时、分钟数字的限制范围(小时 023,分钟 060);这就使程序不那么健壮了,还有,在计算收费时如果离开时间是到了第二天了,这样就可能会导致收费时负的或减少很多。就是说,还应该算天数,要不就要规定只能当天停,当天开走。我改了几次改不好,又鉴于程序要求中也没有提及,所以我也就没去该了。只要能实现主要的功能就好了。 当然,这次的课程设计、编程实践还是大有收获的。通过实习我的收获如
15、下1、我知道了怎样去简化程序,减少他的时间复杂度和空间复杂度。还知道了怎样去完善程序,使其更具健壮性。2、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。3、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。4、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法。5、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点: 1、认真上好专业实验课,多在实践中锻炼自己。更让我懂得实践是检验和掌握真理的最好办法。2、写程序的过程中要考虑周到,严密。3、在做设计的时候要有信心,有耐心,切勿浮躁。4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。致谢 感谢杨斌老师这一学期对我们孜孜不倦的教诲、传授知识以及这次对我们课程设计的指导!另外也要感谢我们的C语言老师赵瑞斌为我们打下的良好基础!参考文献C语言程序设计何钦铭,颜晖M-北京;高等教育出版社,2008年1月数据结构胡学钢M-北京;评语: 评阅教师签名:成 绩
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1