数据库课程设计任务

2022-08-25

第一篇:数据库课程设计任务

(任务书)数据结构课程设计任务书

数据结构课程设计任务书

《数据结构》课程设计教学任务书

一、课程设计的目的

数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:

 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;  初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;  提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、课程设计的基本要求

1、独立思考,独立完成:每人任选一题,在课程设计中各任务要求独立完成,遇到问题大家可以相互讨论,互相调试检查,但不可以拷贝。

2、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;

其中包括:

a)需求分析:

在该部分中叙述,每个模块的功能要求

b)概要设计

在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。

c)详细设计

各个算法实现的源程序(可放在附录中),对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)

源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

d)调试分析

测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想等。

4、每人实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:“学号 姓名”,如“11207210188 张丽”。该文件夹下至少包括:“源代码”和“课程设计报告”,统一放在服务器的文件夹“D:

1 / 3

数据结构课程设计任务书

/11级专升本数据结构课程设计”中)。

5、课程设计报告要对重点函数及结构进行说明。报告格式参照(报告示例)。

6、报告提交

时间:第16周星期五之前,迟交无成绩。

形式:课程设计报告(要求书写课程设计报告)和电子文档。

三、课程设计内容:

1. 大数相乘问题

例如:输入第一个数为:13286754398172586,输入第二个数为:2397567453241147则程序运行后输出13286754398172586*2397567453241147=正确答案。 2.矩阵的运算

采用十字链表表示稀疏矩阵,并实现矩阵的加减法和乘法运算, 要求:要检查有关运算的条件,并对错误的条件产生报警。 3. 订票系统

设计航班信息,订票信息的存储结构,设计程序完成如下功能:

录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;

订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;

退票: 可退票,退票后修改相关数据文件;

客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息:当航班信息改变可以修改航班数据文件 6. 宾馆订房和退房系统

假设一个宾馆有n个标准的客房,每个标准客房有m个标准间,利用链表、栈或者队列等数据结构设计出具有订房和退房等功能的管理系统。 7. 建立二叉树和线索二叉树

分别用以下方法建立二叉树: 1) 用先序遍历的输入序列 2) 用层次遍历的输入序列 3) 用先序和中序遍历的结果

最后对所建立的二叉树进行中序线索化,并对此线索树进行中序遍历(不使用栈)。 8.校园导航问题

设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 9.马的遍历问题

设计程序完成如下要求:在中国象棋棋盘上,对任一位置上放置的一个马,均能选择一个合适的路线,使得该棋子能按象棋的规则不重复地走过棋盘上的每一位置。

要求:依次输出所走过的各位置的坐标。

2 / 3

数据结构课程设计任务书

11. 设计一个模拟计算器来完成表达式的计算

要求对包含加、减、乘、除、括号运算符的任意整型表达式进行求解,操作数可以是多位数。 12. 八皇后问题

设计程序完成如下要求:在8×8的国际象样棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。

要求:依次输出各种成功的放置方法。 13. 图的遍历过程演示

设计程序完成如下功能:对给定的图结构和起点,产生深度优先遍历和广度优先遍历序列,并给出求解过程的动态演示。 14.构造n个城市连接的最小生成树

一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。基本要求:

1) 城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。

2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边) 15. 药店的药品销售统计系统

设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。

基本要求:在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。对各药品的药名、单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序、堆排等方法。

四、上交作业及成绩评定

1、上交要求

上交设计报告和源程序。其中设计报告要以手写报告的形式上交;电子版内容包括程序源码和设计报告的电子文档。整个班级的设计均放在一个文件夹中。

2、课程设计报告注意事项:

1)运行结果请截图(Alt + PrtSc);

2) 系统功能模块介绍请请采用流程图形式; 3)课程设计总结可以从以下几个方面书写 : 课程设计的收获、遇到问题及其解决过程、程序调试技巧、在课程设计过程中对《数据结构》课程的认识等内容。

3、评分标准

根据完成任务的情况、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。成绩评定实行百分制。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。

3 / 3

第二篇:1206402数据结构课程设计任务书

一、课程设计的目的

1. 巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;

二、课程设计的要求(应完成的工作)

