C语言实训报告模板_第1页
C语言实训报告模板_第2页
C语言实训报告模板_第3页
C语言实训报告模板_第4页
C语言实训报告模板_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

XXXX 大学 实 训 报 告 课程名称 C 语言程序设计课设 项目名称 BBCC 系统 学 院 专 业 姓 名 学 号 指导教师 成 绩 年月日 目目 录录 第第 1 部分部分 课程设计题目与要求课程设计题目与要求 2 1 问题描述 2 2 功能要求 2 3 任务分工 2 第第 2 部分部分 学生学生 BBCC 系统系统 的设计与功能实现的设计与功能实现 3 1 总体设计 3 2 数据结构 3 3 算法设计 3 4 程序代码设计 3 5 测试与调试 3 第第 3 部分部分 课程设计总结课程设计总结 4 1 个人总结 4 2 结束语 4 附录附录 程序清单程序清单 5 附录附录 用户用户使使用用说明书说明书 5 参考文献参考文献 5 第第 1 部分部分 课程设计题目与要求课程设计题目与要求 1 问题描述问题描述 AACC 系统要求实现日常中对于 AA 的一些基本 CC 操作 建立 AA 文件 买饭 续钱 添加新 AA 注销旧 AA 设置与解除挂失等操作都要求能成功的 在构建的平台上进行准确的处理 2 功能要求功能要求 程序输出主菜单 如下 然后提示用户选择操作 请输入选项编号 1 7 1 建立 AA 文件 2 买饭 3 续钱 4 添加新 AA 5 注销旧 AA 6 设置与解除挂失 7 信息查询 在主菜单中选择 1 建立名为 card dat 的文件 并在其中添加若干人的 AA 号 姓名 金额 挂失信息 要求输入的 AA 号是唯一的 在主菜单中选择 2 要求用户输入 AA 号 饭费 然后系统自动从该人的 AA 中减去饭前 并分别显示买饭前后的金额 如果原来 AA 中的余额不足 5 元 则不能买饭 而且显示 余额不足 请续钱 如果挂失信息为真 则显 示 本卡已冻结 在主菜单中选择 3 要求用户输入 AA 号 续钱额 续钱完成后分别显示 续钱前后的金额 在主菜单中选择 4 添加新 AA 这是要求新 AA 号和已有的 AA 号不能重 号 在主菜单中选择 5 注销旧 AA 在主菜单中选择 6 要求用户输入 AA 号和挂失信息 然后更新该 AA 的 挂失信息 在主菜单选择 7 然后用户选择查询方式 便可查询已存储信息的用户的 卡号 姓名 卡上余额以及挂失锁定状态等信息 3 任务分工任务分工 组长 负责对于主要函数的调试 调试的函数为 mycreate mybuy myplus myadd myzhux mylock 并将主程序调通并写部 分设计报告 组员 负责部分函数的调试 调试的函数为 myprint main myinfo 协助组 长整理设计报告 并调试数据 第第 2 部分部分 学生学生 BBCC 系统系统 的设计与的设计与 功能实现功能实现 1 总体设计总体设计 AACC 系统模块图 主模块 显示主菜单 创建 AA 文件 买饭 充值 添加新 AA 新 AA 注销旧 AA 设置和解除挂失 信息查询 不满足购买能力满足购买能力 卡号查询姓名查询 程序通过主模块调用其他函数来实现各种要求实现的功能 显示主菜单模块通过调用 myprint 函数显示主菜单 提示使用的用户改执 行的操作 实现基本的人机对话 创建 AA 文件模块通过调用 mycreat 函数实现新建一个文件存储所要用户信 息 从而实现程序的第一步操作 买饭模块通过调用 mybuy 函数实现已存储用户信息的用户买饭的功能 充值模块通过调用 myplus 函数实现已存储用户信息的用户为自己的卡号充 值的功能 添加新 AA 模块通过调用 myadd 函数实现添加在数据库中无用户信息的新用 户的信息 注销旧用户模块通过调用 mylogout 函数实现删除已存储用户信息的用户的 信息 设置和解除挂失模块通过调用 mylock 函数实现对用户的锁定信息的解除和 执行操作 从而实现对于用户出现卡号丢失等情况时保护功能 信息查询模块作为创新通过调用 myinfo 通函数实现用户通过卡号或姓名查 询用户的卡号 姓名 卡上余额以及挂失锁定状态 2 数据结构 数据结构 在程序中为了实现对于对于 AA 进行 CC 我们定义了 struct card char num 10 char name 10 float money int lock 其中 card num 是用来存储用户的卡号信息 card name 用来存储用户的姓 名信息 card money 用来存储用户的卡上即时余额 card lock 用来记录用户 的锁定信息 4 算法设计算法设计 采用模块化的思想 按照 自顶而下 逐步细化 的原则设计算法 1 菜单的设计 主函数的作用主要是调用myprint函数显示主界面 由于菜单比较简单所 以采用 printf 函数将菜单项注意打印在屏幕上 边框则采用 printf 输出 拼 接起来实现人机对话的第一步 然后通过读取用户的输入 调用switch函数对用户的输入进行进一步的 0 1234567其他 开始 调用 myprint 函数 输入 choose 的值 Choose 输入 yes no yes no n 或 N 或 y 或 Y 调用 mycreat 结束 调用 mybuy 调用 myplus 调用 myzhux 调用 myadd 调用 mylock 调用 my非法 选项 yes no y 或 Y 假 假 真 真 主函数流程图 处理 并使用do while函数实现用户的选择性的重复操作 我们为用户提供了一个正常的出口 我们采用人机对话的形式 用户选择 某一菜单以后 程序完成对于的功能 然后询问用户是否继续选择 用户即可 退出也可以继续输入 而且主菜单 0 选项也可正常退出 2 设计各模块的算法 这是主板细化的过程 为了实现 AACC 程序创建 AA 文件模块创建新的 AA 文件的功能 模块调用 mycreat函数以实现这一目的 函数使用指针创建名为card dat的文件来对所要处理和保存的用户信息进行 入口 是否覆盖 打开文件 打开成功 输入卡号 输入姓名 输入卡上金额 出口 合法记录 将记录写入文件 记录数加 1 输入卡号 输入姓名 输入卡上金额 关闭文件 结束 mycreat 函数流程图 存储 并在开始的时候提示用户执行这步操作将会覆盖以前的数据 然后先定 义将要使用变量 然后程序一步步的提示用户进行输入卡号 姓名 充值等操 作 并规定了一切的新建用户属于非锁定状态 并且标识每次的输入的次数 提示用户存储了多少为用户的用户信息 程序 v1 0 版使用的是输入任意 号后退出输入 输入完毕后系统自动关闭 文件并存储所键入的用户信息在所建立的文件内 为了实现用户使用 AACC 程序买饭的功能 买饭模块调用 mybuy 函数以实 现这一功能 函数被调用后先定义需要使用的变量 然后通过while 的调用来检测程序 被提供的数据读取文件是否存在 在确定存在的文件有数据的同时使用定义的 入口 输入卡号 打开文件 出口 打开成功 有记录 正确卡号 是否挂失锁定 余额充足 关闭文件 关闭文件 文件结束 读文件 到数组 卡号为空 打开文件 写文件 输入购买金额 数组结束 处理余额 结束 结束 结束 否 否 否 否 是 否 否 是 是 是 是 是 否 是 是 否 mybuy 函数模块图 结构体数组来记录存在的用户信息 然后提示用户输入想要买饭是使用的 AA 号 如果没有发先用户输入的卡号将返回主菜单 确定输入的卡号有记录以后 输 出用户卡上的余额 然后检查卡号是否被执行挂失锁定 锁定的话便返回主菜 单 系统然后检查用户卡号的余额是否大于 5 元 小于等于 5 元的时候 程序 返回主菜单 余额充足的时候便提示用户输入想要买饭的金额 然后处理用户 卡上余额 并将用户的卡上即时余额打印在屏幕上 然后程序打开 card dat 文件存储即时的数据 然后关闭文件 完成了用户 的买饭的过程 返回主菜单 为了实现用户在帐号上余额不足时使用 AACC 程序为卡号的的功能 买饭 入口 输入卡号 打开文件 出口 打开成功 有记录 正确卡号 是否挂失锁定 关闭文件 关闭文件 文件结束 读文件 到数组 卡号为空 打开文件 写文件 输入充值金额 数组结束 处理余额 结束 结束 结束 否 否 否 否 是 否 是 是 是 是 否 是 是 否 myplus 函数流程图 模块调用 myplus 函数以实现这一功能 函数被调用后先定义需要使用的变量 然后通过while 的调用来检测程序 被提供的数据读取文件是否存在 在确定存在的文件有记录的同时使用定义的 结构体数组来记录存在的用户信息 然后提示用户输入想要充值的 AA 号 如果 没有发先用户输入的卡号将返回主菜单 确定输入的卡号有记录以后 输出用 户卡上的余额 然后检查卡号是否被执行挂失锁定 锁定的话便返回主菜单 没锁定的提示用户输入要为输入的卡号充值的金额 处理卡上的余额并 并将 用户的卡上即时余额打印在屏幕上 程序打开 card dat 文件存储即时的数据 然后关闭文件 完成了用户的充 值的过程 返回主菜单 为了实现使用 AACC 系统添加新用户的功能 添加新 AA 模块调用 myadd 函数以实现这一功能 函数被调用后先定义各种将使用的变量 然后通过while 的调用来检测程 序被提供的数据读取文件是否存在 同时使用定义的结构体数组来记录存在的 用户信息 然后提示用户输入想要添加的新用户的卡号 通过 do while 语句并 内嵌 for 语句 if 语句以及 do while 语句来读取用户输入新用户的卡号 同 时确认是否与已有的数据重复 并使用 if 语句可以使用户提前推出输入 得到 用户输入的正确的新用户卡号后 提示用户输入新用户的姓名并为新用户卡号 入口 输入卡号 打开文件 出口 打开成功 重复卡号 关闭文件 关闭文件 文件结束 读文件 到数组 卡号为空 输入充值金额 结束 否是 否 是 重新输入 输入用户姓名 打开文件 数据加入文件 是是 是 否 否 myadd 函数流程图 充值 程序将所有的新添加的用户的挂失锁定状态定义为自由使用状态 成功的将写入文件后 程序关闭 card dat 文件 并返回主菜单 mylogout 函数流程图 为了实现使用 AACC 系统注销旧用户的功能 注销旧用户模块调用 mylogout 函数以实现这一功能 函数被调用后先定义各种将使用的变量 然后通过while 的调用来检测程 序被提供的数据读取文件是否存在 同时使用定义的结构体数组来记录存在的 用户信息 然后程序提示用户输入想要注销的卡号 由于是要删除信息 即使数 据库中无数据也不会影响程序 在然后程序利用for循环内嵌if语句来检查 card dat有没有输入卡号的记录 没有的话直接退出到主菜单 有记录的话将会 入口 输入卡号 打开文件 出口 打开成功 关闭文件 关闭文件 文件结束 读文件 到数组 卡号为空 结束 否是 是 打开文件 用户确定删除 否 否 卡号有记录 数组结束 写文件 是 是 是 否 是 是 删除记录 输出输入卡号的用户的信息 提示用户是否继注销操作 用户觉得退出的话 程序返回主菜单 用户决定继续注销操作后 打开文件 使用for内嵌if语句 来删除注销卡号的信息 成功的注销用户输入的卡号信息后 关闭文件返回主菜单 为了实现使用 AACC 系统设置和接触挂失的功能 设置和接触挂失调用 mylock 函数以实现这一功能 入口 打开文件 打开成功 关闭文件 文件结束 读文件 到数组 结束 否是 卡号为空 输入卡号 存在卡号 卡号状态 关闭文件 出口 写文件 是否锁定 是否解除 执行锁定执行解除 打开文件 结束 结束 数组结束 是 是 是 是 是 是 否 否 否 否 否 mylock 函数流程图 mylock 函数被调用后先定义需要使用的变量 然后通过while 的调用来 检测程序被提供的数据读取文件是否存在 在确定存在的文件有数据的同时使 用定义的结构体数组来记录存在的用户信息 然后提示用户输入想要执行操作 的 AA 号 如果没有发先用户输入的卡号将返回主菜单 确定输入的卡号有记录 以后 输出用户卡上的余额 然后检查卡号是否被执行挂失锁定 然后使用 if else 语句来分别处理两种情况 在锁定的情况下 询问用户是否确定要执行解 除锁定操作 而在非挂失锁定的情况下 询问是否需要执行锁定操作 然后对 用户的数据进行更改 并临时保存 然后程序打开 card dat 文件存储即时的数据 然后关闭文件 完成了用户 对输入卡号的锁定和解除操作的过程 关闭文件返回主菜单继续操作 作为创新模块的信息查询 可以实现用户通过卡号或姓名中的一个查询 入口 打开文件 打开成功 关闭文件 文件结束 读文件 到数组 结束 否是 出口 是 否 查询方式 输入卡号输入姓名 记录存在 输出提示信息 卡号存在 姓名存在 输出用户信息输出用户信息 是是 是 否否 否 myinfo函数流程图 文件有记录的用户的信息 信息查询模块通过调用 myinfo 模块实现用户信息的 查询的功能 myinfo 函数被调用后先定义需要使用的变量 然后通过while 语句的调 用来检测程序被提供的数据读取文件是否存在 在确定存在的文件有数据的同 时使用定义的结构体数组来记录存在的用户信息 然后输出二级菜单 询问用 户选择的查询方法 在用户选择卡号查询和姓名查询中一个选项时 分别提醒 用户输入查询的卡号或姓名 然后检查是否有输入用户的的卡号或姓名 没有 的输出提示信息返回主菜单 有的话输出该用户的信息 然后程序返回主菜单 完成了用户的执行操作 4 程序代码设计 程序代码设计 1 主函数需要读取用户输入的选项 需要成功的调用其他功能的函数 从 而实现程序的各个功能 char select 0 y n 0 首先主函数定义变量语句 select 是读取并临时存储用户的选择的执行项 而 y n 则是用来读取用户输入 判断用户是否继续执行操作 do myprint printf select getch switch select case 1 mycreate break case 2 mybuy break case 3 myplus break case 4 myadd break case 5 mylogout break case 6 mylock break case 7 myinfo break case 0 exit 0 break default printf 错误指令 无法执行 n getch system cls printf n n n n n n 返回继续操作 Y y 退出程序 N n n do y n getch while y n Y while y n Y y n y 使用该语句来实现在用户输入选择项后 程序判断后进入对应模块 并相 应的调用模块使用的函数进行运算 并使用 break 在调用完函数后退出 switch 语句 然后询问用户是否继续操作 使用 do while 语句来确认用户的输入的合法 性 并使用使用 getch 语句来读取 然后使用外层的 do while 判断是否退出循 环 而 myprint 函数简单使用了 printf 语句来显现将主菜单打印在屏幕上的功 能 2 创建 AA 文件的 mycreat 函数需要 4 个参数 其中 strust card 类型的 变量 temp 存储临时的卡号 姓名 卡上金额 锁定状态 int i 型变量用于记 录个数 文件指针 fp 指向记录文件 而 char conti 用于读取用户是否决定继 续 int i 1 struct card temp 0 FILE fp NULL char conti 0 利用指针打开 D 盘目录下名为 card dat 的文件 if 语句用来判断文件是 否存在 fp fopen d card dat w if fp NULL printf n 存储失败 请检查路径和文件名是否正确 return 利用 do while 语句来多次读取用户输入的信息 i 的自加语句来记录输入 记录个数 内嵌的 do while 语句来确定用户输入正确的卡号 并在用户输入完 以后提示用户是否继续输入 do i printf n 开始录入第 d 个数据 n i printf 输入 AA 编号 do gets temp num while strcmp temp num 0 printf 输入 AA 持有者姓名 gets temp name printf 请为建立的 AA 充值 scanf f printf 继续 Y y 结束 N n do conti getch while conti Y temp lock 0 fprintf fp 23s 16s 8 2f 3d n temp num temp name temp money temp lock while conti Y conti y 3 AACC 系统的 mybuy 函数需要 8 个变量 其中 strust card 类型的变量 temp 存储临时的卡号 姓名 卡上金额 锁定状态 strust card 类型的变量 recrord n 记录文件中存储的用户信息 int 类型的 i 用为 for 语句的循环变 量 n 用来记录文件中记录用户信息的用户个数 find 记录输入用户的在文件 中和数组中位置 float 类型的 mon 用来记录用户想要买饭的金额 void mybuy char c 0 int n 0 i find float mon struct card temp 0 record N 0 FILE fp NULL 该语句用来读取并存储文件中的用户信息 并用 n 记录文件中有效的记录 数 但文件中不存在记录时返回主函数并提示用户 while feof fp 0 fscanf fp 23s 16s f 3d n record n num record n name if strcmp record n num 0 n fclose fp if n 0 printf n n n n n n 文件中无记录 n请重新指定文件或创建文件 n getch return 使用 for 语句寻找输入卡号是否与输入的卡号是否匹配 如果文件中无盖 卡号信息是返回主菜单 有记录是用 find 记录卡号的下标 然后使用两个 if 判断语句 在满足未锁定卡号且卡上余额充足食 提示用户输入购买金额 for i 0 i n i if strcmp temp num record i num 0 printf 你卡上的余额 8 2f n record i money find i break if find n printf 无输入卡号记录 任意键返回主菜单 n getch return if record find lock 1 printf 输入的卡号已执行挂失锁定 任意键返回主菜单 n getch return if record find money 5 printf 余额不足请续钱 n 任意键返回主程序 getch return 读取用户所需要的购买的金额 处理卡上余额 并写入数组中临时存储即 时的余额 scanf f record find money record find money mon 4 AACC 系统的 myplus 函数需要 8 个变量 其中 strust card 类型的变 量 temp 存储临时的卡号 姓名 卡上金额 锁定状态 strust card 类型的变 量 recrord n 记录文件中存储的用户信息 int 类型的 i 用为 for 语句的循环 变量 n 用来记录文件中记录用户信息的用户个数 find 记录输入用户的在文 件中和数组中位置 float 类型的 mon 用来记录用户想要充值的金额 void myplus char c 0 int n 0 i find float mon struct card temp 0 record N 0 FILE fp NULL 用户在提示后输入充值金额 系统读取用户输入的金额 然后处理卡上余 额 并通过赋值改变数组的值 scanf f record find money record find money mon 5 AACC 系统的 myadd 函数需要 8 个变量 其中 strust card 类型的变量 temp 存储临时的卡号 姓名 卡上金额 锁定状态 strust card 类型的变量 recrord n 记录文件中存储的用户信息 int 类型的 i 用为 for 语句的循环变 量 n 用来记录文件中记录用户信息的用户个数 find 记录输入用户的在文件 中和数组中位置 void myadd char c 0 int n 0 i find 0 struct card temp 0 record N 0 FILE fp NULL 函数提示用户输入卡号并使用 do while 语句来确定用户输入非空的卡号 然后使用 for 内嵌的 if 与结构体数组中的是否有重复 重复时提示用户是退出 输入还是重新输入 用户重新输入时将重复刚才的步骤 当成功的输入卡号是 将提醒用户输入姓名和卡上余额 do c 0 printf 请输入你要添加卡号 gets temp num for i 0 i n i if strcmp temp num record i num 0 find n printf 输入的卡号已存在 n printf 是否重新输入 Y N n do c getch while c Y if c n c N return while c y c Y printf 输入该卡的用户姓名 gets temp name printf 请为该卡充值 scanf f 程序打开 card dat 文件后 初始化用户的信息 直接在文件尾添加所填加的数据 fp fopen d card dat a temp lock 0 fprintf fp 23s 16d 8 2f 3d temp num temp name temp money temp lock fclose fp 6 AACC 系统的 mylogout 函数需要 7 个变量 其中 strust card 类型的变 量 temp 存储临时的卡号 姓名 卡上金额 锁定状态 strust card 类型的变 量 recrord n 记录文件中存储的用户信息 int 类型的 i 用为 for 语句的循环 变量 n 用来记录文件中记录用户信息的用户个数 find 记录输入用户的在文 件中和数组中位置 fin 记录输入卡号是否存在 char conti 用来出来用户是否 确认删除数据 void mylogout char conti 0 int fin 0 n 0 i struct card temp 0 record N 0 FILE fp NULL 提示用户是否删除继续操作 若用户选择 N 或 n 时系统将会返回主菜单 若用户悬着 Y 或者 y 时系统将继续执行下一步操作 printf 是否注销用户 s Y N 注销将会删除用户的所有信息 temp num do conti getch while conti Y if conti n conti N return 打开 card dat 文件后 使用 for 内嵌的 if 语句 当卡号 temp num 与数组 record i num 相同时不写文件 实现删除卡号的目的 fp fopen d card dat w for i 0 i n i if strcmp temp num record i num 0 fprintf fp 23s 16s 8 2f 3d n record i num record i name record i money recor d n lock fclose fp 6 AACC 系统的 mylogout 函数需要 7 个变量 其中 strust card 类型的变 量 temp 存储临时的卡号 姓名 卡上金额 锁定状态 strust card 类型的变 量 recrord n 记录文件中存储的用户信息 int 类型的 i 用为 for 语句的循环 变量 n 用来记录文件中记录用户信息的用户个数 find 记录输入用户的在文 件中和数组中位置 fin 记录输入卡号是否存在 char c 用来出来用户是否确认 对数据执行操作 void mylock char c 0 int find 0 n 0 i struct card temp 0 record N 0 FILE fp NULL 利用 for 内嵌 if 内嵌 if else 语句来确定卡号是否存在 存在是输出其信息 并输出其 锁定的状态 for i 0 i余额查询1 卡号查询2 姓名查询0 退 出 if choose 0 return 当选择 1 是提示输入卡号 并在记录的中寻找相应的用户信息 选择是 2 是提示输入姓名 并在记录中寻找相应的用户信息 当无法找到是返回主菜单 找到是输出相应的用户的信息 if choose 1 printf n 请您输入您的卡号 回车结束输入 scanf s temp num for i 0 i用户信息 n 姓名 16s 姓名 16s 余额 8 2f 挂失状态 2d 1 为锁定 record i num record i name record i money record i lock f

温馨提示

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

评论

0/150

提交评论