怎么用C语言实现学生宿舍管理系统
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,这篇文章主要讲解了"怎么用C语言实现学生宿舍管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C语言实现学生宿舍管理系统"吧!实现简单的学生
千家信息网最后更新 2024年10月17日怎么用C语言实现学生宿舍管理系统
这篇文章主要讲解了"怎么用C语言实现学生宿舍管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C语言实现学生宿舍管理系统"吧!
实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等,系统以文本菜单形式工作。
登录时:用户名为asd 密码任意
#include#include #include #include #include #include #include #define N sizeof(struct Student) typedef struct Student{ int buildnum; //宿舍楼栋号 int roomnum; //房间号 int brnum; //宿舍楼栋号+房间号 float area; //宿舍房间面积 int rnanum; //所容纳人数 char xy[100]; //学院 int bj; // 班级 int num; //学号 char name[20]; //姓名 char sex[10]; //性别 int date; //日期 struct Student *next; }Stu,*stu;int a[1000000];//记录寝室入住人数 void save_stu(stu p);void login(){ system("cls"); system("color 4E"); printf("\n\n\n\n\n\n\n############################~欢迎进入学生宿舍管理系统~##########################\n"); printf("\n\n\n\t\t\t\t ★ ★ ★ ★ ★"); printf("\n\n\n\n\t\t\t\t\t\tLoading"); for(int i=0;i<6;i++) { Sleep(400); printf("."); } system("cls"); char username[10]; char password; int p=0; system("color 6E"); printf("\n\n\n ==============================欢迎使用=================================\n"); for(int i = 0; i < 3; i++) { printf("\n\n\n\t\t请输入用户名:[ ]\b\b\b\b\b\b\b\b\b\b\b\b"); scanf("%s",username); if (strcmp(username,"asd") == 0) { printf("\t\t请输入密码: [ ]\b\b\b\b\b\b\b\b\b\b\b\b"); while((password=getch()) != '\r')//判断是否是回车 { p++; if(password == 8)//实现backspace键的功能,其中backspace键的ascii码是8 { putchar('\b'); putchar(' '); putchar('\b'); if(p>0) //最多只能删到没有字符 p--; } if(!isdigit(password)&&!isalpha(password))//判断是否是数字或字符 continue; putchar('*'); //在屏幕上打印星号 } printf("\n\n\n ===============================登陆成功================================="); Sleep(600); return; system("pause"); } else { if(i<2) printf("用户名错误,请重新输入"); else { printf("\n 您已连续3次将用户名或密码输错,系统将退出!"); exit(0); //关闭所有文件,终止正在执行的进程 } } } }int menu_select() //主菜单选项 { int a; do { system("cls"); system("color 3E"); printf("\n\n\t======================学生宿舍管理系统※※※※※※※※※※※※\n\n"); printf("\t◆◆ 1. 添加学生信息 ◆◆\n\n"); printf("\t◆◆ 2. 显示学生信息 ◆◆\n\n"); printf("\t◆◆ 3. 对学生信息进行排序 ◆◆\n\n"); printf("\t◆◆ 4. 查找学生信息 ◆◆\n\n"); printf("\t◆◆ 5. 修改学生信息 ◆◆\n\n"); printf("\t◆◆ 6. 删除学生信息 ◆◆\n\n"); printf("\t◆◆ 0. 退出系统 ◆◆\n\n"); printf("\t※※※※※※※※※※※※※※※================================\n"); printf("\t请选择您要运行的选项按(0-6):"); scanf("%d",&a); }while(a<0 || a>6); return a; } stu ss() //将文件中的内容读出到链表中,返回值为表头地址 { FILE *fp; //文件指针 int n = 0; stu head = NULL; stu p1,p,pr = NULL; fp=fopen("student","ab+"); //以只读的方式打开文件 if(fp == NULL) { printf("文件打开失败 !\n"); } else { while(!feof(fp)) //判断文件位置标志是否移动到文件末尾 { n++; p = (stu)malloc(N); //向内存申请一段空间 fread(p,N,1,fp); //将fp所指向的文件中的内容赋给p if(n == 1) { head = p; p1 = p; } else //创建链表 { pr = p1; p1->next = p; p1 = p; } } } if(pr != NULL) pr->next = NULL; else head = NULL; fclose(fp); //关闭文件 return head; //返回头指针 }Student *input(int n){ int i; stu head,p,q; if(n <= 0) return NULL; p = (stu)malloc(sizeof(Stu)); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 楼栋房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期\n"); printf("--------------------------------------------------------------------------------\n"); scanf("%d%d%d%f%d%s%d%d%s%s%d",&p->buildnum,&p->roomnum,&p->brnum,&p->area,&p->rnanum,&p->xy,&p->bj,&p->num,&p->name,&p->sex,&p->date); a[p->brnum]++; if(a[p->brnum] == p->rnanum) printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n"); head = p; save_stu(p); for(i = 1;i < n; i++) { q = (stu)malloc(sizeof(Stu)); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 楼栋房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期\n"); printf("--------------------------------------------------------------------------------\n"); scanf("%d%d%d%f%d%s%d%d%s%s%d",&q->buildnum,&q->roomnum,&q->brnum,&q->area,&q->rnanum,&q->xy,&q->bj,&q->num,&q->name,&q->sex,&q->date); printf("\n"); a[q->brnum]++; if(a[q->brnum] == q->rnanum) { printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n"); Sleep(300); } save_stu(q); p->next = q; p = q; } p->next=NULL; return head; } void save_stu(stu p) //将p中内容写入文件 { FILE *fp; //文件指针 fp = fopen("student","ab"); //以追加的方式打开名字为student的二进制文件 if(fp == NULL) { printf("文件打开失败 !"); } if(fwrite(p,N,1,fp) != 1) //将p所指向的一段大小为N的内容存入fp所指向的文件中 { printf("写入错误 !"); } fclose(fp); //关闭文件 } void output(stu head) //输出学生信息{ printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); stu p,q; int n=0; head = ss(); p = head; if(head == NULL) { printf("\n\t\t\t学生信息为空 !\n"); } else { for(p = head ;p != NULL ;p = p->next) { for(q = head;q != NULL ;q=q->next) { if(p->brnum == q->brnum) n++; } a[p->brnum]=n; printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date, n); n=0; } } } int sort_menu() //排序选择菜单{ int a; do { system("cls"); printf("\n\n\t\t------------------------------------------------------------\n\n"); printf("\t\t\t ▲▲ 1. 按照宿舍房间号排序\n\n"); printf("\t\t\t ▲▲ 2. 按照学号排序\n\n"); printf("\t\t\t ▲▲ 0. 返回到主菜单\n\n"); printf("\t\t------------------------------------------------------------\n"); printf("\t\t请选择您要运行的选项按(0-2):"); scanf("%d",&a); } while(a<0 || a>2); return a; } int sort(stu head,int n) //排序{ FILE *fp; head = ss(); stu p,q; int buildnum; //宿舍楼栋号 int roomnum; //房间号 int brnum; //宿舍楼栋号+房间号 float area; //宿舍房间面积 int rnanum; //所容纳人数 char xy[100]; //学院 int bj; // 班级 int num; //学号 char name[20]; //姓名 char sex[10]; //性别 int date; //日期 switch(n) { case 1: system("cls"); for(p = head; p != NULL; p = p->next) { for(q = p->next; q != NULL; q = q->next) { if(p->brnum > q->brnum) { buildnum = q->buildnum; roomnum = q->roomnum; brnum = q->brnum; area = q->area; rnanum = q->rnanum; strcpy(xy,q->xy); bj = q->bj; num = q->num; strcpy(name,q->name); strcpy(sex,q->sex); date = q->date; q->buildnum = p->buildnum; q->roomnum = p->roomnum; q->brnum = p->brnum; q->area = p->area; strcpy(q->xy,p->xy); q->bj = p->bj; q->num = p->num; strcpy(q->name,p->name); strcpy(q->sex,p->sex); q->date = p->date; p->buildnum = buildnum; p->roomnum = roomnum; p->brnum = brnum; p->area = area; strcpy(p->xy,xy); p->bj = bj; p->num = num; strcpy(p->name,name); strcpy(p->sex,sex); p->date = date; } } } fp = fopen("student","wb"); if(fp == NULL) { printf("文件打开失败 !"); } if(fwrite(head,N,1,fp) != 1) { printf("写入错误 !"); } fclose(fp); if(head != NULL) { p = head->next; fp = fopen("student","ab"); if(fp == NULL) { printf("文件打开失败 !"); } while(p != NULL) { if(fwrite(p,N,1,fp) != 1) { printf("写入错误 !"); } p = p->next; } fclose(fp); } output(head); system("pause"); return 1; case 2: system("cls"); for(p = head; p != NULL; p = p->next) { for(q = p->next;q != NULL; q = q->next) { if(p->num > q->num) { buildnum = q->buildnum; roomnum = q->roomnum; brnum = q->brnum; area = q->area; strcpy(xy,q->xy); bj = q->bj; num = q->num; strcpy(name,q->name); strcpy(sex,q->sex); date = q->date; q->buildnum = p->buildnum; q->roomnum = p->roomnum; q->brnum = p->brnum; q->area = p->area; strcpy(q->xy,p->xy); q->bj = p->bj; q->num = p->num; strcpy(q->name,p->name); strcpy(q->sex,p->sex); q->date = p->date; p->buildnum = buildnum; p->roomnum = roomnum; p->brnum = brnum; p->area = area; strcpy(p->xy,xy); p->bj = bj; p->num = num; strcpy(p->name,name); strcpy(p->sex,sex); p->date = date; } } } fp = fopen("student","wb"); if(fp == NULL) { printf("文件打开失败 !"); } if(fwrite(head,N,1,fp) != 1) { printf("写入错误 !"); } fclose(fp); if(head != NULL) { p = head->next; fp = fopen("student","ab"); if(fp == NULL) { printf("文件打开失败 !"); } while(p != NULL) { if(fwrite(p,N,1,fp) != 1) { printf("写入错误 !"); } p = p->next; } fclose(fp); } output(head); system("pause"); return 1; case 0: system("pause"); return 0; } } int find_menu() //查找菜单{ int a; do { system("cls"); printf("\n\n\t\t------------------------------------------------------------\n\n"); printf("\t\t\t ▲▲ 1. 按照楼栋房间号查找(查找同一寝室人员)\n\n"); printf("\t\t\t ▲▲ 2. 按照学院查找(查找同一学院人员)\n\n"); printf("\t\t\t ▲▲ 3. 按照班级查找(查找同一班级人员)\n\n"); printf("\t\t\t ▲▲ 4. 按照学号查找\n\n"); printf("\t\t\t ▲▲ 5. 按照姓名查找\n\n"); printf("\t\t\t ▲▲ 0. 返回到主菜单\n\n"); printf("\t\t------------------------------------------------------------\n"); printf("\t\t请选择您要运行的选项按(0-5):"); scanf("%d",&a); }while(a<0 || a>5); return a; } int find(stu head,int n) //查找选择菜单 { stu p; head = ss(); switch(n) { case 1: system("cls"); int sou; printf("\n\t\t\t要查找的宿舍房间号为:"); scanf("%d",&sou); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); for(p = head ;p != NULL ;p = p->next) { if(p->brnum == sou) printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); } system("pause"); return 1; case 2: system("cls"); p = head; char d[30]; printf("\n\t\t\t要查找的学院为:"); scanf("%s",&d); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); for(p = head ;p != NULL ;p = p->next) { if(strcmp(p->xy,d) == 0) printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); } system("pause"); return 1; case 3: system("cls"); int cl; printf("\n\t\t\t要查找的班级为:"); scanf("%d",&cl); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); for(p = head ;p != NULL ;p = p->next) { if(p->bj == cl) printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); } system("pause"); return 1; case 4: system("cls"); int f; printf("\n\t\t\t要查找的学号为:"); scanf("%d",&f); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); for(p = head ;p != NULL ;p = p->next) { if(p->num == f) printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); } system("pause"); return 1; case 5: system("cls"); char g[20]; printf("\n\t\t\t要查找的姓名为:"); scanf("%s",g); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); for(p = head ;p != NULL ;p = p->next) { if(strcmp(p->name, g) == 0) printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); } system("pause"); return 1; case 0: system("pause"); return 0; } } int alter(stu head) //修改学生信息 { FILE *fp; int y; printf("\n\t\t\t请输入将要修改的学生的学号:"); scanf("%d",&y); stu p; head = ss(); p = head; while(p != NULL) { if(y == p->num) { printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期 已住人数 \n"); printf("--------------------------------------------------------------------------------\n"); printf("%3d %5d %.1f %5d s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); printf("\n\t\t对信息进行修改:\n"); printf("--------------------------------------------------------------------------------\n"); printf("楼栋号 房间号 宿舍房间号 房间面积 容纳数 学院 班级 学号 姓名 性别 日期\n"); printf("--------------------------------------------------------------------------------\n"); scanf("%d%d%d%f%d%s%d%d%s%s%d",&p->buildnum,&p->roomnum,&p->brnum,&p->area,&p->rnanum,&p->xy,&p->bj,&p->num,&p->name,&p->sex,&p->date); a[p->brnum]++; if(a[p->brnum] == p->rnanum) printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n"); printf("\n"); } p = p->next; } fp = fopen("student","wb"); //以只写的方式打开名为student的二进制文件,打开的同时清空文件中的内容 if(fp == NULL) { printf("文件打开失败 !"); } if(fwrite(head,N,1,fp) != 1) //将head写入fp所指向的文件中 { printf("写入错误 !"); } fclose(fp); //关闭文件 if(head != NULL) //如果head不为空 { p = head->next; //让p指向第二个结点 fp = fopen("student","ab"); //以追加的方式打开文件 if(fp == NULL) { printf("文件打开失败 !"); } while(p != NULL) { if(fwrite(p,N,1,fp) != 1)//将p写入fp所指向的文件中 { printf("写入错误 !"); } p = p->next; } fclose(fp); } Sleep(500); } int del_menu(){ int a; do { system("cls"); printf("\n\n\t\t------------------------------------------------------------\n\n"); printf("\t\t\t ▲▲ 1.删除某个学生信息\n\n"); printf("\t\t\t ▲▲ 2.删除全部学生信息\n\n"); printf("\t\t\t ▲▲ 0. 返回到主菜单\n\n"); printf("\t\t------------------------------------------------------------\n"); printf("\t\t请选择您要运行的选项按(0-2):"); scanf("%d",&a); } while(a<0 || a>2); return a; } int del(stu head,int g) //删除学生信息{ FILE *fp; stu p,q; head = ss(); p = head; q = NULL; switch(g) { case 1: system("cls"); int x,y; printf("\n\t\t\t请输入将要删除学生的学号:"); scanf("%d",&y); while(p != NULL && p->num != y) { q = p; p = p->next; x = p->brnum; } if(p != NULL) { if(q == NULL) { head = head->next; } else if(p->next!=NULL) { q->next = p->next; } else q->next=NULL; } free(p); printf("\n\t\t\t删除成功 !\n"); a[x]--; fp = fopen("student","wb"); if(fp == NULL) { printf("文件打开失败 !"); } if(fwrite(head,N,1,fp) != 1) { printf("写入错误 !"); } fclose(fp); if(head != NULL) { p = head->next; fp = fopen("student","ab"); if(fp == NULL) { printf("文件打开失败 !"); } while(p != NULL) { if(fwrite(p,N,1,fp) != 1) { printf("写入错误 !"); } p = p->next; } fclose(fp); } system("pause"); return 1; case 2: system("cls"); head = NULL; printf("\n\t\t\t删除成功 !\n"); fp=fopen("student","wb"); fclose(fp); system("pause"); return 1; case 0: return 0; }} int main() { int m,n,x,y,g; login(); stu head = NULL; for(;;) { switch(menu_select()) { case 1: system("cls"); printf("\t\t输入学生的个数和数据(以回车结束):"); scanf("%d",&n); if(n <= 0) { printf("\n\t\t\t请输入正确的人数 !"); Sleep(500); break; } else { head = input(n); break; } case 2: system("cls"); system("color 5E"); output(head); system("pause"); break; case 3: do { x = sort(head,sort_menu()); }while(x != 0); break; case 4: system("cls"); do { y = find(head,find_menu()); }while(y != 0); break; case 5: system("cls"); alter(head); printf("\n\t\t\t修改成功 !\n"); system("pause"); break; case 6: system("cls"); do { g = del(head,del_menu()); }while(g != 0); system("pause"); break; case 0: system("cls"); printf("\t\t∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); printf("\t\t\t\\(^V^)メ(^V^)/ "); printf("\t谢谢使用 !\n"); printf("\t\t∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); Sleep(2000); system("cls"); exit(0); } } }
感谢各位的阅读,以上就是"怎么用C语言实现学生宿舍管理系统"的内容了,经过本文的学习后,相信大家对怎么用C语言实现学生宿舍管理系统这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
文件
房间
学生
宿舍
信息
学号
人数
学院
班级
栋号
姓名
面积
性别
日期
错误
系统
寝室
菜单
管理
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
做软件开发做广告关键词
湖北父子孙网络技术公司
广州善淳网络技术有限公司
网络安全论文关键词
能森新能源互联网科技有限公司
企业网络安全发言稿500
软件工程和软件开发什么区别
一直显示找不到服务器ip地址
lol英雄数据库弹道速度
网络安全重要性及危害200字
数据库链接网页
简单网络安全主题手绘画
腾讯云服务器16核16g
实习自我总结数据库
软件开发公司财务忙吗
网络安全知识微课笔记
四川第三方软件开发公司
长江国际软件开发责任有限公司
钉钉软件开发前期成本
软件开发说明模板 百度文库
网络安全关键是人
江苏浪潮服务器续保
mybatis兼容哪些数据库
定制系统软件开发
网络安全系统知识
网络服务器ip地址
交通信用数据库
数据库服务默认端口是多少
web软件开发学习
剑灵义薄云天服务器是鬼区吗