C课程设计报告_第1页
C课程设计报告_第2页
C课程设计报告_第3页
C课程设计报告_第4页
C课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

C C 课程设计报告课程设计报告 题题 目 目 小学算术运算测试 设设 计计 者 者 刘星 刘俊良 凌锋 专业班级 专业班级 计算机网络 0901 班 学学 号 号 34 33 37 指导教师 指导教师 任长安 所属系部 所属系部 计算机与信息科学系 20102010 年年 6 6 月月 2020 日日 目 录 1 程序功能简介 1 2 主题内容 1 2 1 程序算法 1 2 2 程序结构及主要过程 3 2 3 程序模块功能说明 4 2 4 源程序 4 2 5 操作方法 8 2 6 试验结果 9 3 课程设计总结 10 3 1 设计过程的感受与体会 11 3 2 遇到的问题与解决方法 11 4 附录 11 4 1 程序流程图 12 4 2 程序中主要变量 函数列表 13 4 3 参考文献 14 1 1 程序功能简介 本程序为小学数学运算 10 以内加减法测试系统 该系统的功能如下 能根据输入的题号出题 能判断做题是否正确 能统计测试分数 能给出评语 2 主体内容 2 1 程序算法 本程序共分为五个模块 出题模块 答题模块 检查计分模块 评分模块 评价模块 下面分别对这五个模块的算法做一下介绍 出题模块 一个答题系统自然而然首先就是要有题目且能够根据条件出题 在本模块中 首先设了一个含有 15 个指针的指针数组 指针数组里的每个指 针都指向了相应题号的选择题 这样就实现了对题目的储存 然后用 scanf 函 数来实现从键盘上输入题号 用 if 语句控制输题的范围 题号不在 1 15 的范围内 就提示选题出错 在输入题号的过程中输入相同题号是在所难免的 但是在答题系统中输入相同题号显然没有意义 所以另外设了一个静态一维数 组来储存已输过的题号 且数组的第一个元素初始化为 0 然后每输入一个题 2 号就赋给这个数组 同时用 for 语句来使当前的题号一一与储存在一维数组中 已输过的题号进行比较 如题号有相同 就提示重答 重答的功能是通过对出 题模块函数的递归调用来实现的 如题号没有相同 就通过输入的题号借助指 针数组里的指针找到与题号对应的选择题 用 puts 函数来实现对选择题的输 出 最后用 return 语句将其他模块返回来每道题的小分数返回到主函数中 在主函数中调用出题模块函数 答题模块 出完题后 自然是从键盘上输入答案了 在本模块中 提示输 入答案后 用 scanf 函数来实现使从键盘上输入的一个答案选项 A B C D 赋给一个用来记录答案的字符变量 用 return 语句将这个变 量返回到出题模块中 在出题模块函数中调用答题模块函数 检查计分模块 输入答案选项后 就要判断答案的正确性和计分了 在本 模块中 要设一个字符数组来储存每道题的正确答案 用 if 语句来控制在答 题模块中输入的答案是否为 A B C D 中的某一个 若不是 就提示选的答 案不在答案范围内 若是 根据在出题模块中输的题号使在答题模块中输入的 答案选项与储存正确答案数组中的相应答案选项相比较 若相同 就提示答案 正确 与此同时用变量记录下这道题所得的小分 否则 就提示答案错误并给 出当前题目的正确答案 不计分 用 return 语句将得分返回到出题系统中 在出题模块函数中调用检查计分模块函数 评分模块 做完题后 就要根据做题的对错个数来评分 在本模块中 首 先就要提示题目全做完 用 switch 语句根据总小分来选择性地选出 11 个不同 的分数 0 10 20 30 40 50 60 70 80 90 100 中的一个分数 并 且打印出该分数 在主函数中调用评分模块函数 3 评价模块 最后一步就是要根据不同的总得分段来给出不同的评语 在本 模块中 用 if 语句根据不同的总分数段来打印出不同的评语 在主函数中调 用评价模块函数 主函数将这五个模块直接地或间接地联系在一起 使它们构成本程序 现 在就来介绍主函数的算法 主函数对出题模块函数 评分模块函数 评价模块函数进行了调用 首先 提示开始答题 为了要答 10 次题 就要设一个 for 语句来控制对出题模块函 数调用的次数 即需要答一定次数的题 与此同时用一个变量来累加由出题模 块函数返回来每道题的小分数 接下来分别对评分模块函数和评价模块函数进 行调用 以上就是对本程序算法的介绍 2 2 程序结构及主要过程 本程序共包含了顺序结构 选择结构 循环结构三种在 C 程序中的主要结 构 其中穿插了数组 一维数组 字符数组 指针 指针数组 函数调用 递归调用 等知识 该程序覆盖了本学期所学的除结构体外的大部分知识 本程序结构和过程思路如下 为了要答题 首先要有题目 设一个指针数 组来实现 把相应的题目调出 应用指针的功能实现 调出题目后 就要给用 户答题了 用一个输入函数实现 再经过系统的判断 用一个字符数组储存正 确答案结合判断语句实现 最后累加计分 用循环结构实现 4 总之 该程序的总体结构和过程很好的体现了现在所提倡的对一个程序结 构模块化的思想 具体见附录 4 1 程序流程图 2 3 程序模块功能说明 本程序一共有五个模块 它们分别是 出题模块 question out 答 题模块 answer 检查计分模块 check 评分模块 count 评价 模块 assessment 现在就来分别介绍这五个模块的功能 1 出题模块 question out 这一模块主要负责对题目的储存和对 题目的调出这两个功能 2 答题模块 answer 这一模块主要负责将用户端的答案通过键盘 输入到系统 3 检查计分模块 check 这一模块主要负责检查判断用户所提供的 答案是否正确并根据它来记录每题所的总分 4 评分模块 count 这一模块主要负责统计总得分并打印 5 评价模块 assessment 这一模块主要负责根据给出的总得分打 印相应的评语 总之这五个模块都有着各自的功能且互相联系 五者在程序中缺一不可 5 2 4 源程序 include include getch 函数包含在 conio h 头文件内 void main 主函数 main int question out int u 声明三个函数 question out count void count int c assessment 函数的作用分别是出题 打印分 void assessment int k 数 评价 int i co sum 0 定义三个变量 printf please choose 10 question from 1 15 question attention if question number or question option is error no grade n 用户提示 printf n for i 0 i 9 i 用 for 循环控制出题次数 co question out i 函数调用 调用 question out 函数 完成出题的功能 co 变 量记录每道题的得分 sum sum co 累计得分 printf n count sum 调用函数 count 完成打印分数的功能 assessment sum 调用函数 assessment 完成对做题好坏评价的功能 getch 功能 无返回到界面 int question out int u 定义 question out 函数 char answer 声明 answer 函数以及 check 函数 函数的作用分别是从 键 盘输入答案 储存题目答案和核对答案 int check char q int i char t 15 1 2 4 nA 6 B 5 C 7 D 9 2 1 4 nA 2 B 3 C 4 D 5 3 8 7 nA 3 B 5 C 2 D 1 4 6 3 nA 4 B 7 C 9 D 8 5 9 4 nA 4 B 5 C 6 D 7 定义了包含 15 个指针的指针数组 6 6 3 nA 1 B 2 C 3 D 4 15 个指针分别指向 15 个选择题 7 4 4 nA 4 B 5 C 8 D 9 8 2 2 nA 0 B 2 C 1 D 4 9 1 0 nA 2 B 1 C 3 D 0 10 6 1 nA 2 B 3 C 4 D 5 11 6 8 nA 10 B 15 C 14 D 13 12 10 7 nA 16 B 17 C 18 D 19 6 13 10 8 nA 18 B 7 C 2 D 3 14 14 9 nA 6 B 9 C 7 D 5 15 6 9 nA 14 B 15 C 16 D 17 int i ct flag e m 定义 6 个变量 char qt static int cou 10 定义了一个静态储存数组 用来储存已答过的题 号 e u 1 以使已储存的题号与新题号在 cou 数组内储存地方 cou 0 0 无重复 printf Please input the a question number 1 15 用户提示 scanf d 输入题号 cou e i 将输入过的题号储存在一个数组中 for m 0 m 1 else if k 6 printf assessment you are not good you should endeavour n else printf assessment you are bad you should change learn way n 用 if else if else 语句根据 得的分数打印出相应的评语 2 5 操作方法 本程序的操作如下 提示 please choose 10 question from 1 15 question attention if question number or question option is error no grade 提示 Please input the a question number 1 15 if 输入 9 出现 9 1 0 nA 2 B 1 C 3 D 0 提示 Please input answer A B C D if 输入 B 出现 answer is ture 10 else if 输入 A 或 C 或 D 出现 answer is faulse should choose B sorry no grade 9 else 出现 you choose error option sorry no grade else 输入大于 15 或小于 0 的数 出现 this question number is error sorry no grade 循环 连续答十次 如果答下一题 输入了相同的题号 则出现 this question number is same please choose question number again 重复进行以上步骤 假如答了 10 次且全部答对 出现 your questions have been finished 出现 you get 100 出现 assessment you are good you should keep this grade 完成 2 6 试验结果 10 3 课程设计总结 3 1 设计过程中的感受与体会 为了增强我们的 C 程序的实际操作与设计能力和团队合作能力 我们三人 一起共同编写了这个答题系统 下面就来谈下我们在这次程序设计过程中的感 受与体会 从程序的整体构思到程序的算法设计及程序的编写再到最后程序的调试 我们经历了重重困难和考验 但是我们并没有放弃 我们运用本学期所学到的 知识和课外的一些知识 从 想 到 查 再到 问 最后完成了该系统 在设计过程中 我们不仅仅是完成了一个系统 更重要的是 我们在这次设计 11 中巩固了本学期所学到的知识 锻炼了自己的实践能力 进而锻炼了我们的团 队合作能力 众所周知 一个程序的设计 最终能否成功 关键是要看设计团 队内部是否团结 而我们这次共同设计这个系统并最终取得成功 我们三个人 一致认为 成功的最主要的一个因素就是我们三个人团结合作 因为从这个系 统的开始构思到系统的最后调试成功 不是哪一个人的功劳 每个人都付出了 很多 另外在这次设计的过程中 我们懂得了在设计遇到困难的时候怎样去解 决这个困难 从书上 网上查阅资料 向比我们知识丰富的人虚心请教 这 是我们解决问题的主要方法 这样也同时扩宽了我们的知识面 打破了课堂的 局限 在以后的人生道路中 我们也应该保持住 团结 多查 多问 的精神 只要这样 我们相信今后我们的人生道路会像这次程序设计一样取得成功 以上就是我们三人在这次程序设计过程中的感受与体会 3 2 遇到的问题与解决方法 在设计本系统的过程中 并不是一帆风顺的 设计与调试期间我们 也遇到了很多困难 现在就将我们遇到的困难和困难的解决方法列出 1 在输入题号的时候 因为 scanf 函数后面就遇到答案输入 scanf 函数 所以在输入了题号后按回车 回车被输入答案的 scanf 函数所接 收 本应接收答案却接收了回车 那自然就不对了 经过查找资料 我 们想到了解决方方法 在两个 scanf 函数的中间插入一个接收字符的函 数 getchar 以接收回车字符 这样问题就迎刃而解了 2 遇到相同题号要重答的功能是我们最后才添加进去的 这一功 12 能是我们设计这一程序中遇到的最大困难 我们解决的时间也最长 最 后我们想到的解决方法是定义一个数组来储存已输过的题号 这样在每 输入题号存入数组的同时与数组里的先前元素比较 如相同 就进行到 函数的递归调用 就完成了重答的功能 如不相同 就按正常的顺序进 行 这样 这一功能的缺失 被我们完美的弥补 相信这些问题和解决方法是我们学习的重要的资料 4 附录 4 1 程序流程图 定义三个变量 用 for 循环控 制出题次数 声明三个函数 声明 answer 函数以及 check 函 数 定 义 了 包 含 15 个 指 针 的 指 针 数 组 定义 6 个变量 循环条件和循 环体 函数调用 主

温馨提示

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

评论

0/150

提交评论