C语言软件实训方案1、实训意义和目的使学生综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。课程设计的目的和要求:使学生巩固和加强《C语言程序设计》课程的理论知识。使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。使学生掌握调试程序的基本方法及上机操作方法。掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。培养学生良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。2、实训目标及要求参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反映出理解和运用本课程知识的水平和能力。A、分析问题。各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。B、提出算法执行特定任务。模块表示为算法,使用自顶向下或伪代码等设计手段将模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。C、把一个算法变为用C语言编写的结构化程序。D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。F、写出技术文档,对程序中主要标示符的含义或作用加以说明,并提供一个完整的程序流程图。G、调试程序、测试数据过程成功。3、实训内容及安排3.1设计环境硬件:PC机,目前机房都已具备开发C语言程序的条件软件:操作系统为Windows系列,设计语言为VisualC++或TurboC。3.2基本要求课程设计可采取每人一题,可任选一题进行设计,至少包含五个功能模块。或者每组(不超过4人)完成一个课题,每组成员分工合作完成一个课程设计,每个人的任务不同;可以选择老师提供的参考选题,也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用。要求利用结构化程序设计方法以及C的编程思想来完成系统的设计;要求有欢迎界面、菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可;模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现;学生所选课题必须上机通过,并获得满意的结果;程序书写风格:锯齿型书写格式。3.3实现步骤问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;编写实训设计报告.3.4实训题目见附录5、实训报告应具有的内容1)、需求分析描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。2)、总体设计(程序设计组成框图、流程图)3)、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))4)、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5)、测试结果,用几组测试数据进行测试算法设计的正确性。6)、用户手册:即使用说明。7)、附录。源程序清单和结果(注:不需要所有代码):源程序要加注释。结果要包括测试数据和运行结果。完成课程设计应提交如下文档:①程序的总体设计和算法分析。②技术文档③用户文档④源程序代码清单。⑤测试数据和测试过程记录。⑥遇到的问题及解决方法分析。6、提交内容与形式每位同学按格式提交以下内容1论文(大作业打印稿15页到20页)2代码(电子版不要打印)3程序使用说明(简单的描述文字以及截图,电子稿)提交形式:先建立目录:目录命名为:学号+姓名目录下再创建三个子目录如:20051002张三----目录论文----子目录放大作业电子稿代码-----子目录放代码使用说明-----子目录程序使用说明电子稿7、时间以及进度安排1)技术讲解与系统设计与分析1天系统需求(总体概述)功能需求系统需求详述2)系统设计1天系统组织结构设计系统数据流程图系统功能模块设计详细设计(如流程图等)3)系统编码2-3天4)答辩以及其他1天8、评阅意见软件实训评阅意见项目等级优秀良好中等及格不及格软件态度评价出勤情况评价任务难度评价工作量饱满评价设计中创新性评价论文书写规范化评价综合应用能力评价综合评定等级9、附录附录1:报告封面C语言实训项目题目:院系专业:姓名:学号:同组其他学生(学号):2011年月日附录、C语言项目项目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)---输入学生信息浏览功能---输出查询、排序功能---算法按学号查询、按姓名查询、学生信息的删除与修改(可选项)(2)功能要求界面比较美观;有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;最好用链表的方式实现。(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。文件的读写操作大家参照书中的有关文件的章节。项目2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。A、学生信息处理(1)输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。提示:学生信息可先输入到数组中,排序后可写到文件中。(2)插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3)删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。(4)浏览学生信息:提示:打开文件,显示该文件的学生信息。B、学生数据处理:(1)按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。(2)学生测评数据输入并计算综合测评总分及名次。提示:综合测评总分=(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。(3)学生数据管理提示:输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件(4)学生数据查询:提示:输入学号或其他信息,即读出所有数据信息,并显示出来。C、学生综合信息输出提示:输出学生信息到屏幕。项目3、学校运动会管理系统问题描述:(1)初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;(2)各项目名次取法有如下几种:取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;(3)由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。(4)所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。项目4、教师工作量管理系统计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)A、教师信息处理(1)输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。(2)插入(修改)教师授课教学信息:(3)删除教师授课教学信息:(4)浏览教师授课教学信息:B、教师工作量数据处理:(1)计算单个教学任务总课时。计算原则如下表:班级数目单个教学任务总课时21.5*(理论课时+实验课时)32*(理论课时+实验课时)=42.5*(理论课时+实验课时)(2)计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。(3)教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。C、教师综合信息输出提示:输出教师信息到屏幕。项目5、编写一万年历系统(限最多1人完成)要求:模仿现实生活中的挂历.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月.项目6、一元多项式简单的计算器(限最多1人完成)1主要功能:(1)输入并建立多项式;(2)输出多项式;(3)两个多项式相加,建立并输出和多项式;(4)两个多项式相减,建立并输出差多项式。(5)算法的时间复杂度、另外可以提出算法的改进方法实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。2.要求:一元多项式简单计算器的基本功能项目7、保龄球计分【问题描述】打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10轮,每轮可滚球1次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下:①若某一轮的