数据结构课程设计__学生成绩管理系统.doc_第1页
数据结构课程设计__学生成绩管理系统.doc_第2页
数据结构课程设计__学生成绩管理系统.doc_第3页
数据结构课程设计__学生成绩管理系统.doc_第4页
数据结构课程设计__学生成绩管理系统.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构数据结构 课课 程程 设设 计计 报报 告告 学生成绩管理系统学生成绩管理系统 学学 院 院 信信 息息 与与 工工 程程 学学 院院 专专 业 业 计算机科学与技术计算机科学与技术 班班 级 级 090412 姓姓 名 名 邓邓 军军 学学 号 号 09041220 指导老师 指导老师 谢谢 老老 师师 日日 期 期 2011 06 22 目 录 第一章 需求分析 1 1 课程设计题目及要求 1 2 课程设计思想及开发环境 第二章 概要设计 2 1 总体方案 2 2 模板功能分析及其外部设计 2 3 主要数据结构 第三章 详细设计 第四章 调试与操作说明 4 1 主要模板调试 4 2 系统缺陷及原因 第五章 课程设计总结与体会 第六章 参考文献 第一章 需求分析 1 1 课程设计题目及要求 题目 学生成绩管理系统题目 学生成绩管理系统 学生成绩表 学生成绩表 要求如下 1 实现对两个文件数据进行合并 生成新文件 3 txt 2 抽取出三科成绩中有补考的学生并保存在一个新文件 4 txt 3 对合并后的文件 3 txt 中的数据按总分降序排序 至少采用两种 排序方法实现 4 输入一个学生姓名后 能查找到此学生的信息并输出结果 至少采 用两种查找方法实现 5 要求使用结构体 链或数组等实现上述要求 1 2 课程设计思想及开发环境 设计思想 本课题的实质是完成对学生成绩表的合并 提取 排序 查询等功能 可以首先定义项目的数据结构 然后将每个功 学生成绩信息文件 1 1 txt 内容 如下 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 学生成绩信息文件 2 2 txt 内容 如下 姓名 学号 语文 数学 英语 陈果 31 57 68 82 李华明 32 88 90 68 张明东 33 48 42 56 李明国 34 50 45 87 陈道亮 35 47 58 77 能写成一个函数来完成对数据的操作 最后完成主函数以验证各个 函数功能并得出运行结果 可将此系统分为如下模块 合并两个信 息表 从表中提取信息 降序排序模块 按条件进行查询 退出系 统 编写语言 C 语言 开发工具 Visual C 6 0 VC 是微软公司开发的一个 IDE 集成开发环境 学习 VC 要了 解很多 Windows 平台的特性并且还要掌握 MFC ATL COM 等的知识 VC 基于 C C 语言 主要由是 MFC 组成 是与系统联系非常紧密 的编程工具 它兼有高级 和低级语言的双重性 功能强大 灵活 执行效率高 几乎可说 VC 在 Windows 平台无所不能 最大缺点是 开发效率不高 第二章概要设计 2 1 总体方案 2 2 模板功能分析及其外部设计 合并两个信息主要是将两个成绩表中的成绩信息先读取 然后 写进新的 文本中 从而建立一个新的成绩表 提取信息主要是在合并信息之 后所得文本中 按要求提取出所需信息 并写进新的文本中 降序 排序主要用两种方法进行降序排序 分别为冒泡排序和快速排序 系统菜单 退出系统 合并两个信息 表 提取信息 降序排序 查询信息 降序排序查询信息 在结构体 中查询 在合并后的表 中查询 冒泡排序二分插入排 序 查询信息主要是按条件输入信息 根据信息在文本中查询所对应的 信息并输出结果 程序的外部设计主要是通过写一个功能菜单来实现每个功能模 板的调用 从而更好的协调各个功能之间的关系和使用 2 3 主要数据结构 学生数据是用链表存放的 因为学生的人数是不定的 若用一 个数组存放数据时 有固定长度限制 若太大则可能导致内存浪费 太小就不够用 而链表可动态分配内存 根据需要而开辟内存单元 这是本程序的链表数据结构 相关学生需要储存的信息也如下 typedef struct char name 8 char id 2 int chinese int math int english int sum student 第三章 详细设计 本程序分为合并模板 提取模板 排序模板 查询模板 在合 并两个信息表是 采用 Unitedfile 来实现 调用该函数打开文件 1 txt 并读取 再打开 3 txt 将从 1 txt 中读取的信息写入 完成 后关闭 1 txt 然后打开 2 txt 读取 并写入 3 txt 完成后输出并 关闭两个文本 void Unitedfile 合并 1 txt 和 2 txt 为 3 txt FILE fp p Student studd fp fopen 1 txt r 以读的方式打开 1 txt p fopen 3 txt w 以写的方式打开 3 txt while fscanf fp s s d d d studd name studd id printf 6s 6s 6d 6d 6d n studd name studd id studd chinese studd math studd english 读取 1 txt 的数据写入 3 txt 继续读取直结束 fclose fp 关闭文件 1 txt fp fopen 2 txt r 以写的方式打开 2 txt while fscanf fp s s d d d studd name studd id printf 6s 6s 6d 6d 6d n studd name studd id studd chinese studd math studd english 输出文本 3 txt 中的信息 fclose fp 关闭文件 2 txt fclose p 关闭文件 3 txt 在提取信息模板中 主要是从合成后的 3 txt 文本中提取 先 打开 3 txt 文本并读取 再开打 4 txt 文本并写入 通过 if 语句都 读取的信息进行判断 是否符合 符合的就写入 4 txt 文本中 不 符合的就跳过 继续读取下一个信息 一次进行 知道文本结束 输出文本 4 txt 的信息 并关闭两个文本 void findout 提取有补考学生的信息写入 4 txt 中 FILE fp p Student studd fp fopen 3 txt r p fopen 4 txt w while fscanf fp s s d d d studd name studd id printf 6s 6s 6d 6d 6d n studd name studd id studd chinese studd math studd english 输出文本 4 txt 中的信息 fclose fp fclose p 在降序排序模块中 有两种排序方法 一种是冒泡排序 一种 是快速排序 两种排序方法都是采用先定义函数排序方法 然后再 后面调用该函数进行排顺序 在此之前都会将成绩信息总分计算出 来 然后按总分进行降序排序 然后将排序后的信息写入到 3 txt 中 并输出 最后关闭文本 冒泡排序 void Bsort int R int n int t flag 1 当 flag 为 0 时则停止排序 for int j 1 j j k if R k R k 1 t R k R k R k 1 R k 1 t flag 1 if flag 0 return void maopao int i n FILE fp fp fopen 3 txt r i 0 while fscanf fp s s d d d stud i name stud i id i fclose fp n i 1 Bsort stud n 冒泡排序 fp fopen 3 txt w 将信息写入 3 txt 中 for int m 0 m i m fprintf fp 8s 8s 8d 8d 8d 8d n stud m name stud m id stud m chinese stud m math stud m en glish stud m sum fclose fp 快速排序 int Partition int low int high int pivotkey Student temp temp stud low pivotkey stud low sum while low high while low high stud low stud high while low pivotkey low stud high stud low stud low temp return low void QSort int low int high 快速排序 int privotloc if low high privotloc Partition low high QSort low privotloc 1 QSort privotloc 1 high void kuaisu 读取文件排序后将结果写入 3 txt int i low high FILE fp fp fopen 3 txt r i 0 while fscanf fp s s d d d stud i name stud i id i fclose fp low 0 high i 1 QSort low high 快速排序 fp fopen 3 txt w 将排序后的数据写入 3 txt 中 for int j 0 j Name for k 1 k n k if strcmp stud k name Name 0 flag 1 cout 姓名 学号 语文 数学 英语 总分 endl cout stud k name stud k id cout stud k chinese stud k math stud k english stud k sum endl break if flag 0 cout 无此学生相关信息 endl 要实现各个功能之间的调用 在主函数中使用 while if case 等语句进行调用是各个功能之间串联起来 把各 个功能看成单个的事件 利用 case 语句来对各个事件进行选择 利 用 printf 输出语句来形成主菜单界面 int main int choice while 1 主菜单 if sign3 0 printf n printf 学生成绩管理系统 n printf 1 合并 1 和 2 得 3 n printf 2 把 3 中有成绩不及格的放 入新文件 4 中 n printf 3 把 3 中成绩总分按降序排 列 n printf 4 输入姓名 查找该成绩信 息并输出结果 n printf 5 退出系统 n printf n printf 请输入 1 5 选择要使用的功能 sign3 1 scanf d switch choice case 1 Unitedfile sign 1 cout 1 和 2 合并成功 endl cout 请选择下一步操作 endl break case 2 if sign 0 cout 请执行操作 1 后再执行此项操作 endl cout 请选择下一步操作 endl break cout 4 txt 生成成功 endl findout cout 请选择下一步操作 endl break case 3 if sign 0 cout 请执行操作 1 后再执行此项操作 endl cout 请选择下一步操作 endl break sortfile cout 降序排列成功 endl cout 请选择下一步操作 endl sign1 1 break case 4 while 1 char c findoutstudent cout 继续查找或返回主菜单请输入 Y N c if c N c n break system cls sign3 0 break case 5 exit 0 break return 0 第四章 调试与操作说明 4 1 主要模板调式 菜单显示图 合并两个成绩表 选择菜单 1 调试结果 提取有成绩不及格学生的信息 选择功能 2 调试结果 降序排序 将 3 txt 中学生成绩总分计算出 选择功能 1 和功能 2 调试结果一样 选择 1 时 选择 2 时 排序后 进行查询功能 都是输入姓名查找 选择功能 1 和功能 2 调试完成后 如果还要继续查询选择 Y 不查询选择 N 退到主菜 单 选择 1 选择 2 时 选择 Y 继续查询时 不查询退到主菜单 退出系统 选择 5 调试之后按任意键关闭界面 4 2 系统缺陷及原因 缺陷 该系统功能存在一些缺陷 在第一步到第二步过程中 没有对成绩的总分进行计算 所以在第三部排序时 用第一种方法 排序过后 再用第二种继续排一次 查看输出结构 在结果中出现 乱码现像 原因 因为在排序过程中读取信息的顺序是按照没用总分的样 子读取 当排序过后 成绩总分计算出来了 在继续第二次排序 读取存在总分的信息表使得之前都去顺序方法变得混乱 有些读取 信息与定义的类型发生冲突 导致出现乱码 第五章课程设计总结与体会 本系统设计是为了合并两个信息表 然后对信息表进行排序 从信息中查询信息 由于 C 语言学的不扎实 编程时遇到了很多困难 翻了很久的 资料才完成 开始调试的时候经常出现很多的错误 经常容易烦躁 但是经过一段的时间的锻炼使得我更有信息和勇气去面对困难 并 一步一步的解决困难 当整个程序开始运行的时候 是非常有成就 感的 整个程序还有很多不足的地方 在程序设计方面 逐渐感觉 到模块化设计的重要性 应该分析出功能块 然后对其细节中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论