如何使用C++实现学生宿舍管理系统
短信预约 -IT技能 免费直播动态提醒
这篇文章给大家分享的是有关如何使用C++实现学生宿舍管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
具体内容如下
非常简易,完成个作业够用,仅供初学者参考,不喜勿喷。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>struct stud { int num; //学号 char name[10]; //姓名 char sex[8]; //性别 int age; //年龄 char major[18]; //专业 int grade; //年级 int classes; //班级 int building; //楼号 int floor; //楼层 int dormitary; //宿舍号 struct stud *next; };struct stud *h; int N=sizeof(struct stud);//获取结构体总长度,用于分配内存空间 void input_message(){ struct stud *p1,*p2; int i,k; system("cls"); printf("********** 您当前正在进行的操作是,输入学生信息 **********\n\n"); printf("请输入本次注册的生总数:");scanf("%d",&k); h=NULL; printf("\n您共有%d个学生信息需要录入\n",k); if(k>0) { h=p2=p1=(struct stud*)malloc(N); for(i=1;i<=k;i++) { printf("\n请输入第%d名学生的信息:\n\n",i); p1=(struct stud*)malloc(N); printf("学号:"); scanf("%d",&p1->num); printf("姓名:"); scanf("%s",p1->name); printf("性别(男或女):"); scanf("%s",p1->sex); printf("年龄:"); scanf("%d",&p1->age); printf("专业:"); scanf("%s",p1->major); printf("年级:"); scanf("%d",&p1->grade); printf("班级:"); scanf("%d",&p1->classes); printf("楼号:"); scanf("%d",&p1->building); printf("楼层:"); scanf("%d",&p1->floor); printf("宿舍号:"); scanf("%d",&p1->dormitary); p2->next=p1; p2=p1; } p2->next=NULL; h=h->next; } getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("\n%*s%s\n",10," ","输入完成,按任意键进入主菜单!!!!"); getchar();}void output_message(){ char v; struct stud *p=h; system("cls"); printf("********** 您当前正在进行的操作是,显示学生信息 **********\n\n"); if(p==NULL) { printf("%*s%s\n",10," ","当前没有找到任何学生信息,请您先输入信息,再执行本操作!\n"); getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("%*s%s\n",10," ","按任意键返回主菜单!!!!"); getchar(); return; } printf(" 学号 姓名 性别 年龄 专业 年级 班级 楼号 楼层 宿舍号\n\n"); while(p!=NULL) { printf("%6d%10s%6s%6d%10s%6d%6d%6d%6d%8d\n",p->num,p->name,p->sex,p->age,p->major,p->grade,p->classes,p->building,p->floor,p->dormitary); p=p->next; } getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("\n%*s%s\n",10," ","输出完成,按任意键返回主菜单!!!!"); getchar();}void insert_message(){ struct stud *p0,*p1; p1=(struct stud *)malloc(N); system("cls"); printf("********** 您当前正在进行的操作是,插入学生信息 **********\n\n"); printf("\n请输入要插入学生的信息:\n\n"); p1=(struct stud*)malloc(N); printf("学号:"); scanf("%d",&p1->num); printf("姓名:"); scanf("%s",p1->name); printf("性别(男或女):"); scanf("%s",p1->sex); printf("年龄:"); scanf("%d",&p1->age); printf("专业:"); scanf("%s",p1->major); printf("年级:"); scanf("%d",&p1->grade); printf("班级:"); scanf("%d",&p1->classes); printf("楼号:"); scanf("%d",&p1->building); printf("楼层:"); scanf("%d",&p1->floor); printf("宿舍号:"); scanf("%d",&p1->dormitary); p1->next=NULL; if(h==NULL)//如果链表为空,插入的节点设为表头 { h=p1; getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("\n%*s%s\n",10," ","插入成功! 按任意键返回主菜单!!!!"); getchar(); return; } p0=h; while((p0->next)!=NULL&&(p0->next->num)<(p1->num)) { p0=p0->next; } if(p0->next==NULL) { p0->next=p1; //如果到尾部了加到尾部 getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("\n%*s%s\n",10," ","插入成功! 按任意键返回主菜单!!!!"); getchar(); } else if((p0->next->num)==(p1->num)) { free(p1); //如果已经存在这个学号,那就不能再插入了,释放 getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("\n%*s%s\n",10," ","插入失败,本学号信息已经存在! 按任意键返回主菜单!!!!"); getchar(); } else { //插入 p1->next=p0->next; p0->next=p1; getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("\n%*s%s\n",10," ","插入成功! 按任意键返回主菜单!!!!"); getchar(); }}void del_message(){ int num; bool delOk=false; struct stud *p0,*p1; system("cls"); printf("********** 您当前正在进行的操作是,删除学生信息 **********\n\n"); if(h==NULL) { printf("%*s%s\n",10," ","当前没有找到任何学生信息,请您先输入信息,再执行本操作!\n"); getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 printf("%*s%s\n",10," ","按任意键返回主菜单!!!!"); getchar(); return; } printf("请输入要删除学生的学号:"); scanf("%d",&num); p0=h; if(p0->num==num) { h=p0->next; free(p0); delOk=true; } else { p1=p0->next; while(p1!=NULL) { if(p1->num==num) { p0->next=p1->next; free(p1); delOk=true; break; //跳出循环 } p0=p1; p1=p1->next; } } getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住 if(delOk) printf("%*s%s\n",10," ","删除成功! 按任意键返回主菜单!!!!"); else printf("%*s%s\n",10," ","没有找到匹配学号,删除失败! 按任意键返回主菜单!!!!"); getchar();}//主函数 int main(void){ int choice; do{ system("cls"); printf("\n\n\n"); printf("%*s%s",10," ","********** 学 生 宿 舍 管 理 系 统 **********\n\n"); printf("%*s%s",25," ","1.输入学生信息\n\n"); printf("%*s%s",25," ","2.输出学生信息\n\n"); printf("%*s%s",25," ","3.插入学生信息\n\n"); printf("%*s%s",25," ","4.删除学生信息\n\n"); printf("%*s%s",25," ","0.退出系统\n\n"); printf("%*s%s",10," ","*********************************************\n\n"); printf("%*s%s",10," ","请选择0-4之间任意整数:"); scanf("%d",&choice); switch(choice) { case 1:input_message();break; case 2:output_message();break; case 3:insert_message();break; case 4:del_message();break; case 0:break; } }while(choice!=0);}
可以用 Dev-C++ 进行编译调试
感谢各位的阅读!关于“如何使用C++实现学生宿舍管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341