




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 高级语言课程设计实验教案高级语言课程设计实验教案 本实验是 C 程序设计的后续课程 目的是通过本实验课 使得学生更好掌握 C 的相关知识 提高学生的编程水平 技能和综合应用 C 的能力 实验工具 vc 6 0 实验题目为银行活期储蓄管理系统 系统的功能模块结构图如下 银行活期储蓄系统 开户模块 存款模块 取款模块 查询模块 计息模块 系统主菜单 财富排行榜 高级语言课程设计实验教案 1 实验项目一 系统主菜单 2 实验项目二 开户模块 3 实验项目三 存款模块 7 实验项目四 取款模块 9 实验项目五 计息模块 10 实验项目六 查询模块 10 实验项目七 排序模块 13 C 文件流操作 13 第 1 章 标题 1 章标题 2 实验项目一 系统主菜单 实验内容 编写系统主菜单 实验目的 通过实现系统主菜单模块使得学生掌握工程文件中不同文件之间的函数调用方法 模块实现算法 包含头部文件 函数声明 extern void kh 开户函数 extern void ck 存款函数 extern void qh 取款函数 extern void jx 计息函数 extern void cx 查询函数 extern void px 排序函数 main while 1 system cls 清屏 显示菜单 选择提示并接收用户输入 使用多路选择语句处理用户选择 相关知识点 清屏函数 函数名称system 头部文件Stdlib h 函数用途调用 dos 命令 函数原型Int system const char command 参数Command dos 命令字符串 容易出现的错误 如果将用于接受用户输入选择的变量定义为整型 则当输入非数字字符时候 程序将进入死循环 缺少对被调用的函数的引用声明 extern 思考 使用工程的优点 书名 3 实验项目二 开户模块 实验内容 编写开户模块 实验目的 掌握与文件相关的操作 开户模块算法 函数声明 bool uidinput 函数的功能是输入身份证并验证是否合法 身份证号长度 组成 合法返回假否则返回真 bool pwdinput 函数功能是输入密码和确认密码 并验证密码是否合法 如果合法则返回假 否则 返回真 bool moneyinput 函数功能输入开户金额并验证金额是否合法 合法返回假 否则返回真 void kh bool xh 清屏 身份证输入及验证 do xh uidinput while xh 验证当前身份证是否已经开过户 Person p p2 对象 p 用于接收存放开户信息 对象 p2 用于存放从帐户文件中读 取的帐户记录 以读与添加方式打开帐户文件 C 文件操作C 文件流操作 第 1 章 标题 1 章标题 4 定义文件指针 FILE fp 以读和追加写方式打开帐户文 件 fp fopen char fileName r a if fp NULL 当前帐户文件为空将当前储 户开户信息追加到帐户文件 fwrite 关闭文件 fclose fp 反馈开户成功信息 返回主菜单 else while feof fp 读取帐户记录 If 读取帐户的帐号 开户帐 号 反馈已经开过户信息 返回系统主菜单 将开户信息追加到帐户文件 关闭文件 反馈开户成功信息 返回系统主菜单 创建文件流对象 fstream file 以读追加方式打开帐户文件 file open char fileName ios in ios out ios binary ios app 0 while file eof 读取帐户记录 If 读取帐户的帐号 开户帐号 反馈已经开过户信息 关闭文件流 file close 返回系统主菜单 将开户信息追加到帐户文件 file write char 反馈开户成功信息 关闭文件流 file close 返回系统主菜单 相关知识点 文件指针定义 FILE fp 打开文件 fopen 函数 函数名称fopen 头部文件Stdio h 书名 5 函数用途打开一个文件 函数原型FILE fopen char filename char mode 参数filename 文件名称 参数Mode 文件打开模式 a 追加方式打开文本文件 ab 追加方式打开二进制文件 w 只写方式打开文本文件 wb 只写方式打开二进制文件 r 只读方式打开文本文件 rb 只读方式打开二进制文件 r a 可读可写追加方式打开文本文件 r 可读可写覆盖方式打开文本文件 返回值返回文件指针 打开失败返回 NULL 文件写操作 fwrite 库函数 函数名称fwrite 头部文件Stdio h 函数用途往文件的当前位置开始写入 size count 个字节的数据 函数原型int fwrite void buf int size int count FILE fp 参数fp 文件指针 参数Buf 存放要写入的数据的地址 参数Size 写入数据类型的字节数 参数Count 写入数据的数量 文件读操作 fread 库函数 函数名称fread 头部文件Stdio h 函数用途从文件的当前位置开始中读取 size count 个字节的数据 函数原型int fread void buf int size int count FILE fp 参数fp 文件指针 第 1 章 标题 1 章标题 6 参数Buf 存放读取数据的指针 参数Size 每个数据单位的字节数 参数Count 读取的数据单位个数 关闭文件 fclose FILE 函数名称fclose 头部文件Stdio h 函数用途关闭文件 函数原型nt fclose FILE fp 参数fp 文件指针 判断是否到达文件结尾函数 feof 库函数 函数名称feof 头部文件Stdio h 函数用途检测文件位置指示器是否已到结尾 函数原型int feof FILE stream 参数fp 文件指针 返回值0 未到文件结尾 1 已到文件结尾 字符串比较函数 函数名称strcmp 头部文件string h 函数用途字符串比较 函数原型int strcmp char str1 char str2 参数str1 str2 待比较的字符串 返回值小于 0 str1str2 字符串长度函数 函数名称strlen 头部文件string h 函数用途得到字符串长度 函数原型int strlen const char s 参数s 待求长度的字符串指针 返回值字符串的长度 判定字符是否数字字符函数 函数名称isdigit 头部文件ctype h 书名 7 函数用途测试参数是否为数字 0 9 函数原型int isdigit int ch 参数ch 被测参数 返回值非零 是 0 不是 判断字符是否是数字或字母字符 isalnum 函数名称isalnum 头部文件ctype h 函数用途测试参数是否为大 小写字母或数字 函数原型int isalnum int ch 参数ch 被测参数 返回值非零 是 0 不是 字符串复制库函数 strcpy 函数名称strcpy 头部文件string h 函数用途将字符串 src 拷贝到字符串 dest 中去 函数原型char strcpy char dest const char src 参数dest 目的字符串 src 源字符串 返回值指向 dest 的指针 从控制台读取字符库函数 getch 函数名称getch 头部文件conio h 函数用途从控制台读取一个字符 但不显示在屏幕上 函数原型int getch void 返回值读取的字符 消息框函数 MessageBox 0 提示 提示 0 容易出现的错误 打开文件的方式与要进行的操作不符 文件绝对路径中的转义字符 用于存放密码的数组开辟的单元不够 在逐个输入密码后缺少字符串结束字符 0 在判断当前用户是否开过户时 未遍历所有记录而做出结论 忘记关闭文件 第 1 章 标题 1 章标题 8 获取系统日期举例 系统时间的获取示例 include include void main time t t t time NULL tm T gmtime int year T tm year 1900 int month T tm mon 1 int day T tm mday int hour T tm hour 8 int min T tm min int sec T tm sec cout year 年 month 月 day 日 hour min sec p uid 金额验证 以读写方式打开帐户文件 FILE fp fopen 文件名称 r w do feof fp 未到文件结尾 fread 读取文件指针所指的帐户记录将其存放于对象 书名 9 p2 中 验证是否与存款帐户号码 身份证号码 是否相等 If strcmp p uid p2 uid 将文件指针定位于当前存款客户的帐户记录 将当前客户的修改了存款余额的帐户记录 对象 写回帐户文件 覆盖 关闭文件 反馈存款成功信息 返回主菜单 帐户文件遍历结束 关闭文件 反馈帐号不存在信息 返回主菜单 相关知识 文件指针定位函数 函数名称fseek 头部文件stdio h 函数用途设定文件操作指示器位置 函数原型int fseek FILE fp LONG offset int origin 参数fp 文件指针 offset 相对于 origin 规定的偏移位置量 origin 指针移动的起始位置 可设置为以下三种情况 SEEK SET 0 文件开头 SEEK CUR 1 当前读写的位置 SEEK END 2 文件尾部 容易出现的错误 文件指针定位不正确 思考 系统功能之间的序的问题 实验项目四 取款模块 实验内容 取款模块的设计与编码实现 实验目的 进一步掌握文件操作和编程训练 取款模块算法 包含头部文件 定义帐户对象 第 1 章 标题 1 章标题 10 Void qk 取款函数 清屏 输入身份证号码和密码 以读写方式打开帐户文件 File fp fopen 文件名称 r w while feof fp 当帐户文件未遍历结束 读取文件指针当前所指的帐户记录并存放于对象 p2 If p2 身份证号码与用户输入的身份证号码相同且密码也相同 输入取款金额并校验 验证是否可能透支 If 可能透支 反馈帐户存款不足信息 关闭文件 返回主菜单 else 修改当前客户的存款余额 将文件指针定位于当前客户的帐户记录 将修改存款余额后的对象写入帐户文件 覆盖 反馈取款成功信息 关闭文件 返回系统主菜单 遍历结束 关闭文件 反馈非法用户信息 返回主菜单 容易出现的错误 在查询用户时未将身份证号码和密码同时验证 思考 存款模块 款模块有何共性 书名 11 实验项目五 计息模块 实验内容 实现对所有帐户批处理计息 实验目的 正确掌握文件指针的定位 计息模块算法 计算当前帐户文件中的帐户个数 n 对帐户文件中所有帐户计息 For int i 1 i n i 将指针定位于帐户文件中第 i 个记录 读取第 i 个记录 计算第 i 个帐户记录的利息 将指针定位于帐户文件中第 i 个记录 修改第 i 个帐户记录覆盖帐户文件中原有的第 i 个帐户记录 反馈计息结束信息 容易出现的错误 在批处理时候 在读取记录时没有定位 思考 当完成一个写操作时候 文件指针是否移动到下一个记录 实验项目六 查询模块 实验内容 实现查询用户的当前存款余额并以人民币大写的形式输出 实验目的 掌握映射算法 容易出现的错误 算法不好 人民币大写示例 include include include int num 8 用于存储组成金额的数值 int length 用于存放组成金额的数值个数 bool jy int i 用于验证从第 i 个数值后是否还存在非零数值 int j for j i j length j if num j return true 存在非 0 数值 return false 不存在非 0 数值 void main 第 1 章 标题 1 章标题 12 MessageBox 0 人民币大写示例 提示 0 cout money if money 99000000 MessageBox 0 金额过大 提示 0 return 处理 0 元 if money 0 cout 零元 else 非 0 元 定义大写映射数组 char dx 10 3 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 定义单位映射数组 char dw 8 5 元 十 百 千 万 十万 百万 将钱以逆序存放于数组 int i 0 int fl 0 用于统计非 0 数值的个数处理整百 千 万 的特殊数值 while money 将组成金额的数值分离出来 num i money 10 求当前金额的个位数值 cout num i if num i fl 累计非 0 数出现次数 money 10 去掉当前金额的个位 i i 将金额分离完毕 length i 书名 13 if fl 0 index num i if index 非零数字 printf dx index 输出大写 printf dw i 输出人民币单位 first true 第一次遇到 0 标识 else if first first false 将第一次遇到 0 的标识设置为假 i 思考 在验证用户身份时 为何用户标识和密码同时验证 实验项目七 排序模块 实验内容 将现有储户按照余额以为降序排序 实验目的 动态数据结构及排序训练 知识点 动态分配内存空间函数 allocmem 函数名称allocmem 第 1 章 标题 1 章标题 14 头部文件dos h 函数用途按节 16 字节 分配内存块 函数原型int allocmem unsigned size unsigned seg 输入参数size 分配的节数 输出参数seg 分配后的段地址 返回值 1 分配成功 其他数值 实际分配的节数 动态分配内存空间函数 freemem 函数名称freemem 头部文件dos h 函数用途释放由 allocmem 分配的内存块 函数原型int freemem unsigned seg 输入参数seg 段地址 返回值0 操作成功 1 操作失败 思考 动态申请的存储单元的生存期为 C 文件流操作 在 C 中 有一个 stream 这个类 所有的 I O 都以这个 流 类为基础 stream 这个类有两个重要的运算符 1 插入器 向流输出数据 比如说系统有一个默认的标准输出流 cout 一般情况下就是指 的显示器 所以 cout Write Stdout 从流中输入数据 比如说系统有一个默认的标准输入流 cin 一般情况下就是指 的键盘 所以 cin x 就表示从标准输入流中读取一个指定类型 即变量 x 的类 型 的数据 在 C 中 对文件的操作是通过 stream 的子类 fstream file stream 来实现的 所以 要用这种方式操作文件 就必须加入头文件 fstream h 一 打开文件 在 fstream 类中 有一个成员函数 open 就是用来打开文件的 其原型是 void open const char filename int mode int access 参数 filename 要打开的文件名 mode 要打开文件的方式 书名 15 打开文件的方式在类 ios 是所有流式 I O 类的基类 中定义 常用的值如下 ios app 以追加的方式打开文件 ios ate 文件打开后定位到文件尾 ios app 就包含有此属性 ios binary 以二进制方式打开文件 缺省的方式是文本方式 ios in 文件以输入方式打开 ios out 文件以输出方式打开 ios nocreate 不建立文件 所以文件不存在时打开失败 ios noreplace 不覆盖文件 所以打开文件时如果文件存在失败 ios trunc 如果文件存在 把文件长度设为 0 可以用 或 把以上属性连接起来 如 ios out ios binary access 打开文件的属性 打开文件的属性取值是 0 普通文件 打开访问 1 只读文件 2 隐含文件 4 系统文件 可以用 或 或者 把以上属性连接起来 如 3 或 1 2 就是以只读和隐含属 性打开文件 例如 以二进制输入方式打开文件 c config sys fstream file1 file1 open c config sys ios binary ios in 0 特别提出的是 fstream 有两个子类 ifstream input file stream 和 ofstream outpu file stream ifstream 默认以输入方式打开文件 而 ofstream 默认以输出方式打 开文件 ifstream file2 c pdos def 以输入方式打开文件 ofstream file3 c x 123 以输出方式打开文件 所以 在实际应用中 根据需要的不同 选择不同的类来定义 如果想以输入方 式打开 就用 ifstream 来定义 如果想以输出方式打开 就用 ofstream 来定义 如果想以输入 输出方式来打开 就用 fstream 来定义 二 关闭文件 打开的文件使用完成后一定要关闭 fstream 提供了成员函数 close 来完成此操 作 如 file1 close 就把 file1 相连的文件关闭 三 读写文件 读写文件分为文本文件和二进制文件的读取 对于文本文件的读取比较简单 用 插入器和析取器就可以了 而对于二进制的读取就要复杂些 下要就详细的介绍 第 1 章 标题 1 章标题 16 这两种方式 文本文件的读写 文本文件的读写很简单 用插入器 从文件输 入 假设 file1 是以输入方式打开 file2 以输出打开 示例如下 file2 i 从文件输入一个整数值 这种方式还有一种简单的格式化能力 比如可以指定输出为 16 进制等等 具体 的格式有以下一些 操纵符 功能 输入 输出 dec 格式化为十进制数值数据 输入和输出 endl 输出一个换行符并刷新此流 输出 ends 输出一个空字符 输出 hex 格式化为十六进制数值数据 输入和输出 oct 格式化为八进制数值数据 输入和输出 setpxecision int p 设置浮点数的精度位数 输出 比如要把 123 当作十六进制输出 file1 hex 123 要把 3 1415926 以 5 位精度 输出 file1 setpxecision 5 3 1415926 2 二进制文件的读写 put put 函数向流写入一个字符 其原型是 ofstream 就是向流写一个字符 c get get 函数比较灵活 有 3 种常用的重载形式 一种就是和 put 对应的形式 ifstream 功能是从流中读取一个字 符 结果保存在引用 ch 中 如果到文件尾 返回空字符 如 file2 get x 表示从 文件中读取一个字符 并把读取的字符保存在 x 中 另一种重载形式的原型是 int get 这种形式是从流中返回一个字符 如果到达 文件尾 返回 EOF 如 x file2 get 和上例功能是一样的 还有一种形式的原型是 ifstream 从文件中读取字符到字符串 str1 当遇到字符 A 或读取 书名 17 了 127 个字符时终止 4 读写数据块 要读写二进制数据块 使用成员函数 read 和 write 成员函数 它们原型如下 read unsigned char buf int num write const unsigned char buf int num read 从文件中读取 num 个字符到 buf 指向的缓存中 如果在还未读入 num 个字符时就到了文件尾 可以用成员函数 int gcount 来取得实际读取的字符数 而 write 从 buf 指向的缓存写 num 个字符到文件中 值得注意的是缓存的类 型是 unsigned char 有时可能需要类型转换 例 unsigned char str1 I Love You int n 5 ifstream in xxx xxx ofstream out yyy yyy out write str1 strlen str1 把字符串 str1 全部写到 yyy yyy 中 in read unsigned char n sizeof n 从 xxx xxx 中读取指定个整数 注意类型转 换 in close out close 四 检测 EOF 成员函数 eof 用来检测是否到达文件尾 如果到达文件尾返回非 0 值 否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度漯河职业技术学院单招《物理》考前冲刺试卷【学生专用】附答案详解
- 2025计算机一级考试综合练习附答案详解【培优B卷】
- 中班综合教案《寻找蛋宝宝》反思
- 2025年绿色金融市场发展与金融机构战略研究报告
- 2025年环境评价公众参与机制优化与绿色农业发展策略研究报告
- 全屋定制销售合同单
- 河南省南阳市宛城区等2地2025-2026学年高二上学期开学考试语文试题(含答案)
- 巡护员安全培训简报内容课件
- 屋檐线描课件绘画步骤
- 小鹅通上传课件时间长问题
- 2024年“学宪法、讲宪法”应知应会题库
- DL∕T 5372-2017 水电水利工程金属结构与机电设备安装安全技术规程
- 平安产险建筑工程团体意外伤害保险条款
- 基于人工智能的药物不良反应预测与预警系统
- 指导青年教师赛课工作方案
- 胃镜室进修汇报
- 农村特岗教师聘用合同书
- 10.1 抵制校园欺凌和暴力(高效教案)-【中职专用】中职思想政治《心理健康与职业生涯》(高教版2023·基础模块)
- 大学语文(第三版)课件 渔父
- 队列训练齐步的行进与立定
- 人教版小学六年级数学上册单元课后练习题 全册
评论
0/150
提交评论