算法与数据结构课程设计任务书

更新时间:2024-03-12 04:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

算法与数据结构课程设计任务书

1、实训意义和目的

使学生综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。 课程设计的目的和要求:

? 使学生巩固和加强《C语言程序设计》和《数据结构与算法》课程的理论

知识。

? 使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。 ? 使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程

序。

? 进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图

表示算法。

? 使学生掌握调试程序的基本方法及上机操作方法。

? 掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课

程设计的思想和方法还可以作为学生做毕业论文时的参考资料。 ? 通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为

学生做毕业设计打好基础。

? 初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课

程设计既覆盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析 问题的能力及编程能力,并养成良好的编程习惯。

? 培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参

考算法,自己设计出相应的应用程序。

? 培养学生良好的程序设计风格。在实际编程中,为了提高编程质量,对空

行、空格和注释均有要求。学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。

2、实训目标及要求

参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反映出理解和运用本课程知识的水平和能力。

A、分析问题。各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。 B、提出算法执行特定任务。模块表示为算法,使用自顶向下或伪代码等设计手段将模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。 C、把一个算法变为用C语言编写的结构化程序。

D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。

E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。

F、写出技术文档,对程序中主要标示符的含义或作用加以说明,并提供一个完整的程序流程图。

G、调试程序、测试数据过程成功。

3、实训内容及安排

3.1 设计环境

硬件:PC机,目前机房都已具备开发C语言程序的条件

软件:操作系统为Windows系列,设计语言为Visual C++或Turbo C。

3.2 基本要求

? 课程设计可采取每人一题,可任选一题进行设计, 至少包含五个功能模块。

或者每组(4人)完成一个课题,每组成员分工合作完成一个课程设计,每个人的任务不同;

? 可以选择老师提供的参考选题,也可以自选,如果自选,需要将自选题目的

详细内容以及实现要求提供给老师,老师批准后方可采用。

? 要求利用结构化程序设计方法以及C的编程思想来完成系统的设计;

? 要求有欢迎界面、菜单、文件操作,数据使用数组、结构体、链表等均可,

键盘操作或鼠标操作均可;

? 模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,

进行模块化设计,各个功能模块用函数的形式来实现; ? 学生所选课题必须上机通过,并获得满意的结果; ? 程序书写风格:锯齿型书写格式。

3.3 实现步骤

问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?

? 逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数

据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图; ? 详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,

要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;

? 程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一

些注解和断言,使程序中逻辑概念清楚;

? 程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。调试正

确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; ? 编写实训设计报告.

3.4 实训题目

见附录

4、实训报告应具有的内容

1)、需求分析

描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。 2)、总体设计(程序设计组成框图、流程图)

3)、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))

4)、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施

5)、测试结果,用几组测试数据进行测试算法设计的正确性。 6)、用户手册:即使用说明。

7)、附录。源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。

要求:1)界面友好,函数功能要划分好

2)总体设计应画一流程图 3)程序要加必要的注释 1) 要提供程序测试方案

2) 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是

没有价值的。

附录、C语言项目(供参考)

(一)、学生成绩管理系统

【问题描述】

学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。 【实现提示】

假设某班有:30人(姓名自定)

考试课程有:高等数学、物理、外语、C语言、德育5门课程。 程序的功能主要包括: ① 输入成绩 ② 输出成绩

③ 输出不及格学生名单 ④ 成绩排序 ⑤ 修改记录 ⑥ 删除记录 ⑦ 插入记录等

主函数中对多个功能选择(菜单),调用对应的函数完成。

(二)、设计一个航空客运定票系统。

基本要求如下:

1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。 2、系统能实现的操作和功能如下: 1) 查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; 2) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。若需要,可登记排队候补; 3) 承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

3、实现提示:两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。由于预约人数无法预计,队列也应以链表作为存储结构。

(三)、校园导游咨询(为来访的客人提供各种信息服务)

1、基本要求: 1) 设计下沙校园平面图,在校园景点选10个左右景点。以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。 2) 为来访客人提供图中任意景点相关信息的查询。 3) 为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。 2、实现提示:一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。顶点和边均含有相关信息。