完成并上交的成果的内容必须由以下两个部分组成,缺一不可(该部分以电子文件形式上交):

1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(以“学号姓名.cpp”来命名);

2.课程设计报告:(保存为word2003文档中,文件名要求按照“学号姓名.doc”命名,即文件名为“1206402**张三”.doc)按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成:

需求分析:在该部分中叙述模块的划分和各个模块的功能要求;

概要设计:在此说明每个部分的算法设计说明(使用专业流程图描述算法),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

详细设计及代码实现:各个模块实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

调试分析:测试数据,测试输出的结果(截图说明),时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

课程总结:总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。

另外,报告还必须打印成纸质文档,字体小四,行距1.25倍。注意:去掉不该保留的内容,如提示、说明等。

三、题目参考、

见另文件。

四、时间安排、

17周,每天半天的时间必须到机房完成设计。

五、设计地点、

实验楼407

六、组织管理、

机房内按学号顺序坐位,错位的后果自负。要求到机房的时间内不定时抽查出勤状况,缺勤者按一定比例扣减最后得分。

七、考核评分。

根据提交的设计文档(包括程序主要完成的功能、数据结构设计、算法设计及专业流程图、主要代码、程序中有何创新、有何收获和所存在的不足以及需要改进的地方)和代码(程序的功能实现)进行考核。要求:

1.设计:思路清晰,设计可行。

2.文档:文档排版正确,思路清晰流畅,流程图符合规范并构图效果好。 3.代码:结构清晰,注释得当,运行成功。

4.界面要求:每个功能应该设立菜单,有合理的提示,根据提示,可以完成相关的功能要求。

5.封面使用统一格式,要求封面布局合理美观。

6.A类选题最高分值可以到A,B类选题最高分值只能到B。根据各项情况,酌情加减分。

参考文献

[1]严蔚敏、吴伟民主编《数据结构》(C语言版) 清华大学出版社 2002 [2]严蔚敏、吴伟民《数据结构习题集》(C语言版) 清华大学出版社 [3]谭浩强编著 《面向对象程序设计》(C++)清华大学出版社

附:课程设计报告内容要求(示例) 附:课程设计报告内容要求(示例)

《数据结构》课程设计报告

1206402 22 林晓苏

一、设计时间

2014年6月9日-----2014年6月13日

二、设计地点

湖南城市学院实验楼计算机407机房

三、设计目的

1.巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;

5.培养查阅资料,独立思考问题的能力。 四.设计小组成员 120640222林晓苏 五.指导老师

陈强、黄静 六.设计课题

编制一个课程管理系统

七.基本思路及关键问题的解决方法(需求分析和概要设计) 需要建立相应的存储结构,要用到拓扑排序在大学的某个专业中选取几个课程作为顶点,通过各门课的先修关系来构建个图, 该图用邻接表来存储,邻接表的头结点存储每门课的信息. 本程序的目的是为用户编排课程,根据用户输入的信息来编排出每学期要学的课 程. 针对计算机系本科课程结构之前开设。

八.算法及流程图(详细设计)

九.调试过程中出现的问题及相应解决办法(调试分析) 试调过程中曾经出现过相应的代码无法被识别的问题。解决方法:经过排查之后发现时因为在不该回车的地方回车,使得一个可以被识别的词变成两端无法被识别的词。

十.课程设计心得体会(课程总结) 本次实验中出现的问题很多,但是基本上的可以避免的。同时我也深深地领会到实践的重要性。课程虽然是枯燥的,但是应用到实践中确实灵活的。

十一.源程序(核心代码部分加上清晰的程序注释);

ADT Graph{ 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集. 数据关系R: R={VR} VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在直接先修关系} 基本操作

