如何使用C++实现学生宿舍管理系统
这篇文章给大家分享的是有关如何使用C++实现学生宿舍管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
具体内容如下
非常简易,完成个作业够用,仅供初学者参考,不喜勿喷。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>/*先用结构体定义学生信息*/structstud{intnum;//学号charname[10];//姓名charsex[8];//性别intage;//年龄charmajor[18];//专业intgrade;//年级intclasses;//班级intbuilding;//楼号intfloor;//楼层intdormitary;//宿舍号structstud*next;/*next是指向本结构体的类型的指针类型*/};structstud*h;/*定义结构体的指针变量*/intN=sizeof(structstud);//获取结构体总长度,用于分配内存空间/*输入模块:建立链表*/voidinput_message(){structstud*p1,*p2;inti,k;system("cls");printf("**********您当前正在进行的操作是,输入学生信息**********\n\n");printf("请输入本次注册的生总数:");scanf("%d",&k);h=NULL;printf("\n您共有%d个学生信息需要录入\n",k);if(k>0){h=p2=p1=(structstud*)malloc(N);/*为head,p2,p1申请存储空间*/for(i=1;i<=k;i++){printf("\n请输入第%d名学生的信息:\n\n",i);p1=(structstud*)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指向新的表尾*/}p2->next=NULL;h=h->next;}getchar();//吸收掉上一行录入时键入的回车符号,否则卡不住printf("\n%*s%s\n",10,"","输入完成,按任意键进入主菜单!!!!");getchar();}/*输出模块:显示链表*/voidoutput_message(){charv;structstud*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();}/*插入新学生信息:插入链表*/voidinsert_message(){structstud*p0,*p1;p1=(structstud*)malloc(N);system("cls");printf("**********您当前正在进行的操作是,插入学生信息**********\n\n");printf("\n请输入要插入学生的信息:\n\n");p1=(structstud*)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();}elseif((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();}}/*删除学生信息*/voiddel_message(){intnum;booldelOk=false;structstud*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,"","删除成功!按任意键返回主菜单!!!!");elseprintf("%*s%s\n",10,"","没有找到匹配学号,删除失败!按任意键返回主菜单!!!!");getchar();}//主函数intmain(void){intchoice;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){case1:input_message();break;case2:output_message();break;case3:insert_message();break;case4:del_message();break;case0:break;}}while(choice!=0);}
可以用 Dev-C++ 进行编译调试
感谢各位的阅读!关于“如何使用C++实现学生宿舍管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~