人人范文网 范文大全

软件实习1任务书

发布时间:2020-03-02 19:17:38 来源:范文大全 收藏本文 下载本文 手机版

《软件实习1》任务书

学期:14-15-2 班级: 13457341/2

一、课程设计目的

《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本次软件实习的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

二、设计要求

1、通过这次软件实习,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

2、学生必须仔细研读《软件实习1》要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。

3、本次软件实习按照教学要求需要在二周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好时间计划,并在软件实习过程中不断检测自己的计划完成情况,及时地向指导教师汇报。

4、编程语言任选。

三、设计选题 选题说明:

学生原则上可以结合个人爱好在选题列表中自行选课,要求选课量至少为6题(60分),且必须覆盖数据结构(线性表、队列、栈、字符串、树、图、查找和排序)的主要内容。根据实际完成题目的难度和数量以及实现程序的完善性可以适当加减分;同学们在选题时,要结合个人实际情况,确保及格,力争多做。

1、集合的并、交和差运算— 线性表

【问题描述】编制一个能演示执行集合的并、交和差运算的程序。 【基本要求】

(1) 集合的元素限定为小写字母字符 [„a‟..‟z‟] 。

(2) 演示程序以用户和计算机的对话方式执行。

【实现提示】以链表表示集合。 【选作内容】

(1) 集合的元素判定和子集判定运算。 (2) 求集合的补集。

(3) 集合的混合运算表达式求值。

(4) 集合的元素类型推广到其他类型 , 甚至任意类型。

2、一元稀疏多项式的计算— 线性表

【问题描述】实现两个多项式的运算(相加、相减)。 【基本要求】

(1)按照指数降序排列建立并输出多项式

(2)完成两个多项式的相加、相减,并将结果输出 (3)以链式存储结构实现多项式。

3、病人就医管理 — 队列

【问题描述】病人到医院看病,排队看医生的情况,在病人排队过程中,主要发生两件事:

(1) 病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2) 护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。 试为医院编制按上述要求进行管理的模拟程序。 【基本要求】程序采用菜单方式,其选项及功能说明如下: (1) 挂号排队------输入病人的病历号,加入到病人排队队列中。

(2) 就诊-------病人排队队列中最前面的病人就诊,并将其从队列中删除。

(3) 查看排队------从队首到队尾列出所有的排队病人的病历号,并列出当前排队人数。 (4) 下班---------退出运行。下班前,应检查有无排队病人,如果有,则不能下班; 【选作内容】

(1) 分科室挂号

(2) 若有急诊病人,允许插队

4、敢死队问题 —循环队列

【问题描述】有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。

排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。

【基本要求】至少采用两种不同的数据结构的方法实现。

5、表达式计算 — 栈和字符串

【问题描述】输入一个含有数字(0~9)、运算符(+、-、*、/)及圆括号的四则运算表达式,如: ((4+7)*9-3*5)/2+4。由计算机自动计算得出结果。运算优先级:圆括号由内向外→*和/→+和-。 【基本要求】

(1)四则运算表达式作为字符串输入; (2)将四则运算表达式转换为后缀表达式;

(3)使用以顺序存储结构实现的栈,对后缀表达式进行计算。

6、停车场管理 — 栈和队列

【问题描述】设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】

以栈模拟停车场,以队列模拟车场外的便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停车不收费)。栈以顺序存储结构实现,队列以链表结构实现。

7、文章编辑 — 字符串

【问题描述】输入一页文字(静态存储一页文章,每行最多不超过80个字符,共N行),程序可以统计出文字、数字、空格的个数。 【基本要求】

(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。

(4)存储结构使用线性表,分别用几个子函数实现相应的功能;

(5)输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 (6)输出形式:

1)分行输出用户输入的各行字符;

2)分4行输出\"全部字母数\"、\"数字个数\"、\"空格个数\"、\"文章总字数\" 3)输出删除某一字符串后的文章;

8、迷宫求解

— 字符串与数组

【问题描述】以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【基本要求】

(1)首先实现一个栈类型,然后编写一个求解迷宫的非递归程序。

