数据库大作业2.docx
- 文档编号:678002
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:13
- 大小:133.50KB
数据库大作业2.docx
《数据库大作业2.docx》由会员分享,可在线阅读,更多相关《数据库大作业2.docx(13页珍藏版)》请在冰点文库上搜索。
数据库大作业2
西安建筑科技大学华清学院
数据结构与数据库原理大作业
报告书
姓名:
胡昌柳
班级:
通信1001
学号:
201006020149
摘要
《数据结构》是一门实践性强的课程,其中对算法设计和程序编写的掌握尤其重要。
学生虽然可以通过与课堂教学同步的上机实验完成相关内容的练习,但却往往局限于一些功能简单、彼此之间关系独立的算法和程序。
课程设计是一种综合训练,致力于培养学生全面、灵活的算法设计思想和较高的编程能力,要求学生编写的程序结构清楚和正确易读,符合软件工程的规范,能够为今后从事计算机开发与应用打下基础。
需要学生具有丰富科学知识、独立解决实际问题、有创造能力,这也是该课程设计的最终目的。
通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握C语言独立的编写、调试应用程序和进行其它相关设计的技能。
此项目主要是考察我们对结构体、数组、文件等具体操作,和joseph环的设计,以及对C语言语法的掌握,所以做成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。
这个设计能够练习我们的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,学会调试一个比较长的程序的基本方法,同时掌握书写程序设计开发文档的能力。
关键字:
数据结构C语言joseph环结构化程序设计
目录
摘要……………………………………………………………………………1
、程序概要设计……………………………………………………………3
1.1数据类型及全局变量……………………………………………………3
1.1.1数据类型……………………………………………………………3
1.1.2全局变量………………………………………………………………3
1.2程序流程图………………………………………………………………3
、详细设计及源程序………………………………………………………6
、调试分析…………………………………………………………………9
四、总结………………………………………………………………………11
五、参考文献…………………………………………………………………12
程序概要设计
1.1数据类型及全局变量定义
1.1.1数据类型
数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。
变量是用来存储值的所在处;它们有名字和数据类型。
变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。
在声明变量时也可指定它的数据类型。
所有变量都具有数据类型,以决定能够存储哪种数据。
1.1.2全局变量
全局变量也称为外部变量,它是在函数外部定义的变量。
它不属于哪一个函数,它属于一个源程序文件。
其作用域是整个源程序。
在函数中使用全局变量,一般应作全局变量说明。
只有在函数内经过说明的全局变量才能使用。
全局变量的说明符为extern。
,但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。
1.2程序流程图
详细设计及源程序
1.joseph环
设计思想:
首先,定义两个结构体,将个人的信息写入其中内容包括个人的顺序号(Num),个人的密码m(随机输入的值)及指针.
第二,再将每个人的信息存储于一个单向循环链表内.
第三,根据题目要求编写程序,开始随机把一个数赋给m,开始报数(查找)则将顺序号为m的人的编号提出列,并将其的密码(随机输入的)赋给m.
最后,m有了新值,再从出列的人的下一个位置开始重复上面第三步,直到所有人的顺序号都被调出,结束程序。
源程序:
#include
#include
typedefstructnode
{intnum;
intm;
structnode*next;
}NODE,*LINK;
typedefstructdata
{intnum;
intm;
}DATA;
DATA*InputData(int*n)
{DATA*d,*p,*s;
inti;
printf("Howmanypeoplethereare?
\n");
printf("PleaseInputlength:
");
scanf("%d",n);
d=(DATA*)malloc(*n*sizeof(DATA));
p=d;
for(i=1;i<=*n;i++)
{printf("Number%d----inputm:
(mmeansthesecretofthem!
):
êo",i);
scanf("%d",&p->m);
p->num=i;
p++;
}
return(d);
}
LINKCreateLinklist(DATA*d,intn)
{NODE*l,*p,*s;
inti;
p=l=(NODE*)malloc(sizeof(NODE));
p->num=d->num;
p->m=d->m;
d++;
for(i=1;i {s=(NODE*)malloc(sizeof(NODE)); s->num=d->num; s->m=d->m; p->next=s; p=s; d++; } s->next=l; return(l); } voidJoseph(LINKl,intn,intm) {LINKp,q,s; inti,j; p=l; printf("\n"); for(i=0;i {for(j=1;j {q=p; p=p->next; } printf("%d\t",p->num); m=p->m; q->next=p->next; p=p->next; } } main() {intn,m; DATA*d; LINKl; d=InputData(&n); l=CreateLinklist(d,n); printf("************************************\nPleaseInputtheinitialvalueofm: \n************************************"); scanf("%d",&m); Joseph(l,n,m); 2.以学生成绩为数据元素建立一个一维数组 #include typedefstructstude { intnum; charname[4]; floatscore[3]; }stu[10]; intmain() { inti,j; stustud[10]={ {101,"AAA",71,85,90},{102,"BBB",72,87,61},{103,"CCC",72,82,92},{104,"DDD",73,83,73},{105,"EEE",94,84,94},{106,"FFF",75,45,95},{107,"GGG",75,76,77},{108,"HHH",76,86,96},{109,"JJJ",79,89,99},{110,"KKK",82,80,60} }; floatave[10],ave2[10],s[10],t; for(i=0;i<10;i++) s[i]=0; for(i=0;i<10;i++) { for(j=0;j<3;j++) s[i]+=stud[i]->score[j]; ave[i]=s[i]/3; } printf("everystudents'ave_scoreis: \n"); for(i=0;i<10;i++) { printf("%-5d",stud[i]->num); printf("%f\n",ave[i]); } printf("\nthemostnumberis: \n\n"); for(i=0;i<10;i++) ave2[i]=ave[i]; for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(ave[i]<=ave[j]) { t=ave[j]; ave[j]=ave[i]; ave[i]=t; } for(i=0;i<10;i++) { for(j=0;j<10;j++) if(ave[i]==ave2[j]) printf("%-5d",stud[j]->num); printf("%f\n",ave[i]); } } 调试分析 1.测试数据: n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么? 2.每位同学3门课程的平均成绩;并按平均成绩高低进行冒泡排序并显示结果。 总结 通过这次课程设计,我学到了很多,我能较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧。 同时我也懂得了实践是检验真理的唯一标准。 这次课程设计我学会了设计了Joseph环和建立一维数组,对于数据结构这门学科来说这可能只是一个小的程序,但是对于我还是有些吃力。 开始的时候就遇到了困难,因为需求分析是整个设计的纲领,只有搞好了这个纲领下面才有思路往下继续。 课程设计过程中,刚开始做的时候,不知道该从哪里下手,甚至害怕看见执行后显示的错误的个数,但最后还是通过查找相关书籍、相关资料、和同学研究,一点一点的减少程序的错误,问题被一点点的解决,我学到的知识也在一点点的增加。 通过这次的设计我学到了很多原来并不了解的专业知识,也让我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,因为实践是检验真理的唯一标准,只有把所学的理论知识与实践相结合起来,才能够算是真正的了解。 而且通过实际的操作,也提高了自己的实际动手能力和独立思考的能力。 课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。 从这次课设我充分认识到自己相关知识的缺乏,对我来说,此次的课程设计就像一次自我学习和反省的过程。 我很庆幸能有这样一次机会。 参考文献 [1]、王昆仑《数据结构与算法》。 北京: 中国铁道出版社。 2007 [2]、谭浩强《C程序设计》(第三版)。 北京: 清华大学出版社。 2005 [3]、谭浩强《C程序设计指导》。 北京: 清华大学出版社2005 [4]严蔚敏等.数据结构[M],北京: 清华大学出版社 [5]李春褒.数据结构教程[M],第二版.北京: 清华大学出版社,2009.3: 22-46 [6]赵国玲.C语言与数据结构[M],北京: 电子工业出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 作业