一、课程设计的教学目的和任务。
通过本课程设计教学所要达到的目的是:培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
本课程设计的任务是:学生应该根据所选题目完成方案设计、程序设计和调试等任务,并完成相关文档的撰写。
二、课程设计的内容和基本要求。
利用《数据结构》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
课程设计的题目可由指导教师根据具体情况和大刚的要求来确定,参考题目:
1、停车场管理。
2、银行业务模拟。
3、飞机订票系统。
4、文学研究助手。
5、文章编辑。
6、简单行编辑程序。
7、串基本操作演示。
8、哈夫曼编码/译码器。
9、教学计划编制问题。
10、校园导游咨询。
11、图书管理系统。
12、平衡二叉树操作的演示。
13宿舍管理查询软件。
14、运动会分数统计。
15、纸牌游戏。
16、学生成绩管理系统。
任务书。1.停车场管理。
任务:设停车场是一个可停放n车辆的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按到达时间先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场已经付诸停满了n辆车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在第一辆车即可开入,当停车场内的某一辆车要离开时,在它后面的车辆须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆车的收费按停车的时间长短收费(在便道上停车时间不收费)。
试为停车场编制上述要求进行管理的模拟程序。
要求:以栈模拟停车场,以队列模拟便道。每一组数据包括三个数据项:汽车“到达”或“离开”信息、汽车牌照号码以及到达或离开的时刻。
2.银行业务模拟。
问题描述:客户业务分为两种,第一种是申请从银行得到一笔资金,即取款或者借款。第二种是向银行投入一笔资金,即存款或者还款。
银行有两个服务窗口,相应的有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立即排入第二个队等候,直至满足时才离开银行;否则业务处理完后立即离开银行。
每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足的者重新排到第二个队列的队尾。
注意:在此检查过程中,一旦银行的资金总额少于或者等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列客户。任何时刻都只开一个窗口。
假设检查不需要时间。营业时间结束时所有客户立即离开银行。
基本要求:利用动态存储结构实现模拟。
测试数据:一天营业开始时银行拥有的款额为10000(元),营业时间为600(分钟)。其他模拟参量自定,注意测定两种极端的情况:
一是两个到达事件之间的间隔时间很短,而客户的交易时间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时间很短。
实现提示:事件有两类:到达银行的和离开银行。
初始时银行现存资金总额为total。开始营业后的第一个事件是客户到达,营业时间从0到closetime。到达事件发生时随机地设置此客户的交易时间和距下一到达事件之间的时间间隔。
每一个客户要办理的款额也是随机确定的,用负值和正值分别表示第一类和第二类业务。变量total,closetime以及上述两个随机量的上下界均交互地从终端读入,作为模拟参数。两个队列和一个事件表均要用动态存储结构实现。
注意弄清应该在什么条件下设置离开事件,以及第二个队列用怎么样的存储结构实现时可以获得较高的效率。注意:事件表是按时间顺序有序的。
3.飞机订票系统(1-2人完成)
任务:通过此系统可以实现如下功能:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:
可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件。
要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
4.文学研究助手。
问题描述:文学研究人员要统计某篇英文**中某些形容词的出现次数和位置。试写一个实现这一目标的文学统计表,称为"文学研究助手。
基本要求:英文**存在于一个文本文件中待统计的词汇集合要一次输入完毕即统计工作必须在程序的一次运行之后完成,程序的输出结果是每个词的出现次数和出现位置所在行的行号。格式自行设计。
5.文章编辑(1-2人完成)
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共n行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章**现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”(3)输出删除某一字符串后的文章;
6. 简单行编辑程序。
问题描述如下:
文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。
一种解决方法是逐段地编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。试按照这种方法实现一个简单的行编辑程序。
设文件每行不超过320个字符,很少超过80字符。
具体功能如下:
1)行插入。格式:i《行号》《回车》《文本》《回车》
将《文本》插入活区中第《行号》行之后。
2)行删除。格式:d《行号1>[□行号2>]《回车》
删除活区中第《行号1>行(到第《行号2>行)。
3)活区切换。格式:c《回车》
将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
4)活区显示。格式:p《回车》
逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续显示以后各页(如果存在)。各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。
7.串基本操作演示。
问题描述:
如果语言没有把串作为一个预先定义好的基本类型对待,又需要用该语言写一个涉及串操作的软件系统时,用户必须自己实现串类型。试实现串类型,并写一个串的基本操作的演示系统。
基本要求:节用堆分配存储表示实现hstring串类型的最小操作子集的基础上,实现串抽象数据类型的其余基本操作(不使用c语言本身提供的串函数)。参数合法性检查必须严格。
利用基本操作函数构造以下系统:它是一个命令解释程序,循环往复地处理用户键入的每一条命令,直至终止程序的命令为止。
命令定义如下:
1)赋值。格式:a《串标识》《回车》 用《串标识》所表示的串的值建立新串,并显示新串的内部名和串值。例:a‘hi!’
2)判相等。格式:e《串标识1>《串标识2>《回车》若两串相等,则显示"equal",否则显示"unequal"。
3)联接。格式:c《串标识1>《串标识2>《回车》将两串拼接产生结果串,它的内部名和串值都显示出来。
4)求长度。格式:l〈串标识》《回车》显示串的长度。
(5)求子串。格式:s《串标识》+《数1>+《数2>《回车》 如果参数合法,则显示子串的内部名和串值。《数》不带正负号。
6)子串定位。格式:i《串标识1>《串标识2>《回车》显示第二个串在第一个串中首次出现时的起始位置。
(7)串替换。格式:r《串标识1>《串标识2>《串标识3>《回车》将第一个串中所有出现的第二个串用第三个串替换,显示结果串的内部名和串值,原串不变。
8)显示。格式:p《回车》
8.哈夫曼编码/译码器。
问题描述:打开一篇英文文章,统计该文章中每个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码。
问题补充:1.从硬盘的一个文件里读出一段英语文章;
2.统计这篇文章中的每个字符出现的次数;
3.以字符出现字数作为权值,构建哈夫曼树,并将哈夫曼树的存储结构的初态和终态进行输出;
4.对每个字符进行编码并将所编码写入文件然后对所编码进行破译。
具体介绍:在本课题中,我们在硬盘中预先建立一个文档,在里面编辑一篇文章。 然后运行程序,调用函数读出该文章,显示在界面;再调用函数对该文章的字符种类进行统计,并对每个字符的出现次数进行统计,并且在界面上显示;然后以每个字符出现次数作为权值,调用函数构建哈夫曼树;并调用函数将哈夫曼的存储结构的初态和终态进行输出。
然后调用函数对哈夫曼树进行编码,调用函数将编码写入文件;再调用对编码进行译码,再输出至界面。至此,整个工作就完成了。
9.教学计划编制问题(1-2人完成)
设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。
数据结构课程设计题目
题目1实现两个链表的合并。要求 编一程序将a表和b表归并成一个新的递增有序的单链表c 值相同的元素均保留在c表中 并要求利用原表的空间存放c。测试数据 1 a表 30,41,15,12,56,80 b表 23,56,78,23,12,33,79,90,55 2 a表 30,41,15,12,56,8...
数据结构课程设计题目
题目1 图的遍历。功能 实现图的深度优先,广度优先遍历算法,并输出原图结构及遍历结果。分步实施 1 初步完成总体设计,搭好框架 2 完成最低要求 两种必须都要实现,写出画图的思路 3 进一步要求 画出图的结构,有兴趣的同学可以进一步改进图的效果。要求 1 界面友好,函数功能要划分好。2 总体设计应画...
数据结构课程设计题目
数据结构课程设计 题目与要求。一 实验学时 两周。二 要求 1 题目从以下题目中选择,完成程序设计及设计文档。2 程序的要求 实现的功能要求尽量完善。完善基本功能的基础上,再扩充其它功能。3 课程设计说明书的格式要求 a4纸打印,格式设置统。一 规范 美观。三 题目。1.运动会分数统计 限1 人完成...