程序设计基础与数据结构课程设计(年历系统).doc_第1页
程序设计基础与数据结构课程设计(年历系统).doc_第2页
程序设计基础与数据结构课程设计(年历系统).doc_第3页
程序设计基础与数据结构课程设计(年历系统).doc_第4页
程序设计基础与数据结构课程设计(年历系统).doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

程序设计基础与数据结构课程设计指导书程序设计基础与数据结构课程设计指导书课程代码:5110100英文名称:Programming Foundation And Data Structure适用对象:信息管理与信息系统本科专业学时学分:1周,上机不少于20机时,1学分。一、课程设计目的程序设计基础与数据结构课程设计是信息管理与信息系统专业集中实践性环节之一,是学习完程序设计基础与数据结构课程后进行的一次全面的综合练习。其目的就是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。提高解决实际管理问题、开发信息系统的实践能力二、课程设计内容及要求内容:1、链表操作设计要求: 利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。2、电子小字典设计要求:利用字典的下标运算建立一个微型电子字典,实现字典的加入、查找、删除等操作,并能在屏幕上输出操作前后的结果。3、二叉树的周游设计要求:对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种周游,输出三种周游的结果。 4、图的深度周游设计要求:对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用堆栈的五种基本运算(清空堆栈、压栈、弹出、取栈顶元素、判栈空)实现图的深度优先搜索周游。5、图的广度周游设计要求:对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索周游。 6、排序算法比较设计要求:利用随机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间。要求:课程设计采用分组的方式进行,每组人数不超过5人,设一位组长,同组同学做同一个题目,他们可以互相讨论,但必须独立完成,每位同学的实现方式应有所不同。学生自由分组,每个学生根据分组情况,从教师提供的课程设计题目中选择题目,也可以自己选择题目,需要经老师审核。最后上交一份课程设计报告和原程序文件.三、课程设计时间本设计安排在程序设计基础与数据结构课程结束后进行,时间为一周。具体安排如下:序号内 容时间(天)地 点备 注1进行需求分析0.5机房/教室2列出概要设计1机房/实地3给出详细设计1.5机房/教室4调试分析1机房/教室5编写用户使用说明、测试结果1机房/教室四、课程设计的考查在设计过程中,提倡独立思考、深入钻研的学习精神和严肃认真,一丝不苟、有错必改、精益求精的工作态度。反对不求甚解、照搬照抄容忍错误的作法。设计分阶段进行,每一阶段的设计经认真检查后,方可继续进行。设计成绩按优秀、良好、中等、及格、不及格五等级评定。成绩评定的主要依据:考勤记录、学习态度、工作作风与表现。10%是否完成设计任务;能否运行、可操作性如何等。30%报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。30%自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。30%五、课程设计报告撰写要求课程设计报告撰写的基本要求是报告原则上不少于2000字,需在封面注明设计选题、班级、小组成员姓名、学号及课程设计日期、地点,其正文至少包括如下几个方面的内容:1、进行需求分析2、列出概要设计3、给出详细设计4、调试分析5、编写用户使用说明6、测试结果六、参考范例 1、参考程序设计基础与数据结构P196-205 的程序设计实例。 2、范例:程序设计基础及数据结构课程设计 设计题目: 年历系统 系(院): 管理工程学院 专 业: 信息管理与信息系统 班 级: 信管1141 姓 名: 胡 音 学 号: 1141807129 姓 名: 潘秀秀 学 号: 1141807138 姓 名: 陈 纯 学 号: 1141807134 指导教师: 董绍斌 学年学期: 2015 2016 学年 第 1 学期 2015年 12 月 28 日课程设计任务书课程设计题目年历系统课程设计目的(1)培养学生正确的设计思想,将理论与实际相结合,严肃认真、实事求是的科学态度和勇于探索的创新精神。(2)培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。(3)通过课程设计实践,建立系统设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,培养独立学习、吸取他人经验、探索前言知识的习惯。同时,C+语言程序设计课程设计可以充分弥补课堂教学及普通实验中知识深度与广度有限的缺陷,更好地帮助学生从全局角度把握课程体系。课程设计环境硬件:P4以上计算机软件:Visual C+/Turbo CMicrosoft Windows XP课程设计任务和要求任务:用C语言对学生成绩进行编程;要求: 1、要充分认识C+语言程序设计课程设计的重要性,认真做好各项准备工作;既要虚心接受老师的指导,又要充分发挥主观能动性,要结合课题,独立思考,努力钻研,勤于实践,勇于创新;收集资料,自学相关知识,拓宽知识面,根据课题的基本要求,自行完成设计任务。要按时、独立完成规定的工作任务,不弄虚作假,不抄袭他人;严格遵守学习和劳动纪律,不无故缺席,不迟到早退,不懈怠,不拖拉,要积极主动;严格要求自己,树立严肃、严密、严谨的科学态度,按时、按质、按量完成。工作进度计划序号起止日期工 作 内 容012015.12.282015.12.29查找资料,熟悉操作环境,开始编写程序022015.12.302016.12.31编写程序,调试程序032016.01.012016.01.01写实验报告指导老师签字(盖章): 年 月 日目录1 需求分析2 软件设计2.1 总体方案设计2.2 算法设计 2.3 实现方法:2.4 流程图:3 代码编写4 程序运行及调试 4.1 程序调试 4.2 运行与测试 5 总 结 6 致 谢 7 参考文献8 附 录摘要:本系统使用Visual C+ 语言编写制作一个年历。本系统具有的功能如下:1、要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下: the calendar of the year2012.January Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31=2、判断是不是闰年 (year%4!=0|year%100=0&year%400!=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。3、求出一年中的第一天是周几 (year +(year-1)/4-(year-1)/100+(year-1)/400)%7。4、有指针数组存放十二个月的英文和星期的英文缩写。5、用FOR循环输出各月份的日历关键词: 年历、闰年、查询 1 需求分析使用的万年历,实际上就是记录一定时间范围内的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。当今的世界是一个科技化,智能化的社会。自新中国成立以来,中国早已加入世界的潮流,加快对科学技术尤其是电子技术的学习。随着社会的进步和科技的发展,人们的生活环境中充斥各种各样的电子设备,例电脑,手机,电视等等。为了能使家中所挂的万年历能够让人随身携带而并不造成什么不便,我们小组打算设计一种数码万年历软件。用户范围:不论是老年人还是小孩,不论是白领还是建筑工人,不论是中国人还是美国人都需要这种万年历的存在。对于老年人来说,它的存在记录了五味参杂的人生;对于小孩来说,它的存在提醒着暑假的来临;对于白领来说,它的存在刻画着。美好的未来;对于建筑工人来说,它的存在意味着大楼是否能准时交工。还有很多很多人期待着它的存在,期待着它的诞生。发展趋势: 它的发展前景是十分广阔的。如今的社会到处弥漫着信息化的气息。大多数人。特别是年轻人更加喜欢智能化的事物,因为它有着不可否认的优点。这些优点。解决了原有的实物的不足。使得人们使用的更加方便,开心。数码的万年历便是这个时代所孕育出来的结晶。它的出现将会满足人们对于万年历的期望;它的应用将会为电子类产品注入新鲜的血液;它的应用会是这个时代不可阻挡的潮流。设计功能:我们将设计的软件在不影响原有软件的运行的基础上不但能查询年月日,还能显示是否是润年以及一年中的第一天是周几、各月份的日历、十二个月的英文和星期的英文缩写。2 软件设计2.1 总体方案设计年历主要提供是不是闰年、一年中的第一天是周几、十二个月的英文和星期的英文缩写、各月份的日历等功能。总体设计方案如下:1、设计编写一个程序“年历”2、输入任一年将显示出该年的所有月份日期,对应的星期。3、显示星期,从周日到周六,中英文都可以。4、开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。5、中文英文都可以,计算闰年情况。22 算法设计算法:第一步:对任一输入年份进行判断,判断其是平年还是闰年,即当代码返回2的时候,为平年;否则,为闰年。然后,判断这一年的月份,将其分为4种类型,即:天数为31天的月份、天数为28天的月份、天数为29天的月份,和天数为30天的月份,应的函数返回值,分别为:n=1,n=2,n=3,n=4。第二步:接下来,定义主函数。在这一部分,有一个地方非常关键,那就是对任一年第一天是星期几的判断,计算后a值为0、1、2、3、4、5、6,分别对应周日、周一、周二、周三、周四、周五、周六。第三步:然后就是对任一年,月份、星期,和天数的循环。第四步:最后,输入任一年份,依次执行程序,输出结果。2.3 实现方法:1)整型:int judge(int year,int month)int year,i,j,a,n,m,k; 2)字符型:char * p; 3)字符型数组:week =Sun,Mon,Tue,Wed,Thu,Fri,Sat;month =January,February,March,April,May,June,July,August,September,October,November,December;4)指针数组:char * week =Sun,Mon,Tue,Wed,Thu,Fri,Sat;char*month =January,February,March,April,May,June,July,August,September,October,November,December;2.4 流程图 3 代码编写#includeint judge(int year,int month) if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)return(1); else if(month=2) if(year%4!=0|year%100=0&year%400!=0) return(2);else return(3); else return(4);int main()int year,i,j,a,n,m,k; char * p; char * week=Sun,Mon,Tue,Wed,Thu,Fri,Sat;char*month=January,February,March,April,May,June,July,August,September,October,November,December;printf(please inter the year:); scanf(%d,&year);printf(n);printf(the calendar of the year%d.,year);printf(n);a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7; for(i=0;i12;i+) n=judge(year,i+1); p=month+i; printf(%sn,*p); printf(n);for(j=0;j7;j+) p=week+j; printf(%6s,*p); printf(n);for(k=0;ka;k+) printf( ); for(m=1;m32;m+) printf(%6d,m); if(a+m)%7=0) printf(n); if(n=1&m=31) break; else if(n=2&m=28) break; else if(n=3&m=29) break;else if(n=4&m=30) break;a=(a+m)%7; printf(n);printf(=);printf(n);4 程序运行及调试 4.1 程序调试在输出十二个月的英文以及星期的英文缩写与输出所对应的数字不对齐,造成数据的错误。后来经过多次的调试与检查。终于发现char * week=Sun,Mon,Tue,Wed,Thu,Fri,Sat定义错误,修正过后问题就解决的,数据就能够对齐了。其他的还存在一些中英文切换的输入输出的错误,基本上没什么太大的错误。4.2 运行与测试对记录初始化并输入新记录,以2012年为例,如图4-1所示图4-1 初始化并输入记录5 总 结忙碌了几天,终于将此程序设计出来。虽然有点累但还是很高兴的,因为通过本次课程设计我们第一次通过自己的实践对书本上的知识进行了与生活相关的运用。在这个程序中,主要应用了这学期所学习的循环,条件语句,数组以及调用函数。这些知识的应用使我们对课本内容的认识得到了加深。在编写程序的过程中,也出现了很多错误。比如程序语句错误导致检测时连续报错;函数语句编写错误导致输出结果与实际不符等。出现这些情况后,通过对一些新知识的学习和对网上相关资料的阅览,我们发现了自己的程序的问题所在并进行了改正。最后得到了正确的结果。在程序的编写完成后,我们本想对程序进行拓展,想增加月历、确定日期的输出及增加农历生肖功能,但是由于程序过于复杂,最终没能调试成功。总而言之,这次C语言实验课程设计,使我们大大增加了对程序设计基础与数据结构所学课程的理解与运用。另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。6 致 谢在这次课程设计中,我得到了很多人的帮助。如果没有这些帮助也许我需要花更多的时间与精力在这上面,深深感受到团结的无穷力量。7 参考文献1 刘明,夏清国.C程序设计(三导丛书)M西安:西北工业大学出版社,2003,1-380.2 谭浩强.C程序设计(第四版)M.中国高等院校计算机基础教育课程体系规划教材,2010,066130(1):1-330.8 附 录程序源代:#includeint judge(int year,int month) int main()int year,i,j,a,n,m,k; char * p; char * week=Sun,Mon,Tue,Wed,Thu,Fri,Sat;char*month=January,February,March,Apri

温馨提示

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

评论

0/150

提交评论