资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计报告 35 课课 程程 设设 计计 报报 告告 课程设计名称 C 语言课程设计语言课程设计 课程设计题目 小学数学学习系统 课程设计报告 35 目目 录录 第第 1 章章 概要设计概要设计 3 1 1 题目的内容与要求 3 1 2 总体结构 3 第第 2 章章 详细设计详细设计 4 2 1 数据结构设计 4 2 2 功能设计 4 2 2 1 学生信息存储模块 4 2 2 2 菜单选择模块 5 第第 3 章章 调试分析调试分析 10 第第 4 章章 使用说明使用说明 11 参考文献参考文献 19 附附 录 源代码 录 源代码 21 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 小学数学学习系统 菜 单 选 择 模 块 试 题 测 试 模 块 得 分 与 排 名 模 块 学 生 信 息 存 储 模 块 第 1 章 概要设计 1 1 题目的内容与要求题目的内容与要求 内容 1 具有随机出题功能 且可以选择难度等级 不要混合运算功能 2 自动评分功能 当用户电答题后能给出用户的分值 3 查看正确答案 4 错题重做功能 要求 1 用户登录 2 程序采用文本菜单界面 1 2 总体结构总体结构 本程序主要分为 5 个模块 功能模块图见图功能模块图见图 1 1 1 学生信息存储模块 2 菜单选择模块 3 试题测试模块 4 得分与排名模块 图图 1 1 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 第 2 章 详细设计 2 1 数据结构设计数据结构设计 首先定义结构体数组存储学生信息 注册 录入学生个人信息 将学生信息储存在 TXT 文档中 用指针写入文件 用 while 循环语句开始写入测试等级难度 保存正确结果 计算正确率 最后查看排名 2 2 功能设计功能设计 2 2 1 学生信息存储模块学生信息存储模块 main 函数实现程序的菜单操作 根据用户选择的不同选项调用不同的函数 实 现 注册 输入学号 选择难度答题 返回主菜单 等功能 具体情况流 程图如图 2 1 所示 算法 1 在屏幕上输出 请注册 选项 2 接受用户输入 N Y N Y N Y 图图 2 1 开 始 打开 studentmessage 打开 TestResult 文件 打开 failedResult 文件 输出 输入 姓名学号 结 束 文件打开失败 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 2 2 2 菜单选择菜单选择模块模块 N Y 图图 2 2 开 始 1 开始测试 2 查看排名 3 错题重做 4 查看结果 5 结束测试 定义 choose time 0 输出 选择功能 输入 选择 如超出范围 请重新选择 Choose 1 输入当前时间 读入且清屏 Choose Func2 1 2 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 N N Y N Y 图图 2 3 12 Choose 2 清 屏 Sort by chengji Choose Fun2 Choose 3 Choose 4 清 屏 Rework choose Func2 清 屏 File copy test aver 清 屏 Show result Choose func2 结 束 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 2 2 3 试题测试模块试题测试模块 图图 2 4 开 始 打开 TestResult 输入 num1 num2 num3num4 m n count 1 count2 0 average 输出 加法测试 被加数 加数 结 果 选择难度 1 简单 2 一般 3 困难 输出 打开文件 失败 读入数字且赋值于 m 超出范围请重新选择 根据 m 运算的难度 及算式的位 数 1 2 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 图图 2 5 2 2 4 得分与排名模块得分与排名模块 写入信息写入信息 1 结果正确 读入结果 Count2 count2 1 Average count1 count2 输出正确 错误 正确 率分别为 count1 count2 averag e 结 束 2 Average count1 count2 打开文件 关闭文件 开 始 沈阳航空航天大学课程设计报告 第 2 章 详细设计 35 是是 否否 图图 2 6 打开文件 写入结构 体数组 s j s j 1 交换位置 s i 沈阳航空航天大学课程设计报告 第 3 章 调试分析 35 第 3 章 调试分析 在上机调试过程中遇到许多问题 1 引用库函数的头文件写成 include stdio 2 变量 int 类型未先定义后使用 仔细思考总结 查阅教材解决 3 将学生信息输入后答题 但发现无法进行下一步功能 解决办法 按 F10 键进行单步调试 首先发现指向文件数据的指针没有数据 然后 对文件直接进行数据加入 发现其他功能能够实现 然后对指向文 件数据的指针进行修改 发现无论怎样修改数据都无法进入到文件 于是对数据输入函数进行修改 发现犯了一个比较低级的错误 scanf 输入数据时忘记 菜单 项 调用 Savemessage 进行注册和保存信息 如图 2 2 开始测试 开始测试 注册后 显示主菜单 ChooseFunc1 如图 选择 1 进入开始测试模块 此时引入时间 定义全局变量 hour1 和 min1 scanf d d 手动输入这两个数 如图 之后出现 ChooseFunc2 菜单功能选择函数 如图 这里的五个选项用 while 循环使超出功能范围的不能实现 重新选择选项 沈阳航空航天大学课程设计报告 第 4 章 使用说明 35 再用 switch 语句选择执行功能 case1 程序如下 switch choose case 1 system cls printf 加法测试 输入要测试的题目数 5 10 20 50 100 scanf d while thnum5 scanf d Addition thnum ChooseFunc2 break system cls 为系统清屏 其他的选项也是如此 下面以加法为例说明一下运 算程序 加法源程序如下 void Addition int number FILE fp fp2 fp3 if fp fopen TestResult txt a NULL printf 打开文件失败 n exit 0 if fp2 fopen failedResult txt a NULL printf 打开文件失败 n exit 0 if fp3 fopen rightResult txt a NULL printf 打开文件失败 n exit 0 int num1 num2 num3 num4 m n count1 0 count2 0 float average srand time 0 fprintf fp 加法测试 n fprintf fp 被加数 加数 你的结果 是否正确 n 沈阳航空航天大学课程设计报告 第 4 章 使用说明 35 printf n printf 选择难度 n printf 1 简单 n printf 2 一般 n printf 3 困难 n printf n printf 请选择难度 1 2 3 scanf d while m3 printf 超出功能范围 请重新选择 1 2 3 scanf d system cls if m 1 n 10 if m 2 n 100 else if m 3 n 1000 for int i 0 i number i if m 1 num1 rand n num2 rand n if m 2 num1 10 rand n 10 num2 10 rand n 10 if m 3 num1 100 rand n 100 num2 100 rand n 100 num3 num1 num2 printf d d num1 num2 scanf d if num3 num4 fprintf fp d d d n num1 num2 num4 count1 else fprintf fp d d d n num1 num2 num4 count2 fprintf fp3 d d d n num1 num2 num3 fprintf fp2 d d n num1 num2 沈阳航空航天大学课程设计报告 第 4 章 使用说明 35 fclose fp2 fclose fp3 average float count1 float number fprintf fp 正确 d 道 错误 d 道 正确率为 f n n count1 count2 average A A average 100 c c 1 fclose fp 定义三个文件指针分别指向三个文件 打开文件开始记录数据 number 为 题目数形参 srand time 0 初始化随机数 如果没有此语句 则每次运行程 序时的随机数是一样的 fprintf 是向指定的文件中输入 然后开始选择难易程 度 同上 先确定可选范围 用随机函数 num1 rand n num2 rand n num3 num1 num2 产生两个随 机数分别给加数和被加数 num3 储存的是正确答案 为了使 1 2 3 与难易联系 起来 使用 if m 1 n 10 if m 2 n 100 else if m 3 n 1000 来实 现转换 当 m 为 1 时 将 n 10 带入 num1 rand n 中 将产生一位数的随机数 即简单题 同理 当 m 为 2 时 num1 10 rand n 10 num2 10 rand n 10 rand n 10 的随机数的取值范围是 0 89 加上 10 后取值范围为 10 99 所以将产生两位数的随机数 即一般题 当 m 为 3 时 num1 100 rand n 100 num2 100 rand n 100 同样 rand n 100 的取值范围为 0 899 加上 100 后为 100 999 所以将产生三位数的随机数 即困难题 此时出题完毕 沈阳航空航天大学课程设计报告 第 4 章 使用说明 35 将输入的数与正确答案相比较 如果正确的话 则将该题存入文件 rightResult txt 中 错误的话 则将该题存入文件 failedResult txt 中 用以 用户查看和错题重做模块 变量 count1 记录正确题目的个数 变量 count2 记录 错误题目的个数 然后将这两个文件关闭 再算出平均值 并将上面的值放入文 件 TestResult txt 中 关闭文件 A 和 c 为全局变量 为后面的排名做准备 特 别注意在除法中 除数不能为零 所以另外加个 for 循环 for num2 0 num2 rand n 使分母不出现零 返回主菜单时 会输 入结束时间 之后会计算做题时间 3 3 查看排名模块 查看排名模块 主菜单中选 2 调用 sortbychengji 函数 程序清单 void sortbychengji FILE fp5 int i j m n N 1 student 0 avscore A c fp5 fopen nrecord txt a fprintf fp5 s s f n student 0 name student 0 num student 0 avscore fclose fp5 沈阳航空航天大学课程设计报告 第 4 章 使用说明 35 fp5 fopen nrecord txt rb for i 0 feof fp5 i fscanf fp5 s s f n student i name student i num fclose fp5 m i struct Student temp for i 0 i m i n 0 for j 0 j m 1 j if student j avscore student j 1 avs
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号