




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告 课程名称课程名称 C 语言程序设计语言程序设计 课题名称课题名称 班级成绩管理系统班级成绩管理系统 专专 业业 班班 级级 学学 号号 姓姓 名名 指导教师指导教师 2012 年年 1 月月 09 日日 湖南工程学院 课 程 设 计 任 务 书 课程名称 C 语言程序设计 课 题 班级管理系统 专业班级 学生姓名 学 号 指导老师 黄哲 审 批 任务书下达日期 2011 年 12 月 28 日 任务完成日期2012 年 1 月 09 日 一一 设设计计内内容容与与设设计计要要求求 1 1 课程设计目的 课程设计目的 全面熟悉 掌握 C 语言基本知识 增强对不同的问题运用和灵活选择 合适的数据结构以及算法描述的本领 熟悉编制和调试程序的技巧 掌握 分析结果的若干有效方法 进一步提高上机动手能力 培养使用计算机解 决实际问题的能力 养成提供文档资料的习惯和规范编程的思想 为后继 课程 数据结构 数据库和汇编语言等课程 的实验以及课程设计打下较 扎实的基础 2 2 课题题目课题题目 班级成绩管理系统 班级档案管理系统 飞机订票系统 猜数字游戏 电子英汉词典设计 心算抢答系统 运动会分数统计系统 小学生心算 CAI 系统 3 3 设计要求 设计要求 掌握结构化程序设计的主体思想 以自顶向下逐步求精的方法编制程 序解决一些实际的中型问题 为将来开发软件积累一些典型的案例处理经 验 具体要求如下 设计课题题目 每位同学根据自己学号除以 8 所得的余数加一 选择相应题号的课题 换题者不记成绩 根据自己对应的课题完成以下主要工作 完成系统需求分析 包 括系统设计目的与意义 系统功能需求 输入输出的要求 完成系统概 要设计 程序由哪些模块组成以及模块之间的层次结构 各模块的调用关 系 每个模块的功能 课题涉及的数据结构和数据库结构 即要存储什么 数据 这些数据是什么样的结构 它们之间有什么关系等 完成系统详 细设计 包括采用 C 语言定义相关的数据类型 写出各模块的类 C 码算法 画出函数的调用关系图 调试分析以及设计体会 测试数据 准备典型 的测试数据和测试方案 包括正确的输入及输出结果和含有错误的输入及 输出结果 程序调试中遇到的问题以及解决问题的方法 课程设计过程经 验教训 心得体会 关键源程序 带注释 按规定格式完成课程设计报告 将其打印稿 A4 纸 上交给老师 存档 不得抄袭他人程序 课程设计报告 每个人应体现自己的个性 设计 设计课题一 班级成绩管理系统设计课题一 班级成绩管理系统 一 问题描述 一 问题描述 对一个有 N 个学生的班级 每个学生有 M 门课程 该系统实现对班级 成绩的录入 显示 修改 排序 保存等操作的管理 二 功能要求 二 功能要求 1 本系统采用一个结构体数组 每个数据的结构应当包括 学号 姓 名 M 门课程名称 2 本系统显示这样的菜单 请选择系统功能项 a 成绩录入 b 成绩显示 c 成绩保存 d 成绩排序 e 成绩修改 要求先输入密码 f 成绩统计 1 显示每门课程成绩最高的学生的基本信息 2 显示每门课程的平均成绩 3 显示超过某门课程平均成绩的学生人数 g 退出系统 3 执行一个具体的功能之后 程序将重新显示菜单 4 将学生成绩保存到文件中 三 算法提示 三 算法提示 1 数据结构 结构体类型数组 2 数据库结构 下表构成该系统的基本数据库 姓名 学号课程名称 1课程名称 2 charcharCharfloatfloat 四 测试数据 四 测试数据 学生人数 N 10 课程门数 M 4 课程名 数学 语文 英语 政治 五 其它五 其它 对该系统有兴趣的同学可以在实现上述基本功能后 完善系统的其它 功能 目目 录录 一一 需求分析 需求分析 7 7 二 概要设计 二 概要设计 8 8 三 详细设计三 详细设计 1010 四 程序调试四 程序调试 1616 五 心得体会五 心得体会 1717 一 需求分析 1 1 程序的功能 程序的功能 学生成绩管理系统有 13 种功能 可以把每个功能写成各个子函数 共有 13 个子函数 在主函数当中设计一个菜单对这 13 个子函数进行管理 以便实 现对整个系统的操作 2 2 输入输出的要求 输入输出的要求 根据课题的要求 每一个学生的包括姓名 char 学号 char M 门 课程的成绩 float 再加上系统功能上的要求每一学生的信息还要总分和名 次等 所以想到要用结构体来定义每一个学生的信息结构 然后用链表把它们 组成一个有序的整体 用对链表的操作来实现对所有学生信息的统一管理 成 绩显示 成绩排序 成绩修改等 最后为了以后按照处理后的顺序保存到文件 中 二 概要设计 1 1 程序的模块组成及各函数的主要功能 程序的模块组成及各函数的主要功能 主 函 数 int main 新建函数 STUDENT init 输入函数 STUDENT create 显示函数 void print STUDENT head 删除函数 STUDENT delete STUDENT head 按名字寻找函数 void lookup STUDENT head 保存函数 void save STUDENT head 按总分排序函数 STUDENT sort STUDENT head 计算总分和均分函数 void computer STUDENT h 修改函数 STUDENT Modify STUDENT head STUDENT new 按学号排序函数 STUDENT index STUDENT h 菜单函数 int menu select 各函数的主要功能 输入函数 随时输入数据 菜单函数 显示系统主菜单 显示函数 显示所有学生的信息 寻找函数 方便学生查找自己的成绩 删除函数 删除某学生的信息 排序函数 按总成绩排序 按学号排序函数 按学号排序 插入函数 可以插入新的信息 保存函数 保存好学生成绩 以免丢失 统计函数 1 显示每门课程成绩最高的学生的基本信息 2 显示每门课程的平均成绩 3 显示超过某门课程平均成绩的学生人数 2 课题的功能模块的划分 开始 菜单界面 功能选择 初始化函数 输入学生信息 删除学生信息 显示学生信息 查找学生信息 按成绩排序 保存到文件 从文件读数据 插入学生成绩 分类合计 退出系统 结束 三 详细设计 1 1 定义相关的数据类型 定义相关的数据类型 整个系统除了主函数外 另外还有 14 个函数 实现八大功能 输入功能 显示 功能 查找功能 排序功能 插入功能 保存功能 读取功能 各个函数的详 细设计说明分别如下 主函数 main 利用无限次循环 for 和 swithch 实现各函数的调用 系统根据输入的数字 选项来调用相应的函数 菜单选择函数 int menu select 这是一个无参函数 主要实现 功能选择 的界面 在这个界面里有显示系统 的九大功能 根据每个功能前面的序号进行选择 等执行完每一个函数功能后 返回菜单 2 2 各函数的 各函数的 C C 类算法类算法 显示记录函 void print STUDENT head 算法 先将 p 结点的指针指向第一个结点 将 p 结点 即第一个结点 的数据 输出 然后再将 p 结点的指针指向 p 指针的的指针 即下一结点 将 p 结点 即 第一结点 的数据输出 重复执行此步聚直到 p 指针指向 NULL 为止 查找记录函数 void lookup STUDENT head 算法 采用线性查找法往下一个结点查找 输入所要查找的学生的学号 s 设一个指针变量 p 先指向第一个结点 当 strcmp p name s 提示用户输入密码 在输入过程中如果需要用到退格 putchar 8 putchar putchar 8 来达到视觉和功能上的要求 如果密码错误 则两秒后自动返 回主菜单 正确后输入要删除的学生学号 进行删除 修改函数 STUDENT Modify STUDENT head 算法 首先向系统申请一块空间 用于存放输入的信息 程序会跟据用户输入的学号 采用线性查找法往下一个结点查找 设一个指针变量 p 先指向第一个结点 当 strcmp p name s isum s p average float s 3 p order 0 p next head head p 返回菜单 保存数据到文件函数 void save STUDENT head 这是一个不返回值的有参函数 形参为 链表头的指针 可以把学生记录保存 在电脑上由自己任意命名的二进制文件 N S 流程图如下 查找记录函数 void lookup STUDENT head 这是一个不返回值的有参函数 形参为 链表头的指针 实现按学号对某个学 生进行查找 并显示所查找到的记录 N S 流程图如下 输入要查找的学生的学号 s p head 使 p 指向第一结点 当记录的学号不是要找的 或指指针不为空 p p next p NULL 如果指针不为空 是否 输 出 p 所指向的结点 显示没有该 学生 输入要保存记录的文件地址 outfile 文 件不能打开 否 是 p head 当 p 不为空时 fwrite p LEN 1 fp 写入 一条记录 p p next 指 针后移 fclose fp 关闭 文件 输出一个出错信 息 并返回菜单 删除记录函数 STUDENT delete STUDENT h 这是一个有返回值的有参函数 形参为 链表头的指针 在核对密码后 实现 对所要删除学生按学号进行查找 找到后显示该学生的信息 按任意键进行删 除 N S 流程图如下 传递头指针 输入密码 密码正确 否是 printf Password is mistake Tow seconds to return 输入要删除学生的学号 有该学生的信息 否 printf Password is mistake Tow seconds to return 是 显示该学生信息 printf n have deleted No s student n s printf Don t forget save n sleep 2 clrscr 按任意键确认删除 修改函数 STUDENT Modify STUDENT head 这是一个有参函数 一个是 链表头的指针 修改之后 并返回链表的头 指针 q head 原来的链表是空的 是否 两秒后返回菜单当记录的学号不是要找的 或指针不为空时 info 指向 q 位置 q 向后移一个结点 strcmp p no info no 是否 info next p next q next info printf Don t forget save n 从文件读数据函数 STUDENT load 这是一个不返回值的有参函数 形参为 链表头的指针 根据输入的文件地址 进行读取 N S 流程图如下 定义两个指针变量 p1 p2 输入要打开的记录文件地址 infile 文件不能打开 否是 开辟一个新单元返回菜单 指针 p1 是否为空 否 读入记录 是 fclose fp 关 闭文件 按部分排序函数 STUDENT sort STUDENT head 这是一个有参函数 形参为 链表头的指针 按学生成绩的平均分高低进行排 序 还可以显示名次 N S 流程图 temp head next head next NULL 当 temp NULL 时当 t averageaverage p2 next t p1 head 当 p1 NULL 时 i p1 order i p1 p1 next 输出 排序成功 四 程序调试 1 1 程序调试中遇到的问题以及解决问题的方法 程序调试中遇到的问题以及解决问题的方法 开始设计出来的菜单不是预想的那样 而是总个窗中出现混乱 解决的这 个问题的办法是调整 最后还是在学姐的帮助下找到了问题的所在 for 循 环的次超过了链表中结点的数量 再就是自定义函数时由于课本的概念不清楚 多写了空格键 以至函数调用不出来 又如 在设计修改学生信息时的密密码 时 当用户发现输入密码错误按了退格键后 因为 并没有消去 导致用户 再次按退格键 又出现前面的情况 最终导致输入密码错误 所以用了两次退 格键 putchar 8 退格键 putchar 以空格代替 putchar 8 再次退格 在对链表操作时 要特别链表指针的移动 p p next 和链表尾的判断 p NULL 没有指针的移动 就很容易出现死循环 而在运行过程中不能控 制 所以你就会认为是死机 如果没有链表尾的判断 就会在运行过程出现想 不到的错误 如 在显示链表信息时 后面就会出现乱码 一个系统的菜单和提示信息非常重要 如果没有这些用户根本不知道怎么用你 设计的这个系统 在设计的调试过程中也无法顺利的完成调试工作 有了一个 清晰简单的菜单和一些提示信息这后 调试过程完成的非常顺利 五 心得体会 通过半学期的 C 语言程序设计的学习 使自己对计算机方面的认识 如果 用文学词汇说 那就使从感性认识上升到了理性认识 以前 我只知道计算机 用途很广 但不知道它为什么能这样作 通过学习才知道这是程序在指挥着计 算机的运作 刚接触到这门课程 我由于底子差 感觉到了它的难度 但通过渐渐的学 习 我认识到了它的重要性 更认识到这是一种能力的培养 我下定决心要把 它学好 经过几次的上机操作 看到自己设计的程序能运行出正确的结果 我 对 C 语言产生了兴趣 刚拿到课程设计时 心里十分的没底 不知道该如何下手 怕自己完成不 了任务 原因便是自己没把知识真正学到手 不敢找出自己的问题并解决它 不知道到底学了些什么 更别说问出什么问题 但学习就是要不断的发现问题 才能不断的解决问题 不然不会有什么成效 更谈不上进步啦 实际上 问题 是最好的老师 是学生学习的引导没有问题便没有深入 在 C 程序设计过程中 我们就是在问题解决中学习 即提出问题 老师也留了大量的时间给我们思考 讨论 解决问题 从而更深入地展开学习 这样就充分的调动了我们学习的积 极性和主动性 这次实验课题 老师给了我们大量的时间让我们准备 让我们自己发现问 题 并通过自己最大的努力解决问题 在准备的过程中 我们查阅书籍 请教 同学 其实就是一个对知识进行运用的过程 也是自己发现问题并解决问题的 最好体现 C 语言课程设计不仅能提高教学质量 增强教学效果 而且能培养 和提高我们分析问题 解决问题能力和创新能力 老师在给我们定制的任务书 中中 围绕我们的所学的书本的基本知识点引导引导我们思考和探索 是我们 的思想活跃起来 经过自己的努力 问题一个接一个的被我解决了 课程知识也逐渐在自己 脑海里形成了一体系 使自己读课程知识有了一次全面的认识 老师教给学生 正确的学习方法 给我们这么好的机会 让我们掌握程 C 语言的的思想精髓在 这次的实践过程中我独立的思考着这些问题 自己试着设计着这些比较有趣的 课题 把课堂上学的 for Switch 和 while 语句还有结构体的使用和指针的用法 与作用都有了进一步的认识 这次课题中 遇到的最大问题便是文件的使用 在自己的程序中由于没有 建立文件 使得删除功能和查找功能不能实现 但在老师的引导下 我发现了 问题 在老师的帮助下我建立了文件 成功的运行了删除功能和查找功能 还 有就是密码的设置 自己设置的密码不能运行 但在自己查阅书籍后 引用了 一个比较函数 便能实行了 通过这次课程设计 使我认识到 课本上的知识只是给自己对知识的理论 认识 要真正掌握知识 必须得通过实践操作 自己对知识的不熟悉 使得自 己不敢去发现自己的问题 由于怕困难 使得自己不敢去解决问题 最终使得 自己不能完成任务 这不是自己没能力完成 而是自己能完成却没去完成 通过这次课题 我对课程的认识加深了 使自己对课程有了一个整体的 把握 也提高了自己发现问题 分析问题 解决问题的能力 更对程序设计产 生了更大的兴趣 这次课题的设计不仅是知识能力的体现 而且也反映了一个人的做事态 度 要勇于发现问题 不逃避问题 面对困难要勇于克服 而不是遇难而退 遇到麻烦要冷静思考 不要心烦气躁 那只能失败 附 1 源代码 源程序清单源程序清单 include stdio h I O 函数 include stdlib h 其它说明 include string h 字符串函数 include conio h 屏幕操作函数 include mem h 内存操作函数 include ctype h 字符操作函数 include alloc h 动态地址分配函数 include dos h define N 4 定义常数 typedef struct z1 定义数据结构 char no 12 char name 20 int score N float sum float average int order struct z1 next STUDENT 以下是函数原型 STUDENT init 初始化函数 STUDENT create 创建链表 STUDENT delete STUDENT h 删除记录 void print STUDENT h 显示所有记录 void lookup STUDENT h 查找 void save STUDENT h 保存 STUDENT load 读入记录 void computer STUDENT h 计算总分和均分 STUDENT Modify STUDENT h 修改记录 void append 追加记录 STUDENT sort STUDENT h 按总分排序 STUDENT index STUDENT h 按学号排序 int menu select 菜单函数 主函数开始 main int i STUDENT head 链表定义头指针 printf n n n n n n n n n printf n printf n printf n printf n printf n printf n printf n printf n sleep 2 head init 初始化链表 clrscr 清屏 for 无限循环 switch menu select 调用主菜单函数 返回值整数作开关语 句的条件 值不同 执行的函数不同 break 不能省略 case 0 head init break 执行初始化 case 1 head create break 创建链表 case 2 print head break 显示全部记录 case 3 head delete head break 删除记录 case 4 lookup head break 按名字查找记录 case 5 save head break 保存文件 case 6 head load break 读文件 case 7 computer head break 计算总分和均分 case 8 head Modify head break 修改记录 一般会插在表尾 case 9 head sort head break 按部分排序 case 10 append break 追加记录 case 11 head index head break 按学号排序 case 12 exit 0 如菜单返回值为 14 程序结束 菜单函数 返回值为整数 menu select char menu MENU 定义菜单字 符串数组 00 init list 初始化 01 Enter list 输入记录 02 print list 显示单链表中所有记录 03 Delete a record from list 从表中删除记录 04 Search record on name 按照姓名查找记录 05 Save the file 将单链表中记录保存到文件中 06 Load the file 从文件中读入记录 07 compute the score 计算所有学生的总分和均分 08 Modify an information 修改某学号的信息 09 sort to make new file 排序 10 append record to file 追加记录到文件中 11 index on nomber 按学号排序 12 Quit 退出 char s 3 以字符形式保存选择号 int c i 定义整形变量 gotoxy 1 1 移动光标 textcolor YELLOW 设置文本显示颜色为黄色 textbackground BLUE 设置背景颜色为蓝色 gotoxy 10 2 移动光标 putch 0 xc9 输出左上角边框 for i 1 i 44 i putch 0 xcd 输出上边框水平线 putch 0 xbb 输出右上角边框 for i 3 i 20 i gotoxy 10 i putch 0 xba 输出左垂直线 gotoxy 54 i putch 0 xba 输出右垂直线 gotoxy 10 20 putch 0 xc8 输出左上角边框 for i 1 i 44 i putch 0 xcd 输出下边框水平线 putch 0 xbc 输出右下角边框 window 11 3 53 19 制作显示菜单的窗口 大小根据菜单条数 设计 clrscr 清屏 for i 0 i 16 i 输出主菜单数组 gotoxy 10 i 1 cprintf s menu i textbackground BLACK 设置背景颜色为黑色 window 1 1 80 25 恢复原窗口大小 gotoxy 10 21 移动光标 do printf n make by wenwei printf n Enter you choice 0 13 在菜单窗口外显示 提示信息 scanf s s 输入选择项 c atoi s 将输入的字符串转化为整形数 while c14 选择项不在 0 14 之间重输 return c 返回选择项 主程序根据该数调用相应的函数 STUDENT init clrscr return NULL 创建链表 STUDENT create int i int s STUDENT h NULL info STUDENT 指向结构体的指针 clrscr for info STUDENT malloc sizeof STUDENT 申请空间 if info 如果指针 info 为空 printf nout of memory 输出内存溢出 return NULL 返回空指针 inputs enter no info no 11 输入学号并校验 if info no 0 clrscr break 如果学号首字符为 则结束输入 清屏后返回 inputs enter name info name 15 输入姓名 并进行校验 printf please input d score n N 提示开始输入成绩 s 0 计算每个学生的总分 初值为 0 for i 0 iscore i 输入成绩 if info score i 100 info score i score i 100 info score i score i 累加各门课程成绩 info sum s 将总分保存 info average float s N 求出平均值 info order 0 未排序前此值为 0 info next h 将头结点做为新输入结点的后继结点 h info 新输入结点为新的头结点 clrscr return h 返回头指针 输入字符串 并进行长度验证 inputs char prompt char s int count char p 255 do printf prompt 显示提示信息 scanf s p 输入字符串 if strlen p count printf n too long n 进行长度校验 超过 count 值重输入 while strlen p count strcpy s p 将输入的字符串拷贝到字符串 s 中 输出链表中结点信息 void print STUDENT h int i 0 统计记录条数 STUDENT p 移动指针 clrscr 清屏 p h 初值为头指针 printf n n n STUDENT n printf rec nO name sc1 sc2 sc3 sc4 sum ave order n printf n while p NULL 只要 p 不是尾结点 就输出记录 i printf 3d 10s 15s 4d 4d 4d 4d 6 2f 6 2f 3d n i p no p name p score 0 p score 1 p score 2 p score 3 p sum p average p order p p next printf end n getch 输入任一键返回主菜单 clrscr 清屏 删除记录 STUDENT delete STUDENT h STUDENT p q p 为查找到要删除的结点指针 q 为其前驱指针 char s 12 存放学号 char pass wenwei28 char a 20 b NULL int i 0 clrscr printf Input your password while i0 a i NULL putchar 8 退格键 putchar 以空格代替 putchar 8 else putchar 7 没有任何字符的退格 响铃警告 else if b r a i b 只要不是退格和回车就接受 putchar else a i NULL break 密码输入完了 记得加个 NULL 到后面 if strcmp a pass 0 clrscr printf Password is mistake Tow seconds to return sleep 2 clrscr return h else printf Password is OK Welcome to come sleep 3 clrscr 清屏 printf please deleted no n 显示提示信息 scanf s s 输入要删除记录的学号 q p h 给 q 和 p 赋初值头指针 while strcmp p no s 将 p 指针值赋给 q 作为 p 的前驱指针 p p next 将 p 指针指向下一条记录 if p NULL 如果 p 为空 说明链表中没有该结点 printf nlist no s student n s sleep 2 clrscr return h else p 不为空 显示找到的记录信息 printf have found n printf no name sc1 sc2 sc3 sc4 sum ave order n printf n printf 12s 15s 4d 4d 4d 4d 6 2f 6 5 2f 3d n p no p name p score 0 p score 1 p score 2 p score 3 p sum p average p order printf end n getch 按任一键后 开始删除 if p h 如果 p h 说明被删结点是头结点 h p next 修改头指针指向下一条记录 else q next p next 不是头指针 将 p 的后继结点作为 q 的后继结点 free p 释放 p 所指结点空间 printf n have deleted No s student n s printf Don t forget save n 提示删除后不要忘记保存文件 sleep 2 clrscr return h 返回头指针 按名字查找记录 void lookup STUDENT h STUDENT p 移动指针 char s 15 存放姓名的字符数组 clrscr 清屏幕 printf please enter name for lookup n scanf s s 输入姓名 p h 将头指针赋给 p while strcmp p name s 移动指针 指向下一结点 if strcmp p name s 如果 p 结点不是要找的记录 注意不能 用 p NULL 做判断条件 因为不能判断最后一个结点 printf nlist no s student n s sleep 2 clrscr 显示 没有该学生 else 显示找到的记录信息 printf n n havefound n printf nO name sc1 sc2 sc3 sc4 sum ave order n printf n printf 12s 15s 4d 4d 4d 4d 6 2f 6 2f 3d n p no p name p score 0 p score 1 p score 2 p score 3 p sum p average p order printf end n getch clrscr 保存数据到文件 void save STUDENT h FILE fp 定义指向文件的指针 STUDENT p 定义移动指针 char outfile 10 保存输出文件名 clrscr printf Enter outfile name for example c f1 te txt n 提示 文件名格式信息 scanf s outfile if fp fopen outfile wb NULL 为输出打开一个二进制文件 如 没有则建立 printf can not open file n sleep 2 clrscr printf nSaving file n 打开文件 提示正在保存 p h 移动指针从头指针开始 while p NULL 如 p 不为空 fwrite p sizeof STUDENT 1 fp 写入一条记录 p p next 指针后移 fclose fp 关闭文件 printf save success n 显示保存成功 getch clrscr 从文件读数据 STUDENT load STUDENT p q h NULL 定义记录指针变量 FILE fp 定义指向文件的指针 char infile 10 保存文件名 clrscr printf Enter infile name for example c f1 te txt n scanf s infile 输入文件名 if fp fopen infile rb NULL 打开一个二进制文件 为读方式 printf can not open file n 如不能打开 则结束程序 sleep 2 clrscr return h printf n Loading file n p STUDENT malloc sizeof STUDENT 申请空间 if p printf out of memory n 如没有申请到 则内存溢出 sleep 2 clrscr return h 返回空头指针 h p 申请到空间 将其作为头指针 while feof fp 循环读数据直到文件尾结束 if 1 fread p sizeof STUDENT 1 fp break 如果没读到数据 跳出循环 p next STUDENT malloc sizeof STUDENT 为下一个结点申请 空间 if p next printf out of memory n 如没有申请到 则内存溢出 sleep 2 clrscr return h q p 保存当前结点的指针 作为下一结点的前驱 p p next 指针后移 新读入数据链到当前表尾 q next NULL 最后一个结点的后继指针为空 fclose fp 关闭文件 printf You have success read data from file n getch 按任意键返回主菜单 clrscr return h 返回头指针 成绩统计 void computer STUDENT h STUDENT p t q 定义移动指针 float saverage N 0 均分初值为 0 int i clrscr for i 0 iscore i 累加总分 j 统计记录条数 p p next 指针后移 saverage i float s j 求均分 均分为浮点数 总分为整数 所 以做类型转换 p h while p NULL if p score i saverage i n p p next 指针后移 else p p next printf score d average is 5 2f Big in the arerage numbers d n i 1 saverage i n p h q h while p NULL 当 p 不为空时处理 if p score i score i p p next else q p p p next printf n n n STUDENT n printf rec nO name sc1 sc2 sc3 sc4 sum ave order n printf n printf 3d 10s 15s 4d 4d 4d 4d 4 2f 6 2f 3d n i 1 q no q name q score 0 q score 1 q score 2 q score 3 q sum q average q order printf end n getch clrscr 修改信息 STUDENT Modify STUDENT h STUDENT p q info q 是前驱结点 p 指向插入位置 info 指新插入 记录 char s 11 保存修改点位置的学号 int s1 i clrscr printf nplease new record n 提示输入记录信息 info STUDENT malloc sizeof STUDENT 申请空间 if info printf nout of memory 如没有申请到 内存溢出 sleep 2 clrscr return NULL 返回空指针 inputs enter no info no 11 输入学号并校验 if info no 0 clrscr return h 如果学号首字符 为 则结束输入 清屏后返回 inputs enter name info name 15 输入姓名 printf please input d score n N 提示输入分数 s1 0 保存新记录的总分 初值为 0 for i 0 iscore i if info score i 100 info score i score i 100 info score i score i 计算总分 info sum s1 将总分存入新记录中 info average float s1 N 计算均分 info order 0 名次赋值 0 info next NULL 设后继指针为空 p h 将头指针赋值给 p while strcmp p no info no 将指针 p 后移 if strcmp p no info no 如时没有第到 说明没有指定结点 strcpy p no info no strcpy p name info name p score 0 info score 0 p score 1 info score 1 p score 2 info score 2 p score 3 info score 3 p sum info sum p average info average p order info order printf Modify success n printf Don t forget save n 提示删除后不要忘记保存文件 sleep 2 clrscr return h 返回头指针 else printf n Find out No s student n info no sleep 2 clrscr return h 返回头指针 排序 STUDENT sort STUDENT h int i 0 保存名次 STUDENT p q t h1 定义临时指针 clrscr h1 h next 将原表的头指针所指的下一个结点作头指针 h next NULL 第一个结点为新表的头结点 while h1 NULL 当原表不为空时 进行排序 t h1 取原表的头结点 h1 h1 next 原表头结点指针后移 p h 设定移动指针 p 从头指针开始 q h 设定移动指针 q 做为 p 的前驱 初值为头指针 while t sumsum 待排序点值小 则新表指针后移 p p next if p q p q 说明待排序点值大 应排在首位 t next p 待排序点的后继为 p h t 新头结点为待排序点 else 待排序点应插入在中间某个位置 q 和 p 之间 如 p 为空则是 尾部 t next p t 的后继是 p q next t q 的后继是 t p h 已排好序的头指针赋给 p 准备填写名次 while p NULL 当 p 不为空时 进行下列操作 i 结点序号 p order i 将名次赋值 p p next 指针后移 printf sort sucess n 排序成功 sleep 2 clrscr r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年版合同模板:房地产买卖合同
- 2025年关于信息系统集成的合同
- 2025年初级水质化验员考试试题及答案
- 年产电器塑料配件400万件、纸箱100万个新建项目环评报告表
- 2025年食品机械期末试卷及答案
- 港口物流智能化与港口物流技术创新对2025年港口竞争力提升的协同效应报告
- 锅炉配电知识培训课件
- 2025年助听器验配师考试试题及答案
- 2025餐饮服务员劳动合同版
- 土方工程塌方处理方案(3篇)
- 专家顾问聘用合同协议书范本7篇
- 2025房屋买卖合同范本(下载)
- 融合教育课件
- 2025年常州市中考英语试卷(含标准答案及解析)
- 1.1《土壤里面有什么》课件 2025-2026学年苏教版科学三年级上册
- 1.2我们都是社会的一员 课件- 2025-2026学年统编版道德与法治八年级上册
- 2025年北师大版新教材数学一年级上册教学计划(含进度表)
- DB33 1121-2016 民用建筑电动汽车充电设施配置与设计规范
- 人教版2024-2025学年七年级数学上册教学计划(及进度表)
- CNAS和CMA需要编制的表单
- 乐软物业经营管理系统V8.0操作手册
评论
0/150
提交评论