




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告课程名称 数据结构课程设计 课题名称 教学计划编制问题 专 业 应用物理 班 级 1201 学 号 201210040128 姓 名 张大帅 指导教师 刘长松黄哲 2014年 12月13日湖南工程学院课 程 设 计 任 务 书课程名称 数据结构课程设计 课 题 教学计划编制问题 专业班级 应用物理1201 学生姓名 张大帅 学 号 201210040128 指导老师 刘长松 黄哲 审 批 任务书下达日期: 2014 年 12 月 13 日任务完成日期: 2014 年 12 月 20 日一、设计内容与设计要求1设计内容:1)问题描述大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。2)基本要求a.输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。b.允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。c.若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。计划的表格格式自行设计。3)测试数据学期总数:6;学分上限:10;该专业共开设课数:12课程号:从C01到C12;学分顺序:2,3,4,3,2,3,4,4,7,5,2,3。先修关系如下图:1942121011365784)实现提示可设学期总数不超过12,课程总数不超过100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程号与课程号之间的对应关系。2设计要求:l 课程设计报告规范1)需求分析a.程序的功能。b.输入输出的要求。2)概要设计a. 程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。b. 课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3)详细设计a.采用C语言定义相关的数据类型。b.写出各模块的类C码算法。c.画出各函数的调用关系图、主要函数的流程图。4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。b.程序调试中遇到的问题以及解决问题的方法。c.课程设计过程经验教训、心得体会。5)使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。6)书写格式见附带说明。7)附录a.参考书目b.源程序清单(带注释)l 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: 平时出勤 (占10%) 系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%) 程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) 设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。 独立完成情况(占10%)。l 课程验收要求 运行所设计的系统。 回答有关问题。 提交课程设计报告。 提交电子文档(源程序、设计报告文档)。 依内容的创新程度,完善程序情况及对程序讲解情况打分。二、进度安排16周:星期一下午14:00-18:0016周:星期二下午14:00-18:0016周:星期三下午14:00-18:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。目 录1、需求分析11.1程序的功能:11.2输入输出的要求:12、概要设计12.1程序模块功能图12.2数据结构23、详细设计33.1采用C语言定义相关的数据类型33.2各模块的类C码算法33.3各函数的调用关系图、主要函数的流程图94、调试分析以及设计体会114.1测试数据:114.2程序调试中遇到的问题以及解决问题的方法:124.3课程设计过程经验教训、心得体会:125、使用说明136.参考书目197、附录207.1.源程序清单(带注释)19 1、需求分析1.1程序的功能:编制教学计划。大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。1.2输入输出的要求:a.输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。b.允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。c.若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。计划的表格格式自行设计。2、概要设计2.1程序模块功能图main()主函数initialNode()初始化课程节点createNode()建立课程顺序sortNode()课程inputBasicInformation()输入基本信息cls()清空信息menu()主菜单图2.1-1 功能模块图2.2数据结构int termtime=0;/学期总数int limitgrade=0;/学分上线char str1004;/课程号int score100=0;/课程学分int totalcourse=0;/课程总数struct node/课程节点 int variable;/标志属不属于同一个学期所修 int previous;/前修课程 int next;/后学课程 struct node * courselink100;/后修课程的指针* coursenode100=NULL;/课程数目节点3、详细设计3.1采用C语言定义相关的数据类型FILE *fp /保存到文件int termtime=0;/学期总数int limitgrade=0;/学分上线char str1004;/课程号int score100=0;/课程学分int totalcourse=0;/课程总数struct node/课程节点int variable;/标志属不属于同一个学期所修int previous;/前修课程int next;/后学课程struct node * courselink100;/后修课程的指针* coursenode100=NULL;/课程数目节点3.2各模块的类C码算法 A. 初始化课程节点void initialNode()/初始化课程节点int i;int j;printf(n正在初始化。n);for(i=0;i100;i+)后修课程的指针置零;同学期学习的课程置零;前修课程置零;后修课程置零;for(j=0;jcourselinkj=NULL;printf(n初始化完毕。n);B. 建立课程顺序void createNode()/建立课程顺序int i;int temp;int flag;for(i=0;inext);printf(n请输入%d的深入课程课程代号分别是什么(用空格分开):,i+1);for(temp=0;tempnext;temp+)scanf(%d,&flag);coursenodei-courselinktemp=coursenodeflag-1;coursenodeflag-1-previous+;printf(n课程代号t前修课程数t深入课程数n);for(temp=0;tempprevious,coursenodetemp-next); C排课程void sortNode()/排课程int i,j,flag=0,session=1;FILE *fp;if(fp=fopen(d:course.txt,a)=NULL) /如果文件已经存在,可以追加学生信息 if(fp=fopen(d:course.txt,w)=NULL) / 文件不存在时,创建新文件,输入学生信息 printf(文件打开失败!n); return;printf(n-n);printf(课程代号t课程号t课程学分n);fprintf(fp,课程代号t课程号t课程学分n);while(1)flag=1;for(i=0;itotalcourse;i+)if(课程数目节点为空)if(同学期学习课程为空)if(前修课程为0)printf(%dtt%st%dn,i+1,stri,scorei);fprintf(fp,%dt%st%dn,i+1,stri,scorei);for(j=0;jnext;j+)前修课程数目节点减一;coursenodei-courselinkj-variable=1;coursenodei-courselinkj=NULL;coursenodei-next=0;释放数目结点;flag=0;if(flag!=0)break;else if(session=termtime) printf(第%d学期课程结束n-n,session);fprintf(fp,第%d学期课程结束n-n,session) ;session+;else printf(学习时间不够!n);exit(0);if(session=termtime);for(i=0;ivariable=0;fclose(fp);/关闭文件指针 D,输入基本信息void inputBasicInformation()/输入基本信息int i;printf(请输入学期总数:);scanf(%d,&termtime);if(termtime=12)printf(n对不起,学期总数不能超过12n);exit(0);printf(n请输入学分上限:);scanf(%d,&limitgrade);printf(n请输入课程总数:);scanf(%d,&totalcourse);for(i=0;itotalcourse;i+)printf(请输入第%d门课程号(三个字符,回车结束):,i+1);scanf(%s,&stri);stri3=0;printf(请输入第%d门课程学分(回车结束):,i+1);scanf(%d,&scorei);if(学分高于上限)printf(n对不起,课程学分不能超过学分上限n);exit(0);printf(n您所输入的数据如下,请核实:n);printf(课程代号t课程号t课程学分n);for(i=0;itotalcourse;i+)printf(%dtt%st%dn,i+1,stri,scorei);E清空信息void cls()int i=0; 学期数置零; 学分上限置零; for(i=0;icount栈不空删除栈顶元素,赋给icount+将与第i个顶点链接的各顶点入度减1输出第i个顶点值顶点入度为0顶点序号入栈countG.vexnum输出“拓扑排序成功”输出“拓扑排序不成功”结束图2.3-1 流程图4、调试分析以及设计体会4.1测试数据:学期总数:6;学分上限:10;该专业共开设课数:12课程号:从C01到C12;学分顺序:2,3,4,3,2,3,4,4,7,5,2,3。先修关系如下图:194212101136578图4.1-1 测试数据先修关系图正确输入测试数据后,如果系统符合要求,正确排序,则如图4.1-2所示。图4.1-2 正确的测试结果4.2程序调试中遇到的问题以及解决问题的方法: 程序十分的复杂,遇到了很多常见的语法错误,及逻辑错误。这需要我们不断的调试分析。符号的格式之类,指针的用法,判断输入输出的条件都是十分容易出错的地方。在逐条排除,向同学老师请教后,程序终于得以完成。4.3课程设计过程经验教训、心得体会:经过此次课程设计,我们认识到了理论与实践结合的重要性,仅仅只是从课本上学到算法原理是远远不够的。在实践中,我们总会出现许多错误。这就要求我们以一个脚踏实地的态度来处理问题。我们深刻地认识到自己写程序的不足,使我们学到了好多有用的知识,让我们明白了C语言的语句用法。上机实践是学生对本门课程所学知识的一种全面、综合的能力训练,是与课堂听讲、自学和练习相辅相成必不可少的一个教学环节,也是对课堂教学效果的一种检验。通常,实习题中的问题比平时的习题复杂得多,也更接近实际。实习题注重原理与应用的结合,目的让学生学会如何把书上学到的知识运用于解决实际问题的过程中去,培养从事软件开发设计工作所必需的基本技能。同时,通过实践能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的作用。平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,可以多人合作,有利于一整套软件工程规范的训练和科学作风的培养。此外,实践环节中有很重要的一点,就是机器是比任何教师都严格的主考官。经过此次课程设计,我认识到了理论与实践结合的重要性,仅仅只是从课本上学到算法原理是远远不够的。在实践中,我们总会出现许多错误。这就要求我们以一个脚踏实地的态度来处理问题。我深刻地认识到自己写程序的不足,使我们学到了好多有用的知识,让我们明白了C语言的语句用法。5、使用说明使用VC+,打开schedule.c文件,接着编译,无错误,然后重建也没有错误,最后执行该文件。显示如图5-1:图5-1 程序编译正确要求输入学期总数、一个学期的学分上限、需要编排课程总数、课程名、课程号、该课程的学分,按照出现的每一步来输入该课程设计所提供的相关数据。如图5-2所示。图5-2 输入课程安排基本信息要求依次输入各课程的深入(后续)课程代号,按照出现的每一步来输入该课程设计所提供的相关数据。如图5-3所示。图5-3 建立课程顺序各项信息输入完毕后,在主选菜单中选择3,系统将自动排出课程。如图5-4所示。图5-4 排列课程数据 同时,系统会将教学编制计划自动保存到d:course.txt下,如图5-5、5-6所示。图5-5 保存目录图5-6 course文件内容如果信息输入错误,或者需要更换新的信息,可以在主选菜单中选择清空信息选项,系统将自动删除原有数据。如图5-7所示。图5-7 数据清空在主选菜单中选择5退出后,系统将自动关闭。6.参考书目A.数据结构教程 李春葆等 编著 清华大学出版社B.数据结构教程上机实验指导 李春葆等 编著 清华大学出版社7、附录7.1.源程序清单(带注释)#include stdio.h#include malloc.h#include iostream.h#include stdlib.hint termtime=0;/学期总数int limitgrade=0;/学分上线char str1004;/课程号int score100=0;/课程学分int totalcourse=0;/课程总数struct node/课程节点int variable;/标志属不属于同一个学期所修int previous;/前修课程int next;/后学课程struct node * courselink100;/后修课程的指针* coursenode100=NULL;/课程数目节点void initialNode();/初始化课程节点void createNode();/建立课程顺序void sortNode();/排课程void inputBasicInformation();/输入基本信息void cls();/清空信息void menu();/主菜单void initialNode()/初始化课程节点int i;int j;printf(n&应用物理1201班&n);printf(&【20号张大帅】&n);printf(n);printf(n);printf(n);printf(n正在初始化n);for(i=0;ivariable=0;coursenodei-previous=0;coursenodei-next=0;for(j=0;jcourselinkj=NULL;printf(n初始化完毕n);printf(n);printf(n);printf(n);void createNode()/建立课程顺序int i;int temp;int flag;for(i=0;inext);printf(n请输入%d的深入课程课程代号分别是什么(用空格分开):,i+1);for(temp=0;tempnext;temp+)scanf(%d,&flag);coursenodei-courselinktemp=coursenodeflag-1;coursenodeflag-1-previous+;printf(n课程代号t前修课程数t深入课程数n);for(temp=0;tempprevious,coursenodetemp-next);void sortNode()/排课程int i,j,flag=0,session=1,k=0;FILE *fp;if(fp=fopen(d:course.txt,a)=NULL) /如果文件已经存在,可以追加学生信息 if(fp=fopen(d:course.txt,w)=NULL) / 文件不存在时,创建新文件,输入学生信息 printf(文件打开失败!n); return;printf(n=n);printf(课程代号t课程号t课程学分n);fprintf(fp,课程代号t课程号t课程学分n);while(1)flag=1;for(i=0;ivariable=0)if(coursenodei-previous=0)printf(%dtt%st%dn,i+1,stri,scorei);fprintf(fp,%dt%st%dn,i+1,stri,scorei);for(j=0;jnext;j+)coursenodei-courselinkj-previous-=1;coursenodei-courselinkj-variable=1;coursenodei-courselinkj=NULL;coursenodei-next=0;free(coursenodei);flag=0;k+;if(flag!=0)if(k!=totalcourse)printf(n课程排序不合理,有死循环!);exit(0);break;else if(session=termtime) printf(第%d学期课程结束n=n,session);fprintf(fp,第%d学期课程结束n=n,session);session+;else printf(学习时间不够!n);exit(0);if(session=termtime);for(i=0;ivariable=0;fclose(fp);/关闭文件指针void inputBasicInformation()/输入基本信息int i;printf(请输入学期总数:);scanf(%d,&termtime);if(termtime=12)printf(n对不起,学期总数已超过12n);exit(0);printf(n请输入学分上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厨艺学校师徒结对烹饪计划
- 23内护期末考试题复习测试附答案
- 农业生产安全文明施工资金使用
- 2025年小学语文教学改革心得体会
- 2025年小学语文趣味教学心得体会
- 生物技术的伦理争议-洞察阐释
- 气候变化的历史记忆与当代应对-洞察阐释
- 情感智能服务系统在电信行业的应用研究-洞察阐释
- 知识产权保护与经济增长关系的政策分析
- 农民工的职业幸福感研究心得体会
- 北师大版四年级下册5-6《猜数游戏》分层作业
- 国家自然科学基金范例国家自然科学基金项目合作协议书模板
- 政务服务大厅管理规范-政务服务大厅建设
- 中产人群分析报告
- 宠物血液库市场营销策划
- 团播主持人协议
- 垃圾分类意识的培养与智能垃圾分类系统
- 《微生物学肠道菌》课件
- 急需学科专业引导发展清单
- 江苏省无锡市2024年中考模拟数学试题附答案
- 美容科电疗美容治疗技术操作规范
评论
0/150
提交评论