数据结构课程设计报告1.docx
- 文档编号:11846248
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:11
- 大小:17.42KB
数据结构课程设计报告1.docx
《数据结构课程设计报告1.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告1.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构课程设计报告1
数据结构课程设计报告
设计题目:
老师课时量统计
学校:
海南大学
院系:
信息科学技术学院
专业:
09信息安全
班级:
(二)班
学号:
20091616310036
姓名:
李思文
指导老师:
任一凡
时间:
2010年12月20日
目录
一、课程设计题目及所涉及的知识点。
二、程序运行所用软件环境或工具。
三、课程设计思路及设计流程图{问题的模型化描述以及求解算法的简要描述。
所选择的存储结构及基本运算、设计的模块构成、各模块的简要说明、流程图、调用关系图。
四、课程设计中遇到的难点及解决方案
五、用户使用说明
六、附录原程序
七、程序输入及输出
八、设计总结和体会。
一、课程设计题目及所涉及的知识点
(一)课程设计题目:
(1)基本内容:
老师课时量统计系统
【基本要求】
(a)应用结构数组处理老师课时量的信息,主要包括老师工号和课时数量等信息;
(b)应用单链表实现产品数量统计,选择排序算法按完成数量对他们排序,并确定他们的名次;
(c)用文件实现老师课时量的管理;
(二)所涉及的知识点:
单链队列的定义及基本操作(构造一个空队列、插入、删除及显示)函数的定义及调用,指针的操作,for循环语句,switch语句格式输入与输出。
二、程序运行所用软件环境或工具
编写的原程序在VC++6.0的软件环境下运行。
三、课程设计思路及设计流程图
(一)课程设计思路:
(1)队列的抽象数据类型定义:
ADTQueue{
数据对象:
D{ai|ai∈ElemSet,i=1,2,…,n,n≥0}
数据关系:
R1={
基本操作:
InitQueue(&Q)
操作结果:
构造一个空队列Q。
EnQueue(&Q,e)
初始条件:
队列Q已存在。
操作结果:
插入元素e为Q的新的队尾元素。
DeQueue(&Q,&e)
初始条件:
Q为非空队列
操作结果:
删除Q的队头元素,并用e返回其结果。
QueueTraverse(Q,visit())
初始条件:
Q已存在且非空。
操作结果:
从队头到队尾,依次对Q的每个数据元素调用visit(),一旦visit()失败,则操作失败。
}ADTQueue
(2)单链队列—队列的链式存储结构
typedefstructQNode{
intdata;
structQNode*next;
}QNode,*QueuePtr;
typedefstruct{
QueuePtrfront,rear;
}LinkQueue;
(二)课程设计流程图:
开始
|
设置一个空的链表,用于存储信息
|
用户输入,存储到链表
|
根据课时量排序
|
输出排序后的信息
|
结束
四、课程设计中遇到的难点及解决方案
(1)老师课时量比较问题,此处我设计了一个类的功能
(2)在用switch语句时,当输入除代表菜单功能字母的字母时,得不到自己想要的优化结果,因此,采用了if…else…语句解决此问题。
五、用户使用说明
用户只需根据给出的菜单功能,选择所需要的字母即可。
六、附录原程序
#include
#defineMAX100
structworkerinfo
{
intnumber;
intproducts;
intrank;
}workers[MAX];
intcount;
voidinput()
{
intn,i;
printf("输入工号和课时数量(工号表示输入结束):
\n");
while(count { for(i=0;i if(workers[i].number==n) break; if(i==count) workers[count++].number=n; scanf("%d",&n); workers[i].products+=n; } if(count==MAX) printf("老师人数已达上限! \n"); } voidsort() { inti,j,k; structworkerinfot; for(i=0;i { k=i; for(j=i+1;j if(workers[j].products>workers[k].products|| workers[j].products==workers[k].products&& workers[j].number k=j; if(i! =k) { t=workers[i]; workers[i]=workers[k]; workers[k]=t; } if(i==0||workers[i].products! =workers[i-1].products) workers[i].rank=i+1; else workers[i].rank=workers[i-1].rank; } } voidoutput() { inti,j,c; for(i=0;i { for(c=i;c printf("第%d名的老师共有%d人: \n",i+1,c-i); for(j=i;j printf("%d\n",workers[j].number); } } intmain() { input(); sort(); output(); return0; } 七、程序输入及输出 (一)输入数据: 123 234 323 215 432 (二)输出显示: #include #defineMAX100 structworkerinfo { intnumber; intproducts; intrank; }workers[MAX]; intcount; voidinput() { intn,i; printf("输入工号和课时数量(工号表示输入结束): \n"); while(count { for(i=0;i if(workers[i].number==n) break; if(i==count) workers[count++].number=n; scanf("%d",&n); workers[i].products+=n; } if(count==MAX) printf("老师人数已达上限! \n"); } voidsort() { inti,j,k; structworkerinfot; for(i=0;i { k=i; for(j=i+1;j if(workers[j].products>workers[k].products|| workers[j].products==workers[k].products&& workers[j].number k=j; if(i! =k) { t=workers[i]; workers[i]=workers[k]; workers[k]=t; } if(i==0||workers[i].products! =workers[i-1].products) workers[i].rank=i+1; else workers[i].rank=workers[i-1].rank; } } voidoutput() { inti,j,c; for(i=0;i { for(c=i;c printf("第%d名的老师共有%d人: \n",i+1,c-i); for(j=i;j printf("%d\n",workers[j].number); } } intmain() { input(); sort(); output(); return0; } #include #defineMAX100 structworkerinfo { intnumber; intproducts; intrank; }workers[MAX]; intcount; voidinput() { intn,i; printf("输入工号和课时数量(工号表示输入结束): \n"); while(count { for(i=0;i if(workers[i].number==n) break; if(i==count) workers[count++].number=n; scanf("%d",&n); workers[i].products+=n; } if(count==MAX) printf("老师人数已达上限! \n"); } voidsort() { inti,j,k; structworkerinfot; for(i=0;i { k=i; for(j=i+1;j if(workers[j].products>workers[k].products|| workers[j].products==workers[k].products&& workers[j].number k=j; if(i! =k) { t=workers[i]; workers[i]=workers[k]; workers[k]=t; } if(i==0||workers[i].products! =workers[i-1].products) workers[i].rank=i+1; else workers[i].rank=workers[i-1].rank; } } voidoutput() { inti,j,c; for(i=0;i { for(c=i;c printf("第%d名的老师共有%d人: \n",i+1,c-i); for(j=i;j printf("%d\n",workers[j].number); } } intmain() { input(); sort(); output(); return0; } 八、设计总结和体会。 通过对数据结构课程设计,我了解并发现了很多调试程序的方法,而且懂得了如何错误的方法。 对数据结构的使用进一步提高 经历了这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。 没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行。 通过这次课程设计,对程序设计和调试的能力有很大的提升。 这次课程设计使我深刻认识到自己专业知识的匮乏,缺乏独立程序设计的能力。 通过这次的课程设计也是我认识到了我在程序设计方面的严重不足,以及专业知识的严重匮乏。 我的程序设计思想和代码的编写和调试能力在此次课设期间有所提高。 这样一种更贴切实际的课程设计,大大的提高了我的学习效率,希望能够在平时教学的时候也能加入一些类似课程设计的程序设计习题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告