数据结构课程设计——宿舍管理查询软件_第1页
数据结构课程设计——宿舍管理查询软件_第2页
数据结构课程设计——宿舍管理查询软件_第3页
数据结构课程设计——宿舍管理查询软件_第4页
数据结构课程设计——宿舍管理查询软件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、秦皇岛分校NorthEastern University At QinHuangDao数据结构课程设计宿舍管理查询软件班级学号班学生姓名提交日期2015年7月24日成绩计算机与通信工程学院一、需求分析1程序设计任务为宿舍管理人员编写一个宿舍管理查询软件。 程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种) 查询菜单:(用二分查找实现以下操作 )A. 按姓名查询B. 按学号查询C. 按房号查询 打印任一查询结果(可以连续操作)2、功能 要实现交互工作方式,各项操作结束后均应返回主菜单; 系统本无任何信息数据,要建

2、立数据文件,需开发一个信息录入功能, 即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能; 信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能; 本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓名、学号、房号)查询功能; 由于有些同学因为不同原因而离校,所以设计了删除功能; 由于有新同学入校,所以设计了插入功能; 当用户操作完毕需要退出时, 我们提供了退出选项,便于使用者退出交互式工作系统。3、功能模块图4、流程图开皓退出擒入学牛信鼠CLlent5Cl

3、hr EmpcJiengxu.eKe,按学号排序=姓名学号 烏号刘斎1102周瑜312阿权t231请按任意键进入王界面:(6)按房号排序F按房号排序姓名学号 房号k惰1182请按任意键进入主界面:(7)按姓名查找 D-SfiDDcuiment5C-FreeTerripchergxusexeb口回审按姓名沓找一一请输入曼沓找的姓名;刘备查找成功常学生信息为, 杵名孳号 烽号初誓1102聲堆緘査掷3小(8)按学号查找LZXS旳型养林SlUocument 珀 I-rree I empcriergxiji.exe悍学号查捞乍请输人要查找的学号:& 鹼成功嚏学生信息为 怦名爭号 倉号协权6231蹙答继续

4、查掷3宀(9) 按房号查找按房号査找一-请输入要査找的房号汕24胃成功铲鷲周瑜3124臭否继续查找232;(10) 按学号插入息 信入名肯75、坯QHKMmUg!订 LAW- TI 牝、I ETip g IEP(11) 按学号删除zKm2llM.brl ire! H 3、I Cf xi Cl I ip tl ICI IkJAU CAC刘备1102是否继续删除TSE六、附录源程序:采用顺序线性表解决宿舍管理问题(C语言)#in clude #in clude #in clude#defi ne N 40 /线性表存储空间的初始分配量#defi ne in crease 10 /线性表存储空间的分

5、配量增量int f,t=O;定义全局变量typedef structchar n ame20;int num;/学号和房号都为整型int room;stu;stu stud;typedef structint length; II当前长度stu *elem;II存储空间基址int listsize;II当前分配的存储容量li nklist;void in it(li nklist &l) 线性表初始化l.le ngth=0;l.elem=(stu *)malloc(N*sizeof(stu );l.l istsize=N;void menu()操作菜单*n);2按学号排序n);4按姓名查找n)

