数据结构课程设计(软件工程)
数据结构课程设计

福建工程学院课程设计课程:数据结构课程设计题目: 1.综合应用2.折半查找3.快速排序专业:软件工程班级:1101座号:3110305129姓名:潘聪2012 年 6 月26 日设计题目1:综合应用一、问题描述有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。
然后实现以下功能:(1)将这些数据存放至文件stuf.dat中;(2)将文件中的数据读出至结构数组中,并显示之;(3)输出总分最高分和最低分的名字;(4)输出总分在340分,单科成绩不低于80分的名单;(5)求出各科平均分数;(6)按总分排名;(7)输出补考名单。
二、解决问题的算法思想描述(1)子函数:首先确定需要的子函数,总共7个,对应的功能分别是题目要求的七项(2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到switch 。
(3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose等。
(4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。
(5)各科成绩排名用冒泡排序即可。
(6)输出总分,补考名单,各科的平均分都比较简单。
三、设计1. 数据结构的设计和说明//定义结构体typedef struct{int num; //学号char name[10]; //姓名int score1; //语文int score2; //数学int score3; //物理int score4; //化学}student;student stu[MAX]; //结构数组2.模块结构图及各模块的功能:3. 关键算法的设计(必须画出流程图)打印最高成绩和最低成绩的名单算法流程图:四、测试数据及测试结果:五、课程设计总结注意细节方面,任何一个小问题都不能忽视,才能最终解决问题。
六、关键源程序的清单关键算法一:按照总成绩排名:void paiming(){read();student x;int sum[MAX],t=0,i,m,n,j;for(i=0;i<MAX; i++){sum[i]=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;}for(m=0;m<MAX-1;m++)for(n=m+1;n<MAX;n++)if(sum[n]>sum[m]){t=sum[n];sum[n]=sum[m]; //总成绩交换sum[m]=t;x=stu[n];stu[n]=stu[m]; //总成绩对应的学生也要同时交换stu[m]=x;}printf("学号\t姓名\t语文\t数学\t英语\t物理\t总分\t名次\n");for(j=0;j<MAX;j++){printf("%-8d%-8s%-8d%-8d%-8d%-8d%-8d%-8d\n",stu[j].num,stu[j].name,stu[j].score1,stu[j].sc ore2,stu[j].score3,stu[j].score4,sum[j],j+1);}}关键算法二:打印出最高成绩和最低成绩的姓名:void maxmin(){int sum[MAX],i,j,m=0,n=0,max,min;read();for(i=0;i<MAX; i++){sum[i]=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;} //求书每个人的总分max=min=sum[0]; //用一维数组保存成绩,并且先令第一位学生的成绩作为最高分和最低分for(j=0;j<MAX;j++){if(sum[j]>max){m=j;max=sum[j]; //定义变量m,n分别保存最高分和最低分的下标}else if(sum[j]<min){n=j;min=sum[j];}}printf("\n最高分:%s 总分%d\n",stu[m].name,sum[m]);printf("\n最低分:%s 总分%d\n\n",stu[n].name,sum[n]);}设计题目2:折半查找一、问题描述用折半查找法,实现对任意一组数据的查找。
数据结构课程设计模板(DOC)

数据结构与算法课程设计报告题目:学院:专业班级:学生姓名:指导教师:2016 年06 月2 9日目录一、课程设计目的 (3)二、课程设计步骤 (3)三、课程设计内容 (5)四、课程设计报告...................................................................... 错误!未定义书签。
五、提交材料 (6)六、考核方式与评分标准 (7)七、参考文献 (9)附录1 齐齐哈尔大学软件工程系课程设计说明书(报告)撰写规范 (10)一、课程设计目的及要求《数据结构与算法分析》课程设计培养计算机专业的学生的算法程序设计能力。
通过上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对数据结构课程和算法的理解。
使学生更好地掌握数据结构的基本概念、基本原理、及基本算法,具有分析算法、设计算法、构造和开发较复杂算法的基本能力。
要求学生能综合运用《数据结构与算法分析》的相关知识,培养学生上机解决一些与实际应用结合紧密的、规模较大的问题的能力,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析实际问题的能力并提高C语言编程技巧,培养良好的编程风格。
课程设计要求独立完成,题目自选(参考题目见三,也可自拟),但需要老师确认(6月16日前定题),一人一题,要求程序有能采用交互式工作方式的界面进行功能的选择,只能用文件存储数据和处理数据不能使用数据库。
要求在教学周的第18周前完成。
二、课程设计步骤随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。
然而,编制一个10000行的程序的难度绝不仅仅是一个5000行的程序的两倍,因此软件开发需要系统的方法。
一种常用的软件开发方法,是将软件开发过程分为分析、设计、实现和维护四个阶段。
虽然数据结构课程中的课程设计的复杂度远不如(从实际问题中提出来的)一个“真正的”软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,完成课程设计的应有如下的5个步骤:1.问题分析和任务定义通常,课程设计题目的陈述比较简洁,或者说是有模棱两可的含义。
《数据结构》课程标准

《数据结构》课程标准学时:72学时(其中:讲课学时:36 上机学时:36 )先修课程:高等数学、C语言程序设计后续课程:软件开发相关的应用性课程(Android应用开发、软件工程等)适用专业:软件技术、移动应用开发、软件与信息服务等开课部门:信息工程与大数据学院一、课程的性质《数据结构》是面向软件技术相关专业的一门专业基础课,课程要求:熟练掌握线性表、栈和队的存储结构及基本操作,并能在相应的应用中正确地选用,培养学生用链式结构编写程序的能力;了解串和广义表的定义和存储结构;掌握数组的存储结构,熟悉稀疏矩阵的两种压缩存储方法的特点及适用范围;了解树的存储结构及特点,掌握二叉树和图的存储结构及其相应算法,培养学生用非线性结构解决实际问题的能力;掌握各种查找、排序方法,培养学生灵活应用已有排序方法的能力,开拓思路编写新的排序算法。
二、课程设计理念数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
精心选择的数据结构可以带来更高的运行或存储效率,数据结构往往同高兴的检索算法和索引技术有关。
1、课程地位理念在许多类型的程序设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法随之确定,是数据而不是算法是系统构造的关键因素。
2、课程学情理念本课程开设在嵌入式系统工程专科第一学期,学生在学习本课程前已具备计算机基础、C语言基础等知识,本课程力图让学生学会在C语言环境下,运用面向对象的思想编写规范的代码,实现经典的数据结构和算法。
熟悉常用的数据结构和算法,使学生初步具备一个优秀的软件开发人员所应有的基本能力。
数据结构课程设计计划

信息工程学院14级计科、软件工程专业数据结构课程设计计划设计名称《数据结构》课程设计专业、班级计科1401-1403,软件1401-1402 课程性质必修设计周数1周课程学期学时数64学时学期学分4分指导教师签字系主任审核签字一.课程设计的目的通过课程设计的综合训练,旨在帮助学生进一步系统的掌握数据结构这门课的主要内容,并进一步培养学生分析问题和解决问题的能力,主要体现在能够让学生针对实际问题有效地组织数据,选择合适的数据结构,并进行正确和高效的算法设计,并用程序实现算法。
该课的课程设计是一个良好的程序设计技能训练的过程使学生能够:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工程专业学生所应具备的科学的工作方法和作风。
二.课程设计安排三.课程设计内容1.设计题目题目1:运动会分数统计【问题描述】参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)。
【基本要求】(1) 可以输入各个项目的前三名或前五名的成绩;(2) 能统计各学校总分;(3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;(4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;(5) 学生自己根据系统功能要求自己设计存储结构,但是要求运动会的相关数据要存储在数据文件中并能随时查询;(6) 输入数据形式和范围:可以输入学校的名称,运动项目的名称;(7) 使用汉字显示。
数据结构课程设计说明书

车厢调度问题摘要:实现栈的基本操作,即实现类型。
程序对栈的任何存取,即更改,读取和状态判别等操作,必须借助于基本操作。
在操作过程中的任何状态下都有两种可能的操作:“入”“出”。
每个状态下处理问题的方法都是相同的,具有递归特性。
关键字:栈递归打印0.引言《数据结构》是计算机科学与技术、软件工程及相关学科的专业基础课,也是软件设计的技术基础。
《数据结构》课程的教学要求之一是训练学生进行复杂的程序设计的技能和培养良好程序设计的风格,其重要程度决不亚于理论知识的传授,因此课程设计环节是一个至关重要的环节,是训练学生从事工程科技的基本能力,是培养创新意识和创新能力的极为重要的环节。
基本要求如下:(1) 熟练掌握基本的数据结构;(2) 熟练掌握各种算法;(3) 运用高级语言编写质量高、风格好的应用程序。
1.需求分析(1)这个实验要求我用栈实现车厢调度.(2)车厢的个数是由用户输入的.(3)程序会自动给车厢进行从1到 n的编号.(4)用户输入车厢个数后,程序打印出所有可能的车厢出站顺序.2.数据结构设计在这个程序中存储结构是栈,对于栈的声明和定义如下:typedef struct SqStack{int *top; /*栈顶指针*/int *base;/*在栈构造之前和销毁之后.base的值为NULL*/int stacksize; /*当前分配的存储空间*/}SqStack; /*顺序栈的结构体声明和定义*/3.算法设计3.1 对算法的简单描述这个实验中, 要求用到栈. 实现栈的基本操作,即实现类型。
程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作。
在操作过程中的任何状态下都有两种可能的操作:“入”“出”。
每个状态下处理问题的方法都是相同的,具有递归特性。
栈实现是方便的无论如何调度,我们的操作都是入栈和出栈,设定入栈为1,出栈为-1,对n列车厢有2n次这样的操作,例如n=4,则有操作1111-1-1-1-1、1-11-11-11-1等.所以还要构造一个操作命令队列trainlist[]。
[数据结构课程设计通讯录查询系统实验报告范文及源代码]数据结构通讯录
![[数据结构课程设计通讯录查询系统实验报告范文及源代码]数据结构通讯录](https://img.taocdn.com/s3/m/e16be22d657d27284b73f242336c1eb91a3733b4.png)
[数据结构课程设计通讯录查询系统实验报告范文及源代码]数据结构通讯录工程名称:停车管理系统姓名:学号:专业:软件工程1.需求分析为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的与地址。
设计散列表存储,设计并实现通讯录查找系统。
1.根本要求〔1〕每个记录有以下数据项:号码、用户名、地址;〔2〕从键盘输入各记录,分别以号码为关键字建立散列表;〔3〕采用二次探测再散列法解决冲突;〔4〕查找并显示给定号码的记录;〔5〕通讯录信息文件保存。
2.重点、难点重点:〔1〕通过实验深入理解哈希表既是一种存储形式,又是一种查找方法;〔2〕哈希表的构造;〔3〕哈希冲突方案的设计。
难点:哈希表的构造与哈希冲突方案的设计输入的形式和输入值的范围;输入三个字符串:分别是号码,姓名,地址,每行一个数据字符串长度适当如:号码〔纯数字〕姓名地址输出的形式;如:姓名号码地址程序所能到达的功能。
1:并且通过号码为关键字,用二次再散列法寻找地址储存在哈希表中。
2:3:4:5:显示通讯录6:把通讯录写入文件储存。
2.概要设计(1)数据结构tructlit{chara[12];charname[15];charadd[15];intf=0;};用连续的内存空间构建哈希表tructqtack{tructlit某bae;inti;};(2)程序模块1:构建二次再散列:inti;for(i=1;i<25;i++)d[2某i]=-1某i某i;for(i=1;i<25;i++)/某构造二次再散列某/d[i+i-1]=i某i;2:主菜单:voidinterface(){inti;printf("某某某某某某某某某某某某某某某某某某某某\n");printf("某某某某某某某某某某某某某某某某某某某某\n");canf("%d",&i);witch(i){cae0:return;break;cae1:huru();break;cae2:print();break;cae3:each();break;cae4:del();break;cae5:change();break;cae6:write();break;};}3:输入voidhuru()4:存入哈希表,采用二次探测再散列法解决冲突;voidtore(char某a,char某name,char某add)voideach();voidchange()Voiddel〔〕;voidwrite()(3)各模块之间的调用关系以及算法设计3.详细设计4.测试与分析主界面:构建哈希表,允许号码重复可以支持姓名,,地址三个关键字的查找可以按照姓名地址删除写文件:创立文件通讯录.t某t 如图:5.附录3.cpp#include<tdio.h>#include<tdlib.h>#include<tring.h>#include<iotream>#include<tring.h>uingnamepacetd;intd[50];/某再散列某/tructlit{chara[12];charname[15];charadd[15];intf=0;};tructqtack{tructlit某bae;inti;};tructqtackS;voidtore(char某a,char某name,char某add){intkey;key=int(a[0])+int(a[3])+int(a[7]);/某以号码的第1,4,8位作为关键字构造哈希函数某/S.i=key%20;intj=1;while(true){if((S.bae+S.i)->f==0){trcpy((S.bae+S.i)->a,a);trcpy((S.bae+S.i)->name,name);trcpy((S.bae+S.i)->add,add);(S.bae+S.i)->f=1;break;}S.i=(key%20+d[j])%20;j++;}}voidhuru(){voidinterface();cout<<"请输入:\n例如:\n小王\n安徽省合肥市\n输入0结束\n"; chara[12];charname[15];charadd[15];while(true){canf("%",a);if(a[0]=='0')break;canf("%",name);canf("%",add);printf("%已保存\n",name);tore(a,name,add);/某将输入保存到哈希表某/}interface();}voidprint(){voidinterface();inti;printf("姓名号码地址\n");for(i=0;i<20;i++){if((S.bae+i)->f==1){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);}}interface();}voideach(){voidinterface();inti;intff=0;intb;chara[15];printf("输入1按号码查找,输入2按姓名查找,输入3按地址查找\n");canf("%d",&b);witch(b){cae1:printf("请输入号码\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->a)==0){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add); ff=1;}if(ff==0)printf("找不到该用户\n");break;cae2:printf("请输入姓名\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->name)==0){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add); ff=1;}if(ff==0)printf("找不到该用户\n");break;cae3:printf("请输入地址\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->add)==0){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add); ff=1;}if(ff==0)printf("找不到该用户\n");break;}interface();}voiddel(){voidinterface();inti;intff=0;chara[15];printf("输入1按号码删除,输入2按姓名删除,输入3按地址删除\n");canf("%d",&b);witch(b){cae1:printf("请输入号码\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->a)==0){(S.bae+i)->f=0;Print(“已删除:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");cae2:printf("请输入姓名\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->name)==0){(S.bae+i)->f=0;printf("已删除:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");break;cae3:printf("请输入地址\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->add)==0){(S.bae+i)->f=0;printf("已删除:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");break;}interface();}voidchange(){voidinterface();inti;intff=0;intb;chara[15];printf("请输入姓名\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->name)==0){printf("您要修改的是:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);printf("请输入新信息\n");canf("%",(S.bae+i)->a);canf("%",(S.bae+i)->name);canf("%",(S.bae+i)->add);printf("已修改成:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");interface();}voidwrite()voidinterface();inti=0;FILE某fp;if((fp=fopen("通讯录.t某t","wb"))==NULL){printf("openfileerror\n");e某it(1);}for(i=0;i<=20;i++){intch=32;if((S.bae+i)->f==1){fprintf(fp,"%",(S.bae+i)->name);fputc(ch,fp); fprintf(fp,"%",(S.bae+i)->a);fputc(ch,fp);ch=10;fprintf(fp,"%",(S.bae+i)->add);fputc(ch,fp); }fcloe(fp);interface();}voidinterface(){inti;printf("某某某某某某某某某某某某某某某某某某某某\n"); printf("某某某某某某某某某某某某某某某某某某某某\n"); canf("%d",&i);witch(i){cae0:return;break;cae1:huru();break;cae2:print();break;cae3:each();break;cae4:del();break;cae5:change();break;cae6:write();break;}intmain(){ytem("color70");//可以写成red调出颜色组S.bae=(tructlit某)malloc(20某izeof(tructlit)); ytem("date/T");ytem("TIME/T");inti;for(i=1;i<25;i++)d[2某i]=-1某i某i;for(i=1;i<25;i++)/某构造二次再散列某/d[i+i-1]=i某i;interface();}6.用户使用手册根据主菜单提示选择所想要的操作0:结束程序小华安徽合肥可以根据姓名,,地址分别作为关键字进行查询谢谢使用!。
数据结构与算法课程设计计划书-2011-2012-2(10级).

计算机科学与工程学院集中性实践教学计划书( 2011-2012 学年第二学期课程名称:数据结构与算法课程设计专业:计算机科学与技术软件工程、网络工程班级:计算机科学与技术101-6软件工程101-4网络工程101-4课程负责人:李锡祚、王玲芬、李威指导教师分配情况:专业指导教师计算机科学与技术李威、李笑牛、张恒博、云健、刘爽、包书哲软件工程王玲芬、王鹏杰、王存睿、孙世昶、网络工程李锡祚、姜楠、王晓强、王波教学起止周:第1 至3 教学周一、教学目的与要求:数据结构与算法课程设计的目的是使同学们能够根据数据对象的特性,合理的组织数据并能综合运用数据结构与算法基本知识和程序设计基本知识解决实际问题,培养基本的、良好的程序设计技能。
二、主要阶段、内容、时间及地点安排(以天为单位计:阶段与内容第1阶段:指导教师布置设计任务并解析有关题目的设计指标和任务的具体内容,学生选择题目,明确问题描述和要求,查阅资料。
(1天;各班长或学习委员将本班的选题表交给辅导教师,一人一题,每道题的选择人数原则上不能超过3人,第一天课程设计结束后,每名学生都要确定题目。
第2阶段:明确题目要求、确定数据结构、设计算法,编写程序、调试程序、测试程序(11天;第一周,学生应明确题目要求、确定数据的逻辑结构和存储结构、实现基本操作的编码与调试、实现主菜单。
第二周,完成核心算法的设计、编码与调试。
第三周,完成剩余任务的编码与调试,准备足够的测试数据,对软件进行测试与调试。
第3阶段:完成设计任务,准备验收、答辩(1天;第4阶段:答辩(上机演示,回答教师提问(1天;第5阶段:撰写课程设计报告(2天。
地点与时间地点:金石滩校区图书馆时间:计算机科学与技术:课程设计上机时间表周一周二周三周四周五第一周上午、下午上午第2大节、下午第二周上午、下午上午第2大节、下午第三周上午、下午上午第2大节、下午(验收软件工程:课程设计上机时间表周一周二周三周四周五第一周上午、下午上午、下午下午第二周上午、下午上午、下午下午第三周上午、下午上午、下午下午(验收网络工程:课程设计上机时间表周一周二周三周四周五第一周上午、下午上午下午上午第二周上午、下午上午下午上午第三周上午、下午上午下午上午(验收注:上午8:30~11:10下午1:40~4:20三、课程设计题目及具体要求:1.成绩管理问题描述:给出n个学生的考试成绩表,成绩表包括学生的学号、姓名、考试成绩(高等数学、英语、物理,设计一个简单的成绩管理程序。
软件工程(应用专业)课程设计-...

《软件工程》课程设计任务书一.目的软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和稳固电脑软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。
通过这次课程设计,要掌握UML〔统一建模语言〕,并能运用UML在Rational Rose中建模。
二.要求:1.一人一组。
2.熟悉Rose开发环境。
3.掌握UML的基本模型元素(如角色、用例、类等)。
4.熟悉UML,主要了解UML中的9大图:Use case diagram(用例图)、Class diagram(类图)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)、datamodel diagram〔数据模型图〕。
5.进行系统需求分析与系统功能模块设计,绘出系统详细的业务流程图和数据流程图,建立完整的系统数据库的逻辑模型。
6.完成对系统的建模实现。
7.期末进行检查,并提交设计报告。
三.题目及时间、地点安排2010-2011第一学期第18周星期五进行课程设计成果的演示与检查〔具体地点另行通知〕,同时提交源程序和课程设计报告。
四.报告要求:1.实验题目2.实验目的3.实验要求4.实验内容5.系统设计的源程序和文档〔包括说明〕6.心得体会五.参考资料:1.Wendy Boggs & Michael Boggs 著邱仲潘译《UML与Rational Rose2002从入门到精通》电子工业出版社2.Martin Fowler & Kendall Scott:UML Distilled Second Edition A Brief Guide to the StandardObject Modeling Language3.UML参考手册4.Jason T. Roff 著张瑜杨继萍等译《UML基础教程》清华大学出版社5.参见本中心服务器ftp:\\s@172.16.38.223软件开发基础或《软件工程课程设计》目录下的相关文档。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构课程设计》指导书软件学院软件工程(娱乐软件)2015年06月《数据结构课程设计》指导书一、课程设计题目与要求根据课程设计题目规模,要求每个题目可分组完成(不超过3个人)。
一经确定不得随意调换,题目由各组选派代表抽签确定,设计题目不得更换。
1. 运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5) 数据存入文件并能随时查询6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
请在最后的上交资料中指明用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;2. 飞机订票系统任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;3.宿舍管理查询系统1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选两种方法实现)2) 查询菜单: (用二分查找实现以下操作)A. 按姓名查询B. 按学号查询C. 按房号查询3) 打印任一查询结果(可以连续操作)4.简易银行卡管理系统主要功能与要求:(1)开户:创建一个新的账户,接受用户输入的身份证号,以及账户密码,判断用户输入的身份证号是否唯一且账户密码是否符合要求,如验证成功则为该用户生成一个唯一的帐号。
(2)存款:在用户输入正确的帐号和密码的情况下,接受用户输入的存款金额,并对该帐号的存款信息进行更新。
(3)取款:在用户输入正确的帐号和密码的情况下,接受用户输入的取款金额。
取款金额不应该大于当前帐号存款金额,当取款金额不大于当前帐号存款金额时,执行取款操作,并对该帐户的存款信息进行更新。
(4)挂失:在用户输入正确的帐号和密码的情况下,接受用户挂失操作。
当帐号挂失后,与该帐号相关的操作都将被禁止。
(5)销户:在用户输入正确的帐号和密码的情况下,接受用户销户。
当用户销户后,该帐号将被永久删除。
(6)转帐:在用户输入正确的帐号和密码的情况下,接受用户转账操作,转帐金额不应该大于当前帐号存款金额,当转帐金额不大于当前帐号存款金额时,执行转帐操作,并对该帐户的存款信息及转帐的接受账户的存款信息进行更新。
(7)修改账户密码:在用户输入正确的帐号和密码的情况下,接受用户修改密码操作,用户输入的原密码,若用户输入的密码与原密码匹配,则接受用户输入的新密码,若用户两个输入的密码相同,则修改账户密码,并对数据文件进行更新操作。
(8)查看余额:在用户输入正确的帐号和密码的情况下,接受用户查看余额操作,该模块只涉及数据查询,并不涉及数据文件更新操作。
(9)查看用户交易历史:在用户输入正确的帐号和密码的情况下,接受用户查看用户交易历史操作,系统将显示当前账户的最近的存、取款操作记录,该模块只涉及数据查询,并不涉及数据文件更新操作。
5.校园导航设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
基本要求:1)设计校园平面图,在校园景点选10个左右景点。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。
实现提示:一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。
顶点和边均含有相关信息。
6.通讯录管理系统模块要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:显示英文提示选单。
第三个模块——Quit()的功能是:退出选单。
第四个模块——Create()的功能是:创建新的通讯录。
第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第九个模块——List()的功能是:显示通讯录中的所有记录。
;设计要求:1)每条信息至包含:姓名(NAME )、性别(GENDER)、电话(TEL)、城市(CITY)邮编(EIP)几项。
2)通讯录采用文件保存。
3) 作为一个完整的系统,应具有友好的界面和较强的容错能力。
7.职工管理系统问题描述:对单位的职工进行管理,包括插入、删除、查找、排序等功能。
要求:职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1)新增一名职工:将新增职工对象存入职工数据文件中。
(2)删除一名职工:从职工数据文件中删除一名职工对象。
(3)查询:从职工数据文件中查询符合某些条件的职工。
(4)修改:检索某个职工对象,对其某些属性进行修改。
(5)排序:按某种需要对职工对象文件进行排序(冒泡、选择、插入排序等任选两种方法实现)。
实现提示:职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)由键盘输入职工对象,以文件方式保存。
程序执行时先将文件读入内存。
(2)对职工对象中的"姓名"按字典顺序进行排序。
(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
选做内容:将职工对象按散列法存储,并设计解决冲突的方法。
在此基础上实现增、删、查询、修改、排序等操作。
8.全国交通资讯系统问题描述:设计、实现一个全国大城市间的交通咨询程序,为旅客提供三种最优决策方案:(1)时间最短(2)费用最小(3)中转次数最少。
需求分析:该程序所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。
(1)在程序中输入城市名称时,需输入10个字母以内的字母串;输入列车或飞机编号时需输入一个整型数据;输入列车或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据(以hh:mm的形式);在选择功能时,应输入与所选功能对应的一个整型数据。
(2)程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
(3)程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。
附录:测试数据航班时刻表9.停车场管理有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算。
假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 。
即先将这四辆车的信息存入文件”car.dat”中( 数组的对应元素也要进行赋值 ) 。
停车操作:当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为 5 , 最后将新停入的汽车的信息添加文件”car.dat”中, 并将在此之前的所有车的停车时间加5。
收费管理(取车):当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元. (停车费用可设置一个变量进行保存), 同时从文件”car.dat”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零). 按用户的选择来判断是否要输出停车收费的总计。
输出停车场中全部车辆的信息。
10.商品销售统计系统设计商品销售统计系统, 实现定期对销售各商品的记录进行统计,可按商品的编号、单价、销售量或销售额做出排名并显示。
选择合适的存储结构,建立商品信息表并存放在数据文件中。
各商品的信息包括:商品编号、名称、单价、销出数量、销售额。
对各商品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、折半插入排序、冒泡排序,快速排序、选择排序等方法。
功能设计:(1)实现建立商品信息表功能(2)实现分别使用不同的排序方法按商品单价、销售量、销售额进行排序功能(3)实现显示排序结果功能11.图书管理系统设计一个计算机管理系统完成图书管理基本业务。
基本要求:(1) 每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2) 对书号建立索引表(线性表)以提高查找效率;(3) 系统主要功能如下:①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;③归还:注销对借阅者的登记,改变该书的现存量。