数 据 结 构 课 程 设 计 报 告
专
业
计算机科学与技术
学生姓名
班
学
级
号
戴晓飞
B 计算机 071
0710604101
指导教师
胡 波 张静林
完成日期
2009 年 01 月 10 日
信 息 工 程 学 院
1、问 题 描 述 与 分 析
1.1 课程设计目的:
《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结
构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行
各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。数
据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业
的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及
人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
数 据 结 构 课 程 设 计 是 为 数 据 结 构 课 程 独 立 开 设 的 实 践
性 教 学 环 节 。数 据 结 构 课 程 设 计 对 于 巩 固 数 据 结 构 知 识 ,加
强 学 生 的 实 际 动 手 能 力 和 提 高 学 生 综 合 素 质 是 十 分 必 要 的 。
课 程 设 计 的 目 的 :
1. 要 求 学 生 达 到 熟 练 掌 握 C 语 言 的 基 本 知 识 和 技 能 。
2. 了 解 并 掌 握 数 据 结 构 与 算 法 的 设 计 方 法 , 具 备 初 步
的 独 立 分 析 和 设 计 能 力 。
3. 提 高 程 序 设 计 和 调 试 能 力 。 学 生 通 过 上 机 实 习 , 验
证 自 己 设 计 的 算 法 的 正 确 性 。 学 会 有 效 利 用 基 本 调 试 方 法 ,
迅 速 找 出 程 序 代 码 中 的 错 误 并 且 修 改 。
4. 培 养 算 法 分 析 能 力 。 分 析 所 设 计 算 法 的 时 间 复 杂 度
和 空 间 复 杂 度 , 进 一 步 提 高 程 序 设 计 水 平 。
5. 初 步 掌 握 软 件 开 发 过 程 的 问 题 分 析 、 系 统 设 计 、 程
序 编 码 、 测 试 等 基 本 方 法 和 技 能 。
1.2 课程设计内容
( 1)、 课 程 设 计 内 容 : 运 动 会 分 数 统 计
问 题 描 述 :参 加 运 动 会 有 n 个 学 校 ,学 校 编 号 为 1… …
n。 比 赛 分 成 m 个 男 子 项 目 , 和 w 个 女 子 项 目 。 项 目 编 号 为
男 子 1… … m, 女 子 m+1… … m+w。 不 同 的 项 目 取 前 五 名 或 前
三 名 积 分 ; 取 前 五 名 的 积 分 分 别 为 : 7、 5、 3、 2、 1, 前 三
名 的 积 分 分 别 为 : 5、 3、 2; 哪 些 取 前 五 名 或 前 三 名 由 学 生
自 己 设 定 。( m<=20,n<=20)
功 能 要 求 :
1) 可 以 输 入 各 个 项 目 的 前 三 名 或 前 五 名 的 成 绩 ;
2) 能 统 计 各 学 校 总 分 ,
3) 可 以 按 学 校 编 号 或 名 称 、 学 校 总 分 、 男 女 团 体 总 分 排 序
输 出 ;
4) 可 以 按 学 校 编 号 查 询 学 校 某 个 项 目 的 情 况 ; 可 以 按 项 目
编 号 查 询 取 得 前 三 或 前 五 名 的 学 校 。
5) 数 据 存 入 文 件 并 能 随 时 查 询
6) 规 定 : 输 入 数 据 形 式 和 范 围 : 可 以 输 入 学 校 的 名 称 , 运
动 项 目 的 名 称
输 出 形 式 : 有 中 文 提 示 , 各 学 校 分 数 为 整 形
界 面 要 求 :有 合 理 的 提 示 ,每 个 功 能 可 以 设 立 菜 单 ,根 据 提
示 , 可 以 完 成 相 关 的 功 能 要 求 。
存 储 结 构 :学 生 自 己 根 据 系 统 功 能 要 求 自 己 设 计 ,但 是 要 求
运 动 会 的 相 关 数 据 要 存 储 在 数 据 文 件 中 。( 数 据 文 件 的 数 据
读 写 方 法 等 相 关 内 容 在 c 语 言 程 序 设 计 的 书 上 , 请 自 学 解
决 ) 请 在 最 后 的 上 交 资 料 中 指 明 你 用 到 的 存 储 结 构 ;
测 试 数 据 :要 求 使 用 1、全 部 合 法 数 据 ;2、整 体 非 法 数 据 ;
3、 局 部 非 法 数 据 。 进 行 程 序 测 试 , 以 保 证 程 序 的 稳 定 。 测
试 数 据 及 测 试 结 果 请 在 上 交 的 资 料 中 写 明 ;
( 2)、 课 程 设 计 的 要 求
数 据 结 构 课 程 设 计 用 C/C++/C# 编 程 实 现 。
课 程 设 计 的 一 般 步 骤 :
1. 问 题 描 述 与 分 析 : 根 据 设 计 题 目 的 要 求 , 充 分 地 分
析 和 理 解 问 题 , 明 确 问 题 要 求 做 什 么 ? 限 制 条 件 是 什 么 ?
2. 数 据 结 构 设 计 : 为 实 现 每 个 功 能 选 择 的 逻 辑 结 构 和
存 储 结 构 , 分 析 原 因 及 合 理 性 。
3. 软 件 结 构 设 计 : 设 计 软 件 模 块 之 间 的 结 构 。
4. 算 法 设 计 : 算 法 的 设 计 及 算 法 分 析 。 每 个 部 分 的 算
法 设 计 说 明 , 可 以 用 流 程 图 描 述 算 法 。
5. 程 序 编 码 : 把 详 细 设 计 的 结 果 进 一 步 求 精 为 程 序 设
计 语 言 程 序 。源 程 序 要 按 照 软 件 工 程 的 规 则 来 编 写 ,要 求 结
构 清 晰 , 重 要 功 能 部 分 要 加 上 清 晰 的 程 序 注 释 。
6. 调 试 分 析 : 掌 握 调 试 工 具 的 各 种 功 能 , 设 计 测 试 数
据 ,测 试 输 出 的 结 果 。并 进 行 算 法 的 时 间 复 杂 度 和 空 间 复 杂
度 的 分 析 。
7. 总 结 : 课 程 设 计 过 程 的 收 获 , 遇 到 问 题 以 及 解 决 问
题 的 思 路 和 方 法 ,程 序 调 试 能 力 的 思 考 ,对 数 据 结 构 这 门 课
程 的 认 识 及 思 考 等 。
8. 编 写 课 程 设 计 报 告
2、程序设计描述
2.1 运行环境:
Microsoft Visual C++ 6.0 。 Visual C++( 简 称 VC) 是
Microsoft 公司推出的目前使用极为广泛的基于 Windows 平台
的 C++可视化开发环境。Visual C++ 6.0 提供的控制台应用程
序对学习和掌握标准 C++内容非常有利。“可视”的资源编辑器
与 MFC 类以及应用程序向导,为快速高效地开发出功能强大的
Windows 应用程序提供了极大的方便。利用 Visual C++ 6.0 进
行 Internet、数据库及多媒体等多方面的程序开发也很容易。
2.2 系统流程图:
运
动
会
分
数
统
计
headnode
itemnode
Globals
c
mscore
schoolnum
score
wscore
itemnum
mark
range
top
inputinformation()
inquiry()
main()
output()
readdata()
writedata()
h
N
Y
开始---初始化
输入
Y
Y
输入学校及男女项目范围
输入某项目各名次成绩
继 续 输
N
成绩查询
Case2 查询团体总分
继续
N
Case1
查询各学校成绩
输出查询学校成绩
继续
N
结束—退出
Y
Case3
Y
2 .3 函数及变量说明:
void inputinformation( )为输入信息函数。用来输入各个学
校各个项目前三名或前五名的成绩,结果取前三名还是前五名自己
定,利用 swith 语句前三名的分数赋为 5、3、2,前五名的成绩赋为
7,5、3、2、1,未取得成绩则赋为 0。并统计团体总分,男团总分
和女团总分。
void output( )为输出函数。列出一个输出目录利用 swich 语
句使函数按学校编号输出或按学校总分、男团总分、女团总分由高
到低排序输出。利用辅助数组 remember[]和冒泡排序的方法使之按
分数的由高到低输出。利用循环语句 do while( )当输入 2 时返回输
出目录,输入 0 是跳出循环返回主菜单。
void inquiry( )为查询函数。列车一个查询目录利用 swich 语
句使函数按学校编号或项目编号查询,输出某学校的某个项目的得
分情况或某个项目的前几名的学校。再利用循环语句 do while( )
当输入 2 是返回查询目录,输入 0 时跳出循环返回主菜单。
void writedata( ) 是 数 据 存 储 函 数 。 建 立 一 个 文 件
sportsdata.txt,将输入的数据存入此文件中。
void readdata( )是读入数据函数。它将写入 sportsdada.txt
中的数据直接调用并显示出来。
void main( )是主函数。列出主菜单,利用 switch 语句调用以
上函数实现各个菜单的功能。
3、调试分析
3.1 调试过程中出现的问题和处理方式:
为了使系统具有一点的容错性,当输入错误信息时应给出相应提
示以正确输入数据,如:printf("要查询的项目编号:");
scanf("%d",&s);
if(s>m+w||s==0)
printf("此次运动会不包括这个项目.\n\n\n");
想在每次查询结束想返回主菜单进行其它项时,应在 main( )