P: void CreatGraph(ALGraph *); void FindInDegree(ALGraph , int * ); void TopologicalSort_1(ALGraph G,int numterm,int maxcredit); void TopologicalSort_2(ALGraph G,int numterm,int maxcredit); }ADT Graph 栈的定义: ADT Stack{ 数据对象:D={ai|ai∈ElemSet,i=1,2,…n,n>=0} 数据关系:R1={基本操作: void InitStack (SqStack *S); int StackEmpty(SqStack S); void Push(SqStack *S, int ); int Pop(SqStack *S, int *e); }ADT Stack 3.2模块划分 4.1数据类型的定义 1typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc; }ArcNode; typedef struct VNode{ char name[24]; //课程名 int classid; //课程号

#define MAX_VERTEX_NUM 100 //最大课程总数 ai-1 ai

|ai-1,ai∈D,i=2,…,n} int credit; //课程的学分 int indegree; //该结点的入度 int state; //该节点的状态

ArcNode *firstarc; //指向第一条依附该顶点的弧针 }VNode,AdjList[MAX_VEXTEX_NUM]; 4 typedef struct{ AdjList vertices; int vexnum, arcnum; }ALGraph; 邻接表的基本操作

void CreatGraph(ALGraph *); 创建邻接表 void FindInDegree(ALGraph , int * ); 求一个结点的入度 void TopologicalSort_1(ALGraph G,int numterm,int maxcredit); 拓扑排序来编排课程 void TopologicalSort_2(ALGraph G,int numterm,int maxcredit); 2.

#define STACk_INIT_SIZE 100 //存储空间的初时分配量 #define STACKINCREMENT 10 //存储空间的分配增量 typedef int ElemType; typedef struct{ AdjList vertices; int vexnum, arcnum; }ALGraph; 基本操作

void InitStack (SqStack *S); 栈的初始化

int StackEmpty(SqStack S); 判断栈是否为空

void Push(SqStack *S, int ); 入栈操作

int Pop(SqStack *S, int *e); 出栈操作

int Sort(SqStack *S,int *t); 参考文献 [1]严蔚敏、吴伟民主编《数据结构》(C语言版) 清华大学出版社 2002 [2]严蔚敏、吴伟民《数据结构习题集》(C语言版) 清华大学出版社 [3]谭浩强编著 《面向对象程序设计》(C++)清华大学出版社

第三篇:《数据结构》课程设计教学任务书.

愚昧从来没有给人带来幸福;幸福的根源在于知识。——左拉 《数据结构》课程设计教学任务书 计算机2007-1 课程设计周数:第20周 指导老师:刘文娟

一、课程设计的目的

数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的: * 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; * 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; * 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; * 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、课程设计的基本要求

1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。

2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。

3、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;

其中包括:

a)需求分析:

在该部分中叙述,每个模块的功能要求

b)概要设计

在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

c)详细设计

各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)

源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

d)调试分析

测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

e)课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考

、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容;

4、每组实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:"学号 姓名",如"200413498 高魁"。该文件夹下至少包括:"源代码"、"课程设计报告"、"可执行文件"。由学习委员收集刻盘按规定时间统一上交)。

5、报告提交 时间:第20周星期五检查,第20周星期五下午5点之前由学习委员收集上交,迟交无成绩。 形式:课程设计报告(要求打印)和电子文档(统一刻盘)。

三、课程设计内容:

