数据结构课程设计 舞伴问题(4)

2019-04-09 11:28

第五章总结

这次的课程设计懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为,从而提高自己的实际动手能力和独立思考的能力。在整个设计过程中,构思是很花费时间的,在构思总体架构时,需要先将需求分析搞清楚,需要在找到了需要解决的问题后,再想办法解决该问题。而不是在设计过程中边想边解决,需要先将所有可能的问题都考虑到,再依次解决。在整个系统设计完成后,如果再遇到新的问题,可以对系统进行适当的更新。

调试时经常会遇到这样那样的错误,有的时候是因为一些最基本的错误,如标点的中英错误,括号的匹配问题,数据的输入错误等。当然,也有很多地方是因为用错了解决方法。在设计的过程中,最能体现出的缺点就是基础不扎实,本可以避免的错误却一再出现。

在实现舞池配对问题过程中,需要使学生循环配对,此程序设计的是当一个光盘的音乐播放结束时,整个配对过程随之结束,而没有让学生再次进去坐席,导致不再从新将学生入座,就无法实现配对。设计的是在每首歌开始之前学生进入队列,可以改为当某个学生坐席为空时,随即让学生再次进入队列,可以解决不能重复换歌曲的问题。

刚开始的时候我直接在开发环境下一边看题一边写代码,瞪了半天什么也没写出来,于是我便先开始在纸上画画写写,将事件的整个过程画下来,然后考虑怎么才能运用代码来实现,一边思考一边写一些粗略的代码,最后从上到下执行代码看看是不是符合题目要求。有没有什么漏洞。等这些完成以后,再在开发环境下将代码完善、编译和调试。虽然说代码还有许多要改进的地方,有的功能还不够完善,可毕竟是自己亲自写出来的,对于程序的条理有了一个清晰的了解,对编程也有了更加深刻的认识。

15

参考文献

[1] 谭浩强. C程序设计(第三版)[M].北京:清华大学出版社,2005.

[2] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997. [3] 陆丽娜. 软件工程. 北京:经济科学出版社,2005.

[4] 姚诗斌.数据库系统基础.计算机工程与应用,1981年第8期

16

附录系统源代码

#include #include #include #include #include

#define MAXQSIZE 20 //循环队列最大存储量 #define STU_SIZE 5 //学生人数 #define SIZE 100

int idCount=1000;//全局变量控制学生id自增 int length;//记录每首歌配对的数量 int index=0;//记录最终配对表的下标 usingnamespace std;

//舞池就坐后的学生信息结构体 struct Admin { char name[15]; char passWord[15]; Admin *next; };

Admin *admin; struct FinalStu { char name[15]; char sex[3]; int id; };

FinalStu stu[STU_SIZE];

FinalStu stuSeat[STU_SIZE];//用来存放入座后的学生信息

FinalStu stuTable[STU_SIZE][2];//用来存放没收歌曲的配对情况 //舞池座位 struct StuQueue { FinalStu *base; int front; int rear; };

StuQueue Boys; //男生队列 StuQueue Girls; //女生队列 //初始化学生坐席

void InitQueue(StuQueue &Q)

17

{ Q.base=(FinalStu*)malloc(MAXQSIZE*sizeof(FinalStu)); if(Q.base==NULL) return ; Q.front=Q.rear=0; }

//学生就坐,首次入队,需要获取学生的id void EnQueue(StuQueue &Q,FinalStu stu) { int i=100; if((Q.rear+1)%MAXQSIZE==Q.front) return ; strcpy(Q.base[Q.rear].name,stu.name); strcpy(Q.base[Q.rear].sex,stu.sex); Q.base[Q.rear].id=idCount++; Q.rear=(Q.rear+1)%MAXQSIZE; }

//非首次入队,不需获取学生的id

void EnQueue2(StuQueue &Q,FinalStu stu) { strcpy(Q.base[Q.rear].name,stu.name); strcpy(Q.base[Q.rear].sex,stu.sex); Q.base[Q.rear].id=stu.id; Q.rear=(Q.rear+1)%MAXQSIZE; }

//从坐席上出来

FinalStu DeQueue(StuQueue &Q) { FinalStu stu; if(Q.rear!=Q.front) { stu=Q.base[Q.front]; } Q.front=(Q.front+1)%MAXQSIZE; return stu; }

//存放音乐信息 struct Music { char M_Name[15]; Music *next; };

//存放音乐链,循环链表

18

struct MusicList { Music *head; Music *tail; };

MusicList ML;

Music *M_p;//初始化指针

void InitMusic(MusicList & MList) { MList.head=MList.tail=(Music *)malloc(sizeof(Music)); MList.head->next=NULL; }

//向音乐链表中添加音乐

void InsertMusic(MusicList &MList,char* name) { Music *p=(Music*)malloc(sizeof(Music)); MList.tail->next=p; strcpy(p->M_Name,name); MList.tail=p; MList.tail->next=MList.head; }

//临时队列,用于存放从男女生队列中配对成成功的学生信息 struct TempQueue { FinalStu stu; TempQueue * next; };

struct TempQList { TempQueue *front; TempQueue *rear; };

TempQList TempQL; //临时队列,用于存放每次出来的男女生信息 void InitQList(TempQList &TQL) { TQL.front=TQL.rear=(TempQueue *)malloc(sizeof(TempQueue)); TQL.front->next=NULL; }

void EnTempQueue(TempQList & TQL,FinalStu stu) { TempQueue *p=(TempQueue *)malloc(sizeof(TempQueue)); p->stu=stu;

19


数据结构课程设计 舞伴问题(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2建筑工地施工组织设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: