软件开发综合课程设计报告(软件设计课程设计报告)

软件开发 1579
本篇文章给大家谈谈软件开发综合课程设计报告,以及软件设计课程设计报告对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、国标软件开发设计报告,或软件开发技术报告的模板

本篇文章给大家谈谈软件开发综合课程设计报告,以及软件设计课程设计报告对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

国标软件开发设计报告,或软件开发技术报告的模板

软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿至软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。

SDE在欧洲又叫集成式项目支援环境(Integrated Project Support Environment,IPSE)。

软件开发环境的主要组成成分是软件工具。人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。存储各种软件工具加工所产生的软件产品或半成品(如源代码、测试数据和各种文档资料等)的软件环境数据库是软件开发环境的核心。工具间的联系和相互理解都是通过存储在信息库中的共享数据得以实现的。

软件开发环境数据库是面向软件工作者的知识型信息数据库,其数据对象是多元化、带有智能性质的。软件开发数据库用来支撑各种软件工具,尤其是自动设计工具、编译程序等的主动或被动的工作。

较初级的SDE数据库一般包含通用子程序库、可重组的程序加工信息库、模块描述与接口信息库、软件测试与纠错依据信息库等;较完整的SDE数据库还应包括可行性与需求信息档案、阶段设计详细档案、测试驱动数据库、软件维护档案等。更进一步的要求是面向软件规划到实现、维护全过程的自动进行,这要求SDE数据库系统是具有智能的,其中比较基本的智能结果是软件编码的自动实现和优化、软件工程项目的多方面不同角度的自我分析与总结。这种智能结果还应主动地被重新改造、学习,以丰富SDE数据库的知识、信息和软件积累。这时候,软件开发环境在软件工程人员的恰当的外部控制或帮助下逐步向高度智能与自动化迈进。

软件实现的根据是计算机语言。时至今日,计算机语言发展为算法语言、数据库语言、智能模拟语言等多种门类,在几十种重要的算法语言中,CC++语言日益成为广大计算机软件工作人员的亲密伙伴,这不仅因为它功能强大、构造灵活,更在于它提供了高度结构化的语法、简单而统一的软件构造方式,使得以它为主构造的SDE数据库的基础成分——子程序库的设计与建设显得异常的方便。

事实上,以CC++为背景建立的SDE子程序库能为软件工作者提供比较有效、灵活、方便、友好的自动编码基础,尤其是C++的封装等特性,更适合大项目的开发管理和维护。

软件开发环境可按以下几种角度分类:

(1)按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件开发环境。

(2)按功能及结构特点分类,有单体型、协同型、分散型和并发型等多种类型的软件开发环境。

(3)按应用范围分类,有通用型和专用型软件开发环境。其中专用型软件开发环境与应用领域有关,故又软件开发方法(Software Development Method)是指软件开发过程所遵循的办法和步骤。软件开发活动的目的是有效地得到一些工作产物,也就是一个运行的系统及其支持文档,并且满足有关的质量要求。软件开发是一种非常复杂的脑力劳动,所以经常更多讨论的是软件开发方法学,指的是规则、方法和工具的集成,既支持开发,也支持以后的演变过程(交付运行后,系统还会变化,或是为了改错,或是为了功能的增减)。

关于组成软件开发和系统演化的活动有着各种模型(参见软件生存周期,软件开发模型,软件过程),但是典型地都包含了以下的过程或活动:分析、设计、实现、确认(测试验收)、演化(维护)。

有些软件开发方法是专门针对某一开发阶段的,属于局部性的软件开发方法。特别是软件开发的实践表明,在开发的早期阶段多做努力,在后来的测试和维护阶段就会使费用较大地得以缩减。因此,针对分析和设计阶段的软件开发方法特别受到重视。其它阶段的方法,从程序设计发展的初期起就是研究的重点,已经发展得比较成熟(参见程序设计,维护过程)。除了分阶段的局部性软件开发方法之外,还有覆盖开发全过程的全局性方法,尤为软件开发方法学注意的重点。

对软件开发方法的一般要求:当提出一种软件开发方法时,应该考虑许多因素,包括:①覆盖开发全过程,并且便于在各阶段间的过渡;②便于在开发各阶段中有关人员之间的通信;③支持有效的解决问题的技术;④支持系统设计和开发的各种不同途径;⑤在开发过程中支持软件正确性的校验和验证;⑥便于在系统需求中列入设计、实际和性能的约束;⑦支持设计师和其他技术人员的智力劳动;⑧在系统的整个生存周期都支持它的演化;⑨受自动化工具的支持。此外,在开发的所有阶段,有关的软件产物都应该是可见和可控的;软件开发方法应该可教学、可转移,还应该是开放的,即可以容纳新的技术、管理方法和新工具,并且与已有的标准相适应可称为应用型软件开发环境。

⑷按开发阶段分类,有前端开发环境(支持系统规划、分析、设计等阶段的活动)、后端开发环境(支持编程、测试等阶段的活动)、软件维护环境和逆向工程环境等。此类环境往往可通过对功能较全的环境进行剪裁而得到。软件开发环境由工具集和集成机制两部分构成,工具集和集成机制间的关系犹如“插件”和“插槽”间的关系。

工具集:软件开发环境中的工具可包括:支持特定过程模型和开发方法的工具,如支持瀑布模型及数据流方法的分析工具、设计工具、编码工具、测试工具、维护工具,支持面向对象方法的OOA工具、OOD工具和OOP工具等;独立于模型和方法的工具,如界面辅助生成工具和文档出版工具;亦可包括管理类工具和针对特定领域的应用类工具。

集成机制:对工具的集成及用户软件的开发、维护及管理提供统一的支持。按功能可划分为环境信息库、过程控制及消息服务器、环境用户界面三个部分。

环境信息库:是软件开发环境的核心,用以储存与系统开发有关的信息并支持信息的交流与共享。库中储存两类信息,一类是开发过程中产生的有关被开发系统的信息,如分析文档、设计文档、测试报告等;另一类是环境提供的支持信息,如文档模板、系统配置、过程模型、可复用构件等。

过程控制和消息服务器:是实现过程集成及控制集成的基础。过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成并行工具之间的通信和协同工作。

环境用户界面:包括环境总界面和由它实行统一控制的各环境部件及工具的界面。统一的、具有一致视感(Look Feel)的用户界面是软件开发环境的重要特征,是充分发挥环境的优越性、高效地使用工具并减轻用户的学习负担的保证。

较完善的软件开发环境通常具有如下功能:

(1)软件开发的一致性及完整性维护;

(2)配置管理及版本控制;

(3)数据的多种表示形式及其在不同形式之间自动转换;

(4)信息的自动检索及更新;

(5)项目控制和管理;

(6)对方法学的支持。

软件开发流程

软件开发流程如下:

1、项目开发目的分析与确定

软件开发流程的这一阶段,主要是在在软件开发商将开发项目确定下来之后,需要与需求方进行讨论,确定需求方对于软件开发的需要实现目标及其具体需要的功能等等,并确定是否可达成。

2、需求分析

这是软件开发流程的第二个阶段,也是为软件开发的正常进行确定具体思路的阶段。在确定软件开发可进行后,必须要对客户需要实现的软件功能需求进行具体详细的分析。同时应当考虑在开发过程中可能出现的变化情况,制定需求变更计划随时应对特殊情况的发生,保证软件开发流程的顺畅进行。

3、设计

软件设计要根据上一阶段对软件功能需求分析的结果,来设计软件系统的框架结构、功能模块和数据库等等。分为总体设计和详细设计两个部分。

4、编程

软件开发流程中每上一个阶段都是下一个阶段的实施进行的基础。编程也是根据对软件设计,将软件设计的各部分需求通计算机程序代码来实现运行,编程有统一、规范的程序编写规则,保证软件程序的易懂性、易维护性。

5、软件测试

在根据设计将客户软件需用编程代码来实现之后,也就是软件程序完成之后,需要对编写的程序,形成整体构架、功能进行单元、组装、系统三阶段的测试,以测试程序编写的正确性,以及对客户需求功能满足的充分性,以此来确定软件是否达到开发要求,同时也是一个发现问题、纠正问题的过程。

6、软件交付

软件开发流程通过以上核心环节完成了软件开发,接下来就是在软件开发达到客户需求之后,开发者将软件系统交予客户,并将软件安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等产物交付给客户。

7、验收

用户在接收开发商交付的软件开发结果,并进行实际操作、测试运行,实现满意结果之后,对开发出来的软件进行验收。

8、维护

定制开发的软件通常都需要提供售后服务,定期对软件进行维护,或者根据用户出现的新需求,进行应用软件程序的修改,使之不断满足客户实际需求。

软件开发的概念

是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。

算法课程设计报告

题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法建议使用流程图,进行算法分析指明关键语句的时间复杂度。

给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来 。

对有些题目提出算法改进方案,比较不同算法的优缺点。

如果程序不能正常运行,写出实现此算法中遇到的问题,和改进方法;

2 对每个题目要有相应的源程序(可以是一组源程序,即详细设计部分):

源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环;

3 最后提供的主程序可以象一个应用系统一样有主窗口,通过主菜单和分级菜单调用课程设计中要求完成的各个功能模块,调用后可以返回到主菜单,继续选择其他功能进行其他功能的选择。最好有窗口展示部分。

4 课程设计报告:(保存在word 文档中,文件名要求 按照"姓名-学号-课程设计报告"起名,如文件名为"张三-001-课程设计报告".doc )按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;

其中包括:

a)需求分析:

在该部分中叙述,每个模块的功能要求

b)概要设计

在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。

c)详细设计

各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)

源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

d)调试分析

测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

5. 课设总结: (保存在word 文档中)总结可以包括 : 课程设计 过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对C课程的认识等内容;

6.实验报告的首页请参考如下格式:

课程设计实验

起止日期:20 -20 学年 学期

系别 班级 学号 姓名

实验题目 □设计性 □综合性

自我评价

教师评语 能够实现实验要求的功能 □全部 □部分算法有新意 □有 □一般程序运行通过 □全部 □部分 算法注释说明 □完善 □仅有功能说明接口参数说明 □有 □无按期上交打印文档资料及源程序 □所有 □部分综合设计说明报告结构 □合理 □不合理用户使用说明 □完整 □不全现场演示操作有准备 □有 □无问题解答流畅 □流畅 □不流畅独立完成实验 □能 □不能体现团队合作精神。 □能够 □不能

成绩

这是张表格,copy过来时没调整好,不过应该看得明白。我们是这样写的,你可以参考一下。

C语言课程设计报告要求

一 、 设计题目

万年历的设计

二 、设计要求

1、能够显示星期;

2、能够显示年月日;

3、能够修改;

4、当系统时间变动时,能自动跳到相应的时间。

三 、 设计目的

1. 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!

2. 通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

四 、设计思想及过程

【一】由于万年历具有以下特点:

1。平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。

由于公元1月1日设为星期六,故3月1日为星期三。 ——注意这个“三”

为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。

2。每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。)

所以百年%4=0闰或(年%4=0并且年0)闰。

3。每 4年(3个平年+1个闰年)共208周+5天 ——注意这个“5天”

每百年共100*(208周+5天)-1天=5217周+5天 ——注意这个“5天”(整百年暂设为平年)

每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和

“1天”(4个整百年只有一个闰年)

即400年一轮回!(原来万年历400年前是一家)

【二】根据万年历以上特点进行编写:

首先对万年历年、月、日进行编写,编写程序先定义每月的天数为28天,如月份为1、3、5、7、8、10、12就定义天数为31天反之如果月份为4、6、9、11就输出天数为30天,由上可见2月份为28天但是如果为闰年就有29天就要定义另一个函数#define Year(x) (x%4==0x%100!=0||x%400==0) ? 1:0当为闰年时可得1加上该程序便可得到每月的天数。 具体程序见(五、万年历程序)

再对其中的星期进行编写:由于公元1月1日设为星期六,故3月1日为星期三,可以用万年3月1日星期算法(特别是那个三)

由于其公式为:

某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

或 某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

闰4百年3月1日星期算法(百年%4=0)

其公式为:

某年3月1日星期几=(年+年/4+月星期表+日+2天)%7

例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四

2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一

2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六

2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六

平4百年3月1日星期算法(百年%40)

其公式为:

某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)

1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)

1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)

1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)

2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是闰年)

9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一

注:按400年一轮回!(400年前是一家)的说法

1600年,2000年是一样的;

1700年,2100年是一样的;

1800年,2200年是一样的;

1900年,2300年是一样的。

其中万年某日星期算法

其公式为:

某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

通同星期偏差表

闰年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天数 31 29 31 30 31 30 31 31 30 31 30 31

星期 3 6 0 3 5 1 3 6 2 4 0 2

平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天数 31 28 31 30 31 30 31 31 30 31 30 31

星期 4 0 0 3 5 1 3 6 2 4 0 2

为对以上的万年历星期的算法是正确的对其进行了以下的计算:

⒈对于二十世纪任意日期可以用公式某日星期几=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根据上面对其进行的计算:

1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

1月表=4(平年) 故 4+4=1 即1900年元旦是星期一

1949年国庆 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

10月表=4(平年) 故 4+2=6 即1949年国庆是星期六

1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

12月表=2(平年) 故 2+3=5 即1999年12月31日是星期五

⒉对于二十一世纪新前年虫算法(20%4*5=0)可以用公式:某日星期几=(百年%4*5天+年+年/4+闰年月星期表+日+2天)%7 =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7以下就是根据上面对其进行的计算:

2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

1月表=3(闰年) 故 3+3-6 即2027年元旦是星期六

2018年春节 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

2月表=0(平年) 故 0+5=5 即2018年春节是星期五

2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

12月表=2(平年) 故 2+2=4 即2099年12月31日是星期四

对于上面的分析以及公式的推论和计算证明可以对万年历中的星期进行了编写具体编写程序见(五 、万年历程序)中。

五 、万年历源程序

#include"stdio.h"

#include"dos.h"

#include"conio.h"

#include"stdlib.h"

#define Year(x) (x%4==0x%100!=0||x%400==0) ? 1:0 /*判断闰年*/

int numofMonth(int y,int m){

int day,t=28;

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

day=31; /*定义以上月份为31天*/

else if(m==4||m==6||m==9||m==11)

day=30; /*定义以上月份为30天*/

else{t+=Year(y);

day=t;} /*闰年二月29天,平年28天*/

return day;}

int numofYear(int y){

int t=365; /*平年365天*/

t+=Year(y);/*闰年366天*/

return t;}

int numofbeforeDays(int y,int m,int d){

int sum=d,i;

for(i=1;im;i++)

sum+=numofMonth(y,i);

return sum;}

int numofafterDays(int y,int m,int d){

int sum=0,i;

for(i=m;i=12;i++)

sum+=numofMonth(y,i);

sum-=d;

return sum;}

int isDay(int y,int m,int d){

int year=1900,month=1,week=1,i; /*定义万年历是从1900年开始*/

long sum=0;

for(i=year;iy;i++)

sum+=numofYear(i);

for(i=1;im;i++)

sum+=numofMonth(y,i);

/* ++sum;*/

i=sum%7;

week=(week+i)%7;

return week;}

void empty(int n){

int i;

for(i=0;in;i++)

printf("%*c",6,' ');}

void OutPutCalender(int y,int m,int d)/*计算x年x月x是星期几*/{

int week,i,num,t;

week=isDay(y,m,1);

printf("%6d/%02d/%02d\n",y,m,d);

printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");

empty(week);

num=numofMonth(y,m);

for(i=1;i=num;i++){

printf("%6d",i);

t=(week+i)%7;

if(t==0)

printf("\n");} /*光标移到下一行*/

printf("\n");}

long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定义两个不同日期*/{

int i;

long sum=0;

for(i=y1+1;iy2;i++)

sum+=numofYear(i);

if(y1==y2){ sum-=d1;

for(i=m1;im2;i++)

sum+=numofMonth(y1,i);

sum+=d2;}

else{sum+=numofafterDays(y1,m1,d1);

sum+=numofbeforeDays(y2,m2,d2);}

return sum;}

int Select_mean(){

int sm;

printf("1. OutPut Calender\n"); /*输出当前月份的日历*/

printf("2. Help\n"); /*帮助*/

printf("0. Quit\n"); /*退出*/

printf("Please enter choose(0--2):"); /*从0-2中选择*/

do

scanf("%d",sm); /*输入sm*/

while(sm0||sm3);

return sm;}

void Help()/*输出帮助栏的内容*/{

printf(" 1. OutPut Calender\n");

printf(" 2. System Help\n");

printf(" 0. Quit\n");

printf("Page Up: Up year\n"); /*上一年*/

printf("Page Down: next year\n"); /*下一年*/

printf(" -- : next month\n"); /*上一月*/

printf(" -- : Up month\n");/*下一月*/}

