宿舍管理查询系统.doc_第1页
宿舍管理查询系统.doc_第2页
宿舍管理查询系统.doc_第3页
宿舍管理查询系统.doc_第4页
宿舍管理查询系统.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

。编 号: 学 号: 课 程 设 计教 学 院计算机学院课程名称数据结构题 目宿舍管理查询系统专 业软件工程班 级姓 名同组人员指导教师年月日 (完成时间)-可编辑修改-目 录一 概述1二 总体方案设计2 1程序结构图22程序流程图(主要部分的详细流程图)3三 详细设计41软件设计题目:宿舍管理查询42算法思想:43.本系统定义的存储结构采用结构体数组:44.界面设计函数:55.主要函数定义说明:6四 程序的调试与运行结果说明81.测试输出结果(以运行结果图表示):8五 课程设计总结14六 参考文献15七 附件16一 概述1. 课程设计的目的1理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养综合运用所学知识独立完成课题的能力。3培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。2. 课程设计的要求需要的基本知识与技能,尚未掌握的知识点,需要查阅相关资料。教师对本题目所提出的要求等。任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种)(4)查询: a.按姓名查询 ;b.按学号查询 ;c按房号查询(5)打印任一查询结果(可以连续操作)二 总体方案设计 1程序结构图(图2-1)2程序流程图(主要部分的详细流程图)(图2-2)三 详细设计1软件设计题目:宿舍管理查询任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种)(4) 查询 : a.按姓名查询 ;b.按学号查询 ;c按房号查询(5) 打印任一查询结果(可以连续操作)2算法思想:首先,运行程序进入“欢迎进入宿舍管理查询系统”界面,然后进入线性表创建界面中,输入学生的信息,创建好学生信息以后单击“n”键则进入操作界面(主界面),然后可按键进行操作。单击数字键“1”,则为按姓名排序 单击数字键“2”,则为按学号排序单击数字键“3”,则为按房号排序 单击数字键“4”,则为按姓名查找单击数字键“5”,则为按学号查找 单击数字键“6”,则为按学号查找单击数字键“7”,则为按学号插入 单击数字键“8”,则为按学号删除系统中有如下关键词: 提示:当输入的数字键为0时,退出操作;请输入数字键(18为操作键);请按任意键进入主界面。3.本系统定义的存储结构采用结构体数组: (1)关键变量说明:#define N 40 线性表存储空间的初始分配量#define increase 10 线性表存储空间的分配量增量char name20; 姓名int num; 学号int room; 房号int length; 当前长度stu *elem; 存储空间基址int listsize; 当前分配的存储容量(2)函数定义说明:#include#include#include(3)结构体说明:typedef struct /定义结构体成员 char name20;int num; int room;stu;stu stud;typedef structint length; /当前长度stu *elem; /存储空间基址int listsize; /当前分配的存储容量linklist;4.界面设计函数:void menu()/操作菜单printf (n);printf ( *请按键选择操作*n);printf (n);printf(n);printf ( 1 按姓名排序 2 按学号排序n);printf (n);printf ( 3 按房号排序 4 按姓名查找n);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 ( f 9 )system ( cls ); printf ( n );printf ( 输入数字不对,请在原处重输!n );printf (n);menu ();void disp () /返回主界面char c;fflush ( stdin );printf ( n );printf ( 请按任意键进入主界面: );scanf ( %c, &c );system ( cls );5.主要函数定义说明:void init ( linklist &l ) /线性表初始化void menu() /操作菜单void disp () /返回主界面void panduan3 () /如果已无学生记录则返回主界面void shuru ( linklist l ) /输入学生的信息void create ( linklist &l ) /创建学生信息表void sort3 ( linklist &l ) /按房号排序(采用冒泡排序)void sort2 ( linklist &l ) /按学号排序(采用冒泡排序)void sort1 ( linklist &l ) /按姓名排序(采用冒泡排序)void print1 ( linklist &l ) /打印学生信息void print2 ( linklist &l, int mid ) /打印查找到的学生信息int panduan1 ( char ch ) /判断是否继续查找int panduan2 ( char ch ) /如果学生不存在,判断是否继续查找void chazhao3 ( linklist &l )/按房号从小到大查找(采用二分查找)void chazhao2 ( linklist &l )/按学号从小到大查找(采用二分查找)void chazhao1 ( linklist &l )/按姓名从小到大查找(采用二分查找)void insert ( linklist &l ) /按学号从小到大插入该学生void Delete(linklist &l) /按学号删除该学生void main() /主函数四 程序的调试与运行结果说明1.测试输出结果(以运行结果图表示):(图4-1)(图4-2)(图4-3)(图4-4)(图4-5)(图4-6)(图4-7)(图4-8)(图4-9)(图4-10)(图4-11)(图4-12)(图4-13)(图4-14)(图4-15)五 课程设计总结经过这次课程设计,我收获到到了很多东西,对C语言有了进一步的了解和认识,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力,在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过本次数据结构课程设计,我学到了很多,独立的完成了作业,我觉得很满足,也很有成就感,现在知道并熟练的掌握了一些曾经自己不知道的知识。经过这次课程设计,我深刻认识到算法在程序设计中的重要性,一个完整的程序总是由若干个函数构成的,这些相应的函数体现了算法的基本思想。通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵的经验。特别是怎样将理论与实践相结合,把书本上的的内容应用到我们做的程序上。其次我熟悉了数据结构的知识学会了很多关于程序设计的经验和技巧,明白了程序设计的使用性和通用性事程序生存周期长短的关键,学会了程序调试的一般方法。重要的是通过本次程序设计,我逐步具备了走向程序员的基本素质。知道如何在困难重重时一步一步细心发现问题,解决问题。知道了在软件设计中对界面和功能如何平衡,如何达到相对完美。编程是一件枯燥乏味工作,但是只要认真专研,我们会从中学到很多在课本上学不到或者无法在课堂上掌握的知识,同时也能从中感受到编程的乐趣。兴趣是可以培养的,只要坚持下去,面对困难我们总能够找到解决问题的方法。通过小组的分工与合作,使我充分认识到在项目团队开发过程中合作的重要性,也更加理解了沟通协作能力在软件开发行业中的重要性。另外也需要提出的是在这次程序设计的过程中,非常感谢陈利民老师对我们的耐心指导。老师在教学过程中表现出来的对学术专研一丝不苟的精神让我非常有收获。同样也是老师的严格要求才使得小组成员能够顺利的完成任务。六 参考文献1 谭浩强,C程序设计题解与上机指导(第二版),北京,清华大学出版社,2000年9月。2 陈朔鹰等编著,C语言程序设计基础教程,兵器工业出版社,1994年9月。3 裘宗燕 著,从问题到程序科学出版社,北京大学出版社,1999年4月。4 姜仲秋等主编,C语言程序设计,南京大学出版社,1998年1月。5 刘瑞挺主编,计算机二级教程,南开大学出版社,1996年10月。6 陈朔鹰 陈英主编,C语言程序设计习题集(第二版)人民邮电出版社,2003年2月。 7 田淑清等,C语言程序设计辅导与习题集,中国铁道出版社,2000年1月。七 附件源代码:#include#include#include#define N 40 /线性表存储空间的初始分配量#define increase 10 /线性表存储空间的分配量增量int f, t = 0; /定义全局变量typedef struct char name20;int num; /学号和房号都为整型int room;stu;stu stud;typedef structint length; /当前长度stu *elem; /存储空间基址int listsize; /当前分配的存储容量linklist; void init ( linklist &l )/线性表初始化l.length = 0;l.elem = ( stu * ) malloc ( N * sizeof ( stu ) );l.listsize = N;void menu()/操作菜单printf (n);printf ( *请按键选择操作*n);printf (n);printf(n);printf ( 1 按姓名排序 2 按学号排序n);printf (n);printf ( 3 按房号排序 4 按姓名查找n);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 ( f 9 )system ( 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 ( 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 = newbase;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 );printf ( 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 )/按房号排序(采用冒泡排序)int i, j;stu temp;for ( i= 0; i l.length - 1; i+)for ( j = i + 1; j l.elemj.room )temp = l.elemi;l.elemi = l.elemj;l.elemj = temp;void sort2 ( linklist &l )/按学号排序(采用冒泡排序)int i, j;stu temp;for ( i = 0; i l.length - 1; i+ )for ( j = i + 1; j l.elemj.num )temp = l.elemi;l.elemi = l.elemj;l.elemj = temp;void sort1 ( linklist &l )/按姓名排序(采用冒泡排序)int i, j;stu temp;for ( i = 0; i l.length - 1; i+ )for ( j = i + 1; j 0 )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 ( char 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 );elsereturn 0;void chazhao3 ( linklist &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 ( low l.elemmid.room )low = mid + 1;else high = mid - 1;if ( flag = 1 ) print2 ( l, mid );if ( panduan1 ( ch ) /调用判断函数1chazhao3 ( l );else system ( cls );menu ();else if ( panduan2 ( ch ) /调用判断函数2chazhao3 ( l );else system ( 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 ( 按学号查找-请输入要查找的学号: );scanf ( %d, &n );printf ( n );while ( low l.elemmid.num ) low = mid + 1;else high = mid - 1;if ( flag = 1) print2 ( l, mid );if( panduan1 ( ch ) ) chazhao2 ( l );else system ( cls );menu ();elseif ( panduan2 ( ch ) chazhao2 (l);else system ( cls );menu();void chazhao1 ( linklist &l )/按姓名从小到大查找(采用二分查找) if ( l.length = 0) panduan3 ();elseint low = 0, high = l.length, mid, flag = 0;printf (n);printf (n);printf (按姓名查找-请输入要查找的姓名:);char a15, ch;scanf ( %s, a );printf ( n );while ( low 0 )low = mid + 1;else high = mid - 1;if ( flag = 1 ) print2 ( l, mid ); /打印查找到的学生的信息if ( panduan1 ( ch ) ) chazhao1 ( l );else system ( cls );menu ();elseif ( panduan2 ( ch ) )chazhao1 ( l );else system ( cls );menu ();void insert ( linklist &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 = stud.room;for ( i = 0; i l.length; i+)if ( stud.num k; 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 (是否继续插入?:);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.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);void main() /主函数linklist l; /定义线性表 linit(l); /调用初始化函数char ch;system(color a);printf(n);printf( *欢迎进入宿舍管理查询系统*n);printf(n);printf(请按任意键开始操作:);scanf(%c, &ch);system(cls);/将屏幕先前显示的内容清理掉create(l); /调用线性表创建函数system(cls);t=1;menu(); /调用主菜单函数while(

温馨提示

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

评论

0/150

提交评论