1、排序算法演示系统 【问题描述】 设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 【基本要求】 (1实现各种内部排序。包括冒泡排序,直接选择排序,希尔排序,快速排序,堆排序。 (2 待排序的元素的关键字为整数。其中的数据要用随机数产生(如10000个,至少用5组不同的数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。 (3 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,用饼图或条形图进行表示,以便比较各种排序的优劣。 (4 界面友好,易与操作。采用菜单方式进行选择。 【选做内容】 (1 对不同表长进行比较; (2 验证各算法的稳定性; (3 输出界面的优化。 (4 使用汉字显示。

2、校园导游咨询系统 【问题描述】 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 【基本要求】 (1 设计安徽理工大学的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2 为来访客人提供图中任意景点相关信息的查询。 (3 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 【选做内容】 (1 系统功能的完善; (2 提供求任意两个景点之间的所有路径的功能; (3 提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短)路径。 (4 使用汉字显示。

3、通讯录 【问题描述】 设计散列表实现通讯录查找系统。 【基本要求】 (1 设每个记录有下列数据项:电话号码、用户名、地址; (2 从键盘输入各记录,分别以电话号码为关键字建立散列表; (3 采用线性探测再散列法解决冲突; (4 查找并显示给定电话号码的记录; (5 通讯录信息文件保存; (6 要求人机界面友好,使用图形化界面; 【选做内容

】 (1 系统功能的完善; (2 设计不同的散列函数,比较冲突率; (3 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。 (4 使用汉字显示。 【实现提示】 如果不用界面编程,可用以下函数实现: 主函数:根据选单的选项调用各函数,并完成相应的功能。 Menu(的功能:显示英文提示选单。 Quit(的功能:退出选单。 Create(的功能:创建新的通讯录。 Append(的功能:在通讯录的末尾写入新的信息,并返回选单。 Find(:查询某人的信息,如果找到了,则显示该人的信息,如果没有则提示通讯录中没有此人的信息,并返回选单。 Alter(的功能:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。 Delete(的功能:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。 List(的功能:显示通讯录中的所有记录。 Save(的功能:保存通讯录中的所有记录到指定文件中。 Load(的功能:从指定文件中读取通讯录中的记录。

4、哈夫曼编码/译码器 【问题描述】 设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt。 【基本要求】 (1 输入一个待压缩的文本文件名, 统计文本文件中各字符的个数作为权值,生成哈夫曼树; (2 将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod), (3 输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码; (4 显示指定的压缩文件和文本文件; (5 界面友好,易与操作。采用菜单方式进行选择。 【选做内容】 (1 把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算进行真正的数据压缩,并求压缩比。 (2 显示哈夫曼树; (3 使用汉字显示。 愚昧从来没有给人带来幸福;幸福的根源在于知识。——左拉

5、二叉树遍历算法集成 功能要求: (1) 界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。 (2) 实现各种二叉树的遍历。包括先序遍历、中序遍历、后序遍历的递归或非递归算法。 (3) 要求能查找任一结点在某种遍历序列中的前驱和后继。 (4) 演示程序以人机对话的形式进行。每次测试完毕正确显示各种遍历序列。 在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;

6、航班信息的查询与检索 功能要求: (1

)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。 (2)实现对飞机航班信息进行排序与查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。每个航班记录包括八项:航班号、起点站、到达站、班期、起飞时间、到达时间、飞机型号以及票价。除了票价为数值型外,其它的均定义为字符串。 航班号 起点站 终点站 班期 起飞时间 到达时间 飞机型号 票价 CA1544 合肥 北京 1.3.5 1055 1240 733 960 MU5341 上海 广州 每日 1420 1615 M90 1280 CZ3869 重庆 深圳 2.4.6 0855 1035 733 1010

7、学生成绩管理系统(图书管理系统、个人账簿管理系统) 功能要求: (1)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。 (2)实现对学生成绩信息进行排序与查找。可按学生学号、姓名等信息进行查询。每个学生信息包含:学号,姓名,班级,语文,数学,英语,物理,化学等项。学生信息的存储结构可以选择顺序结构,也可以选择链式结构。

8、表达式求值 功能要求:

当用户输入一个合法的表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的数要求在实数范围内。能执行多重括号嵌套运算。对于异常表达式给出错误提示。(要求使用静态栈数据结构。)

9、飞机订票系统 功能要求: (1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) (2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况; (3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班; (4)退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 (5)修改航班信息:当航班信息改变可以修改航班数据文件

10、多项式运算 功能要求: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列n,c1,e1,c2,e2,......,cn,en,其中n是多项式的 项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; (3)多项式a和b相加,建立多项式a+b;输出相加的多项式 (4)多项式a和b相减,建立多项式a-b。输出相加的多项式 (5)用带表头结点的单链表存储多项式。

11、猴子选大王 问题描述: n只猴子要

选大王,选举方法是:所有猴子按1,2,...,n编号围坐一圈,从第1号开始按1,2,...,m报数,凡

报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。 基本要求:

分别选择顺序表和单向循环链表作为存储结构模拟整个过程,并依次输出出列的各猴子的编号和最终所选出猴王的编号。

12、停车场管理 问题描述: 设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场的管理。 提示:

停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。

13、文本编辑器

功能要求:运用链表与数组来处理字符串的各项操作。如插入,删除,查找,替换,显示等等。

提示:对于自定义的文本文件"*.txt",其每一行表示一个结点用单链表来实现,可以进行一行的修改,删除,添加等;每一行中的字符可用一维数组来存储,这样可以利用数组的特性方便地进行插入,删除,替换,甚至可以进行排序操作!

14、迷宫问题 问题描述:

在迷宫中求从入口到出口的一条简单路径。 提示:

迷宫用一个二维字符数组maze来表示,用x表示纵坐标,y表示横坐标。 (1)定义探索迷宫的四个方向:RIGHT为向右,DOWN向下,LEFT向左,UP向上,用Switch语句根据当前的位置坐标来判断下一步要探索的方向求出下一步要走的位置坐标。 (2) 探索迷宫的四个方向的坐标表示:RIGHT(x,y+1), DOWN(x+1,y, LEFT(x,y-1, UP(x-1,y。 (3)对每个方向探索时,用0表示可通过,用1表示不能通过是障碍,对探索过的位置加以标记。把每一个可以通过的位置坐标放入栈中,最后打印输出路径。 (4)根据二维字符数组和加标记的位置坐标,输出迷宫的图形。

15、电梯模拟运行 问题描述:

模拟我校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为第一层、第二层、......第九层,其中第一层是大楼的进出层,即是电梯的"本垒层",电梯" 空闲"时,将来到该层候命。

乘客可随时地进出于任何层。对于每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。

模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t检测一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层精致时间超过300t,则驶回1层候命。 基本要求:

按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。

(1)用系统计时,每当有新的动作要输入时要暂停计时,等输入完成后即可继续计时。

(2)输入各个动作,最后,输入完毕后,可以保存所有动作序列,并有序输出。

四、上交作业及成绩评定

1、上交要求

上交设计报告和相关光盘。其中设计报告要以打印文稿的形式上交。光盘内容包括程序源码设计报告的电子文档。整个班级的设计均刻在一张光盘上。(上交时每人交一份,文件夹的取名规则为:"学号 姓名",如"200711111 王文"。该文件夹下至少包括:"源代码"、"课程设计报告"、"可执行文件"。由学习委员收集刻盘按规定时间统一上交)。

2、评分标准

根据完成任务的情况(必须进行系统演示、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。 数据结构课程设计任务书----计2007-1 1 /7 愚昧从来没有给人带来幸福;幸福的根源在于知识。——左拉

第四篇:数据库课程设计

1 需求分析

在银行业务模拟中用随机函数产生随机数,求客户在银行的平均时间,客户来到银行后加入两个队列,客户办理的业务有两种,一是取款和贷款,二是存款和还款。

2 概要设计

typedef struct service { int num; //客户号 string type; //到达或离开 int beginTime; int endTime; int money; //正数为存款,负数为取款 struct service* next; }service; typedef struct //队列 { service* head; service* rear; }queue; int total; //初始时银行现存资金总额 int closeTime; //营业结束时间

int arriveTime; //两个到达事件之间的间隔上限 int dealTime; //客户交易的时间上限 int dealMoney=5000; //交易额上限 int currentTime=0; //当前时间 int totalTime=0; //客户逗留总时间 int counter=0; //客户总数 int number=1; //初始客户序列号 int currentTimeOfDeal=0;

1 int theArriveTime=0; queue eq; //事件队列 queue fq; //队列一

queue sq; //对列二 //初始化三个队列 service* temped; int Time; void push(queue &q,int a)// 插入元素a为Q的新的队尾元素 void pop(queue &q)// 若队列不空,出对列函数 service* front(queue &q)//返回队首元素 service* back(queue &q)//返回队尾元素

service* searchAndDel(queue &q,int m)//在对列中寻找可处理元素 bool state=1; //用于判断是否有窗口在处理

void arrive()//"到达"函数 随机产生顾客,进入队列一产生到达事件 进入事件队列

void putMoney()//存款函数 void getMoney()//取款函数

void findAndDeal()//在对列中寻找可处理元素,对其进行处理

3 运行环境

Window XP Visual C++

4 开发工具和编程语言

Visual C++ C++

5 详细设计

1.队列的链式表示和实现 typedef struct service { int num; //客户号

2 string type; //到达或离开 int beginTime; int endTime; int money; //正数为存款,负数为取款 struct service* next; }service; typedef struct //队列 { service* head; service* rear; }queue; 2.插入一个元素为队尾元素 void push(queue &q,int a) { service* p=new service; p->money=a; p->next=NULL; if(q.head==NULL)//列队为空,初始化 { q.head=p; q.rear=p; } else //队列不为空,插入元素a { q.rear->next=p; q.rear=q.rear->next; } } 3. 返回函数

3 service* front(queue &q)//返回队首元素 { return q.head; } service* back(queue &q)//返回队尾元素 { return q.rear; } 4. 在对列中寻找可处理元素

service* searchAndDel(queue &q,int m) { service* sign=q.head; //标记头节点 service* p; while(q.head!=NULL) { if((-(q.head->money))

{ p=q.head; q.head=q.head->next; //首节点后移一位,返回原首节点 return p; }

4 } if((-(q.head->money))>m) //队首元素不能被处理 {

if(q.head==q.rear) { } return NULL; else //首节点移到队列尾部 { q.rear->next=q.head; q.rear=q.rear->next; q.head=q.head->next; q.rear->next=NULL; } } if(q.head==sign) //队列循环一周时停止 return NULL; } return NULL; } 5.到达函数

void arrive()//到达"函数 随机产生顾客,进入队列一产生到达事件 进入事件队列 { push(fq,(rand()%(2*dealMoney)-dealMoney)); //随机产生顾客加入第一队列

back(fq)->beginTime=currentTime; back(fq)->num=number; push(eq,(back(fq)->money)); //将产生事件加入事件队列

5 back(eq)->beginTime=currentTime; back(eq)->type="到达"; back(eq)->num=number; ++number; } 6存款函数 void putMoney() { total+=front(fq)->money; //更新资金总额 push(eq,front(fq)->money); //加入事件队列 离开 back(eq)->type="离开"; back(eq)->num=front(fq)->num; back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1); ++counter; //更新客户总数

totalTime+=(back(eq)->endTime-front(fq)->beginTime); //更新逗留时间

pop(fq); //删除第一队列第一个业务 currentTimeOfDeal=back(eq)->endTime; state=0; } 7取款函数

void getMoney() //取款函数 { if((-fq.head->money)>total) //资金短缺 加入第二队列 { push(sq,front(fq)->money); back(sq)->beginTime=front(fq)->beginTime; back(sq)->num=front(fq)->num; pop(fq); 6 } else { total=total+back(fq)->money; push(eq,front(fq)->money); //加入事件队列离开 back(eq)->type="离开"; back(eq)->num=front(fq)->num; back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1); back(eq)->beginTime=0; currentTimeOfDeal=back(eq)->endTime; ++counter; //更新客户总数

totalTime+=(back(eq)->endTime-back(fq)->beginTime); //更新逗留时间

pop(fq); //删除第一队列第一个业务 state=0; } } 8. 在对列中寻找可处理元素,对其进行处理 void findAndDeal() { while((temped=searchAndDel(sq,total))&&NULL!=temped) //查找可处理取款 { total+=temped->money;

totail=total+temped->money; push(eq,temped->money); //加入事件队列训 离开 back(eq)->type="离开"; back(eq)->num=temped->num; randomTemp=rand()%dealTime+1;

//更

新资

金总额 7 back(eq)->endTime=currentTime+randomTemp; currentTimeOfDeal+=randomTemp; ++counter; //更新客户总数

totalTime+=(back(eq)->endTime-temped->beginTime); //更新逗留时间

delete temped; //删除节点 temped=NULL; } state=0; } 9 主函数 int main() { int m; cin>>m; if(m=111111) { cout<<”欢迎进入系统<>n; while(n==1) {

srand(time(NULL)); //初始化随机函数 cout<<"输入银行的初始存款: "; cin>>total; cout<<"输入银行的营业时间: "; cin>>closeTime; 8

cout<<"输入最大到达时间间隔: "; cin>>arriveTime; cout<<"输入最大的处理时间: "; cin>>dealTime; theArriveTime+=rand()%arriveTime+1; //首次到达时间 while(currentTime

} cout<

} if(state==1&&fq.head!=NULL) {

} if(fq.head->money>=0) {

} else getMoney(); putMoney(); findAndDeal(); arrive(); theArriveTime+=rand()%arriveTime+1; 9

<<"事件类型"<<" " <<" 时间"<<" " <<" 处理金额"<

} cout<<"未处理客户:"<<""type=="离开") cout

cout

}

} cout<<"银行当前余额:"<

在用随即函数rand产生随机数的时候,对其初始化用srand(time(NULL),为了使得产生的随机数是整数要在后面加一

7 测试结果

如图一所示为输入密码进入系统后

图一输入密码进入系统后

如图二为输入银行的初始存款,营业时间,两个到达事件的最大间隔,客户交易的最大时间

图二输入各项信息后

如图三所示产生的客户信息

图三 客户的信息(到达时间和离开时间,平均在的时间)

参考文献

[1] 吴文虎,程序设计基础(第二版),北京,清华大学出版社 [2] 谭浩强,C语言程序设计,北京 ,清华大学出版社 [3] 边肇祺,模式识别(第二版),北京:清华大学出版社

[4] 李永忠,几种小波变换的图像处理技术,西北民族学院学报,自然科学版 [5] 严蔚敏,吴伟民,米宁,数据结构题集(c语言版),清华大学出版社

心得体会

转眼之间,来到大学已经一年半的时间了,对程序的学习也有了初步的认识,在大一的时候学习了程序设计,大二紧接着又学了数据结构,在这次的课程设计中,遇到了一些问题,通过老师和同学的帮助得到了解决,并且对程序设计的认识又提高了一个层次,在以后的学习中,对经常出现的问题会更加注意。

这次的课程设计给了我很大的帮助,在过程中学到了很多的知识,对程序的规范性以及有效性更加的重视。在以后编程序的过程中会更加注意程序的完善性,使程序的功能更加的齐全,而这也是作为一个程序设计师必须要具备的。认识到只有多多的练习才能更好的运用所学习的知识。在大学里要充分的利用各种资源,提高自己的水平。

第五篇:数据库课程设计要求

2007-2008学年第一学期

第一阶段:指导教师按班级填写《数据库系统课程设计任务书》,组织学生选题,并汇总选题及分组清单。

第二阶段:组织学生撰写需求分析报告,并组织学生自述。

第三阶段:指导学生编写代码,并调试、试运行。

第四阶段:指导学生填写《课程设计总结报告》

第五阶段:组织学生演示系统。

第六阶段:收集本学期课程设计资料,以班级为单位填写《课程设计总结与成绩统计分析报告》。

收集的资料要求包括:

1、《数据库系统课程设计任务书》,每个班级一份

2、学生选题分组一览表,每个班级一份

3、学生的需求分析报告、程序代码(提交源代码到教师指定的文件夹)、课程设计总结报告。在期末以班级为单位、按学号排序,将相关资料刻成光盘。

4、《课程设计总结及成绩统计分析报告》,每个班级一份

注:⑴《数据库系统课程设计任务书》、《课程设计总结报告》、《课程设计总结及成绩统计分析报告》均采用统一的标准表格填写,用A4纸打印。

⑵《数据库系统课程设计任务书》、《课程设计总结及成绩统计分析报告》由教师填写;《课程设计总结报告》由参加课程设计的学生每人填写一份。

⑶打印文档规范:1)统一用A4纸打印;

2)正文字体:宋体小四号;

3)若文档或表格多于1页,请标注页码。

附表1:《数据库系统课程设计任务书》

附表2:《课程设计总结及成绩统计分析报告》

附表3:《课程设计总结报告》

附表4:《数据库课程设计选题与分组一览表》

附表5:07-08上数据库课程设计指导教师一览表

附表6:《数据库系统课程设计任务书》样例

附表7:《数据库课程设计选题与分组一览表》样例

上一篇:暑假学生学习计划表下一篇:世界卫生日活动总结