ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:285.15KB ,
资源ID:8433061      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8433061.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生宿舍楼宇房间管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生宿舍楼宇房间管理系统.docx

1、学生宿舍楼宇房间管理系统* 实践教学* 计算机与通信学院2011年春季学期 算法与数据结构 课程设计 题 目:学生宿舍楼宇房间管理系统 专业班级:计算机科学与技术(2)班 姓 名: 学 号: 指导教师: 成 绩: 摘 要该学生宿舍楼宇房间管理,可以实现学生宿舍楼宇各种信息的输入,可以实现对楼宇信息的修改,也可以进行插入、删除操作,可以按照楼号进行查询,可分别进行管辖区域信息、公寓楼信息和公寓宿舍信息的浏览,也可以统计学生宿舍楼宇各种信息。关键词: 插入;删除;查询;统计前 言该设计以要求以学生宿舍楼宇房间管理为背景,设计一个可实现管辖区域的添加、查看、修改、删除、公寓楼信息的查询、统计、公寓宿

2、舍信息的添加、修改、汇总、统计空宿舍等功能的管理系统。按照任务书的要求,我一步步进行设计,最后基本完成了课程设计的要求,但还是有很多的不足之处。在这个简单的学生宿舍楼宇房间管理程序中,使用了链表这个动态数据结构。链表是动态数据结构中最简单的一种。它是一种用前后链指针连接的若干个有限结点的集合,其连接是前一个结点的尾指针指向下一个结点的起始地址,从而连接成的一个链,所以它是一种线性的动态数据结构。在该程序中,采用了动态存储分配技术,这样可以有效地利用有限的内存空间。要实现它,就必须使用malloc()和free()函数。该程序主要使用了链表的插入、删除、查询。除了使用链表,还使用了文件的操作。正

3、 文1.采用类c语言定义相关的数据类型struct building /*定义结构体*/char num10; /*楼号*/char address20; /*地址*/char total30; /*楼宇总数*/char E_dormitory50; /*空宿舍数*/char floor4; /*楼层数*/char D_total30; /*每层宿舍数*/char roomnum10; /*宿舍号*/char D_telephone20; /*宿舍电话*/char renshu10; /*宿舍容纳人数*/char member30; /*宿舍成员*/;typedef struct node /