(四)、学生信息管理

(1)问题描述

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计

一学生信息管理系统,使之能提供以下功能:

? 系统以菜单方式工作 ? 学生信息录入功能---输入 ? 学生信息浏览功能---输出 ? 查询、排序功能---算法

按学号查询、按姓名查询、学生信息的删除与修改(可选项) (2)功能要求

界面比较美观;有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,

要求重新输入;最好用链表的方式实现。 (3)算法分析

首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。

对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。文件的读写操作大家参照书中的有关文件的章节。

(五)、仓库管理系统

1. 【功能需求】

程序启动后显示主菜单,包括下面的选项:

1. 显示货物类型列表 2. 新增货物类型 3. 删除货物类型 4. 货物入库 5. 货物出库 6. 库存显示 7. 退出

按下相应的按键后进入各自的子功能

2. 每个子功能执行完毕后,返回并显示主菜单 3. 【功能说明】

1. 显示货物类型列表:在屏幕显示已登记的货物类型。

2. 新增货物类型:输入货物种类信息,包括货物种类编号,货物名称。 3. 删除货物类型:输入要删除的货物种类编号,删除该货物信息。 4. 货物入库:输入货物种类编号,入库数量,增加该货物的库存。 5. 货物出库:输入货物种类编号,出库数量,减小该货物的库存。 6. 库存显示:显示各货物的编号,名称,库存。 7. 退出:退出程序,返回操作系统

(六)、个人帐簿管理系统设计

个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。

(七)、简单的职工管理系统

1.问题描述

对单位的职工进行管理,包括插入、删除、查找、排序等功能。 2.要求

职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。 (1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。 (2)删除一名职工:从职工管理文件中删除一名职工对象。 (3)查询:从职工管理文件中查询符合某些条件的职工。 (4)修改:检索某个职工对象,对其某些属性进行修改。 (5)排序:按某种需要对职工对象文件进行排序。

(八)、建通讯录

【问题描述】

设计散列表实现通讯录查找系统。 【基本要求】

(1) 设每个记录有下列数据项:电话号码、用户名、地址; (2) 从键盘输入各记录,分别以电话号码为关键字建立散列表; (3) 采用二次探测再散列法解决冲突; (4) 查找并显示给定电话号码的记录;

(5) 通讯录信息文件保存;

(6) 要求人机界面友好,使用图形化界面; 【选做内容】

(1) 系统功能的完善;

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

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

(4) 使用汉字显示。 【实现提示】

主函数:根据选单的选项调用各函数,并完成相应的功能。 Menu()的功能:显示英文提示选单。 Quit()的功能:退出选单。

Create()的功能:创建新的通讯录。

Append()的功能:在通讯录的末尾写入新的信息,并返回选单。

Find():查询某人的信息,如果找到了,则显示该人的信息,如果没有则提示通讯录中没有此人的信息,并返回选单。 Alter()的功能:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

Delete()的功能:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

List()的功能:显示通讯录中的所有记录。

Save()的功能:保存通讯录中的所有记录到指定文件中。 Load()的功能:从指定文件中读取通讯录中的记录。

(九)、图书管理基本业务模拟

1) 书的登记内容包括书号、书名、著作者、现存量和库存量;

2) 建立索引表(线性表)以提高查找效率; 3)主要功能如下:

a) 采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;

b) 借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;

c) 归还:注销对借阅者的登记,改变该书的现存量。 输出形式:能按书号、书名、著作者查找库存的书籍信息 能按学生的借书证号显示学生信息和借阅信息 书籍入库 借书功能实现 还书功能实现

(十)、班委选举系统

1、【功能需求】

程序启动后显示主菜单,包括下面的选项:

1. 显示候选人列表 2. 新增候选人名单 3. 删除候选人名单 4. 投票

5. 选举结果显示 7 退出

按下相应的按键后进入各自的子功能

2. 每个子功能执行完毕后,返回并显示主菜单

本文来源:https://www.bwwdw.com/article/jzs8.html

Top