main(){

int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定义运行后的日期是2006年*/

int inkeySCAN,inkey; /*输入键盘操作信息*/

union REGS inregs,outregs;

inregs.h.ah=0x2a;

intdos(inregs,outregs);

/* year=outregs.xcx; */

month=outregs.h.dh;

day=outregs.h.dl;

year1=year;

printf("%d/%02d/%02d\n",year,month,day);

while(1)/*当选择为1时,执行以下语句*/{

switch(Select_mean()){

case 1:

OutPutCalender(year,month,day);

while(1){

inkey=bioskey(0);

inkeySCAN=(inkey0xFF00)8;

if(inkeySCAN==77){

if(month==12){month=1;year1++;

OutPutCalender(year1,month,day);/*输出日历*/}

else{month++;

OutPutCalender(year1,month,day);

}}

if(inkeySCAN==75){

if(month==1){month=12;year1--;

OutPutCalender(year1,month,day);}

else{month--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==73){

if(year1==1900) year1=year;

else{year1--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==81){

year1++;OutPutCalender(year1,month,day);}

if(inkeySCAN==28)break;}

break; /*终止循环*/

case 2:

Help();

break;

case 0:

exit(0);

default:

printf("Enter ERROR!\n");

break;} }

}

六 运行过程

1.双击TC

1. 当对上面的程序进行了调试后运行会出现下面所示:

第一行所显示的就是系统时间!满足了第一条要求“显示年、月、日”。

而当改变系统时间后!再运行该程序上面的日期也随系统时间改变,所以满足第四条“当系统时间变动时,能自动跳到相应的时间。”

2. 在光标处按下“1”后回车,将会显示:

以上的显示也证明了条件的第2条可以“显示星期!”

3. 在光标处按下“2”后回车,将会显示:

按着帮助所讲进行了运行可知:按“ Page Up ”键其下面接着会显示上一年该月的万年历,按“ Page Down ”键其下面会接着显示下一年该月的万年历;按“ ← ”键下面将会接着显示当年上一个月的万年历,按“ → ”键将会接着在下面显示去下一个月的万年历。

4.

由上所显示键入“0”后将会退去该程序。

由以上运行的结果可知该c语言所设计的万年历满足设计要求!

七、在C语言编程中常见错误

C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我通过这次编程,也积累了一些C编程时常犯的错误:

1. 书写标识符时,忽略了大小写字母的区别。

编译程序把a和A认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

2.忽略了变量的类型,进行了不合法的运算。

%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

3.将字符常量与字符串常量混淆。

混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。

4.忽略了“=”与“==”的区别。

在C语言中,“=”是赋值运算符,“==”是关系运算符。如:

if (a==3) a=b;

前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

5.忘记加分号。

分号是C语句中不可缺少的一部分,语句末尾必须有分号。

a=1 b=2

编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。

{ z=x+y;

t=z/100;

printf("%f",t);

}

对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。

6.多加分号。

对于一个复合语句,如:

{ z=x+y;

t=z/100;

printf("%f",t);

};

复合语句的花括号后不应再加分号,否则将会画蛇添足。

又如:

if (a%3==0);

I++;

本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。

再如:

for (I=0;I5;I++);

{scanf("%d",x);

printf("%d",x);}

本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。

7.输入变量时忘记加地址运算符“”。

int a,b;

scanf("%d%d",a,b);

这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“a”指a在内存中的地址。

8.输入数据的方式与要求不符。scanf("%d%d",a,b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

3,4

输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。

scanf("%d,%d",a,b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:

3,4

此时不用逗号而用空格或其它字符是不对的。

3 4 3:4

又如:

scanf("a=%d,b=%d",a,b);

输入应如以下形式:

a=3,b=4

9.输入字符的格式与要求不一致。

在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。

scanf("%c%c%c",c1,c2,c3);

如输入a b c

字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

10.输入输出的数据类型与所用格式说明符不一致。

例如,a已定义为整型,b定义为实型

a=3;b=4.5;

printf("%f%d\n",a,b);

语法错

逻辑错 运行错

0.忘记定义变量:

main()

{x=3;y=6;

printf(“%d\n”,x+y);

11.C语言的变量一定要先定义才能使用;

12.输入输出的数据的类型与所用格式说明符不一致

int a=3;float b=4.5;printf(“%f%d\n”,a,b);

它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)

13.未注意int型数据的数值范围

int型数据的数值范围(-32768~32768)

int num=89101;

printf(“%d”,num);

会将超过低16位的数截去从而得到23563

注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误

14.输入变量时忘记使用地址符

scanf(“%d%d”,a,b);

15.输入时数据的组织与要求不符

对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入

16.误把”=“作为”等于”比较符

“=“为附值运算符

“==“为比较运算符

17.语句后面漏分号

{

t=a;

a=b;

b=t

}

它是pascal的语法

18.不该加分号的地方加了分号

if(ab);

printf(“a is larger than b\n”);

for(i=0;i10;i++);

{

scanf(“%d”,x);

printf(“%d\n”,x*x);

}

19.对应该有花括弧的复合语句,忘记加花括弧

sum=0;

i=1;

while(i=100)

sum=sum+1;

i++;

20.括弧不配对

while((c=getchar()!=‘#’)

putchar(c);

11.在用标识时,忘记了大写字母和小写字母的区别

{

int a,b,c;

a=2;

b=3;

C=A+B;

printf(“%d+%d=%D”,A,B,C);

}

12.引用数组元素时误用发圆括弧

{

int i,a(10);

for(i=0;i10;i++)

scanf(“%d”,a(i));

}

13.在定义数组时,将定义的”元素个数”误认为是”可使用的最大下标值

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

int i;

for(i=1;i=10;i++)

printf(“%d”,a[i]);

}

14.对二维或多维数组的定义和引用的方法不对

{

int a[5,4];

printf(“%d”,a[1+2,2+2]);

}

15.误以为数组名代表数组中全部元素

{int a[4]={1,2,3,4};

printf(“%d%d%d%d”,a);

}

16.混淆字符数组与字符指针的区别

main()

{

char str[40];

str=“Computer and c”;

printf(“%s\n”,str);

}

17.在引用指针变量之前没有对它赋予确定的值

{

char *p;

scanf(“%s”,p);

}

{

char *p,c[20];

p=c;

scanf(“%s”,p);

}

18.switch语句的各分支中漏写 break语句

混淆字符和字符串的表示形式

char sex;

sex=“M”;

19.使用自加(++)和自减(--)运算符时出的错误

{

int *p,a[5]={1,3,5,7,9};

p=a;

printf(“%d”,*p++);

}

注意于*(++p)的区别;

20.所调用的函数在调用语句之后才定义,而又在调用前未加说明

main()

{float x,y,z;

x=3.5;y=-7.6;

z=max(x,y);

printf(“%f”,z);

}

编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。

八、心得体会

1. 目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。

2. 经过上一个学期对《C程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。

3. 通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!

4. 在万年历的编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在万年历的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!也体会到以后在工作中团队合作的必要性和重要性!

5. 通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!

6. 由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!

7. 在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过大家的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?

8. 在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!

九、参考文献

⒈谭浩强编著.C程序设计第二版〔M〕.北京:清华大学出版社,1999

⒉陈朔鹰,陈英编著.C语言趣味程序百例精解〔M〕.北京:北京理工大学出版社,1994

⒊电脑知识与技术学术交流版〔J〕2005.2 (备注:来自网络资源)

⒋Herbert Schildit著. 戴健鹏译. C语言大全 (第二版)〔M〕.北京:电子工业出版社,1994

⒌谭浩强,张基温,唐永炎编著. C语言程序设计教程.〔M〕北京: 高等教育出版社,1992

⒍秦友淑,曹化工编著. C语言程序设计教程. 〔M〕武汉:华中理工大学出版社,1996

⒎曹衍龙,林瑞仲,徐慧 编著.C语言实例解析精粹 〔M〕北京:人民邮电出版社,2005.3

⒏黄明等编著.21世纪进阶辅导C语言程序设计. 〔M〕大连理工大学出版

软件开发主要内容介绍。

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。 软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。

软件开发总体技术方案设计报告开发目的怎么写

软件工程-软件开发详细的需求分析需求规定3.1对功能的规定(1)首页设计 首页设计应该清晰简单、美观大方,同时还要做到信息充足,突出图书的特点和操作的入口。 (2)、会员信息管理 只有登录后的用户可以修改、删除自己的个人信息和订购书籍,登录人员可以根据用户名/密码组合来进行验证。 本站管理员可以对书店会员的信息进行更新、修改、删除。但是,这些私有信息属于用户,本站不能因为商业目的向外界公开,个人信息完全由个人来控制其内容,程序应提供个人信息维护的页面。 (3)、信息查询 提供查询的页面,用户可以按照书的名称、作者、出版商、价格、分类等进行查询,并得到正确的信息列表。 (4)、安全管理 安全方面的管理,防止恶意攻击、非法入侵和对数据的篡改。资料参考:

关于软件开发综合课程设计报告和软件设计课程设计报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码