版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编 号:学 号:n 3率冷HOBEI POLYTEC EIN IC UNIVERSITY课程设计教学院计算机学院课程名称数据结构题 目宿舍管理查询系统专 业软件工程班 级姓 名同组人员指导教师年 月日(完成时间)0 / 36目录一概述1二总体方案设计11.程序结构图22. 程序流程图主要局部的详细流程图 2 三详细设计41 .软件设计题目:宿舍管理查询 42.算法思想:43本系统定义的存储结构采用结构体数组:44界面设计函数:55主要函数定义说明:6四程序的调试与运行结果说明 81测试输出结果以运行结果图表示:8五课程设计总结13六参考文献14 七附件15概述1. 课程设计的目的1 理解和掌握
2、该课程中的有关根本概念,程序设计思想和方法。2 培养综合运用所学知识独立完成课题的能力。3 培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论, 全方位考虑问题等科学技术人员应具有的素质。4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中 找到解决问题的新途径的悟性,初步培养工程意识和创新能力。2. 课程设计的要求需要的根本知识与技能,尚未掌握的知识点,需要查阅相关资料。教师对 此题目所提出的要求等。任务:为宿舍管理人员编写一个宿舍管理查询软件 ,程序设计要求:1采用交互工作方式2可以增加、删除、修改信息3建立数据文件,数据文件按关键字某某、学号、房号进展排序(选择、
3、 快速排序、堆排序等任选一种)4查询:a.按某某查询;b.按学号查询;c按房号查询5打印任一查询结果可以连续操作二总体方案设计1 .程序结构图图 2-12 .程序流程图主要局部的详细流程图1 F图 2-2三详细设计1 .软件设计题目:宿舍管理查询任务:为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:1采用交互工作方式2可以增加、删除、修改信息3建立数据文件,数据文件按关键字某某、学号、房号进展排序(选择、快速排序、 堆排序等任选一种)(4) 查询:a.按某某查询;b.按学号查询;c按房号查询(5) 打印任一查询结果可以连续操作2 .算法思想:首先,运行程序进入“欢迎进入宿舍管理查询系统界
4、面,然后进入线性表创建界面中,输入学生的信息,创建好学生信息以后单击“n"键如此进入操作界面主界面,然后可按键进展操作。单击数字键“ 2",如此为按学单击数字键“ 4",如此为按某单击数字键“ 6",如此为按学单击数字键“ 8",如此为按学单击数字键“ 1",如此为按某某排序 号排序单击数字键“ 3,如此为按房号排序 某查找单击数字键“ 5,如此为按学号查找 号查找单击数字键“ 7,如此为按学号插入 号删除系统中有如下关键词:提示:当输入的数字键为0时,退出操作; 请输入数字键(18为操作键);请按任意键进入主界面。1关键变量说明:#
5、defi ne N 40#defi ne in crease 10 char n ame20;int num;3. 本系统定义的存储结构采用结构体数组:线性表存储空间的初始分配量 线性表存储空间的分配量增量 某某学号int room; int len gth; stu *elem; int listsize;当前长度存储空间基址 当前分配的存储容量2函数定义说明:#i nclude<stdio.h>#in clude<stdlib.h>#i nclude<stri ng.h>3结构体说明:typedef struct/定义结构体成员 char n ame20
6、;int num;int room;stu;stu stud;typedef structint len gth; /当前长度stu *elem;存储空间基址int listsize; /当前分配的存储容量li nklist;4. 界面设计函数:printf ("n");printf ("*n");printf ("n");pri ntf("n");printf ("n");printf ("n");printf ("n");*按某某排序按房号排序请按键选
7、择操作按学号排序按某某查找void men u()操作菜单printf ("n");按学号查找按房号查找printf (" n");printf ("n");printf ("7按学号插入8按学号删除n");printf ("n");printf ("n");printf ("n");printf ("n");printf ("提示:当输入的数字键为0时,退出操作n");if ( t = 1 )printf (&qu
8、ot;请输入数字键(18为操作键):");/18为有效数字操作键sea nf ( "%d", &f );if ( f < 0|f > 9 )system ( "els");printf ( "n");printf ("输入数字不对,请在原处重输!n");printf ("n");menu ();void disp ()返回主界面char e;fflush ( stdin );printf ( "n");printf ("请按任意键进入主
9、界面:");sea nf ( "%e", & e );system ( "els");5. 主要函数定义说明:void init ( lin klist &l )void menu()void disp ()void pan dua n3 ()void shuru ( lin klist l )/线性表初始化/操作菜单/返回主界面/如果已无学生记录如此返回主界面void create ( lin klist &l )创建学生信息表void sort3 ( lin klist &l )按房号排序采用冒泡排序输入学生
10、的信息void sort2 ( lin klist &l )void sort1 ( lin klist &l )按学号排序采用冒泡排序按某某排序采用冒泡排序打印学生信息void print1 ( lin klist &l )void print2 ( lin klist & I, i nt mid )/ 打印查找到的学生信息in t pa ndua n1 ( char ch )判断是否继续查找int panduan2 ( char ch )如果学生不存在,判断是否继续查找void chazhao3 ( linklist & )/按房号从小到大查找采用二
11、分查找void chazhao2 ( linklist & )/按学号从小到大查找采用二分查找 void chazhao1 ( linklist & )/按某某从小到大查找采用二分查找 void in sert ( lin klist &l )/按学号从小到大插入该学生void Delete(li nklist &l)按学号删除该学生void mai n()/ 主函数四 程序的调试与运行结果说明生的信息mmbm I FPm1 PIJ *uaauaau a*um:mu i< nu m: u m; naau n n w" TC:,UsersAdrmi
12、istratoryDeeHopDehugJ?D 15404-501J5樽連冃兰 wwm".Tffiz 2=.土f 111-1善!T is AAAA 输青土垦冃土冃i ihlll号 第烛TH 入人人入 亠刖 +1冃亠育青吉蠶罐抵萨咖总请剜八2号泊萨綸入鷹号沖否継绰输入琴3心$#6 5 蓉2J H 入入入人输 唐吉吉青”名号号第姓学苗人人入入工垦冃自冃H1. 一1 . 11.测试输出结果以运行结果图表示:图 4-2% - 名号号 入人入AJ亠一冃 生.jtl9 nr入入人入图 4-3 *C:UsersAdmirtistratorDesletopD&bu201540450126ff
13、ifxtJ .*请按犍选S操惟*1按姓名排序2按学号排序3按房号排序4按学吕插入£按学号查找?按房号査找8按学号删除退岀操作图 4-4图 4-5-'C Users Ad m i n ;5tratorDe 5 kio Deb ug2015404 5 0126feM 明梆音"”学号排序;学号房号1122334545b6787 S9g1019图 4-6"C: iiUsersAd m inistratorDe 5 klopDebug20- 540450126.1 1 回”舅号排序:止名字号房号1122334455£677VU991010法拎仟負镇讲A主界
14、面:.图 4-7l ' C*Uss rsAdmi hi st-at-orXDes ctopDebug2D154C4S0126梅嗟匪 exa舲誓生信息为:壬号:丄1訂寻;丄丄入蟹生信息为£-:12图 4-8按任意键进入主界面:1112j1 T:UwrsAdm i nistratoh.De s kto pDeb ug2 Di 543450126 梅瞳明.exe*亠陈123467090疋田梅王孙李程甘In.显示插入后的学生信息;姓名学号 房号图 4-9-9U se r;Adm i n ;=tMtore3litopDcbugV C1540450126 梅理昵 e as h4口 回 i
15、eM图 4-10图 4-11图 4-12回图 4-13号島 12345678马 1235678?学图 4-14退出握作就名排序 按学弓排序 按房号排序 按学号着入按姓名直找 按学号查找 按房号查找 按学号删除厲屛何gf補科曲科期科酬科図琵岸扌士予噪乍K科耳瓣HiM耳KWT图 4-15五课程设计总结经过这次课程设计,我收获到到了很多东西,对 C语言有了进一步的了解 和认识,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有 学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理 论中得出结论,才能提高自
16、己的实际动手能力和独立思考的能力,在设计的过 程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不 够结实,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过本次数据结构课程设计,我学到了很多,独立的完成了作业,我觉得 很满足,也很有成就感,现在知道并熟练的掌握了一些曾经自己不知道的知识。 经过这次课程设计,我深刻认识到算法在程序设计中的重要性,一个完整的程 序总是由假如干个函数构成的,这些相应的函数表现了算法的根本思想。通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵 的经验。特别是怎样将理论与实践相结合,把书本上的的内容应用到我们做的 程序上。其次我
17、熟悉了数据结构的知识学会了很多关于程序设计的经验和技巧, 明白了程序设计的使用性和通用性事程序生存周期长短的关键,学会了程序调 试的一般方法。重要的是通过本次程序设计,我逐步具备了走向程序员的根本 素质。知道如何在困难重重时一步一步细心发现问题,解决问题。知道了在软 件设计中对界面和功能如何平衡,如何达到相对完美。编程是一件枯燥乏味工作,但是只要认真专研,我们会从中学到很多在课 本上学不到或者无法在课堂上掌握的知识,同时也能从中感受到编程的乐趣。 兴趣是可以培养的,只要坚持下去,面对困难我们总能够找到解决问题的方法。 通过小组的分工与合作,使我充分认识到在项目团队开发过程中合作的重要性, 也更
18、加理解了沟通协作能力在软件开发行业中的重要性。另外也需要提出的是 在这次程序设计的过程中,非常感谢陈利民教师对我们的耐心指导。教师在教 学过程中表现出来的对学术专研一丝不苟的精神让我非常有收获。同样也是教 师的严格要求才使得小组成员能够顺利的完成任务。六参考文献1 谭浩强,C程序设计题解与上机指导第二版,清华大学,2000年9月。2 陈朔鹰等编著,C语言程序设计根底教程,兵器工业,1994年9月。3 裘宗燕 著,从问题到程序科学,大学,1999年4月。4 姜仲秋等主编,C语言程序设计,某某大学,1998年1月。X 瑞挺主编,计算机二级教程,南开大学,1996年10月。 陈朔鹰 陈英主编,C语言
19、程序设计习题集第二版人民邮电, 2003年2月。7田淑清等,C语言程序设计辅导与习题集,中国铁道,2000年1月。七附件源代码:#i nclude<stdio.h>#in clude<stdlib.h>#i nclude<stri ng.h>#defi ne N 40 线性表存储空间的初始分配量#defi ne in crease 10 /线性表存储空间的分配量增量int f, t = 0; /定义全局变量typedef structchar n ame20;int num;/学号和房号都为整型int room;stu;stu stud;typedef st
20、ructint len gth; /当前长度stu *elem;存储空间基址int listsize; /当前分配的存储容量li nklist;void init ( linklist & )/ 线性表初始化l.le ngth = 0;l.elem = ( stu * ) malloc ( N * sizeof ( stu );l.listsize = N;void men u()操作菜单printf ("n");printf ("*n")printf ("n");pri ntf("n");printf (
21、"n");printf ("n");printf ("n");printf ("n");printf ("n");printf ("n");printf ("n");printf ("n");*1按某某排序3按房号排序5按学号查找7按学号插入请按键选择操作2按学号排序4按某某查找6按房号查找8按学号删除printf ("n");printf ("n");printf ("n")
22、;printf ("提示:当输入的数字键为0时,退出操作n");if ( t = 1 )printf ("请输入数字键(18为操作键):");/18为有效数字操作键 sca nf ( "%d", &f );if ( f < 0|f > 9 )system ( "cls"); printf ( "n");printf ("输入数字不对,请在原处重输!n");printf ("n");menu ();void disp ()返回主界面cha
23、r c;fflush ( stdin );printf ( "n");printf ("请按任意键进入主界面:");sea nf ( "%c", & c );system ( "els");void panduan3 () 如果已无学生记录如此返回主界面printf ("n");printf ("已无学生记录n");printf ("n");disp ();menu ();void shuru ( lin klist l )输入学生的信息print
24、f ("请输入某某:");fflush ( stdin );清空输入缓冲区,得到正确的输入数据gets ( stud. name );输入一行字符串某某printf ("请输入学号:");seanf ( "%d", &stud.num );printf ("请输入房号:"); scanf ( "%d", & stud.room );void create ( linklist & )/ 创建学生信息表if ( Lie ngth >= l.listsize )判断学生
25、的人数是否超过初值,如果超过,如此重新分配stu *n ewbase;n ewbase = ( stu* ) realloc ( l.elem, ( N+in crease ) * sizeof ( stu );l.elem = n ewbase;l.listsize += in crease;int i = 2;char ch;printf ( "n");printf (*n");printf ( "n");printf ("请输入第1个学生的信息n");shuru ( l );调用输入函数ch = getchar ();
26、strcpy ( l.eleml .len gth. name, stud .n ame );l.eleml .len gth. num = stud. num;l.eleml.le ngth.room = stud.room; l.le ngth+;printf ( "n");printf (”是否继续输入?<y/n>:"); scanf ( "%c", &ch );printf ( "n");printf ( "n"); while ( ch = 'y') prin
27、tf ("请输入第%d个学生的信息n", i ); shuru ( l );strcpy ( l.eleml .len gth. name, stud .n ame ); l.eleml.le ngth. num = stud. num;l.eleml.le ngth.room = stud.room;l.len gth+;i+;ch=getchar ();printf ( "n");printf (”是否继续输入?<y/n>:");scanf ( "%c", &ch );printf ( "n
28、");printf ( "n");if ( ch = 'n' ) system ( "cls");void sort3 ( linklist & )/按房号排序采用冒泡排序 int i, j;stu temp;for ( i= 0; i < l.length - 1; i+)for ( j = i + 1; j < Llen gth; j+)if ( l.elemi.room > l.elemj.room )temp = l.elemi;l.elemi = l.elemj;l.elemj = temp;
29、void sort2 ( linklist & )/按学号排序采用冒泡排序int i, j;stu temp;for ( i = 0; i < Liength - 1; i+ )for ( j = i + 1; j < Lien gth; j+ )if ( l.elemi.num > 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.
30、length - 1; i+ )for ( j = i + 1; j < Llen gth; j+ )if ( strcmp ( , ) > 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 < l.len
31、 gth; i+ )printf ("%-15s%-3d%5dn", l.elemi. name, l.elemi. num,l.elemi.room);void print2 ( lin klist & I, i nt mid )/ 打印查找到的学生信息printf ("查找成功-> 该学生信息为:n");printf ("某某学号房号n");printf ( "n");printf ("%-15s%-5d%-5dn", l.elemmid. name, l.elemmid. n
32、um,l.elemmid.room );int panduan1 ( char ch ) 判断是否继续查找scanf ( "%c", &ch );printf ("是否继续查找?<y/n>:");fflush ( stdin );scanf ( "%c", &ch );if ( ch ='y')system ( "cis");return ( 1 );elsereturn 0;int panduan2 ( char ch )如果学生不存在,判断是否继续查找scanf (
33、"%c", &ch );printf ("该学生不存在,是否继续查找?<y/n>:");fflush(stdi n);sea nf("%c",&ch);if ( ch = 'y')system ( "els");return ( 1 );elsereturn 0;void chazhao3 ( linklist & )/按房号从小到大查找采用二分查找if(l.le ngth=O) pa ndua n3();此函数功能为:返回主界面elseint low=0,hig
34、h=l.length,mid,flag=O;/flag 作为标志符,为 1 如此表示查找 成功,否如此没有所要查找的学生int m;char ch;printf ( "n");printf ( "n");printf ("按房号查找-> 请输入要查找的房号:");scanf ( "%d", &m );printf ( "n");while ( low <= high )mid = ( low + high ) / 2;if ( m = l.elemmid.room )flag
35、 = 1;break;elseif ( m > l.elemmid.room )low = mid + 1;elsehigh = mid - 1;if ( flag = 1 )print2 ( l, mid );if ( pan dua n1 ( ch )/ 调用判断函数 1chazhao3 ( l );elsesystem ( "cis");menu ();elseif ( panduan2 ( ch ) /调用判断函数 2 chazhao3 ( l );elsesystem ( "cls");menu ();void chazhao2 ( li
36、nklist & )/按学号从小到大查找采用二分查找 if ( l.length = 0 ) panduan3 ();elsein t low = 0, high = Lien gth, mid, flag = 0;int n;char ch;printf ( "n");printf ( "n");printf ("按学号查找-> 请输入要查找的学号:");scanf ( "%d", &n );printf ( "n");while ( low <= high )mi
37、d = ( low + high ) / 2;if ( n = l.elemmid.num )flag = 1;break;elseif ( n > l.elemmid. num )low = mid + 1;elsehigh = mid - 1;if ( flag = 1)print2 ( l, mid );if( pan dua n1 ( ch ) chazhao2 ( l );elsesystem ( "cls");menu (); elseif ( panduan2 ( ch ) chazhao2 (l);elsesystem ( "cis"
38、;); menu();void chazhaol ( linklist & )/按某某从小到大查找采用二分查找 if ( l.len gth = 0) pan dua n3 ();elsein t low = 0, high = Lien gth, mid, flag = 0;printf ("n");printf ("n");printf ("按某某查找-> 请输入要查找的某某:");char a15, ch;scanf ( "%s", a );printf ( "n");whi
39、le ( low <= high )mid = ( low + high ) / 2;if ( strcmp ( a, l.elemmid. name ) = 0 )flag = 1; break;elseif ( strcmp ( a, l.elemmid. name ) > 0 )low = mid + 1;elsehigh = mid - 1;if ( flag = 1 )print2 ( l, mid );/打印查找到的学生的信息if ( panduan1 ( ch ) ) chazhao1 ( l );elsesystem ( "cls");menu
40、();elseif ( panduan2 ( ch ) ) chazhao1 ( l );elsesystem ( "cls");menu ();void insert ( linklist & )/按学号从小到大插入该学生int i, j, k;char ch;printf ("n");printf ("插入的学生信息为:n");printf ("某某:");fflush (stdin);清空输入缓冲区,得到正确的输入数据gets (stud .n ame);printf ("学号:"
41、);sea nf ("%d",&stud. nu m);printf ("房号:");sca nf ("%d",&stud.room);if ( Lie ngth = 0 )strepy ( , );l.eleml.le ngth. num = stud. num;l.eleml.le ngth.room = stud.room;for ( i = 0; i < l.len gth; i+)if ( stud.num < l.elemi.num )k
42、 = i;for ( j = Llen gth; j > k; j-)l.elemj = l.elemj - 1;strepy ( , );l.elemk. num = stud. num;l.elemk.room = stud.room;break;elsestrepy ( l.eleml.le ngth. name,stud. name);l.eleml .len gth. num = stud. num;l.eleml.le ngth.room = stud.room;l.len gth+;fflush (stdin);printf (&
43、quot;n");printf ("是否继续插入?<y/n>:");scanf ("%c", &ch);if(ch='y') in sert(l);else system("cls");void Delete(linklist &)/按学号删除该学生int i,j,k=-1;char ch;prin tf("n");pri ntf("n");printf("请输入要删除学生的学号:");sca nf("%d&qu
44、ot;,&stud. nu m);for(i=0;i<l.le ngth;i+)if(stud. num=l.elemi. num)printf("该学生的信息为:n");printf("n");prin tf("%-15s %-3d %7dn",l.elemi. name,l.elemi. num,l.elemi.room);k=i;for(j=k;j<l.le ngth-1;j+)l.elemj=l.elemj+1;prin tf("n");break;if(i>=l.length)
45、printf("该学生不存在 n"); if(k>=O)l.le ngth-;fflush(stdi n);prin tf("n");printf("是否继续删除?<y/n>:");sea nf("%c",&ch);system("cls");if(ch='y') Delete(l);else system("cls");void main()lin klist l;ini t(l);主函数定义线性表l/调用初始化函数char ch;system("color a");prin tf("n");r 尸;*欢迎进入宿舍管理查询系统*n");prin tf("n");printf("请按任意键开始操作:");sca nf("%c"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年成方金融备考题库技术服务有限公司校园招聘5人备考题库及完整答案详解1套
- 2025年民办四川天一学院单招(计算机)测试模拟题库附答案
- 2025年苏州交投新基建科技有限公司公开招聘12名人员备考题库及1套参考答案详解
- 2025年云南省迪庆藏族自治州单招职业适应性测试题库附答案
- 2025年中山市东凤镇吉昌幼儿园招聘备考题库含答案详解
- 水闸门管理协议书
- 江苏医联体协议书
- 汽车售后授协议书
- 汽车购置合同范本
- 沙场买卖合同协议
- 2026年保安员考试题库500道附完整答案(历年真题)
- 2025至2030中国司法鉴定行业发展研究与产业战略规划分析评估报告
- (2025年)危重病人的观察与护理试题及答案
- 膝关节韧带损伤康复课件
- 建筑施工项目职业病危害防治措施方案
- 船员上船前安全培训课件
- 市政工程桩基检测技术操作规程
- 如何申请法院提审申请书
- 中医内科慢性胃炎中医诊疗规范诊疗指南2025版
- SCI审稿人回复课件
- 园林研学课件
评论
0/150
提交评论