4、*线性单链表的存储结构*/struct building data;struct node *next;Node,*Link;2.各模块的伪码算法1 链表的插入是根据某一关键字的顺序来进行插入操作的。要实现它,需要用三个指针,一个头指针、一个指向开辟新结点的指针,以及一个用来保存刚刚建立的结点的指针。该算法如下:void InsList(LinkList*head,int i,DataType e)/*在带头结点的单链表head的第i个结点之前插入值为e的新结点*/ Node*p,*q; int j; p=head-link;j=1; while(p!=NULL&jlink; j+; if(j

5、!=i-1)/*p=NULL时,链表为空,不存在第i个结点;或者idata=e; /*将待插入结点的值e赋给q的数据域*/q-link=p-link; /*将第i个结点链接在新结点q之后*/p-link=q; /*将新结点连接在p之后,完成插入操作*/2 链表的删除是指从某个已经存在的链表中根据给定的条件删去若干结点的操作。删除操作的实现,实际上就是把某个结点从原链表中分离出来。也就是使被删除结点与原链表失去联系,从而改变原链表的连接关系。其算法如下:int DelList(LinkList*head,int i,DataType*e)/*在带头结点的单链表head中删除第i个元素,并将删除元

6、素保存到变量e中*/Node*p,*q; int j; p=head; j=0;while(p-link!=NULL&jlink; j=j+1; if(j!=i-1) printf(“删除结点的位置i不合理!”) return ERROR;q=p-link;p-link=q-link;free(q); /*释放被删除的结点所占的内存空间*/return OK;3链表的查找操作是指从某个已经存在的链表中根据给定的条件寻找符合条件的结点。其算法如下:Node* Locate(Link l,char findmess,char addressornum) /*查找子函数*/Node *r;if(st

7、rcmp(addressornum,num)=0) /*与比较楼号相同*/ r=l-next; while(r!=NULL) /*不是尾结点*/ if(strcmp(r-data.num,findmess)=0) /*比较相同*/ return r; /*返回结点信息*/ r=r-next; /*查找下一个结点*/ else if(strcmp(addressornum,address)=0) /*与比较楼宇地址相同*/ r=l-next; while(r!=NULL) if(strcmp(r-data.address,findmess)=0) return r; r=r-next; retu

8、rn 0;函数的调用关系图 3.调试分析a、调试中遇到的问题及对问题的解决方法由于在输入程序时中英文切换频繁,导致“;”输入错误,运行时出现不能识别字符。 源程序中含有文件调用(fp=fopen(C:building,wb);)目前还不会将文件镜像到程序目录),因此每次启动程序需创建“C:building”,再运行一次,文件成功建立。当时直接就运行了,结果运行时无法成功创建,按上述说法改了一下便成功了。b、算法的时间复杂度和空间复杂度整个程序转为EXE可执行后整体的空间复杂度为196KB。链表的插入、删除、查找操作的时间复杂度都为O(n)。4.测试结果(1)学生宿舍楼宇信息的输入(2)删除操作

9、(按楼号删除)(3)查询学生宿舍楼宇信息(按楼号查询)(4)修改学生宿舍楼宇信息(5)显示管辖区域信息(6)显示公寓楼信息(7)保存公寓楼信息(8)显示公寓宿舍信息(9)统计学生宿舍楼宇信息5.源程序(带注释)#include stdio.h#include stdlib.h#include string.hint shoudsave=0;struct building /*定义结构体*/char num10; /*楼号*/char address20; /*地址*/char total30; /*楼宇总数*/char E_dormitory50; /*空宿舍数*/char floor4; /

10、*楼层数*/char D_total30; /*每层宿舍数*/char roomnum10; /*宿舍号*/char D_telephone20; /*宿舍电话*/char renshu10; /*宿舍容纳人数*/char member30; /*宿舍成员*/;typedef struct node /*线性单链表的存储结构*/struct building data;struct node *next;Node,*Link;void menu()printf(*);printf(t1输入学生宿舍楼宇信息 ttt2删除学生宿舍楼宇信息n);printf(t3查询学生宿舍楼宇信息 ttt4修改学

11、生宿舍楼宇信息n);printf(t5显示管辖区域信息 ttt6显示公寓楼信息n);printf(t7保存公寓楼信息 ttt8显示公寓宿舍信息n);printf(t9统计学生宿舍楼宇信息 ttt10退出系统n);printf(*n);void printstart() /*分隔线子函数*/printf(-n);void Wrong() /*错误信息子函数*/printf(n=提示:输入错误!n);void Nofind() /*信息查找失败子函数*/printf(n=提示:没有找到该公寓楼!n);void printc() /*管辖区域信息标题子函数*/printf(楼号t地址 t楼宇总数n)

12、;void printe(Node *p) /*管辖区域信息输出子函数*/printf(%st %st %stn,p-data.num,p-data.address,p-data.total);void printb()printf(公寓楼信息:n); /*公寓楼信息子函数*/void printx() /*公寓楼信息标题子函数*/printf(楼号t 地址t 空宿舍数t 楼层数t 每层宿舍数 tn);void printd(Node *p) /*公寓楼信息输出子函数*/printf(%st %st %st %st %st n,p-data.num,p-data.address,p-data.

13、E_dormitory,p-data.floor,p-data.D_total);void printa()printf(公寓宿舍信息:n); /*公寓宿舍信息子函数*/void printy() /*公寓宿舍信息标题子函数*/printf(楼号t 地址t 宿舍号t 宿舍电话t 宿舍容纳人数t 宿舍成员 tn);void printi(Node*p) /*公寓宿舍信息输出子函数*/printf(%st %st %st %st %st %st n,p-data.num,p-data.address,p-data.roomnum,p-data.D_telephone,p-data.renshu,p

14、-data.member);Node* Locate(Link l,char findmess,char addressornum) /*查找子函数*/Node *r;if(strcmp(addressornum,num)=0) /*与比较楼号相同*/ r=l-next; while(r!=NULL) /*不是尾结点*/ if(strcmp(r-data.num,findmess)=0) /*比较相同*/ return r; /*返回结点信息*/ r=r-next; /*查找下一个结点*/ else if(strcmp(addressornum,address)=0) /*与比较楼宇地址相同*

15、/ r=l-next; while(r!=NULL) if(strcmp(r-data.address,findmess)=0) return r; r=r-next; return 0;void Add(Link l) /*学生宿舍楼宇信息输入子函数*/Node *p,*r,*s;char num10;r=l;s=l-next;while(r-next!=NULL) r=r-next;while(1) printf(请你输入楼号(以0返回上一级菜单:); scanf(%s,num); if(strcmp(num,0)=0) /*检验输入值是否为0*/ break; while(s) if(s

16、trcmp(s-data.num,num)=0) /*检验输入值是否已存在*/ printf(=提示:楼号为%s的公寓楼已经存在,若要修改请你选择4修改!n,num); printstart(); /*调用分隔线子函数*/ printc(); /*调用管辖区域信息标题子函数*/ printe(s); /*调用管辖区域信息输出子函数*/ printstart(); printf(n); return; s=s-next; /*进行循环*/ p=(Node *)malloc(sizeof(Node); strcpy(p-data.num,num); /*复制函数*/ printf(请您输入地址:)

17、; scanf(%s,&p-data.address); getchar(); printf(请您输入楼宇总数:); scanf(%s,&p-data.total); getchar(); printf(请您输入空宿舍数:); scanf(%s,&p-data.E_dormitory); getchar(); printf(请您输入楼层数:); scanf(%s,&p-data.floor); getchar(); printf(请您输入每层宿舍数:); scanf(%s,&p-data.D_total); getchar(); printf(请您输入宿舍号:); scanf(%s,&p-da

18、ta.roomnum); getchar(); printf(请您输入宿舍电话:); scanf(%s,&p-data.D_telephone); getchar(); printf(请您输入宿舍容纳人数:); scanf(%s,&p-data.renshu); getchar(); printf(请您输入宿舍成员:); scanf(%s,&p-data.member); getchar(); p-next=NULL; r-next=p; r=p;shoudsave=1; /*信息未保存标志*/void Qur(Link l) /*学生宿舍楼宇信息查询子函数*/int sel;char fin

19、dmess20;Node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return;printf(n=按楼号查找n );scanf(%d,&sel);if(sel=1) /*按楼号查找*/ printf(请您输入要查找的楼号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找结果n); printstart(); printc(); /*调用管辖区域信息标题子函数*/ printe(p); /*调用管辖区域信息输出子函数*/printb(); /*调用公寓楼信息子函数*/

20、printx(); /*调用公寓楼信息标题子函数*/printd(p); /*调用公寓楼信息输出子函数*/printa(); /*调用公寓宿舍信息子函数*/printy(); /*调用公寓宿舍信息标题子函数*/printi(p); /*调用公寓宿舍信息输出子函数*/ printstart(); /*调用分隔线子函数*/ else Nofind(); /*调用信息查找失败子函数*/else Wrong();void Del(Link l) /*删除学生宿舍楼宇信息子函数*/int sel;Node *p,*r;char findmess20;if(!l-next) printf(n=提示:没有信

21、息可以删除!n); return;printf(n=1按楼号删除n );scanf(%d,&sel);if(sel=1) printf(请您输入要删除的楼号:); scanf(%s,findmess); p=Locate(l,findmess,num); /*调用查找子函数*/ if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该楼宇已经成功删除!n); shoudsave=1; else Nofind();else Wrong();void Modify(Link l) /*修改学生宿舍楼宇信息

22、子函数*/Node *p;char findmess20;if(!l-next) printf(n=提示:没有信息可以修改!n); return;printf(请您输入要修改的楼号:);scanf(%s,findmess);p=Locate(l,findmess,num); /*调用查找子函数*/if(p) printf(请您输入新楼号(原来是%s):,&p-data.num); scanf(%s,&p-data.num); getchar(); printf(请您输入新地址(原来是%s):,&p-data.address); scanf(%s,&p-data.address); getcha

23、r(); printf(请您输入新楼宇总数(原来是%s):,&p-data.total); scanf(%s,&p-data.total); getchar(); printf(请您输入新的空宿舍数(原来是%s):,&p-data.E_dormitory); scanf(%s,&p-data. E_dormitory); getchar(); printf(请您输入新的楼层数(原来是%s):,p-data.floor); scanf(%s,&p-data.floor); getchar(); printf(请您输入新的每层宿舍数(原来是%s):,&p-data.D_total); scanf(

24、%s,&p-data. D_total); getchar(); printf(请您输入新的宿舍号(原来是%s):,&p-data.roomnum); scanf(%s,&p-data.roomnum); getchar(); printf(请您输入新的宿舍电话(原来是%s):,&p-data.D_telephone); scanf(%s,&p-data. D_telephone); getchar(); printf(请您输入新的宿舍容纳人数(原来是%s):,&p-data.renshu); scanf(%s,&p-data.renshu); getchar(); printf(请您输入新的

25、宿舍成员(原来是%s):,&p-data.member); scanf(%s,&p-data.member); getchar(); printf(n=提示:信息修改成功!n); shoudsave=1;else Nofind();void Disp(Link l) /*管辖区域信息浏览子函数*/int count=0; Node *p; p=l-next;if(!p) printf(n=提示:没有信息可以显示!n); return;printf(tttt显示结果n);printstart();printc();printf(n);while(p) printe(p); p=p-next;pr

26、intstart();printf(n);void louyu(Link l) /*公寓楼信息浏览子函数*/Node *p;p=l-next;if(!p) printf(n=提示:没有信息可以显示!n); return;printf(tttt显示结果n);printstart();printb();printx();printf(n);while(p) printd(p); p=p-next;printstart();printf(n);void sushe(Link l) /*公寓宿舍信息浏览子函数*/Node *p;p=l-next;if(!p) printf(n=提示:没有信息可以显示!n); return;printf(tttt显示结果n);printstart();printa();printy();pr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1