宿舍管理查询系统设计与实现.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宿舍 管理 查询 系统 设计 实现
- 资源描述:
-
唐 山 学 院 数 据 结 构 课 程 设 计 题 系 班 目 ( 部) 级 宿舍管理查询系统设计与实现 计算机科学与技术系 姓 名 学 号 指导教师 2012 年 1 月 4 日至 1 月 13 日 共 2 周 2012 年 1 月 13 日 1 引 言 高校学生宿舍信息管理系统的主要功能包括:可以对学生宿舍信息的查询功能,包 括快速查询功能和分类查询功能:对学生宿舍的录入功能,修改功能,删除功能和统计 功能。通过系统上述功能实现宿舍管理部门对学生宿舍信息的日常管理,即方便宿舍管 理人员及时全面地掌握学生住宿情况及宿舍分配情况:为用户(管理用户和一般用户, 如学生)提供一些简单的数据查询并输入各种信息等:在实现检索迅速和查找方便同时, 进行宿舍管理。 该程序是由 C 语言编写的一个宿舍管理查询软件,其主要功能是实现对学生信息的 增加、删除、修改、查询、排序、储存、加载。其中查询可以分别以姓名、学号、寝室 号、为关键字查询学生信息。排序可以分别以学号和寝室号为关键字进行从小到大的排 序。 2 问 题 分 析 ( 1) 该问题采用主要顺序线性表的查找和排序解决。 ( 2) 宿舍管理系统中存在先后顺序,因此采用线性表。为了加快查找速率采用了顺 序查找和折半查找,因此需要将其按学号或宿舍号进行排序,所以采用了顺序表。 通过上述分析我采用顺序线性表储存结构,其结构如下: typedef struct { char S_name[ 31]; /学生姓名 char S_number[ 16]; /学生学号 int D_number; /学生所在寝室的宿舍号 int Total; / 学生总数 }Student[ M],St; 3 总 体 设 计 此系统是由添加模块、修改模块、删除模块、判断模块、排序模块、查询模块、显 示模块、保存模块和加载模块九个模块构成的。其中添加模块中运用了判断学号是否重 复和宿舍人数是否已满函数,排序模块分为以姓名为关键字排序、以学号为关键字排序 和以寝室号为关键字排序三个功能,查询模块分为按姓名查询、按学号查询和按寝室号 查询三个功能,在对信息进行添加,修改,删除,排序,保存和加载之后可以用显示函 数进行显示。 模块结构图和总体流程图(如图 3-1): 宿 舍 管 理 查 询 系 统 添 加 模 块 修 改 模 块 删 除 模 块 判 断 模 块 排 序 模 块 提 示 保 存 模 块 查 找 模 块 显 示 模 块 储 存 模 块 加 载 模 块 按 姓 名 按 学 号 按 学 号 按 寝 室 号 按 姓 名 按 寝 室 号 图 3 -1 系 统 模 块 结 构 图 (1)添加学生信息:按照从先到后的顺序输入学生姓名(30 个字符以内),学生学号 (15 个字符以内),学生学号(15 个字符以内),宿舍号码(整数,范围在 0- 32767), 即可将该学生信息添加到系统中。 (2)修改学生信息:输入要修改的学生姓名(30 个字符以内),修改后学生的学号(15 个字符以内),修改后学生的宿舍号(整数,范围在 0- 32767),即可修改该学生信息。 (3)删除学生信息:输入要删除的学生的姓名(30 个字符以内),可删除该学生信息。 (4)判断学号是否重复和判断宿舍人数是否已满:将输入学生的学号和宿舍号与表中 原有的学生的学号和宿舍号进行比较,判断学号是否重复和该宿舍人数是否已满。 (5)以姓名为关键字排序:添加学生信息之后,以学生姓名首字母的先后顺序排序。 (6)以学号为关键字排序:添加学生信息之后,以学号从大到小排序。 (7)以寝室号为关键字排序:添加学生信息之后,以寝室号大小排序。 (8)以姓名查询学生信息:输入要查找的学生的姓名(30 个字符以内),可显示所找 学生信息。 (9)以学号查找学生信息:输入要查找的学生的学号(15 个字符以内),可显示所找 学生信息。 (10)以寝室号查询学生信息:输入寝室号(整数,范围在 0- 32767),可显示所找学 生信息。 (11)储存学生信息:可将录入的学生信息储存起来。 (12)加载学生信息:可将学生信息加载到系统中。 (13)提示学生信息是否保存:判断操作后的学生信息是否以保存,如果没有保存则显 示提示信息。 4.1 添加模块 4.1.1 设计思路 4 详 细 设 计 添加学生信息函数:在学生信息表中的最后一位插入要添加的学生信息,输入学生 姓名,学生学号并判断是否重复,学生宿舍号并判断该宿舍人数是否已满,学生系别, 学生班级,学生手机号。 4.1.2 流程图 添加学生信息函数的流程图(如图 4-1): 开始 输 入 “ 1 ” 学 号 是 否 重 复 N N 输 入 宿 舍 号 宿 舍 人 数 是 否 已 满 N 输 入 学 号 输 入 系 别 、班 级 和 手 机 号 Y Y 添 加 成 功 结 束 4.2 修改模块 4.2.1 设计思路 图 4 -1 添 加 流 程 图 修改学生信息:输入要修改的学生的学号与表中的学生的学号进行比较,找到与其 相等的学生学号。再输入此学号学生的信息:学生姓名,学生学号(判断是否重复),学 生宿舍号(该宿舍人数是否已满),学生系别,学生班级,学生手机号。 4.2.2 流程图 修改学生信息函数的流程图如下(如图 4-2): 是否存在 Y 输入姓名 输入学生新信息:姓名 开始 输入“2” N 学号是否重复 Y N 输入新学生学号 输入新宿舍号 判 断 宿 舍 是 否 已 满 N Y 修改成功 结束 4.3 删除模块 4.3.1 设计思路 图 4 -2 修 改 流 程 图 删除学生信息:输入要删除的学生的姓名,找到与之相同的学生,然后将其后面的 学生信息前移一个位置,再将学生总数减一。 4.3.2 流程图 删除函数流程图(如图 4-3): 开始 输入所要删除的学生姓名 是否存在 N Y 将后边的数前移 删除成功 结束 4.4 判断模块 4.4.1 设计思路 图 4 -3 删 除 模 块 流 程 图 判断学生学号是否重复函数:将输入的学生学号与表中的学生的学号一一比较(跳 过自身与自身的比较)是否相等,若有相等的则说明重复,否则则没有。 判断宿舍人数是否已满函数:将输入的学生的宿舍号与表中前面(Total-1)个学生的宿 舍号进行比较是否相等,每相等一次,使 j++;当 j>=4 时,说明该宿舍已满,否则没有 满。 4.4.2 流程图 判断学号是否重复函数流程图(如图 4-4): 开始 输入学号 比较是否相等 N 录入成功 Y 图 4 -4 判 断 函 数 流 程 图 结束 判断宿舍人数是否已满(如图 4-5): 开始 输入宿舍号 比较是否四次相等 N 录入成功 Y 结束 图 4 -5 判 断 函 数 流 程 图 4.5 显示模块 显示所有学生信息:从第一个学生开始一直到最后一个学生依次输出学生的信息。 4.6 排序模块 4.6.1 设计思路 以姓名为关键字排序(冒泡法):从第一个学生开始与后边的学生姓名的首字母比较, 一直到最后一个学生分别与后面的比较。当此学生姓名首字母在后面学生姓名首字母之 后时,两学生的位置交换。 以学号为关键字排序和以宿舍号为关键字排序(冒泡法):从第一个学生开始与后面 学生学号(或宿舍号)比较,直到最后一个学生。当前面学生的学号(或宿舍号)大于 后面学生学号(或宿舍号)时,进行交换,否则不交换。 4.6.2 流程图 冒泡排序流程图(如图 4-6): 开始 下一个数据 是否到尾 Y N 前 一 个 字 符 是 否 大 于 后 一 个 字 符 Y 交换位置 排序完成 结束 图 4 -6 排 序 模 块 流 程 图 4.7 查询模块 4.7.1 设计思路 以姓名为关键字查询函数:输入要查找的学生姓名,从第一个学生开始比较,当相 等时,输出该学生信息,标记已找到该学生信息,若没有查找到,标记没有找到该学生 信息。 4.7.2 流程图 以姓名为关键字查找(如图 4-7): 开始 下一个, 是否到尾 Y N 比 较 是 否 相 同 Y N 输入要查找学生姓名 输出此学生信息 查找完成 结束 图 4-7 按姓名查询流程图 4.8 录入模块 4.8.1 设计思路 以学号为关键字查询:定义折半查找所需的变量 low,high,mid,使 low=1,high=total, mid=(low+high)/2,输入要查找的学生的学号,与第 mid 个学生的学号比较:当等于时, 输出该学生信息;当大于时,low=mid+1,继续折半,比较;当小于时,high=mid-1,继 续折半,比较。若 low>high 时则没有查找到该学生信息。 4.8.2 流程图 以学号为关键字查找流程图(如图 4-8): 输出该学生信息 是否在这些学号 之间 Y N 折半是否成功 Y N N 比较是否 相等 Y 按学号从小到大排序 查找失败 开始 输入要查找的学生学号 结束 4.9 查询模块 4.9.1 设计思路 图 4 -8 按 学 号 查 询 函 数 流 程 图 以寝室号为关键字查询(折半查找):定义折半查找所需的变量 low=1,high=Total, mid=(low+high)/2,将输入的学生的学号与第 mid 个学生的学号比较:相等时,输出该学 生信息,同时利用两个循环对所查找的寝室分别向前向后查找符合要求的寝室号的学生 信息;大于时,low=mid+1,折半,比较;小于时,high=mid-1,折半,比较。 4.9.2 流程图 以寝室号为关键字查询函数流程图(如图 4-9): 开始 输入要查找的学生寝室号 输出该学生信息 该寝室号是否 在其范围内 Y 折半是否成功 Y N 判断是否相等 N Y 按寝室号大小排序 查找失败 结束 图 4 -9 按 寝 室 号 查 询 函 数 流 程 图 4.10 储存模块 4.10.1 设计思路 储存函数:打开文件并且正确写入数据时保存。 4.10.2 流程图 储存函数的流程图(如图 4-10): 开始 储存成功 是否成功打开文 件 N Y 是否成功写入数据 N Y 结束 储存失败 图 4 -10 储 存 模 块 流 程 图 4.11 加载模块 4.11.1 设计思路 加载函数:打开文件后读取数据,则加载成功,表中个数减一。 4.11.2 流程图 加载函数流程图(如图 4-11): 开始 加载成功 Y 是否成功打开文件 N Y 是否读取成功 N Y 加载失败 结束 图 4 -11 加 载 模 块 流 程 图 4.12 提示保存模块 4.12.1 设计思路 退出前判断是否保存函数:若标志变量已变,则提醒保存,允许保存后,执行储存 函数。否则,不保存。 4.12.2 流程图 退出前提示是否保存函数流程图(如图 4-12): 开始 储存数据 判断数据是否 已变 N Y 选择是否保存 N Y 退出程序 结束 4.13 选择模块 4.13.1 设计思路 图 4 - 12 提 示 保 存 函 数 流 程 图 主函数:定义变量,选择要实现的功能。 4.13.2 流程图 主函数流程图(如图 4-13): 开始 输出功能菜单 选 择 是 否 正 确 Y N 选择要实现的功能 执行该功能 图 4 -13 选 择 模 块 流 程 图 5 运 行 测 试 (1)测试结果 对功能 1(添加学生信息)的测试:向程序中添加五条记录 学生 姓名 学生学号 宿舍号 手机号码 系别 班级 (如图 5-2) d 206 3 15032… jiben 10-2 (如图 5-3) f 203 3 15032… jiben 10-2 (如图 5-4) k 215 3 15032… jiben 10-2 (如图 5-5) j 212 3 15032… jiben 10-2 (如图 5-6) n 216 6 15032… jiben 10-2 图 5 - 1 菜 单 界 面 图 图 5 -2 添 加 界 面 图 图 5 -3 添 加 界 面 图 图 5 -4 添 加 界 面 图 图 5 -5 添 加 界 面 图 图 5 -6 添 加 界 面 图 对功能 2(修改学生信息)的测试:修改学号为 203 的学生信息 输入信息:学生姓名:f 学生学号:203 宿舍号:6 手机号码:15032… 系 别:jiben 班级:10-2(如图 5-7) 图 5 -7 修 改 界 面 图 对功能 3(删除学生信息)的测试:删除学生 n 的信息(如图 5-8) 图 5 -8 删 除 界 面 图 对功能 4(以姓名查找学生信息)的测试:查找学生 f 的信息(如图 5-9) 图 5 - 9 按 姓 名 查 找 界 面 图 对功能 5(以学号查询学生信息)的测试:查找学号为 212 的学生信息(图 5-10) 图 5 -10 按 学 号 查 找 界 面 图 对功能 6(按寝室号查询学生信息)的测试:查找 3 号宿舍学生信息(如图 5-11) 图 5 -11 按 寝 室 号 查 询 界 面 图 对功能 7(按寝室号从大到小排序)和功能 9(显示所有学生信息)的测试(如图 5-12 和图 5-13): 图 5 -12 按 寝 室 号 排 序 界 面 图 图 5 -13 显 示 结 果 界 面 图 对功能 8(按学号大小排序)的测试(如图 5-14 和图 5-15): 图 5 -14 按 学 号 排 序 界 面 图 图 5 -15 显 示 结 果 界 面 图 对功能 12(按姓名排序)的测试(如图 5-16 和图 5-17): 图 5 -16 按 姓 名 排 序 界 面 图 图 5 -17 显 示 结 果 界 面 图 对功能 10(保存数据)的测试(如图 5-18): 图 5 -18 保 存 界 面 图 对功能 11(加载数据)的测试(如图 5-19): 图 5 -19 加 载 界 面 图 对功能 13(退出程序)的测试(如图 5-20): 图 5 -20 退 出 程 序 界 面 图 当数据改变后为执行保存操作而要退出程序时(如图 5-21): 图 5 -21 提 醒 是 否 保 存 界 面 图 ( 2) 时间复杂度分析 n² logn 判断学号是否重复函数 S_number_Judge(Student S,int t);时间复杂度 T(n)=n 判断宿舍人数是否已满函数 D_number_Judge(Student S,int t);时间复杂度 T(n)=n 添加学生信息函数 Add(Student S); 时间复杂度 T(n)=n 删除学生信息函数 Delete(Student S); 时间复杂度 T(n)=n 修改学生信息函数 Modify(Student S);时间复杂度 T(n)=n 显示学生信息函数 Display_All(Student S);时间复杂度 T(n)=n 按照学号从小到大排序函数 Order_S_number(Student S);时间复杂度 T(n)= n² 按照寝室号从小到大排序函数 Order_D_number(Student S);时间复杂度 T(n)= n² 按照姓名首字母的先后顺序排序函数 Order_N_name(Student S);时间复杂度 T(n)= 按照姓名查找学生信息函数 Search_S_name(Student S);时间复杂度 T(n)=n 按照学生学号查找学生信息函数 Search_S_number(Student S);时间复杂度 T(n)= 按照寝室号查找学生信息函数 Search_D_number(Student S);时间复杂度 T(n)= logn ( 3) 调试过程中对所遇到问题的分析 问题主要出现在按寝室号查找函数 Search_D_number(Student S),加载函数 Load (Student S)和修改学生信息函数 Modify(Student S)上。在调试按寝室号查找函数 Search_D_number(Student S)时,由于一个寝室肯能居住多个学生,所以在找到所查找的 寝室号时,必需利用两个循环对所查找的寝室分别向前向后查找符合要求的寝室号的学 生信息。在调试加载函数 Load(Student S)时,由于程序每次都会从文件中多读一条 记录,即乱码,所以在记录加载完毕之后,必需对记录总数减一。在调试修改学生信息 函数 Modify(Student S)时,由于修改的学生学号不能与其他学生重复,因此需要用函数 S_number_Judge(Student S,int t)进行判断学号是否重复,然而若不修改该学生学号仍然 输入原来的学号时会有“输入学生学号重复,请重新输入“的提示,因此需要在函数 S_number_Judge(Student S,int t)的 if 语句中加上“i!=t”的条件。 ( 4) 算法的改进设想 在排序函数上,可将冒泡排序改为效率更高的的算法:如堆排序,归并排序,基排 序等。在查找函数上可将折半查找改为哈希查找法等。 6 总 结 通过这次数据结构的课程设计,我从中学到了很多,充分利用了这几天的时间进行 程序的编程报告的整理和总结,感觉很满足。许多曾经不懂得知识有了较深刻的了解, 并且熟练地掌握了一些编写程序的方法。 (1)收获: 1)一个函数既能调用它本身也能调用其他函数,而在 C 语言程序中源文件中包含 头文件“string.h”时可直接调用比较函数“strcmp”和复制函数“strcpy ”。 2)以前不知道如何把各个函数编排在一起,不能形成一个整体的模块,现在通过 实践和调试能组装好各个模块,使它们实现各自的功能。 (2)程序的不足: 按姓名、学号和寝室号排序是用冒泡法排的,程序的效率不高,当有较多学生信 息时,程序的执行速度会较慢。 参 考 文 献 [ 1 ] 严 蔚 敏 , 吴 伟 民 . 数 据 结 构 . 北 京 : 清 华 大 学 出 版 社 , 2008 . [ 2 ] 苏 仕 华 . 数 据 结 构 课 程 设 计 . 北 京 : 机 械 工 业 出 版 社 , 2010 . [ 3 ] .滕 国 文 . 数 据 结 构 课 程 设 计 . 北 京 : 清 华 大 学 出 版 社 , 2010 . 附 录 S _ number_ J udg e( S tudent S ,int t) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 判 断 所 输 入 学 号 在 表 中 是 否 已 存 在 A dd( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 向 表 中 插 入 一 个 记 录 A lter( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 修 改 表 S 中 的 一 条 记 录 Delete( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 删 除 S 中 的 记 录 Display _ A ll ( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 显 示 表 中 所 有 学 生 的 信 息 S ort_ D_number( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 表 中 记 录 按 寝 室 号 从 小 到 大 排 序 S ort_ S _num ber( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 表 中 记 录 按 学 号 从 小 到 大 排 序 Query _ S _ nam e( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 根 据 所 输 入 的 学 生 姓 名 显 示 出 该 学 生 的 信 息 Query _ S _ num ber( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 根 据 输 入 的 学 号 显 示 出 该 学 生 的 信 息 Query _ D_ number( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 根 据 所 输 入 的 寝 室 号 显 示 出 该 寝 室 的 学 生 的 信 息 S ave( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 将 表 中 数 据 保 存 到 文 件 中 去 L oad( S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 将 文 件 中 数 据 加 载 到 程 序 中 J udg e_ S ave( int i ,S tudent S ) 初 始 条 件 : 表 S 已 存 在 操 作 结 果 : 表 中 数 据 改 变 后 没 有 及 时 保 存 在 程 序 中 时 提 醒 用 户 是 否 保 存 程 序 代 码 : #include<stdio.h> #include<string .h> #include<stdlib.h> #define M 100 int save=0 ; / 用 来 判 断 是 否 已 保 存 操 作 / 定 义 一 个 存 储 学 生 相 关 信 息 的 结 构 体 ty pedef struct { char S _ nam e[ 31 ] ; / 学 生 姓 名 char S _number[ 16 ] ; / 学 生 学 号 char S _ x ibie[ 31 ] ,S _ banji[ 31 ] ,P_ num ber[ 15 ] ; / 学 生 系 别 , 班 级 int D_number ; / 学 生 所 在 寝 室 的 宿 舍 号 , 电 话 号 码 int Total; / 学 生 总 数 }S tudent[ M ] ,S t; / 判 断 学 号 是 否 与 表 中 所 存 学 号 重 复 void S _ num ber_ J udg e( S tudent S ,int t) { int i ,j=0 ; for( i=0 ; i<=( S ->Total)-1 ; i++) if( strcm p( S [ i ] .S _ num ber,S [ t] .S _ num ber)==0 & & ( i ! =t)) { printf("学 号 输 入 失 败 ,该 学 号 已 存 在 ,请 重 新 输 入 学 号 ! \n") ; printf("请 输 入 学 生 的 学 号 (15 个 字 符 以 内 ) : "); scanf("% s",S [ t] .S _ num ber); g etchar(); j=0 ; } } / 判 断 宿 舍 人 数 是 否 已 满 void D_ number_ Judg e( S tudent S ,int t) { int i ,j=0 ; for( i=0 ; i<=( S ->Total)-1 ; i++) { i f( S [ i] .D_ num ber==S [ t] .D_ number) j++; w hile( j>=4 ) { printf("宿 舍 号 输 入 失 败 , 该 宿 舍 人 数 已 满 , 请 重 新 输 入 宿 舍 号 ! \n") ; printf("请 输 入 学 生 的 宿 舍 号 ( 整 数 ): "); scanf("% d",& S [ t] .D_number); j=0 ; } } } / 添 加 学 生 信 息 函 数 void A dd( S tudent S ) { ++( S ->Total); printf("请 输 入 学 生 姓 名 ( 30 个 字 符 以 内 ) : "); scanf("% s",S [ S ->Total].S _ nam e); g etchar();/ 获 取 换 行 符 printf("请 输 入 学 生 的 学 号 (15 个 字 符 以 内 ) : "); scanf("% s",S [ S ->Total].S _ number); g etchar(); S _ number_ J udg e(S ,S ->Total);/ 判 断 输 入 的 学 号 是 否 与 表 中 所 存 在 的 学 号 重 复 printf("请 输 入 宿 舍 号 码 : "); scanf("% d",& S [ S ->Total].D_ num ber); g etchar(); D_ number_J udg e( S ,S ->Total);/ 判 断 所 安 排 宿 舍 人 数 是 否 已 满 printf("请 输 入 学 生 系 别 ( 30 个 字 符 以 内 ) : "); scanf("% s",S [ S ->Total].S _ x ibie); g etchar(); printf("请 输 入 学 生 班 级 : "); scanf("% s",S [ S ->Total].S _ banji); g etchar(); printf("请 输 入 学 生 电 话 号 码 : "); scanf("% s",S [ S ->Total].P_ number); g etchar(); save=1 ; printf("添 加 成 功 ! \n\n") ; } / 修 改 学 生 信 息 函 数 void M odify ( S tudent S ) { int i ; int m=0 ; / 用 来 判 断 表 中 是 否 存 在 所 要 修 改 的 学 生 的 信 息 char number[ 18 ] ,ch[ 16 ]="0 "; printf("请 输 入 你 要 修 改 学 生 的 学 号 : "); scanf("% s",num ber); g etchar(); for( i=1 ; i<=S ->Total; i++) if( strcmp( S [ i ] .S _ number,num ber)==0 ) m =i; i f(! m) printf("你 所 要 修 改 的 学 生 信 息 在 表 中 不 存 在 ! \n") ; else { } printf("新 信 息 如 下 : \n") ; printf("请 输 入 学 生 姓 名 ( 30 个 字 符 以 内 ) : "); scanf("% s",S [ m ] .S _ name); g etchar(); printf("请 输 入 学 生 的 学 号 (15 个 字 符 以 内 ) : "); scanf("% s",S [ m].S _number); g etchar(); S _ num ber_ Judg e(S ,m ) ;/ 判 断 学 号 是 否 重 复 printf("请 输 入 宿 舍 号 : "); scanf("% d",& S [ m ] .D_ number); g etchar(); D_ number_ J udg e( S ,S [ m].D_ number);/ 判 断 该 宿 舍 人 数 是 否 已 满 printf("请 输 入 学 生 系 别 : "); scanf("% s",S [ m].S _ x ibie); g etchar(); printf("请 输 入 学 生 班 级 : "); scanf("% s",S [ m].S _ banji); g etchar(); printf("请 输 入 学 生 手 机 号 码 : "); scanf("% s",S [ m].P_ num ber); g etchar(); save=1 ; printf("修 改 成 功 ! \n") ; putchar('\n') ; } / 删 除 学 生 信 息 void Delete( S tudent S ) { int i ,j; int flag =0 ; / 用 来 判 断 表 中 是 否 存 在 所 要 删 除 的 学 生 的 信 息 char name[ 20 ] ; printf("请 输 入 你 要 删 除 学 生 的 姓 名 : "); scanf("% s",na me); g etchar(); for( i=1 ; i<=S ->Total; i++) if( strcm p( S [ i] .S _ nam e ,name)==0 ) flag =i; i f( ! flag ) printf("你 所 要 删 除 的 学 生 在 表 中 不 存 在 ! "); else { for( i=flag ; i<S ->Total; i++) { j=i+1 ; strcpy ( S [ i ] .S _nam e ,S [ j ] .S _ nam e); strcpy ( S [ i] .S _number,S [ j] .S _ num ber); strcpy ( S [ i] .S _x ibie,S [ j] .S _ x ibie); strcpy ( S [ i ] .S _ banji,S [ j ] .S _ banji); strcpy ( S [ i] .P_ number,S [ j] .P_number); S [ i ] .D_ number=S [ j ] .D_number; } ( S ->Total)--; save=1 ; printf("删 除 成 功 ! "); } printf("\n\n") ; } / 显 示 所 有 学 生 信 息 函 数 void Displa y _ A ll ( S tudent S ) { int i ; printf("全 体 学 生 信 息 如 下 : \n") ; printf("学 生 姓 名 学 生 学 号 宿 舍 号 手 机 号 码 系 别 班 级 \n") ; for( i=1 ; i<=S ->Total; i++) printf("% -12 s% -15 s% -8 d% -19 s% -10 s% -10 s\n",S [ i] .S _ name,S [ i ] .S _ number,S [ i] .D_ number,S [ i] .P_num ber,S [ i ] .S _ x ibie,S [ i ] .S _ banji); putchar('\n\n') ; } / 按 姓 名 排 序 ( 冒 泡 法 ) void Order_N_ name( S tudent S ) { int i ,j,t; char name[ 30 ] ,ph[ 15 ] ; char number[ 15 ] ,x ibie[ 31 ] ,banji[ 31 ] ; for( i=1 ; i<=S ->Total; i++) for( j=i; j<=S ->Total; j++) i f( strcmp( S [ i ] .S _name,S [ j] .S _ name)>0 ) { strcpy ( na me,S [ i ] .S _ name); strcpy ( num ber,S [ i] .S _ num ber); strcpy ( ph,S [ i ] .P_ number); strcpy ( x ibie,S [ i ] .S _ x ibie); strcpy ( banji,S [ i ] .S _ banji); t=S [ i] .D_number; strcpy ( S [ i ] .S _name,S [ j ] .S _ name); strcpy ( S [ i ] .S _ num ber,S [ j ] .S _ number); strcpy ( S [ i] .P_ number,S [ j] .P_number); strcpy ( S [ i] .S _x ibie,S [ j ] .S _ x ibie); strcpy ( S [ i ] .S _ banji,S [ j ] .S _ banji); S [ i] .D_ number=S [ j] .D_ number; strcpy ( S [ j ] .S _nam e,na m e); strcpy ( S [ j ] .S _ number,number); strcpy ( S [ j ] .P_number,ph); st展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




宿舍管理查询系统设计与实现.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4864653.html