(2)求得的通路以三元组(i,j,d)的形式输出,其中(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。

9、哈夫曼码的编/译码系统 — 树

【问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。

【基本要求】一个完整的系统应具有以下功能:

(1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。

(2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。

(3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。

(4)P:打印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。

(5)T:打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。 【测试数据】

(1)利用下面这道题中的数据调试程序。某系统在通信联络中只可能出现八种字符,其概率分别为0.25,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计哈夫曼编码。

(2)用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”。

字符 空格 A B C D E F G H I J K L M 频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1 【实现提示】

(1) 编码结果以文本方式存储在文件CodeFile中。(数据文件的数据读写方法等相关内容在c++程序设计的书上,请自学解决)

(2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止。

(3) 在程序的一次执行过程中,第一次执行I,D或E命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。

10、平衡二叉排序树的实现 — 树、查找

【问题描述】输入关键字,利用平衡二叉排序树的实现查找、插入与删除操作 【基本要求】

(1)用二叉链表作存储结构,以回车(\'\\n\')为输入结束标志,输入数列L,生成一棵平衡的二叉排序树T,并以直观的方式显示在终端上;

(2)对二叉排序树T作中序遍历,输出结果;

(3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”,并将x插入该二叉排序树中。 【实现提示】

插入、删除应保证二叉排序树的平衡性。

11、校园导游咨询

— 图

【问题描述】设计一个校园导游程序,为来访的客人提供各种信息查询服务。 【基本要求】

(1)设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。

12、最小生成树问题

— 图

若要在n个城市之间建设通信网络,只需要假设n-1条线路即可。如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。 【基本要求】

(1)利用克鲁斯卡尔算法求网的最小生成树。 (2)利用普里姆算法求网的最小生成树。 (3)要求输出各条边及它们的权值。 【测试数据】

由学生任意指定,但报告上要求写出多批数据测试结果。 【实现提示】

通信线路一旦建成,必然是双向的。因此,构造最小生成树的网一定是无向网。设图的顶点数不超过30个,并为简单起见,网中边的权值设成小于100的整数,可利用C++提供的随机函数产生。

图的存储结构的选取应和所作操作相适应。为了便于选择权值最小的边,此题的存储结构既不选用邻接矩阵的数组表示法,也不选用邻接表,而是以存储边(带权)的数组表示图。 【选作内容】

利用堆排序实现选择权值最小的边。

13、散列表的设计与实现

—查找

【问题描述】设计散列表实现电话号码查找系统。 【基本要求】

(1) 设每个记录有下列数据项:用户名、电话号码、地址;

(2) 从键盘输入各记录,以用户名(汉语拼音形式)为关键字建立散列表; (3) 采用一定的方法解决冲突; (4) 查找并显示给定电话号码的记录; 【选作内容】

(1) 系统功能的完善;

(2) 设计不同的散列函数,比较冲突率;

(3) 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

14、排序综合 — 排序

【问题描述】 利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 【基本要求】

(1)至少采用三种方法(希尔排序、快速排序、堆排序)实现上述问题求解;

(2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法;

(3)统计每种算法所用的比较次数和交换次数,最后列表显示; (4)如果采用4种或4种以上的方法者,可适当加分。

15、商店存货管理系统 — 查找与排序

【问题描述】建立一商店存货管理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物。 【基本要求】

(1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

(2)完成最低要求:建立一个文件,包括5个种类的货物情况,能对商品信息进行扩充(追加),修改和删除以及简单的排序;

(3)进一步要求:扩充商品数量,以及完成系统查询功能。有兴趣的同学可以自己扩充系统功能。

四、成绩考核

根据完成任务的情况(必须逐个进行系统验收 + 答辩)、课程设计报告书的质量和课程设计过程中的工作态度等按照50%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。 缺席次数

最终成绩 1次

中等及以下 2次及以上 不及格

五、设计报告

格式见附件1。 附件1:

一、封面

课程名:软件实习1 课程号:

学号: 姓名:

二、目录

如:

1、停车场管理…………………………………………….1

2、线索二叉树…………………………………………….10

三、内容

1、停车场管理

(一)设计题目

(二)需求分析

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

(三)概要设计

算法设计说明(包括算法设计思想、算法设计分析、流程图等)、每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

(四)详细设计

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

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

(五)调试分析

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

2、线索二叉树

(一)设计题目

(二)需求分析 ……

四、总结

软件实习过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在软件实习过程中对《数据结构》课程的认识等内容。

1实习任务书

软件计划任务书

软件实习任务书酒店管理系统

设计院实习任务书(.1)

专业实习任务书1

认识实习任务书1

测绘实习任务书1

测绘实习任务书1

1土木工程认识实习任务书

实习任务书

软件实习1任务书
《软件实习1任务书.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档