C语言课程设计说明书_第1页
C语言课程设计说明书_第2页
C语言课程设计说明书_第3页
C语言课程设计说明书_第4页
C语言课程设计说明书_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1 面向过程程序设计 C 语言 课程设计 设计说明书 学生宿舍管理系统 起止日期 2010 年 01 月 10 日 至 2010 年 01 月 17 日 学生姓名黄庆清 班级计本 091 班 学号09408100103 成绩 指导教师 签字 计算机与通信学院计算机与通信学院 2010 年 01 月 20 日 2 学生宿舍管理系统学生宿舍管理系统 一 一 程序设计要求程序设计要求 综合运用 C 语言程序设计课程的主要知识 设计一个用于学生宿舍管理的程序 设计 指标由程序的功能要求和技术要求具体说明 1 功能要求功能要求 学生宿舍管理程序至少具有以下功能 1 显示功能 能显示宿舍学生的全部记录 在显示时能提供下列 5 种 显示方式 按记录创建 学生入住 的顺序显示 按姓名升序显示 将字符串 姓名 从小到大排列后输出 按学号升序显示 将字符串 学号 从小到大排列后输出 按房号升序显示 将字符串 房号 从小到大排列后输出 班按级号升序显示 将字符串 班级号 从小到大排列后输出 注 注 显示顺序显示顺序 栏的信息不属于记录的信息 它是连续的自然数 若记录栏的信息不属于记录的信息 它是连续的自然数 若记录 个数不变 则个数不变 则 显示顺序显示顺序 栏的信息不变 栏的信息不变 2 修改功能 能修改学生记录除创建顺序以外的信息 让用户输入需 要修改的旧记录 再检查该记录是否存在 若存在则用户可对记录 进行修改 3 查询功能 能查询宿舍学生的记录 提供以下 5 种查询方式 按姓名查询 用户输入学生姓名 系统则检索记录 找到含有 该姓名的全部记录 显示到屏幕上 并计算 显示找到的记录 个数 若找不到 则提醒用户 该记录不存在 按学号查询 原理同上所述 按房号查询 原理同上所述 按班级号查询 原理同上所述 综合查询 用户输入学生的姓名 学号 房号和班级号 系统 自动检索 若找到和和用户输入的信息完全一致的记录 则显 示到屏幕上 该记录若存在 则是唯一的 这是由入住 新建 功能决定的 4 删除功能 能以某些方式删除宿舍学生的信息 删除时以记录为单 位 既能一次删除一条记录 也能一次删除多条记录 该程序提供 以下 7 种删除方式 按姓名删除 用户输入学生姓名 系统将含有姓名的所有记录 全部删除 按学号删除 原理同上所述 按班级号删除 原理同上所述 按房号删除 原理同上所述 按创建 入住 顺序删除 用户通过显示功能可获取全部记录 对应的创建顺序 创建顺序是升序的连续的自然数 创建顺序 3 是唯一的 综合删除 用户输入学生的姓名 班级号 学号和房号 系统 检索全部记录 若找到和用户输入的信息吻合的记录 则将该 记录删除 若该记录存在 则是唯一的 这是由入住 新建 功能决定的 全部删除 注 注 某个或某几个记录被删除后 系统自动调整创建顺序 使创建顺序重新某个或某几个记录被删除后 系统自动调整创建顺序 使创建顺序重新 恢复为连续自然数 恢复为连续自然数 1 1 2 2 3 3 这种调整和学生的入住顺序是一致的 这种调整和学生的入住顺序是一致的 5 新建 入住 功能 能够曾加学生的记录 在新的学生住到宿舍时 对学生的信息进行登记注册 6 交换房号 能够交换记录中的任意两个学生的房号 其他信息保持 不变 7 退房功能 这项功能相当于删除学生的记录 用户输入学生的姓名 学号 房号和班级号 若该记录存在即退房 8 保存功能 没有独立的函数实现此功能 上面的几个功能 例如 新建 入住 修改功能 交换房号功能 删除功能 退房功能 包 含保存功能 9 退出系统 能很很方便地退出系统 注 注 以上以上 1 1 7 7 种功能是可以连续实现的 例如新建 入住 种功能是可以连续实现的 例如新建 入住 功能可以实现连续建立记录直到住房满为止 交换房号功功能可以实现连续建立记录直到住房满为止 交换房号功 能可以连续进行无数次任意两个学生的房号交换 能可以连续进行无数次任意两个学生的房号交换 2 2 技术要求技术要求 一 每个学生记录包含五项信息 房号 学号 姓名 班级号和创建顺 序 二 学生记录信息以磁盘文件的形式存储 三 对于学生宿舍管理系统中新建记录 显示 查询 修改 删除 退 房 交换房号等功能 要求编写独立的函数或主控函数予以实现 其所属的各项功能尽量由独立的函数实现 四 以菜单方式实现功能选择控制 五 本通学生宿舍管理系统能够实现 16 条记录的管理 当然可以扩充记 录的数量的上限 如将 16 条记录扩充为 100 条 二 二 程序的功能设计程序的功能设计 设计学生宿舍管理系统的功能如下图所示 4 修改功能修改功能 显示功能显示功能 按姓班级号升序显示 按姓名升序显示 按学号升序显示 按房号升序显示 查询功能查询功能 按姓名查询 综合查询 按班级号查 询 按房号查询 按学号查询 学学 生生 宿宿 舍舍 管管 理理 系系 统统 功功 能能 框框 图图 按创建顺序显示 删除功能删除功能 按姓名删除 按班级删除 询 按房号删除 按学号删除 按创建顺序删除 综合删除 全部删除 入住 新建 功入住 新建 功 能能 5 各项功能的具体说明如下 1 1 显示功能 显示功能 按创建顺序显示 创建顺序是连续的自然数 表示记录的创建的先后顺序 也是记录存储在文件中的顺序 按姓名升序显示 以字符串 姓名 大小为排序标准 将记录升序排列 然 后输出到屏幕 按学号升序显示 以字符串 学号 大小为排序标准 将记录升序排列 然 后输出到屏幕 按房号升序显示 以字符串 房号 大小为排序标准 将记录升序排列 然 后输出到屏幕 按班级号升序显示 以字符串 班级号 大小为排序标准 将记录升序排列 然后输出到屏幕 注 注 在显示之前 系统自动获取文件中的记录个数 如果记录个数为零 那么提在显示之前 系统自动获取文件中的记录个数 如果记录个数为零 那么提 示用户记录为空 并返回主菜单 示用户记录为空 并返回主菜单 每完成一次显示操作 系统就自动提供一个菜单 用户可以选择继续进行显每完成一次显示操作 系统就自动提供一个菜单 用户可以选择继续进行显 示操作 重新选择显示方式 示操作 重新选择显示方式 后退到主菜单或者退出系统 后退到主菜单或者退出系统 2 2 修改功能 修改功能 要求输入需要修改的记录中的姓名 学号 房号和班级号 然后输入修改后的姓 名 学号 房号和班级号 注 注 在用户进入修改状态之前 系统自动获取文件中的记录个数 如果记录个数在用户进入修改状态之前 系统自动获取文件中的记录个数 如果记录个数 为零 那么提示用户记录为空 并返回主菜单 为零 那么提示用户记录为空 并返回主菜单 3 3 查询功能 查询功能 按姓名查询 用户输入学生姓名 系统对所有记录进行搜索 找到包含该姓 名的全部记录 然后输出到屏幕 按学号查询 用户输入学生学号 系统对所有记录进行搜索 找到包含该学 号的全部记录 然后输出到屏幕 按房号查询 用户输入学生房号 系统对所有记录进行搜索 找到包含该房 号的全部记录 然后输出到屏幕 按班级号查询 用户输入学生班级号 系统对所有记录进行搜索 找到包含 该班级号的全部记录 然后输出到屏幕 综合查询 用户输入学生姓名 学号 房号和班级号 系统对所有记录进行 搜索 找到和输入信息完全吻合的记录 然后输出到屏幕 注 注 在用户进入查询状态之前 系统自动获取文件中的记录个数 如果记录个数在用户进入查询状态之前 系统自动获取文件中的记录个数 如果记录个数 为零 那么提示用户记录为空 并返回主菜单 为零 那么提示用户记录为空 并返回主菜单 退房功能退房功能 交换房号功能交换房号功能 6 在以上的五种查询方式中 都会计算找到的记录个数 然后在屏幕上显示 在以上的五种查询方式中 都会计算找到的记录个数 然后在屏幕上显示 每完成一次查询 系统自动提供一个菜单 用户可以继续查询 返回主菜单每完成一次查询 系统自动提供一个菜单 用户可以继续查询 返回主菜单 或者退出系统 系统在理论上可以连续完成无限次查询 或者退出系统 系统在理论上可以连续完成无限次查询 如果找不到符合条件的记录 系统就会给出相应的提示 如果找不到符合条件的记录 系统就会给出相应的提示 4 4 删除功能 删除功能 按姓名删除 用户输入学生姓名 系统检索文件中的全部记录 找到包含该信 息的全部记录 系统以询问的方式获得用户的确认命令 用户可以选择删除或 取消删除 按学号删除 原理同上所述 按房号号删除 原理同上所述 按班级号删除 原理同上所述 按创建顺序删除 原理同上所述 不过 该删除方式与上述 4 种删除方式有所 不同 由于每个记录的创建顺序是各不相同的 所以 只会删除一个记录 前 提是符合条件的记录存在 综合删除 要求用户输入学生的姓名 学号 房号和班级号 系统检索文件中 的记录 找到与用户输入信息完全一致的记录 若存在 则只有一个 系统以 询问的方式获取用户的确认命令 以确定是否删除记录 全部删除 将保存在文件中的记录全部删除 注 注 在用户进入删除状态之前 系统自动获取文件中的记录个数 如果记录个在用户进入删除状态之前 系统自动获取文件中的记录个数 如果记录个 数为零 那么提示用户记录为空 并返回主菜单 数为零 那么提示用户记录为空 并返回主菜单 某个或某几个记录被删除后 系统自动调整创建顺序 使创建顺序重新恢某个或某几个记录被删除后 系统自动调整创建顺序 使创建顺序重新恢 复为连续自然数 复为连续自然数 1 2 3 这种调整和学生的入住顺序是一致的 这种调整和学生的入住顺序是一致的 该系统提供连续进行删除操作的功能 直至将全部记录删除完毕 该系统提供连续进行删除操作的功能 直至将全部记录删除完毕 所有的删除均为物理删除 即将指定的记录从文件中彻底清除 所有的删除均为物理删除 即将指定的记录从文件中彻底清除 5 5 新建功能新建功能 i 在进入新建记录之前 系统自动获取文件中的记录个数 如果该数量已 达到纪录个数的上限 则给出提示 住房已满 并自动返回主菜单 ii 在建立一个记录过程中 系统会逐项提示用户输入学生房号 学号 姓 名和班级号 iii 用户输入完了学生信息后系统会自动检索文件中的记录 如果文件中已 经保存着与用户输入的信息完全吻合的记录 则不建立新的记录 并提 示用户该记录已存在 然后返回主菜单 iv 如果该记录不存在 那么给出选择 取消或保存以供用户选择 v 每完成一次新建记录 系统就以询问的方式让用户决定是否新建下一个 记录 这样用户可以新建一个记录 也可以连续建立多个记录 直至记 录个数达到上限 6 6 交换房号 交换房号 i 在用户进入交换房号状态之前 系统自动获取文件中的记录个数 如果 记录个数小于 2 那么向用户给出记录个数 并返回主菜单 ii 系统逐项提示用户输入学生甲的房号 学号 姓名和班级号 然后自动 7 检索文件中的记录 如果不存在与用户输入信息完全吻合的记录 那么 就给出询问 用户可以选择从新输入学生甲的信息 也可以选择退出交 换房号的功能 即返回主菜单 iii 如果与用户输入的学生甲的信息完全吻合的记录存在 那么系统逐项提 示用户输入学生乙的房号 学号 姓名和班级号 系统自动检索文件中 的记录 如果不存在与用户输入信息完全吻合的记录 那么就给出询问 用户可以选择从新输入学生乙的信息 也可以选择退出交换房号的功能 即返回主菜单 iv 如果与用户输入的学生乙的信息完全吻合的记录存在 那么系统提示用 户是否确实要交换房号 v 每完成一次交换房号的操作后 系统以询问的方式决定是否进行下面两 个学生的房号 因此 系统在理论上可以完成无数次交换房号的操作 7 7 退房功能 退房功能 i 在用户进入退房房号状态之前 系统自动获取文件中的记录个数 如果 记录个数为零 那么提示用户记录为空 并返回主菜单 ii 如果记录不为空 那么系统逐项提示用户输入学生的姓名 学号 房号 和班级号 接着系统检索文件中的记录 若不存在与用户输入的信息完 全吻合的记录 则提示用户该记录不存在 并询问是否对下一个学生进 行退房操作 若用户选择否 则返回主菜单 iii 若与用户输入的信息完全吻合的记录存在 系统会提示是否退房 iv 系统每完成一次退房操作就并询问用户是否对下一个学生进行退房操作 因此 可联系完成多次退房操作直至记录个数为零 若用户选择否 则 返回主菜单 v 某个或某几个记录被删除后 系统自动调整创建顺序 使创建顺序重新 恢复为连续自然数 1 2 3 这种调整和学生的入住顺序是一 致的 三 三 程序的数据设计程序的数据设计 1 每个学生记录由多个不同的数据项构成 是一个结构体数据 因此需要定义结构体数 据类型 每个记录包括的数据项目为 房号 学号 姓名 班级号和创建顺序等 据 此定义如下结构体数据类型 struct student 学生信息结构定义 char room no N student ID N name N class N unsigned long creation stu S 2 使用文件 s db 存储数据类型为 struct student 的学生记录数据 四 四 程序的函数设计程序的函数设计 1 1 函数功能描述函数功能描述 8 1 main 函数 学生宿舍管理系统主函数 显示问候语 调用主菜单函数 2 main menu 函数 函数原型为 void main menu 是实现显示主菜单功能的函数 它通过调研各个功能 函数实现功能的空制 3 display 函数 函数原型为 void display 是显示学生记录信息的主控函数 它实现显示功能的子菜 单显示 并进行不同显示功能的函数调用 以实现程序的显示功能 4 search 函数 函数原型为 void search 是查询学生记录的主控函数 它显示查询功能的子菜单 并根据查询要求 进行相应的函数调用 以实现查询的查询功能 5 modify 函数 函数原型为 void modify 修改学生记录信息的函数 它实现修改学生记录的功能 具有保存修改之后的数据的功能 6 delect 函数 函数原型为 void delect 是删除学生记录的主控函数 它显示删除功能的子菜单 并 根据删除要求 并进行相应的函数调用 以实现删除学生记录的功能 7 check in 函数 函数原型为 void check in 实现新建学生记录的函数 该函数还具有保存学生记录的 功能 8 exchange room number 函数 函数原型为 void exchange room number 是实现交换任意两个学生的房号的功能的函 数 该函数具有保存交换房号之后的数据的功能 9 check out 函数 函数的原型为 void check out 是实现学生退房功能的函数 相当于从文件中删除唯一 一个确定的记录 它具有保存学生退房之后的数据的功能 10 sub menu 函数 函数的原型为 void sub menu 功能是提供选择菜单 并根据用户的选择 实现继续 执行 后退到主菜单和退出系统的功能 11 getLogCount FILE fp 函数 函数原型为 unsigned long getLogCount FILE fp 功能是获取储存在文件中的记录 结构数组元素 的个数 12 sortByName 函数 函数的原型为 void sortByName 功能是实现对 struct student 型结构体数组按姓名升 序排列操作 13 sortByID 函数 函数原型为 void sortByID 功能是对 struct student 型结构体数组实现按学号升序排列 操作 14 sortByRoom 函数 函数原型为 void sortByRoom 功能是对 sruct student 型结构体数组实现按房号升序 排列操作 15 sortByClass 函数 函数原型为 void sortByClass 功能是对 struct student 型结构体数组实现按班级号升 序排列操作 9 16 output 函数 函数原型为 void output 它实现对结构体数组的输出功能 系统显示功能的一部分 如果结构体数组未经排序函数排序 则输出函数 output 将结构体数组按创建顺序输出 17 searchByName 函数 函数原型为 void searchByName 功能是对结构体数组按姓名搜索 18 searchByStudent ID 函数 函数原型为 void searchByStudent ID 功能是对结构体数组按学号搜索 19 searchByRoom no 函数 函数原型为 void searchByRoom no 功能是对结构体数组按房号搜索 20 searchByClass 函数 函数原型为 void searchByClass 功能是对结构体数组按班级号搜索 21 searchComprehensive 函数 函数原型为 void searchComprehensive 功能是对结构体数组进行综合搜索 它搜索与用 户输入的姓名 学号房号和班级号完全一致的记录 22 delName 函数 函数原型为 void delName 功能是对结构数组按姓名实现删除元素的操作 23 delStudent ID 函数 函数原型为 void delStudent ID 功能是对结构数组按学号实现删除元素的操作 24 del class 函数 函数原型为 void del class 功能是对结构体数组按班级号实现删除元素的操作 25 delRoom no 函数 函数原型为 void delRoom no 功能是对结构体数组按房号实现删除元素的操作 26 delCreation 函数 函数原型为 void delCreation 功能是对结构体数组按创建顺序实现删除元素的操作 27 delComprehensive 函数 函数原型为 void delComprehensive 功能是对结构体数组实现综合删除元素的操作 要求用户输入学生的姓名 学号 房号和班级号 该函数搜索结构数组 找到与用户输入 的信息吻合的数组元素 然后询问用户以决定是否删除该元素 28 delAll 函数 函数原型为 void delAll 功能是删除储存在文件中的全部记录 结构数组数据 2 函数的直接调用关系函数的直接调用关系 a main 函数直接调用的函数 main menu 函数 主菜单函数 b main menu 函数直接调用的函数 display 函数 modify 函数 search 函 数 delect 函数 check in 函数 exchange room number 函数 check out 函 数 c display 函数直接调用的函数 getLogCount FILE fp 函数 output 函数 sortByName 函数 sortByID 函数 sortByRoom 函数 sortByClass 函数 sub menu 函数 d search 函数直接调用的函数 LogCount FILE fp 函数 searchByName 函 数 searchByStudent ID 函数 searchByRoom no 函数 searchByClass 函 数 searchComprehensive 函数 sub menu 函数 e delect 函数直接调用的函数 getLogCount FILE fp 函数 delName 函数 10 delStudent ID 函数 del class 函数 delRoom no 函数 delCreation 函数 delComprehensive 函数 delAll 函数 sub menu 函数 f check in 函数直接调用的函数 getLogCount FILE fp 函数 g exchange room number 函数直接调用的函数 getLogCount FILE fp 函数 h check out 函数直接调用的函数 getLogCount FILE fp 函数 i sortByName 函数直接调用的函数 output 函数 j sortByID 函数直接调用的函数 output 函数 k sortByRoom 函数直接调用的函数 output 函数 l sortByClass 函数直接调用的函数 output 函数 五 五 函数编码及调试函数编码及调试 a a main main 函数的设计及调试函数的设计及调试 main 函数是学生宿舍管理系统的主控函数 每次调试函数都会用到它 由于 main 函数只调用一个函数 主菜单函数 main menu 而且它的语句少 所以设计及调试都比 较容易 调试时将它调用的函数暂时设计为输出字符串的函数 如果能按预期预期输出字 符串 则调试成功 每次编写新函数或修改函数都会涉及 main 函数的调试 i main 函数代码 void main void main menu puts t t puts t Welcome to the Dormitory Management System main menu ii main menu 函数代码 void main menu 主菜单 puts n tPlease select n t Input one of the following figures n iii main 函数调试 调试 main 函数 如果屏幕上显示字符串 t t t Welcome to the Dormitory Management System n tPlease select n t Input one of the following figures n 则函数设计及调试成功 b b main menu main menu 函数的设计及调试函数的设计及调试 main menu 函数是学生宿舍管理系统的功能主菜单 它调用多个功能函数 它的 设计调试需要反复多次 在开始时 将它的所有被调用函数都设计为简单的字符串输 出函数 以设计调试 main menu 函数的菜单控制功能 然后 每实现一个主功能 输入 显示 查询 修改 删除 新建 函数 都对 main menu 函数的调用和菜单 控制功能进程调试 i main menu 函数代码 void main menu 主菜单 11 void display void modify void search void delect void check in void exchange room number void check out while 1 int short selection puts n tPlease select n t Input one of the following figures n puts t t 1 Display n t t 2 Modify n t t 3 Search n t t 4 Delect puts t t 5 Check in n t t 6 Exchange Room Number n t t 7 Check out n t t 8 Exit n scanf d switch selection case 1 display break case 2 modify break case 3 search break case 4 delect break case 5 check in break case 6 exchange room number break case 7 check out break case 8 exit 0 default puts n tUnknown directive break ii 01 display 函数代码 void display 显示功能的上层函数 puts 1 display 02 modify 函数代码 void modify 修改记录 puts 2 modify 03 search 函数代码 12 void search 实现查询功能的上层函数 puts 3 search 04 delect 函数代码 void delect 删除 上层函数 puts 4 delect 05 check in 函数代码 void check in 入住 新建 puts 5 check in 06 exchange room number 函数代码 void exchange room number 换房号 puts 6 exchange room number 07 check out 函数代码 void check out 退房 puts 7 check out check in iii main menu 函数调试 调试 main menu 函数 如果屏幕上输出以下字符串 则函数设计及调试成功了 大概 20 字符串 n tPlease select n t Input one of the following figures n t t 1 Display n t t 2 Modify n t t 3 Search n t t 4 Delect t t 5 Check in n t t 6 Exchange Room Number n t t 7 Check out n t t 8 Exit n 继续调试函数 使 main menu 函数依次调用它可以直接调用的函数 如果屏幕 上显示相应的字符串 则 main menu 函数的设计及调试基本成功 c c display display 函数的设计及调试函数的设计及调试 i display 函数代码 void display 显示功能的上层函数 unsigned long getLogCount FILE fp unsigned long i 13 unsigned short selection void output void sortByName void sortByID void sortByRoom void sortByClass logcount getLogCount fp if logcount 0 puts n t tRecord empty return if fp fopen p rb NULL 打开文件 puts n tFile open error exit 0 i 0 while feof fp 将全部记录读入全局结构数组 fread i if fclose fp 关闭文件 puts n tThe file can not be closed exit 0 while 1 puts n tPlease select ordertype n puts t 1 Creation time n t 2 Name n t 3 Student ID puts t 4 Room number n t 5 Class number n puts tPlease input one digit to chooce n scanf u switch selection case 1 output break case 2 sortByName break case 3 sortByID break case 4 sortByRoom break case 5 sortByClass break default puts n tUnknow directive break if sub menu return 14 ii 01output 函数代码 void output 输出结构体数组的数据 按下标升序排列 puts 1 02sortByName 函数代码 void sortByName 按姓名升序排序 puts 2 03sortByID 函数代码 void sortByID 按学号升序排序 puts 3 04sortByRoom 函数代码 void sortByRoom 按房号升序排序 puts 4 05sortByClass 函数代码 void sortByClass 按班级号升序排序 puts 5 iii 函数调试 第一步 调试函数 观察屏幕是否显示字符串 n tPlease select ordertype n t 1 Creation time n t 2 Name n t 3 Student ID t 4 Room number n t 5 Class number n tPlease input one digit to chooce n 第二步 如果在第一步中得到预期结果 那么依次调试 display 函数调用的函数 如果都得到预期结果 在屏幕上显示对应数字 再在特殊情况 记录为空 下调试 那么函数 display 基本成功 d d modify modify 函数的设计及调试函数的设计及调试 i modify 函数代码 void modify 修改记录 char room no N student ID N name N class N unsigned short flag 0 15 unsigned long i index unsigned short selection unsigned int byteOfFread logcount getLogCount fp 获取记录数 if logcount 0 puts n t tRecord empty n return if fp fopen p rb NULL 打开文件 puts n tFile open error exit 0 i 0 while feof fp 将全部记录读入全局结构数组 byteOfFread fread i if fclose fp 关闭文件 puts n tThe file can not be closed exit 0 输入旧信息 不必输入创建顺序 puts n tInput OLD information puts tPlease input ROOM NUMBER scanf s room no puts tPlease input STUDENT ID scanf s student ID puts n tPlease input NAME scanf s name puts tPlease input CLASS NUMBER scanf s class for i 0 i logcount i 检查旧记录是否存在 不核对创建顺序 int a strcmp name stu i name b strcmp room no stu i room no int c strcmp student ID stu i student ID d strcmp class stu i class if a b c d flag 1 找到记录 则做标记 index i 获取旧记录对应的结构数组元素的下标 break 16 if flag 输入新信息 不必输入创建顺序 puts n tInput NEW information puts tPlease input ROOM NUMBER scanf s stu index room no puts tPlease input STUDENT ID scanf s stu index student ID puts n tPlease input NAME scanf s stu index name puts tPlease input CLASS NUMBER scanf s stu index class 确认是否修改 puts n tAre you sure to modify the record n puts t t1 Certain t t2 Cancel n puts tType in the digit to make sure n scanf u if selection 1 if fp fopen p wb NULL 打开文件 puts n tFile open error exit 0 for i 0 i logcount i fwrite if fclose fp 关闭文件 puts n tThe file can not be closed exit 0 else puts n tTHE RECORD DOES NOT EXIST ii 函数调试 函数只调用一个函数 getLogCount FILE fp 函数 功能调试较简单 在主菜单 选择 2 Modify 功能 然后利用该 函数对文件中的记录进行修改 将修改前后的记 录进行比较 如果得到预期的修改效果 再在特殊情况 记录为空 下调试 如果也 成功 那么则该函数的设计和调试基本成功 e e search search 函数的设计及调试函数的设计及调试 i search 函数代码 void search 实现查询功能的上层函数 17 unsigned byteOfRead unsigned short selection unsigned i unsigned long get LogCount FILE fp void searchByName void searchByStudent ID void searchByRoom no void searchByClass void searchComprehensive logcount getLogCount fp if logcount 0 puts n t tRecord empty return if fp fopen p rb NULL 打开文件 puts n tFile open error exit 0 for i 0 i logcount i 将全部记录读入全局结构数组 byteOfRead fread if fclose fp 关闭文件 puts n tThe file can t be close exit 0 while 1 puts n tPlease select the way to search n t Input one of the following figures n puts t 1 Search by name n t 2 Search by student ID n t 3 Search by room number puts t 4 Search by class number n t 5 Search by name student ID room number or class number scanf u getchar switch selection case 1 searchByName break case 2 searchByStudent ID break case 3 searchByRoom no break case 4 searchByClass break case 5 searchComprehensive break default puts n tUnknow directive break 18 if sub menu return ii 01searchByName 函数代码 void searchByName 按姓名查询 puts 1 02searchByStudent ID 函数代码 void searchByStudent ID 按学号查询 puts 2 03searchByRoom no 函数代码 void searchByRoom no 按房号查询 puts 3 04searchByClass 函数代码 void sortByClass 按班级号升序排序 puts 4 05searchComprehensive 函数代码 void searchComprehensive 综合查询 puts 5 iii search 函数调试 第一步 在主菜单选择 3 Search 功能 观察屏幕是否显示字符串 n tPlease select the way to search n t Input one of the following figures n t 1 Search by name n t 2 Search by student ID n t 3 Search by room number t 4 Search by class number n t 5 Search by name student ID room number or class number 如 果是 那么第一步成功 第二步 如果第一步成功 那么依次调试 search 函数调用的函数 如果得到预 期结果 在屏幕上输出相应的数字 那么再在特殊情况下 文件中的记录为空 调试 如果也成功 那么 search 函数的设计和调试基本完成 19 f f delect delect 函数的设计及调试函数的设计及调试 i delect 函数代码 void delect 删除 上层函数 unsigned long getLogCount FILE fp unsigned short selection unsigned long i 0 void delName void delStudent ID void del class void delRoom no void delCreation void delComprehensive void delAll logcount getLogCount fp 获取记录总数 if logcount 0 puts n t tRecord empty return if fp fopen p rb NULL 打开文件 puts n tFile open error exit 0 while feof fp fread 将全部记录读入全局结构数组 if fclose fp 关闭文件 puts n tThe file can not be closed exit 0 while 1 puts n tPlease select n puts n t 1 Delect by NAME puts n t 2 Delect by STUDENT ID puts n t 3 Delect by CLASS NUMBER puts n t 4 Delect by ROOM NUMBER puts n t 5 Delect by SEQUENCE of CREATION puts n t 6 Delect by NAME STUDENT ID n t CLASS NUMBER and ROOM NUMBER puts n t 7 Delect all the logs 20 scanf u switch selection case 1 delName break case 2 delStudent ID break case 3 del class break case 4 delRoom no break case 5 delCreation break case 6 delComprehensive break case 7 delAll break default puts n tUnknown directive break if sub menu return ii 01delName 函数代码 void delName 按姓名选择要删除的记录 puts 1 02delStudent ID 函数代码 void delStudent ID 按学号选择要删除的记录 puts 2 03del class 函数代码 void del class 按班级选择要删除的记录 puts 3 04delRoom no 函数代码 void delRoom no 按房号选择要删除的记录 puts 4 05delCreation 函数代码 void delCreation 按创建顺序删除 puts 5 21 06delComprehensive 函数代码 void delComprehensive 综合选择要删除的记录 puts 6 07delAll 函数代码 void delAll 删除全部记录 puts 7 iii delect 函数调试 第一步 在主菜单选择 4 Delect 功能 观察屏幕是否显示字符串 n tPlease select n n t 1 Delect by NAME n t 2 Delect by STUDENT ID n t 3 Delect by CLASS NUMBER n t 4 Delect by ROOM NUMBER n t 5 Delect by SEQUENCE of CREATION n t 6 Delect by NAME STUDENT ID n t CLASS NUMBER and ROOM NUMBER n t 7 Delect all the logs 如果 是 那么第一步成功 第二步 如果第一步成功 那么依次调试 delect 函数调用的函数 如果得到预 期结果 在屏幕上输出相应的数字 那么再在特殊情况下 文件中的记录为空 调试 如果也成功 那么 delect 函数的设计和调试基本完成 g g check in check in 函数的设计及调试函数的设计及调试 i check in 函数代码 void check in 入住 新建 unsigned long getLogCount FILE fp unsigned long i logcount getLogCount fp printf n tThe number of existing record is lu n logcount if logcount S puts n tHousing is full return if fp fopen p rb NULL 打开文件 puts n tFile open error exit 0 i 0 while feof fp 将全部记录读入全局结构数组 22 fread i if fclose fp 关闭文件 puts n tThe file can not be closed exit 0 while logcount S 内层 while 循环开始 unsigned short selection flag 0 unsigned int byteOfFwrite 输入一个学生的信息 puts tPlease input ROOM NUMBER scanf s stu logcount room no puts tPlease input STUDENT ID scanf s stu logcount student ID puts tPlease input NAME scanf s stu logcount name puts tPlease input CLASS NUMBER scanf s stu logcount class stu logcount creation logcount 1 for i 0 i logcount

温馨提示

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

评论

0/150

提交评论