今天才打开电脑对自己上个学期的东西进行了回顾,才发现上学期期末课程设计是用C语言写了一个简单的宿舍管理系统,那时候学校的要求是必须要有图形化界面的要求,所以我们小组没有选择用c语言进行这次课程设计的设计。用了别的语言。所以最后汇报提交的也不是我这个,功能十分简单,主要就是结构体一些方面的知识要求,献丑了。废话少说,进入正题。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h> typedef struct pnode   //结构体定义 用于存放学生信息的节点
{char name[10];           //姓名char num[16];             //学号char dor[30];             //宿舍号char group[20];           //班级char score[10];
}student;char filename[200] = "data.txt";            //文件名
FILE* fp;                     //指向文件的指针void creat() // 创建一个文本文件   用于存放学生数据
{student* person;person = (student*)malloc(sizeof(student));   //为节点分配内存if ((fp = fopen(filename, "w+")) == NULL) { exit(0); }printf("data.txt文件已创建。\n\n");printf("\n请输入学生的姓名 学号 宿舍号 班级 评分 用空格隔开 以#结束\n");scanf("%s", person->name);while (strcmp(person->name, "#"))    //该循环用于控制学生信息的录入 遇#结束 {scanf("%s %s %s %s", person->num, person->dor, person->group, person->score);fprintf(fp, "%-10s%-10s%-10s%-10s%-10s\n", person->name, person->num, person->dor, person->group, person->score);scanf("%s", person->name);}fclose(fp);
}void readfile()    //文件读取函数
{if ((fp = fopen(filename, "r+")) == NULL) { printf("\n无法打开该文件:\n"); exit(0); }fclose(fp);
}void output()  //输出函数 用于输出文件的全部信息
{student* person;long offset1, offset2;char name1[10], name2[10], name3[10];char num1[16], num2[16], num3[16];char dor1[30], dor2[30], dor3[30];char group1[20], group2[20], group3[20];char score1[10], score2[10], score3[10];person = (student*)malloc(sizeof(student));if ((fp = fopen(filename, "r")) == NULL) { printf("\n 无法打开该文件"); exit(0); }printf("\n****************************************************************\n");printf("%40s\n", "输出的记录如下\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "学号", "宿舍号", "班级", "评分");while (!feof(fp))                            //次循环用于输出文件{fscanf(fp, "%s%s%s%s%s\n", person->name, person->num, person->dor, person->group, person->score);printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);}fclose(fp);printf("************************************************************\n\n");
}void namesearch()  // 按姓名搜索函数
{int k = 0;char namekey[10];student* person;person = (student*)malloc(sizeof(student));printf("\n 请输入您要查找的姓名:");scanf("%s", namekey);if ((fp = fopen(filename, "rb")) == NULL) { printf("\n 无法打开文件"); exit(0); }while (!feof(fp)){fscanf(fp, "%s %s %s %s %s\n", person->name, person->num, person->dor, person->group, person->score);if (!strcmp(namekey, person->name)){printf("\n\n 已经为您找到 以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "学号", "宿舍号", "班级", "评分");printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);k = 1;}}if (!k) { printf("\n\n 没有关于此姓名的任何信息! \n"); }fclose(fp);
}void numsearch()       //按学号搜索函数
{int k = 0;char xhkey[16];student* person;person = (student*)malloc(sizeof(student));printf("\n 请您输入需要查找的学号:");scanf("%s", xhkey);if ((fp = fopen(filename, "rb")) == NULL) { printf("\n 无法打开文件 "); exit(0); }while (!feof(fp)){fscanf(fp, "%s %s %s %s %s\n", person->name, person->num, person->dor, person->group, person->score);if (!strcmp(xhkey, person->num)){printf("\n\n 已经为您找到 以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "宿舍号", "房号", "班级", "评分");printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);k = 1;}}if (!k) { printf("\n\n 没有关于该学号的任何信息\n"); }fclose(fp);
}void dorsearch()   //按宿舍号搜索函数
{int k = 0;char fhkey[30];student* person;person = (student*)malloc(sizeof(student));printf("\n 请您输入想要查找的宿舍号");scanf("%s", fhkey);if ((fp = fopen(filename, "rb")) == NULL) { printf("\n 无法打开文件"); exit(0); }while (!feof(fp)){fscanf(fp, "%s %s %s %s %s\n", person->name, person->num, person->dor, person->group, person->score);if (!strcmp(fhkey, person->dor)){printf("\n\n 已经为您找到 以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "学号", "宿舍号", "班级", "评分");printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);k = 1;}}if (!k) { printf("\n\n 没有关于此房号的任何信息\n"); }fclose(fp);
}
void scoresearch()  // 按评分搜索函数
{int k = 0;char scorekey[10];student* person;person = (student*)malloc(sizeof(student));printf("\n 请输入您要查找的评分:");scanf("%s", scorekey);if ((fp = fopen(filename, "rb")) == NULL) { printf("\n 无法打开文件"); exit(0); }while (!feof(fp)){fscanf(fp, "%s %s %s %s %s\n", person->name, person->num, person->dor, person->group, person->score);if (!strcmp(scorekey, person->score)){printf("\n\n 已经为您找到 以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "学号", "宿舍号", "班级", "评分");printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);k = 1;}}if (!k) { printf("\n\n 没有关于此评分的任何信息! \n"); }fclose(fp);
}
void  add() //插入函数  用于像已有文件插入一条新的学生信息记录
{student* person;person = (student*)malloc(sizeof(student));if ((fp = fopen(filename, "a")) == NULL) { printf("\n 无法打开文件"); exit(0); }printf("\n 请您输入学生姓名 学号 宿舍号 班级 评分 \n");scanf("%s %s %s %s %s", person->name, person->num, person->dor, person->group, person->score);fprintf(fp, "%-10s%-10s%-10s%-10s%-10s\n", person->name, person->num, person->dor, person->group, person->score);fclose(fp);
}void modify()  //更新函数 用于修改指定学生姓名的记录
{int k = 0;long offset;char namekey[10];student* person;person = (student*)malloc(sizeof(student));printf("\n 请您输入想要更改的学生的姓名 :");scanf("%s", namekey);if ((fp = fopen(filename, "r+")) == NULL) { printf("\n 无法打开文件"); exit(0); }while (!feof(fp)){offset = ftell(fp);fscanf(fp, "%s %s %s %s %s\n", person->name, person->num, person->dor, person->group, person->score);if (!strcmp(namekey, person->name))    //比较是否相同 如{k = 1; break;}}if (k)                   //相同 输出记录并进行修改{printf("\n 记录输出如下:\n\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "学号", "宿舍号", "班级", "评分");printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);printf("\n 请您输入新的学生姓名 学号 宿舍号 班级 评分 :\n");scanf("%s %s %s %s %s", person->name, person->num, person->dor, person->group, person->score);fseek(fp, offset, SEEK_SET);fprintf(fp, "%-10s%-10s%-10s%-10s%-10s\n", person->name, person->num, person->dor, person->group, person->score);}else { printf("\n 没有关于该姓名的任何记录\n"); }fclose(fp);
}void deleted() //删除函数 用于删除指定学生姓名的记录
{int k = 0;char m;long offset;char namekey[10];student* person;person = (student*)malloc(sizeof(student));printf("\n请您输入想要删除的姓名:");scanf("%s", namekey);if ((fp = fopen(filename, "r+")) == NULL) { printf("\n 无法打开文件 "); exit(0); }while (!feof(fp))                   //此循环遍历整个文件 查找需要删除的记录{offset = ftell(fp);fscanf(fp, "%s %s %s %s %s\n", person->name, person->num, person->dor, person->group, person->score);if (!strcmp(namekey, person->name)){k = 1; break;}}if (k){printf("\n 记录输出如下:\n\n");printf("%-20s%-20s%-20s%-20s%-20s\n", "姓名", "学号", "宿舍号", "班级", "评分");printf("%-20s%-20s%-20s%-20s%-20s\n", person->name, person->num, person->dor, person->group, person->score);printf("\n  您真的确定要删除?y/n?");scanf("%s", &m);if (m == 'y')       //删除确认按钮 {fseek(fp, offset, SEEK_SET);   //删除记录fprintf(fp, "%-10s%-10s%-10s%-10s%-10s\n", "", "", "", "", "");}else { rewind(fp); }}else { printf("\n 没有关于该姓名的任何记录\n"); }fclose(fp);
}int main() //主函数,程序入口
{int m, flag = 1;  // m用于控制菜单的选择项     flag用于控制菜单弹出while (flag){printf("%40s\n", "西安工程大学宿舍管理系统");printf("--------------------------------------------------------------------------------\n");printf("\t\t0 ------------  创建文件\n");printf("\t\t1 ------------  打开文件\n");printf("\t\t2 ------------  姓名查询\n");printf("\t\t3 ------------  学号查询\n");printf("\t\t4 ------------  宿舍号查询\n");printf("\t\t5 ------------  评分查询\n");printf("\t\t6 ------------  修改记录\n");printf("\t\t7 ------------  删除记录\n");printf("\t\t8 ------------  增加纪录\n");printf("\t\t9 ------------  输出记录\n");printf("\t\t10 ------------  退出\n");printf("--------------------------------------------------------------------------------\n");printf("\t 请输入0-10选择您的操作:\n");scanf("%d", &m);switch (m){case 0:creat();break;case 1:readfile();break;case 2:namesearch();break;case 3:numsearch();break;case 4:dorsearch();break;case 5:scoresearch();break;case 6:modify();break;case 7: deleted();break;case 8:add();break;case 9:output();break;case 10:exit(0);default:break;}}
}

这就是我自己整的很简单的宿舍管理系统,只能记录一个学生的基础信息以及宿舍信息,当时也是觉得这个没弄好。运行界面就不贴了。如果对这个有兴趣的大佬可以自行运行,看结果。但要记住一点,设置的空间如果越界的话就得充型申请了。在其他语言中这种管理系统肯定自己得设计一个数据库,在数据库中记录学生的基本信息,宿舍的基本信息,在C语言中,我用文件操作函数直接把学生的各种信息写入到一个文本文件中,在那个文本文件中也可以进行修改,在C语言的控制台界面亦可以看出来,总之,就是用结构体+文件操作做了这个,希望能给大家带来帮助。

用c语言实现一个简单的宿舍管理系统相关推荐

  1. 一个简单的宿舍管理系统

    一个简单的宿舍管理系统 #include <stdio.h> #include <stdlib.h> #include <string.h>struct sushe ...

  2. 使用html 语言建立一个简单的网页,如何用记事本建立简单的网页(1).doc

    第九章 网页制作 实验一 用记事本建立简单的HTML文件 [实验目的] 学会用HTML语言建立一个简单的网页. [实验内容] 建立一个网页,布局自定,包括自我介绍.图片.自己的电子信箱地址等,要求在标 ...

  3. 用C语言实现一个简单的一元线性回归算法

    今天我们用C语言实现一个简单的线性回归算法:在代码前面我们在回顾一下线性回归. 线性回归是回归问题中的一种,线性回归假设目标值与特征是线性相关的,即满足一个多元一次方程式.通过构建损失函数,来求解损失 ...

  4. c语言编写一个简单的答题系统

    利用c语言编写一个简单的答题系统. 思路是先设计好题目和答案,再输入自己的答案,利用输入的答案与正确答案对比,从而得出你回答的对错. (一)捆绑题目和答案 我们可以利用结构体对一个题目捆绑上一个答案. ...

  5. c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  6. 用C语言实现一个简单的计算器代码

    #include <stdio.h> #include <math.h> #include <stdlib.h> //预处理指令 int main(void) {d ...

  7. C语言编写一个简单的扫雷

    C语言编写一个简单的扫雷 # include <stdio.h> # include <stdlib.h> # include <math.h> # include ...

  8. 用c语言实现一个简单的输入法联想功能

    用c语言实现一个简单的输入法联想功能 手机输入法的联想功能十分常见,通过c语言同样可以实现一个简单的输入法联想功能. 首先读取一个文字量比较大的文件,通过线性表对汉字间的关系进行加权存储,再记录到总体 ...

  9. 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

最新文章

  1. 在Ubuntu 16.04.3 LTS上玩转quic-go项目
  2. Future 模式介绍
  3. Python实例浅谈之五Python守护进程和脚本单例运行
  4. CSS How to align a div center
  5. android+ip+rule+策略路由,策略路由以及使用 ip route , ip rule , iptables 配置策略路由实例...
  6. ML:MLOps系列讲解之《基于ML的软件的三个层次之01 Data: Data Engineering Pipelines》解读
  7. chapter 2 自定义数据类型
  8. linux git 备份迁移,linux – 从GitHub迁移到GitLab(作为POSIX环境中的遥控器)
  9. 《第一行代码》学习笔记40-网络(1)
  10. UART_SEND详细设计方案
  11. html制作炸金花,如何在微信小程序上制作炸金花?
  12. 华三数据中心SDN技术发展应用
  13. Visual studio 2017 安装
  14. 记录|小鸟云服务器搭建web服务
  15. c语言编程等腰三角形,用c语言编辑一个等腰三角形的讲解过程 一个等腰三角形怎么平均分成三个面积相等的三角形?...
  16. MySQL read_only 与 super_read_only 之间的关系
  17. 机器学习深度学习中反向传播之偏导数链式法则
  18. 盲盒系统的玩法运营如何盈利
  19. 基于Python的Excel读写操作--内容超详细,值得排排坐
  20. 广州塔C语言程序,小蛮腰 led广州塔diy程序

热门文章

  1. 计算机模拟双缝干涉实验报告,杨氏双缝干涉实验报告.doc.pdf
  2. 用关键词获取商品SKUapi返回值说明
  3. 华为文件系统基本命令
  4. 如何将电脑加入指定的域名
  5. 汽车之家口碑页面字体解密
  6. 表弟背着我帮同学刷课,一个月赚了1500,这是亲表弟吗?
  7. DEM设置投影坐标系
  8. 凌讯消防装备管理系统的设计与实现(1)
  9. 北信源安装显示同服务器,北信源客户端安装方法
  10. JVM in a nut shell