您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 数据结构课程设计 银行营业模拟演示系统
数据结构课程设计报告题目:银行营业模拟演示系统班级:0003201班姓名:朱吉学号:040310207完成日期:2005.6.13一、需求分析:用队列CQueue来模拟演示银行中客户排的队。当客户进入银行后,会排到最短的队列;而当排队的过程中,如果某条队明显短了,排在较长队列的客户就会转到最短的队列。在程序中,用随机数发生函数来产生客户进入银行的时间,此时,检测各队列的长度,将客户放入最短的队列;同时,检查是否有某个队列的长度特别短,如果有的话,将最长的队列中的客户转到最短的队列中,而这个转移的客户由产生随机数来模拟。程序界面如下图所示:二、概要设计:程序中主要用到了两种数据结构:队列和链表。1.队列数据类型的定义:队列节点类:classCQNode{friendclassCQueue;private:CCustomerCustomer;CQNode*Next;public:CQNode();CQNode(constCCustomer&CUSTOMER,CQNode*NEXT=NULL);~CQNode();};队列类:classCQueue{private:CQNode*QHead;CQNode*QTail;intLength;public:CQueue();CQueue(constCQueue&Q);~CQueue();voidenqueue(constCCustomer&CUSTOMER);CCustomerdequeue();CCustomer&front();CCustomerget(constintPOS)const;boolremove(constintPOS);voidclear();voidsort(constSORTMETHODMethod,constboolResetId=false);intsize()const;boolisEmpty()const;intsearch(constCCustomer&CUSTOMER)const;CQueue&operator=(constCQueue&Q);CCustomer&operator[](constintPOS);};2.双向链表数据类型的定义:链表节点类:templateclassTypeclassDNode{friendclassDLinkListType;private:TypeData;DNODE*Next;DNODE*Prior;public:DNode(void):Data(),Next(NULL),Prior(NULL);DNode(constType&myData,DNODE*PRIOR=NULL,DNODE*NEXT=NULL);DNode(constDNODE&myNode);~DNode();voidset(constType&myData);Typeget(void);DNODE&operator=(constDNODE&myNode);DNODE&operator=(constType&myData);};链表类:#defineDLINKDLinkListTypetemplateclassTypeclassDLinkList{private:intLength;intCurPos;DNODE*Head;DNODE*Tail;DNODE*CurP;voidGoTo(constintPos);public:DLinkList(void);DLinkList(constDLINK&List);~DLinkList();voidinsert(constType&Data);boolinsert(constType&Data,constintPos);voidinsert(constDNODE&Node);boolinsert(constDNODE&Node,constintPos);boolremove();boolremove(constintPos);voidclear(void);intsearch(constType&Data,constintPos=1);boolsetData(constType&Data);boolsetData(constType&Data,constintPos);TypegetData(void);TypegetData(constintPos);boolgoHead(void);boolgoTail(void);boolgoNext(constintLen=1);boolgoPrior(constintLen=1);boolmoveTo(constintPos);intposition(void);intsize(void);boolisEmpty(void);boolisIn(constType&Data);DLINK&operator=(constDLINK&List);DLINKoperator+(constDLINK&List);DLINK&operator+=(constDLINK&List);Typeoperator[](constintPos);};三、详细设计:程序主要分为界面设计和数据结构设计两部分,而数据结构主要的设计对象是队列,队列是该程序设计的重点。由于源代码太长,限于篇幅,在此省略了源代码,程序的详细设计可以参看源文件。四、调试分析:由于队列本身就是线性表,而线性表是几种数据结构中最简单的结构,所以对于队列的调试十分简单,并没有遇到困难。而本程序是一个演示程序,所以对于演示以及动画的调试花了相当多的时间。程序用了两个Timer组件来实现队列调整和动画,由于Timer使用的是多线程,所以两个Timer的工作不是同步的,这里就要考虑数据操作的同步问题,因此这也是调试中的一个难点。另外,由于演示区的空间有限,所以当队列较多时,需要提供上下滚动的功能,这在程序的实现过程中也是一个困难之处。五、课设感想:写程序是一种乐趣,特别是当我看到别人在用我的程序时,我会感到无比的喜悦。而数据结构是任何程序的基础,没有数据结构的支持,就没有程序的存在,至少说不会存在有价值的程序。这个学期,我写了好多程序,如八皇后问题、迷宫问题、赫夫曼编码文本加密程序,还有这个课程设计──银行营业模拟演示系统,虽然都是很简单的数据结构,但是如果没有线性表、队列、二叉树等数据结构的支撑,我想是写不出这些程序的。另一方面,在学习数据结构的同时,我也学会了使用C++Builder,应该说已经掌握了很多程序设计中的高级技巧,我想这也是数据结构这门课的功劳。有了数据结构的知识,再加上程序设计技术,这对以后对计算机技术的深入学习应该会有很大的帮助的。六、附录:源程序文件清单:Simulation.bpgSimulate.bprSimulate.resSimulate.cppSimulateForm.dfmSimulateForm.ddpSimulateForm.hSimulateForm.cppOptionForm.dfmOptionForm.ddpOptionForm.hOptionForm.cppParametersForm.dfmParametersForm.ddpParametersForm.hParametersForm.cppStatForm.dfmStatForm.ddpStatForm.hStatForm.cppAboutForm.dfmAboutForm.ddpAboutForm.hAboutForm.cppRandoms.bprRandoms.resRandoms.bpfRandoms.libDllRand.cppRandFunc.hRandFunc.cppTypeLibs.hDNode.hppDLList.hppCustomer.hCustomer.cppCQNode.hCQNode.cppCQueue.hCQueue.cpp
本文标题:数据结构课程设计 银行营业模拟演示系统
链接地址:https://www.777doc.com/doc-243187 .html