




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编 号:课教学院程设计算机学院计课程名称数据结构题目宿舍管理查询系统专业软件工程班级姓名年月日同组人员(完成时间)学 号:指导教师一 概述.错误!未定义书签。二 总体方案设计错误!未指定书签。1. 程序结构图 错误!未指定书签。2. 程序流程图(主要部分的详细流程图).错误!未指定书签。三 详细设计错误!未指定书签。1. 软件设计题目:宿舍管理查询 错误!未指定书签。2. 算法思想: 错误!未指定书签。3. 本系统定义的存储结构采用结构体数组:错误!未指定书签。4. 界面设计函数: 错误!未指定书签。5. 主要函数定义说明: 错误!未指定书签。四 程序的调试与运行结果说明 错误!未指定书签。1
2、. 测试输出结果(以运行结果图表示): 错误!未指定书签。五 课程设计总结错误!未指定书签。六参考文献.8.七 附件错误!未指定书签。概述1. 课程设计的目的 1理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2培养综合运用所学知识独立完成课题的能力。 3培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论, 全方位考虑问题等科学技术人员应具有的素质。4掌握从资料文献、 科学实验中获得知识的能力,提高学生从别人经验中 找到解决问题的新途径的悟性,初步培养工程意识和创新能力。2. 课程设计的要求 需要的基本知识与技能,尚未掌握的知识点,需要查阅相关资料。教师对 本题目所提出的要求
3、等。任务:为宿舍管理人员编写一个宿舍管理查询软件 , 程序设计要求:(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件 ,数据文件按关键字(姓名、学号、房号) 进行排序 (选择、 快速排序、堆排序等任选一种 )(4)查询:a.按姓名查询;b.按学号查询;c按房号查询( 5)打印任一查询结果(可以连续操作)二总体方案设计1 .程序结构图2 .程序流程图(主要部分的详细流程图)(图 2-2)三 详细设计1 软件设计题目:宿舍管理查询任务:为宿舍管理人员编写一个宿舍管理查询软件 , 程序设计要求:(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件,数据文件按关
4、键字 (姓名、 学号、房号)进行排序 (选择、 快速排序、堆排序等任选一种 )(4)查询:a.按姓名查询;b.按学号查询;c按房号查询(5)打印任一查询结果(可以连续操作)2算法思想:首先,运行程序进入“欢迎进入宿舍管理查询系统”界面,然后进入线性表创建界面中,输入学生的信息,创建好学生信息以后单击“ n”键则进入操作界面(主界面),然后可按键进行操作。单击数字键“ 1”,则为按姓名排序单击数字键“ 3”,则为按房号排序单击数字键“ 5”,则为按学号查找单击数字键“ 7”,则为按学号插入 系统中有如下关键词:单击数字键“ 2”,则为按学号排序单击数字键“ 4”,则为按姓名查找单击数字键“ 6”
5、,则为按学号查找单击数字键“ 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(
6、 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 (n);printf (n);printf (n);printf (n);printf (n);printf (n);print
7、f (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 ()/返回主界面
8、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 )/线性表初始化/操作菜单 /返回主界面/如果已
9、无学生记录则返回主界面/输入学生的信息/创建学生信息表 /按房号排序(采用冒泡排序) /按学号排序(采用冒泡排序)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 )/ 按房号从小到大查找(采
10、用二分查找) 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)
11、(图 4-10) (图 4-11) (图 4-12) (图 4-13) (图 4-14 ) (图 4-15)五 课程设计总结经过这次课程设计,我收获到到了很多东西,对 C 语言有了进一步的了解 和认识,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有 学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理 论中得出结论,才能提高自己的实际动手能力和独立思考的能力,在设计的过 程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不 够牢固,通过这次课程设计之后,一定把以前所学过的知识重新
12、温故。通过本次数据结构课程设计,我学到了很多,独立的完成了作业,我觉得 很满足,也很有成就感, 现在知道并熟练的掌握了一些曾经自己不知道的知识。 经过这次课程设计,我深刻认识到算法在程序设计中的重要性,一个完整的程 序总是由若干个函数构成的,这些相应的函数体现了算法的基本思想。通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵 的经验。特别是怎样将理论与实践相结合,把书本上的的内容应用到我们做的 程序上。其次我熟悉了数据结构的知识学会了很多关于程序设计的经验和技巧, 明白了程序设计的使用性和通用性事程序生存周期长短的关键,学会了程序调 试的一般方法。重要的是通过本次程序设计,我逐
13、步具备了走向程序员的基本 素质。知道如何在困难重重时一步一步细心发现问题,解决问题。知道了在软 件设计中对界面和功能如何平衡,如何达到相对完美。编程是一件枯燥乏味工作,但是只要认真专研,我们会从中学到很多在课 本上学不到或者无法在课堂上掌握的知识,同时也能从中感受到编程的乐趣。 兴趣是可以培养的, 只要坚持下去, 面对困难我们总能够找到解决问题的方法。 通过小组的分工与合作, 使我充分认识到在项目团队开发过程中合作的重要性, 也更加理解了沟通协作能力在软件开发行业中的重要性。另外也需要提出的是 在这次程序设计的过程中,非常感谢陈利民老师对我们的耐心指导。老师在教 学过程中表现出来的对学术专研一
14、丝不苟的精神让我非常有收获。同样也是老 师的严格要求才使得小组成员能够顺利的完成任务。六 参考文献1 谭浩强, C 程序设计题解与上机指导(第二版) ,北京,清华大学出版社, 2000 年 9 月。2 陈朔鹰等编着,C语言程序设计基础教程,兵器工业出版社,1994年9月。3 裘宗燕 着,从问题到程序科学出版社,北京大学出版社, 1999年 4 月。4 姜仲秋等主编,C语言程序设计,南京大学出版社,1998年1月。5 刘瑞挺主编,计算机二级教程,南开大学出版社,1996年 10月。 陈朔鹰 陈英主编,C语言程序设计习题集(第二版)人民邮电出版社,2003年2月。7田淑清等,C语言程序设计辅导与习
15、题集,中国铁道出版社,2000年1月。七 附件源代码:#include#include#include#define N 40 /线性表存储空间的初始分配量#define increase 10 /线性表存储空间的分配量增量 int f, t = 0; /定义全局变量typedef structchar name20;int num;/学号和房号都为整型int room;stu;stu stud;typedef structint length; /当前长度stu *elem; / 存储空间基址int listsize; /当前分配的存储容量linklist;void init ( linkl
16、ist &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 (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);*1 按姓名排序3 按房号排序5 按学号查找7 按学号插入请按键选择操作2 按学号排序4 按姓名查找6 按房号查找8
17、 按学号删除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 ( 请按任意键进入主界面 :
18、 );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 (
19、请输入房号 : );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 );
20、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
21、个学生的信息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 )/ 按房号排序(
22、采用冒泡排序) 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
23、.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 (
24、姓名学号 房号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 ) /如果学生不存在 ,判断是否继续查找s
25、canf ( %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();/此函数功能为:返回主界面elseint low=0,high=l.length,mid,flag=0;/flag 作为标志符, 为 1 则表示查找成 功,否则没有所要查找的学生int m;
26、char ch;printf ( n );printf ( n );printf ( 按房号查找 请输入要查找的房号 : );scanf ( %d, &m );printf ( n );while ( low l.elemmid.room ) low = mid + 1;elsehigh = mid - 1;if ( flag = 1 )print2 ( l, mid );if ( panduan1 ( ch )/调用判断函数 1chazhao3 ( l );else system ( cls ); menu ();elseif ( panduan2 ( ch ) /调用判断函数 2 chaz
27、hao3 ( 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
28、= 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);else system ( cls ); menu();void chazhao1 ( linklist &l )/ 按姓名从小到大查找(采用二分查找) if ( l.length = 0) panduan3 ();elseint low = 0, high = l.l
29、ength, mid, flag = 0; printf (n);printf (n);printf (按姓名查找 请输入要查找的姓名 :);char a15, ch;scanf ( %s, a ); printf ( n );while ( low 0 ) low = mid + 1;elsehigh = mid - 1;if ( flag = 1 )print2 ( l, mid );/打印查找到的学生的信息if ( panduan1 ( ch ) ) chazhao1 ( l );elsesystem ( cls ); menu ();elseif ( panduan2 ( ch ) )
30、 chazhao1 ( l ); elsesystem ( 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
31、( , );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;elsestrcpy ( ,stud.na
32、me ); 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); fo
33、r(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);欢迎进入宿舍管理查询系统小; K-kJ-f/*n);printf(n);printf( 请按任意键开始操作 :);scanf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋建筑主体结构工程管理技术分析
- 北师大版小学一年级数学上册跨学科教学计划
- 2025年乡镇消防队员招聘考试模拟题消防法规及安全制度篇
- 2025年导游员招聘面试模拟题及实战演练指南
- 网站转化率服务创新创业项目商业计划书
- 社交网红孵化器创新创业项目商业计划书
- 2025年体育场馆管理信息化在体育场馆运营师考试中的应用
- 农作物种子改良与繁育中心创新创业项目商业计划书
- 人教版六年级数学下册知识点突破计划
- 2025年临床医学检验技术士专业资格认证考试趋势分析与备考建议
- 碳纤维行业培训课件
- 2025至2030中国无针注射系统行业发展趋势分析与未来投资战略咨询研究报告
- 感染性休克护理
- 儿童过敏性紫癜饮食护理讲课件
- 肝脏的解剖和分段分叶
- 校外集体配餐管理制度
- 2025至2030年中国口腔喷雾剂行业市场竞争态势及发展前景研判报告
- 关于卫生院“十五五”发展规划(详细版)
- T/CECS 10163-2021纤维增强聚氨酯复合材料杆塔
- 机械设备安装施工服务承诺书范文
- 露天矿山安全培训课件
评论
0/150
提交评论