赞
踩
目录
在这篇博客中,我们将探讨如何使用C语言来开发一个简单的学生宿舍信息管理系统。这个系统能够让我们添加、删除、修改以及查询学生信息。此外,我们也将设计数据结构来管理宿舍、来访者和保修信息,虽然在提供的代码中我们只实现了与学生信息相关的功能。
首先,我们设计了几个结构体来存储不同类型的信息:
接下来,我们实现了几个关键的函数来处理学生信息:
我们还设计了一个简单的文本菜单系统,通过它用户可以选择他们想要执行的操作(添加、删除、修改或查询学生信息)。这个系统会一直运行,直到用户选择退出。
所有的学生信息都存储在一个文本文件中。通过使用文件I/O操作,我们可以持久化这些信息,即使在程序关闭后也不会丢失。
用户可以通过简单的文本界面与系统互动。例如,如果想要添加一个学生信息,用户可以选择相应的菜单项然后输入学生的详细信息。系统会将这些信息追加到文件中,以便将来查询或修改。
如:学生信息、宿舍信息,来访信息、保修信息的维护管理等信息
完整代码拿走了,记得点赞,收藏,评论哈(●'◡'●)
- #define _CRT_SECURE_NO_DEPRECATE
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- typedef struct {
- int id; // 学生ID
- char name[50]; // 学生姓名
- char gender[10]; // 性别
- int age; // 年龄
- char department[50]; // 院系
- char dormitory[20]; // 宿舍号
- } Student;
-
- typedef struct {
- char dormitory[20]; // 宿舍号
- int capacity; // 容纳人数
- int current; // 当前人数
- } Dormitory;
-
- typedef struct {
- int visitorID; // 来访者ID
- char name[50]; // 来访者姓名
- char time[20]; // 来访时间
- char dormitory[20]; // 被访宿舍号
- } Visitor;
-
- typedef struct {
- int repairID; // 保修ID
- char dormitory[20]; // 宿舍号
- char description[100]; // 问题描述
- char status[20]; // 当前状态
- } Repair;
-
-
- // 函数声明
- void addStudent();
- void deleteStudent();
- void modifyStudent();
- void queryStudent();
-
- void addDormitory();
- // 类似地,为宿舍、来访信息、保修信息实现增删改查功能
-
- void displayMenu();
-
- int main() {
- int choice;
- while (1) {
- displayMenu();
- printf("请输入您的选择:");
- scanf("%d", &choice);
- switch (choice) {
- case 1:
- addStudent();
- break;
- case 2:
- deleteStudent();
- break;
- case 3:
- modifyStudent();
- break;
- case 4:
- queryStudent();
- break;
- case 0:
- printf("感谢使用,再见!\n");
- exit(0);
- default:
- printf("无效的选择,请重新输入。\n");
- }
- }
- return 0;
- }
-
- void displayMenu() {
- printf("\n====== 学生宿舍信息管理系统 ======\n");
- printf("1. 添加学生信息\n");
- printf("2. 删除学生信息\n");
- printf("3. 修改学生信息\n");
- printf("4. 查询学生信息\n");
- printf("0. 退出\n");
- printf("===================================\n");
- }
-
-
- // 实现addStudent等函数
- void addStudent() {
- Student s;
- FILE* fp = fopen("students.txt", "a"); // 以追加模式打开文件
- if (fp == NULL) {
- printf("无法打开文件\n");
- return;
- }
-
- printf("输入学生ID: ");
- scanf("%d", &s.id);
- printf("输入学生姓名: ");
- scanf("%s", s.name);
- printf("输入性别: ");
- scanf("%s", s.gender);
- printf("输入年龄: ");
- scanf("%d", &s.age);
- printf("输入院系: ");
- scanf("%s", s.department);
- printf("输入宿舍号: ");
- scanf("%s", s.dormitory);
-
- fprintf(fp, "%d %s %s %d %s %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
- fclose(fp);
-
- printf("学生信息已添加。\n");
- }
-
- void deleteStudent() {
- int id, found = 0;
- Student s;
- FILE* fp = fopen("students.txt", "r");
- FILE* fpTemp = fopen("temp.txt", "w"); // 创建临时文件用于存储未被删除的数据
- if (fp == NULL || fpTemp == NULL) {
- printf("文件操作失败。\n");
- return;
- }
-
- printf("输入要删除的学生ID: ");
- scanf("%d", &id);
-
- while (fscanf(fp, "%d %s %s %d %s %s\n", &s.id, s.name, s.gender, &s.age, s.department, s.dormitory) != EOF) {
- if (s.id != id) {
- fprintf(fpTemp, "%d %s %s %d %s %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
- }
- else {
- found = 1;
- }
- }
-
- fclose(fp);
- fclose(fpTemp);
-
- remove("students.txt"); // 删除原文件
- rename("temp.txt", "students.txt"); // 重命名临时文件为原文件名
-
- if (found) {
- printf("学生信息已删除。\n");
- }
- else {
- printf("未找到该学生信息。\n");
- }
- }
-
-
- void modifyStudent() {
- int id, found = 0;
- Student s;
- FILE* fp = fopen("students.txt", "r");
- FILE* fpTemp = fopen("temp.txt", "w");
- if (fp == NULL || fpTemp == NULL) {
- printf("文件操作失败。\n");
- return;
- }
-
- printf("输入要修改的学生ID: ");
- scanf("%d", &id);
-
- while (fscanf(fp, "%d %s %s %d %s %s\n", &s.id, s.name, s.gender, &s.age, s.department, s.dormitory) != EOF) {
- if (s.id == id) {
- printf("输入新的学生姓名: ");
- scanf("%s", s.name);
- printf("输入新的性别: ");
- scanf("%s", s.gender);
- printf("输入新的年龄: ");
- scanf("%d", &s.age);
- printf("输入新的院系: ");
- scanf("%s", s.department);
- printf("输入新的宿舍号: ");
- scanf("%s", s.dormitory);
- found = 1;
- }
- fprintf(fpTemp, "%d %s %s %d %s %s\n", s.id, s.name, s.gender, s.age, s.department, s.dormitory);
- }
-
- fclose(fp);
- fclose(fpTemp);
-
- remove("students.txt");
- rename("temp.txt", "students.txt");
-
- if (found) {
- printf("学生信息已修改。\n");
- }
- else {
- printf("未找到该学生信息。\n");
- }
- }
-
- void queryStudent() {
- int id, found = 0;
- Student s;
- FILE* fp = fopen("students.txt", "r");
- if (fp == NULL) {
- printf("文件打开失败。\n");
- return;
- }
-
- printf("输入要查询的学生ID: ");
- scanf("%d", &id);
-
- while (fscanf(fp, "%d %s %s %d %s %s\n", &s.id, s.name, s.gender, &s.age, s.department, s.dormitory) != EOF) {
- if (s.id == id) {
- 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);
- found = 1;
- break;
- }
- }
-
- fclose(fp);
-
- if (!found) {
- printf("未找到该学生信息。\n");
- }
- }
本文介绍了如何使用C语言开发一个基本的学生宿舍信息管理系统。通过这个项目,我们不仅能够练习C语言的基本语法,还能了解到结构体的使用、文件I/O操作以及简单的菜单系统设计。尽管这个系统还很基础,但它为进一步开发更复杂的管理系统奠定了基础。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。