6、;prin tf(n);printf(*prin tf(n);pri ntf(n);prin tf(1按姓名排序prin tf(n);printf(3按房号排序printf(n);printf(5 按学号查找6 按房号查找 n);printf(n);printf(7 按学号插入8 按学号删除 n);printf(n); printf(n); printf(n); printf(n);printf( 提示 :当输入的数字键为 0 时,退出操作 n); if(t=1)printf( 请输入数字键 (18 为操作键 ):);/18 为有效数字操作键 scanf(%d,&f);if(f9) syste

7、m(cls); printf(n);printf( 输入数字不对 , 请在原处重输 !n); printf(n); menu();void disp()/返回主界面char c;fflush(stdin); printf(n);printf( 请按任意键进入主界面 :);scanf(%c,&c); system(cls);void panduan3() / 如果已无学生记录则返回主界面printf(n);printf( 已无学生记录 n);printf(n);disp();menu();void shuru(linklist l)/输入学生的信息printf( 请输入姓名 :);fflush(

8、stdin); / 清空输入缓冲区,得到正确的输入数据 gets(); / 输入一行字符串(姓名)printf( 请输入学号 :); scanf(%d,&stud.num); printf( 请输入房号 :); scanf(%d,&stud.room);void create(linklist &l)/ 创建学生信息表if(l.length=l.listsize) /判断学生的人数是否超过初值,如果超过,则重新分配 stu *newbase; newbase=(stu*)realloc(l.elem,(N+increase)*sizeof(stu ); l.elem=newb

9、ase;l.listsize+=increase;int i=2;char ch;printf(n);printf(*开始创建线性表*n);printf(n);printf( 请输入第 1 个学生的信息 n); shuru(l);/调用输入函数ch=getchar();strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;printf(n);printf( 是否继续输入 ?:); scanf(%c,&ch);printf(n);print

10、f(n); while(ch=y)printf( 请输入第 %d 个学生的信息 n,i);shuru(l);strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;i+;ch=getchar(); printf(n);printf( 是否继续输入 ?:);scanf(%c,&ch);printf(n);printf(n);if(ch=n) system(cls);void sort3(linklist &l)/ 按房号排序(采用冒泡排序)i

11、nt i,j;stu temp;for(i=0;il.length-1;i+)for(j=i+1;jl.elemj.room) temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void sort2(linklist &l)/ 按学号排序(采用冒泡排序)int i,j;stu temp;for(i=0;il.length-1;i+)for(j=i+1;jl.elemj.num)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void sort1(linklist &l)/ 按姓名排序(采用冒泡排序)int i,j;stu t

12、emp;for(i=0;il.length-1;i+)for(j=i+1;j0) temp=l.elemi; l.elemi=l.elemj;l.elemj=temp;void print1(linklist &l)/ 打印学生信息int i;printf(n);printf( 姓名 学号 房号 n);printf(n); for(i=0;i 该学生信息为 :n);printf( 姓名 学号 房号 n);printf(n);printf(%-15s %-5d %-5dn,,l.elemmid.num,l.elemmid.room); int panduan1(cha

13、r ch) /判断是否继续查找scanf(%c,&ch);printf( 是否继续查找 ?:);fflush(stdin); scanf(%c,&ch);if(ch=y) system(cls); return(1);elsereturn 0;int panduan2(char ch) /如果学生不存在 ,判断是否继续查找scanf(%c,&ch);printf( 该学生不存在 ,是否继续查找 ?:);fflush(stdin); scanf(%c,&ch);if(ch=y)system(cls);return(1);else return 0;void chazhao3(linklist &

14、l)/ 按房号从小到大查找(采用二分查找)if(l.length=0) panduan3();/此函数功能为:返回主界面else否则没int low=0,high=l.length,mid,flag=0;/flag 作为标志符, 为 1 则表示查找成功, 有所要查找的学生int m;char ch; printf(n);printf(n); printf( 按房号查找 请输入要查找的房号 :);scanf(%d,&m); printf(n);while(lowl.elemmid.room) low=mid+1;else high=mid-1; if(flag=1) print2(l,mid);

15、 if(panduan1(ch) / 调用判断函数 1 chazhao3(l);else system(cls); menu();elseif(panduan2(ch) /调用判断函数 2 chazhao3(l);elsesystem(cls);menu();void chazhao2(linklist &l)/ 按学号从小到大查找(采用二分查找)if(l.length=0) panduan3();elseint low=0,high=l.length,mid,flag=0;int n;char ch;printf(n);printf(n);printf( 按学号查找 请输入要查找的学号 :)

16、;scanf(%d,&n);printf(n);while(lowl.elemmid.num)low=mid+1;elsehigh=mid-1;if(flag=1)print2(l,mid);if(panduan1(ch)chazhao2(l);else system(cls); menu(); elseif(panduan2(ch)chazhao2(l); elsesystem(cls); menu();void chazhao1(linklist &l)/ 按姓名从小到大查找(采用二分查找) if(l.length=0) panduan3();elseint low=0,high=l.le

17、ngth,mid,flag=0; printf(n);printf(n);printf( 按姓名查找 请输入要查找的姓名 :); char a15,ch;scanf(%s,a); printf(n);while(low0) low=mid+1;elsehigh=mid-1;if(flag=1)print2(l,mid);/打印查找到的学生的信息if(panduan1(ch) chazhao1(l);elsesystem(cls);menu();elseif(panduan2(ch) chazhao1(l);elsesystem(cls);menu();void insert(linklist

18、&l)/ 按学号从小到大插入该学生int i,j,k;char ch;printf(n);printf( 插入的学生信息为 :n);printf( 姓名 :);fflush(stdin);/ 清空输入缓冲区,得到正确的输入数据gets();printf( 学号 :); scanf(%d,&stud.num);printf( 房号 :); scanf(%d,&stud.room);if(l.length=0)strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=

19、stud.room;for(i=0;il.length;i+)if(stud.numk;j-)l.elemj=l.elemj-1; strcpy(,); l.elemk.num=stud.num; l.elemk.room=stud.room; break;else strcpy(,); l.eleml.length.num=stud.num; l.eleml.length.room=stud.room;l.length+;fflush(stdin); printf(n);printf( 是否继续

20、插入 ?:);scanf(%c,&ch);if(ch=y) insert(l);else system(cls);void Delete(linklist &l)/ 按学号删除该学生int i,j,k=-1;char ch;printf(n);printf(n);printf( 请输入要删除学生的学号 :);scanf(%d,&stud.num);for(i=0;il.length;i+)if(stud.num=l.elemi.num)printf( 该学生的信息为 :n);printf(n); printf(%-15s %-3d %7dn,,l.elemi.num,l

21、.elemi.room); k=i;for(j=k;j=l.length) printf( 该学生不存在 n); if(k=0)l.length-;fflush(stdin); printf(n);printf( 是否继续删除 ?:); scanf(%c,&ch);system(cls); if(ch=y) Delete(l); else system(cls);int main()/主函数linklist l;/定义线性表 linit(l);/ 调用初始化函数char ch;system(color a);printf(n);欢迎进入宿舍管理查询系统printf( *n);printf(n)

22、;printf( 请按任意键开始操作 :);scanf(%c,&ch);system(cls);/ 将屏幕先前显示的内容清理掉 create(l);/ 调用线性表创建函数system(cls);t=1;menu();/调用主菜单函数while(f!=0)system(cls);switch(f)case 1: sort1(l);/ 调用按姓名排序函数printf(n);if(l.length=0)printf( 已无学生记录 n);printf(n);disp();menu();elseprintf( 按姓名排序 :n);print1(l);disp(); / 调用返回主界面 menu();break;case 2: sort2(l); / 调用按学号排序函数 printf(n);if(l.length=0)printf( 已无学生记录 n);printf(n);disp();menu();elseprintf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论