用c语言实现一个简单的宿舍管理系统
今天才打开电脑对自己上个学期的东西进行了回顾,才发现上学期期末课程设计是用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语言实现一个简单的宿舍管理系统相关推荐
- 一个简单的宿舍管理系统
一个简单的宿舍管理系统 #include <stdio.h> #include <stdlib.h> #include <string.h>struct sushe ...
- 使用html 语言建立一个简单的网页,如何用记事本建立简单的网页(1).doc
第九章 网页制作 实验一 用记事本建立简单的HTML文件 [实验目的] 学会用HTML语言建立一个简单的网页. [实验内容] 建立一个网页,布局自定,包括自我介绍.图片.自己的电子信箱地址等,要求在标 ...
- 用C语言实现一个简单的一元线性回归算法
今天我们用C语言实现一个简单的线性回归算法:在代码前面我们在回顾一下线性回归. 线性回归是回归问题中的一种,线性回归假设目标值与特征是线性相关的,即满足一个多元一次方程式.通过构建损失函数,来求解损失 ...
- c语言编写一个简单的答题系统
利用c语言编写一个简单的答题系统. 思路是先设计好题目和答案,再输入自己的答案,利用输入的答案与正确答案对比,从而得出你回答的对错. (一)捆绑题目和答案 我们可以利用结构体对一个题目捆绑上一个答案. ...
- c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
- 用C语言实现一个简单的计算器代码
#include <stdio.h> #include <math.h> #include <stdlib.h> //预处理指令 int main(void) {d ...
- C语言编写一个简单的扫雷
C语言编写一个简单的扫雷 # include <stdio.h> # include <stdlib.h> # include <math.h> # include ...
- 用c语言实现一个简单的输入法联想功能
用c语言实现一个简单的输入法联想功能 手机输入法的联想功能十分常见,通过c语言同样可以实现一个简单的输入法联想功能. 首先读取一个文字量比较大的文件,通过线性表对汉字间的关系进行加权存储,再记录到总体 ...
- 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
最新文章
- 在Ubuntu 16.04.3 LTS上玩转quic-go项目
- Future 模式介绍
- Python实例浅谈之五Python守护进程和脚本单例运行
- CSS How to align a div center
- android+ip+rule+策略路由,策略路由以及使用 ip route , ip rule , iptables 配置策略路由实例...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之01 Data: Data Engineering Pipelines》解读
- chapter 2 自定义数据类型
- linux git 备份迁移,linux – 从GitHub迁移到GitLab(作为POSIX环境中的遥控器)
- 《第一行代码》学习笔记40-网络(1)
- UART_SEND详细设计方案
- html制作炸金花,如何在微信小程序上制作炸金花?
- 华三数据中心SDN技术发展应用
- Visual studio 2017 安装
- 记录|小鸟云服务器搭建web服务
- c语言编程等腰三角形,用c语言编辑一个等腰三角形的讲解过程 一个等腰三角形怎么平均分成三个面积相等的三角形?...
- MySQL read_only 与 super_read_only 之间的关系
- 机器学习深度学习中反向传播之偏导数链式法则
- 盲盒系统的玩法运营如何盈利
- 基于Python的Excel读写操作--内容超详细,值得排排坐
- 广州塔C语言程序,小蛮腰 led广州塔diy程序