• 【C语言】学生宿舍信息管理系统


    目录

     项目说明

    1. 数据结构设计

    2. 功能实现

    3. 主菜单设计

    4. 文件操作

    5. 系统使用

    项目展示

    1.主菜单功能界面

    ​编辑 

    2.添加信息

    3.查询信息

    4.修改信息

    5.删除信息

    6.退出程序

    项目完整代码

    结语 


    在这篇博客中,我们将探讨如何使用C语言来开发一个简单的学生宿舍信息管理系统。这个系统能够让我们添加、删除、修改以及查询学生信息。此外,我们也将设计数据结构来管理宿舍、来访者和保修信息,虽然在提供的代码中我们只实现了与学生信息相关的功能。

     项目说明

    1. 数据结构设计

    首先,我们设计了几个结构体来存储不同类型的信息:

    • Student(学生): 存储学生ID、姓名、性别、年龄、院系和宿舍号。
    • Dormitory(宿舍): 存储宿舍号、容纳人数和当前人数。
    • Visitor(来访者): 存储来访者ID、姓名、来访时间和被访宿舍号。
    • Repair(保修): 存储保修ID、宿舍号、问题描述和当前状态。

    2. 功能实现

    接下来,我们实现了几个关键的函数来处理学生信息:

    • addStudent(添加学生): 通过接收用户输入,创建一个新的学生记录并将其追加到文件中。
    • deleteStudent(删除学生): 根据用户输入的ID,从文件中找到并删除相应的学生记录。
    • modifyStudent(修改学生): 允许用户根据ID修改学生的详细信息。
    • queryStudent(查询学生): 根据ID查询并显示学生的详细信息。

    3. 主菜单设计

    我们还设计了一个简单的文本菜单系统,通过它用户可以选择他们想要执行的操作(添加、删除、修改或查询学生信息)。这个系统会一直运行,直到用户选择退出。

    4. 文件操作

    所有的学生信息都存储在一个文本文件中。通过使用文件I/O操作,我们可以持久化这些信息,即使在程序关闭后也不会丢失。

    5. 系统使用

    用户可以通过简单的文本界面与系统互动。例如,如果想要添加一个学生信息,用户可以选择相应的菜单项然后输入学生的详细信息。系统会将这些信息追加到文件中,以便将来查询或修改。

    项目展示

    1.主菜单功能界面

     

    2.添加信息

    如:学生信息、宿舍信息,来访信息、保修信息的维护管理等信息

     

    3.查询信息

    4.修改信息

    5.删除信息

    6.退出程序

    项目完整代码

    完整代码拿走了,记得点赞,收藏,评论哈(●'◡'●)

    1. #define _CRT_SECURE_NO_DEPRECATE
    2. #include
    3. #include
    4. #include
    5. typedef struct {
    6. int id; // 学生ID
    7. char name[50]; // 学生姓名
    8. char gender[10]; // 性别
    9. int age; // 年龄
    10. char department[50]; // 院系
    11. char dormitory[20]; // 宿舍号
    12. } Student;
    13. typedef struct {
    14. char dormitory[20]; // 宿舍号
    15. int capacity; // 容纳人数
    16. int current; // 当前人数
    17. } Dormitory;
    18. typedef struct {
    19. int visitorID; // 来访者ID
    20. char name[50]; // 来访者姓名
    21. char time[20]; // 来访时间
    22. char dormitory[20]; // 被访宿舍号
    23. } Visitor;
    24. typedef struct {
    25. int repairID; // 保修ID
    26. char dormitory[20]; // 宿舍号
    27. char description[100]; // 问题描述
    28. char status[20]; // 当前状态
    29. } Repair;
    30. // 函数声明
    31. void addStudent();
    32. void deleteStudent();
    33. void modifyStudent();
    34. void queryStudent();
    35. void addDormitory();
    36. // 类似地,为宿舍、来访信息、保修信息实现增删改查功能
    37. void displayMenu();
    38. int main() {
    39. int choice;
    40. while (1) {
    41. displayMenu();
    42. printf("请输入您的选择:");
    43. scanf("%d", &choice);
    44. switch (choice) {
    45. case 1:
    46. addStudent();
    47. break;
    48. case 2:
    49. deleteStudent();
    50. break;
    51. case 3:
    52. modifyStudent();
    53. break;
    54. case 4:
    55. queryStudent();
    56. break;
    57. case 0:
    58. printf("感谢使用,再见!\n");
    59. exit(0);
    60. default:
    61. printf("无效的选择,请重新输入。\n");
    62. }
    63. }
    64. return 0;
    65. }
    66. void displayMenu() {
    67. printf("\n====== 学生宿舍信息管理系统 ======\n");
    68. printf("1. 添加学生信息\n");
    69. printf("2. 删除学生信息\n");
    70. printf("3. 修改学生信息\n");
    71. printf("4. 查询学生信息\n");
    72. printf("0. 退出\n");
    73. printf("===================================\n");
    74. }
    75. // 实现addStudent等函数
    76. void addStudent() {
    77. Student s;
    78. FILE* fp = fopen("students.txt", "a"); // 以追加模式打开文件
    79. if (fp == NULL) {
    80. printf("无法打开文件\n");
    81. return;
    82. }
    83. printf("输入学生ID: ");
    84. scanf("%d", &s.id);
    85. printf("输入学生姓名: ");
    86. scanf("%s", s.name);
    87. printf("输入性别: ");
    88. scanf("%s", s.gender);
    89. printf("输入年龄: ");
    90. scanf("%d", &s.age);
    91. printf("输入院系: ");
    92. scanf("%s", s.department);
    93. printf("输入宿舍号: ");
    94. scanf("%s", s.dormitory);
    95. fprintf(fp, "%d %s %s %d %s %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
    96. fclose(fp);
    97. printf("学生信息已添加。\n");
    98. }
    99. void deleteStudent() {
    100. int id, found = 0;
    101. Student s;
    102. FILE* fp = fopen("students.txt", "r");
    103. FILE* fpTemp = fopen("temp.txt", "w"); // 创建临时文件用于存储未被删除的数据
    104. if (fp == NULL || fpTemp == NULL) {
    105. printf("文件操作失败。\n");
    106. return;
    107. }
    108. printf("输入要删除的学生ID: ");
    109. scanf("%d", &id);
    110. while (fscanf(fp, "%d %s %s %d %s %s\n", &s.id, s.name, s.gender, &s.age, s.department, s.dormitory) != EOF) {
    111. if (s.id != id) {
    112. fprintf(fpTemp, "%d %s %s %d %s %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
    113. }
    114. else {
    115. found = 1;
    116. }
    117. }
    118. fclose(fp);
    119. fclose(fpTemp);
    120. remove("students.txt"); // 删除原文件
    121. rename("temp.txt", "students.txt"); // 重命名临时文件为原文件名
    122. if (found) {
    123. printf("学生信息已删除。\n");
    124. }
    125. else {
    126. printf("未找到该学生信息。\n");
    127. }
    128. }
    129. void modifyStudent() {
    130. int id, found = 0;
    131. Student s;
    132. FILE* fp = fopen("students.txt", "r");
    133. FILE* fpTemp = fopen("temp.txt", "w");
    134. if (fp == NULL || fpTemp == NULL) {
    135. printf("文件操作失败。\n");
    136. return;
    137. }
    138. printf("输入要修改的学生ID: ");
    139. scanf("%d", &id);
    140. while (fscanf(fp, "%d %s %s %d %s %s\n", &s.id, s.name, s.gender, &s.age, s.department, s.dormitory) != EOF) {
    141. if (s.id == id) {
    142. printf("输入新的学生姓名: ");
    143. scanf("%s", s.name);
    144. printf("输入新的性别: ");
    145. scanf("%s", s.gender);
    146. printf("输入新的年龄: ");
    147. scanf("%d", &s.age);
    148. printf("输入新的院系: ");
    149. scanf("%s", s.department);
    150. printf("输入新的宿舍号: ");
    151. scanf("%s", s.dormitory);
    152. found = 1;
    153. }
    154. fprintf(fpTemp, "%d %s %s %d %s %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
    155. }
    156. fclose(fp);
    157. fclose(fpTemp);
    158. remove("students.txt");
    159. rename("temp.txt", "students.txt");
    160. if (found) {
    161. printf("学生信息已修改。\n");
    162. }
    163. else {
    164. printf("未找到该学生信息。\n");
    165. }
    166. }
    167. void queryStudent() {
    168. int id, found = 0;
    169. Student s;
    170. FILE* fp = fopen("students.txt", "r");
    171. if (fp == NULL) {
    172. printf("文件打开失败。\n");
    173. return;
    174. }
    175. printf("输入要查询的学生ID: ");
    176. scanf("%d", &id);
    177. while (fscanf(fp, "%d %s %s %d %s %s\n", &s.id, s.name, s.gender, &s.age, s.department, s.dormitory) != EOF) {
    178. if (s.id == id) {
    179. printf("学生ID: %d\n姓名: %s\n性别: %s\n年龄: %d\n院系: %s\n宿舍号: %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
    180. found = 1;
    181. break;
    182. }
    183. }
    184. fclose(fp);
    185. if (!found) {
    186. printf("未找到该学生信息。\n");
    187. }
    188. }

    结语 

    本文介绍了如何使用C语言开发一个基本的学生宿舍信息管理系统。通过这个项目,我们不仅能够练习C语言的基本语法,还能了解到结构体的使用、文件I/O操作以及简单的菜单系统设计。尽管这个系统还很基础,但它为进一步开发更复杂的管理系统奠定了基础。

     

  • 相关阅读:
    数据可视化图表总结(二)
    基于linux的操作系统的通用启动流程(一)
    44. 通配符匹配 ●●● & HJ71 字符串通配符 ●●
    day31
    LabVIEW性能和内存管理 6
    每天一个数据分析题(三百零五)
    ssm+java+vue基于微信小程序的校园商铺商城购物系统(用户,商家,管理员三类用户角色)#毕业设计
    SpringBoot新增拦截器详解
    毕设准备---Cookie,Session
    [力扣] 剑指 Offer 第四天 - 数组中重复的数字
  • 原文地址:https://blog.csdn.net/VLOKL/article/details/136334462