您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 数据结构宿舍信息管理系统小学期
题目一源代码(包含60%注释)#includestdio.h#includestring.h//头文件#includeprocess.h#includestdlib.h#defineN80/*************定义通讯录*************/typedefstruct//数据域的类型定义{charnum[4];charname[20];charsex[20];charbuild[4];charroom[20];charadmin[20];}Address;intaddnum;typedefstructNode{Addressdata;//数据域structNode*next;//指针域}LNode,*LinkedList;//链表存储结构结构体LinkedListS;charfilename[30];//定义文件名voidxinjian();//定义新建voidxianshi();//定义显示voidshanchu();//定义删除voidchazhao();//定义查找voidxiugai();//定义修改voidtianjia();//定义添加voiddakai();//定义打开voidpaixu();//定义排序voidpaixu_simple();//定义简单排序voidpaixu_simple(inti);voidpaixu_maopao();//定义冒泡排序voidorder(inti);voidbaocun();//定义保存/*************主函数*************/intmain(){intm;while(1){printf(**********宿舍信息管理系统**********\n);printf(***************主菜单***************\n);printf(\t0.新建记录\n);printf(\t1.显示记录\n);printf(\t2.删除记录\n);printf(\t3.查找记录\n);printf(\t4.修改记录\n);printf(\t5.添加记录\n);printf(\t6.打开记录\n);printf(\t7.排序记录\n);printf(\t8.保存记录\n);printf(\t9.退出记录\n);printf(\t请输出选项0-9\n);scanf(%d,&m);switch(m){case0:xinjian();break;//函数调用case1:xianshi();break;//函数调用case2:shanchu();break;//函数调用case3:chazhao();break;//函数调用case4:xiugai();break;//函数调用case5:tianjia();break;//函数调用case6:dakai();break;//函数调用case7:paixu();break;//函数调用case8:baocun();break;//函数调用case9:exit(0);break;//函数调用default:printf(输入错误,请重新输入\n);}}return0;}voidxinjian()//建立单链表{system(cls);inti;LNode*p,*r;S=(LNode*)malloc(sizeof(LNode));//申请节点空间if(S==NULL){printf(无内存空间分配);exit(0);}S-next=NULL;//建立头节点r=S;printf(\n请输入要加入宿舍的数目\n);scanf(%d,&addnum);printf(请输入信息\n);for(i=0;iaddnum;i++)//循环{p=(LNode*)malloc(sizeof(LNode));if(p==NULL){printf(无内存空间分配);exit(0);}system(cls);//清屏printf(请输入学号:);//提示scanf(%s,p-data.num);//输入学生信息printf(请输入姓名:);//提示scanf(%s,p-data.name);//输入学生信息printf(请输入性别:);//提示scanf(%s,p-data.sex);//输入学生信息printf(请输入楼号:);//提示scanf(%s,p-data.build);//输入学生信息printf(请输入房号:);//提示scanf(%s,p-data.room);//输入学生信息printf(请输入管理员姓名:);//提示scanf(%s,p-data.admin);//输入学生信息p-next=NULL;//p的next域赋NULLr-next=p;//r的next域指向pr=p;//r指针后移}printf(信息已成功输入\n);printf(请输入要保存的文件名\n);scanf(%s,filename);//输入文件名FILE*fp;//文件指针if((fp=fopen(filename,wb))==NULL))//判断如果查找结果为NULL{printf(不能创建文件,按任意键退出);exit(0);}fwrite(&addnum,sizeof(int),1,fp);r=S-next;//将S的next域赋给rwhile(r!=NULL)//循环(当r不为NULL时){fwrite(&(r-data),sizeof(Address),1,fp);//写二进制文件内容到结构体变量S中,并判断读写是否成功r=r-next;//r指针后移}}voidxianshi()//显示链表中的元素{system(cls);//清屏LNode*r;r=S-next;//r指向首元结点printf(学号\t姓名\t性别\t楼号\t房号\t管理员姓名\n);//提示while(r!=NULL)//当r为NULL是结束循环{printf(%s\t%s\t%s\t%s\t%s\t%s\n,r-data.num,r-data.name,r-data.sex,r-data.build,r-data.room,r-data.admin);r=r-next;//r指针后移}}voidshanchu()//删除链表中的元素{intm;intflag;LNode*r;//定义指针LNode*q;//定义指针while(1){printf(**************主菜单**************\n);printf(*\t1.按学号删除\n);printf(*\t2.按姓名删除\n);printf(*\t3.按楼号删除\n);printf(*\t4.按房号删除\n);printf(*\t0.退出删除\n);printf(*\t请输入选项0~4\n);scanf(%d,&m);switch(m)//循环选择{case0:return;break;case1:charn1[4];flag=0;printf(请输入要删除的学号);scanf(%s,&n1);r=S;while(r-next!=NULL)//*r不为最后一个指针时{if(strcmp(r-next-data.num,n1)==0)//判断r下一个指针的数据中的num和输入的num是否相等{q=r-next;//p指向首元结点r-next=r-next-next;//删除算法free(q);//释放q的空间flag=1;printf(删除成功!\n);break;}r=r-next;//r指针后移}if(flag==0)printf(未找到\n);//错误提示break;case2:charn2[20];flag=0;printf(请输入要删除的姓名);scanf(%s,n2);r=S;while(r-next!=NULL)//*r不为最后一个指针时{if(strcmp(r-next-data.name,n2)==0)//判断r下一个指针的数据中的name和输入的name是否相等{q=r-next;//p指向首元结点r-next=r-next-next;//删除算法free(q);//释放q的空间flag=1;printf(删除成功!\n);break;}r=r-next;//r指针后移}if(flag==0)printf(未找到\n);break;case3:charn3[20];flag=0;printf(请输入要删除楼号);scanf(%s,n3);r=S;while(r-next!=NULL)//*r不为最后一个指针时{if(strcmp(r-next-data.build,n3)==0)//判断r下一个指针的数据中的build和输入的build是否相等{q=r-next;//p指向首元结点r-next=r-next-next;//删除算法free(q);//释放q的空间flag=1;printf(删除成功!\n);break;}r=r-next;//r指针后移}if(flag==0)printf(未找到\n);break;case4:charn4[4];flag=0;printf(请输入要删除的房号);scanf(%s,n4);r=S;while(r-next!=NULL)//*r不为最后一个指针时{if(strcmp(r-next-data.room,n4)==0)//判断r下一个指针的数据中的room和输入的room是否相等{q=r-next;//p指向首元结点r-next=r-next-next;//删除算法将r-next-next付给r-nextfree(q);//释放q的空间flag=1;printf(删除成功!\n);break;}r=r-next;//r指针后移}if(flag==0)printf(未找到\n);break;default:printf(输入错误,请重新输入\n);}}}voidchazhao(){intm;intflag;while(1){printf(************主菜单**************\n);printf(\t1.按学号查找\n);printf(\t2.按姓名查找\n);printf(\t3.按楼号查找\n);printf(\t4.按房号查找\n);printf(\t0.退出查找\n);printf(\t请输入选项0-4\n);scanf(%d,&m);LNode*r;switch(m){case0:return;break;case1:charn0[4];flag=0;printf(请输入要查找的学号:);scanf(%s,n0);r=S-next;printf(学号\t姓名\t性别\t楼号\t房号\t管理员姓名\n);while(r!=NULL)//当指针r不为空的时候{if(strcmp(r-data.num,n0)==0){printf(%s\t%s\t%s\t%s\t%s\t%s\n,r-data.num,r-data.name,r-data.sex,r-data.build,r-data.room,r-data.admin);flag=1;//标志变量值为1}r=r-next;//将r-next赋给r}if(flag=0)printf(未找到\n);break;case2:charn1[4];flag=0;printf(请输入要查找的姓名:);scanf(%s,n1);r=S-next;printf(学号\t姓名\t性别\t楼号\t房号\t管理员姓名\n);while(r!=NULL)//当指针r不为空的时候{if(strcmp(r-data.name,n1)==0){printf(%s\t%s\t%s\t%s\t%s\t%s\n,r-data.num,r-data.name,r-data.sex,r-data.build,r-
本文标题:数据结构宿舍信息管理系统小学期
链接地址:https://www.777doc.com/doc-3393554 .html