软件工程-万年历实验报告

合集下载

万年历实训报告.doc

万年历实训报告.doc

万年历实训报告.doc
摘要:
本实训主要用于介绍我们能够实现一个基于C语言、Qt图形接口,实现万年历功能的程序。

由于该项目涉及许多基础知识,让学生能够跨科目获得完整的实践经验。

在实训中,我们先了解基础知识,如如何使用C语言及Qt图形接口;然后构建程序。

程序的核心思想是使用类型插入、提取、比较和计算日期的来求解式的历史时期,展示日历,并计算公历农历的值。

最后,我们完成了基于Qt图形界面的万年历程序,实现了查询公历和农历日期,以
及带复杂信息的今天提醒等功能。

本实训有力地提升了学生的计算机知识及实践能力,优
化了学习的过程。

总结:
通过本次实训,学生可以获得跨学科的实践经验,学习到了C语言和Qt图形接口的
知识,以及利用日期插入、提取、比较和计算的历史知识。

并实现了一个基于Qt的万年
历程序,有助于提升学生的实践能力,极大地增强了学习效率。

万年历设计报告

万年历设计报告

C语言程序设计实训任务书题目:万年历学生姓名:学号:班级:_物联网工程_题目类型:软件工程(R)指导教师:一、设计目的1.进一步掌握和利用C语言进行程序设计的能力;2.进一步理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写实训开发文档的能力(书写实训报告)。

二、设计任务及内容用C语言编写万年历1.功能选择可以用菜单实现。

例如可以选择1按年查询2按月查询3按日查询0退出用户通过不同的数字进入不同的菜单2.万年历显示公元后任何年份的日历,类似于一般挂历上的格式3.输入年份,判断是否为闰年4.输入年月日,判断改日为星期几5.输入年份,打出12个月历,输入月份,打出该月的日历6.要求用多个函数实现三、设计要求1.用C语言实现系统;2.利用结构体、数组等实现数据结构设计;3.系统的各个功能模块要求用函数的形式实现;4.文档:实训说明书每个学生一份,并装在统一的资料盒中。

5.光盘:每个学生文档和程序资料分别建在一个以自己学号和姓名命名的文件夹下,并要求每班负责人汇总每个学生的文件放在以班级姓名命名的文件夹下,刻录成一张光盘,放在一个专门的资料袋中。

四、提交的成果1. 设计任务书一份(学校统一格式)2. 设计说明书一份,内容包括:1) 中文摘要100字,关键词3-5个。

2) C语言课程实训题目、内容、要求。

3)总体设计(包含几大功能模块)。

4)详细设计(各功能模块的具体实现算法——流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。

6)调试分析(包含各模块的测试用例,及测试结果。

)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致谢等。

五、主要参考资料1. 王连相.《C/C++程序设计》武汉大学出版社2.谭浩强《C语言程序设计(第2版)学习指导》清华大学出版社3. 杨莉,龚义建《C语言程序设计实训指导教程》华中科技大学出版社4. 张小东,郑宏珍《C语言程序设计与应用》人民邮电出版社5. 郭翠英《C语言C语言课程实训案例精编》中国水利水电出版社6.郭有强《C语言程序设计》清华大学出版社7.李丹程,刘莹,那俊《C语言程序设计案例实践》清华大学出版社8.李丽娟《C语言程序设计教程》人民邮电出版社9.武雅丽,王永玲,解亚利《C语言程序设计》清华大学出版社摘要C语言在近年来国内外得到了很广泛的推广,而电子万年历也是人们在日常的生活需求中必不缺少的一部分。

JAVA万年历设计报告

JAVA万年历设计报告

JA V A万年历设计报告专业:计算机科学与技术姓名:班级:JA V A万年历设计报告一课程实习目的:(1)为用户开发一个便捷的万年历;(2)对java技术的灵活应用;(3)掌握日期处理技术;(4)初步了解软件工程理论知识。

二课程实习内容与要求:(1)内容通过本课程设计教学所要求达到的目的是:实现一个简洁的万年历,通过日期的处理,能按照用户的需求查看各年份的日期。

(2)课程实习的基本要求(1)使用图形用户界面;(2)实现日期与星期的查询。

三系统功能分析:1 系统的主要功能:(1)可以查看当前的年份、月份和日期;(2)增加了时间栏,便于用户查看当前时间;(3)能够查找1至9999年的日期与星期的关系。

2 系统功能结构图(1)Clock类:实现了Runnable接口,运用线程,实现时钟的功能,包含了paint方法。

Paint方法:从系统获取当前日期,以设置时钟的初始值。

(2)MainFrame类:作为主类实现了JFrame接口,调用Clock类,包含了MainFrame方法,Init方法,use方法,Resetday方法。

MainFrame方法:定义各个参数,应用AWT的绘图功能,构建总体框架;获取所要查找的年份和月份,通过调用use方法和Resetday方法,实现“查看”按钮的功能,并得到所需结果。

Init方法:调用系统的年份和月份,以设置查看面板和日期面板的初始值。

use方法:确定所要查询的年月的第一天的是星期几。

Resetday方法:进一步处理所查询的年份月份,确定查询月份的天数;图1 系统功能结构四系统运行1.运行界面如下:用户可根据需要在下拉式菜单中选择所要查询的年份和月份,然后点击“查看”按钮:图2 运行界面2.流程图:图3五课程设计体会本次课程设计为课本后设计题目任选一题进行设计。

思考一段时间后,我决定做一个万年历的设计。

因为通过设计这样的一个日历小组件,能使自己对JA V A 的一些基础知识掌握的更加牢固。

万年历实验报告

万年历实验报告

万年历实验报告1. 引言日历是人们日常生活中必不可少的工具,用于追踪时间和日期。

在计算机科学中,开发一个能够准确显示日期和日历的程序也是非常重要的。

本实验的目标是设计并实现一个万年历程序,能够显示指定年份和月份的日历。

2. 实验目标本实验的目标是设计和实现一个简单的万年历程序,具体要求如下: - 能够根据指定的年份和月份显示该月的日历。

- 显示的日历应包含月份的名称、年份、星期几和日期。

- 如果输入的年份和月份超出了合法范围(如年份小于1或大于9999,月份小于1或大于12),程序应给出相应的错误提示。

3. 实验方法为了实现上述目标,我们采用了以下步骤:3.1 设计算法设计一个算法来确定给定年份和月份的开始日期,以及该月份的天数。

我们使用基于蔡勒公式的算法来计算开始日期,并根据每个月的天数确定日历的布局。

3.2 编写代码使用Python编程语言编写代码来实现万年历程序。

采用面向对象的编程方式,将日历的显示和计算逻辑封装到一个Calendar类中。

3.3 编写测试用例编写一系列测试用例来验证万年历程序的正确性。

测试用例包括输入合法年份和月份的情况,以及输入非法年份和月份的情况。

3.4 运行程序运行程序,并根据输入的年份和月份来显示相应的日历。

如果输入的年份和月份超出合法范围,程序应给出相应的错误提示信息。

4. 实验结果经过编写代码并进行测试,我们得到了一个能够正常显示日历的万年历程序。

以下是几个测试用例的示例结果:4.1 输入合法年份和月份输入年份为2022,月份为6的情况下,程序显示的结果如下:六月 2022日一二三四五六1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 304.2 输入非法年份和月份输入年份为0,月份为13的情况下,程序应给出错误提示信息,如下:输入的年份或月份不合法,请重新输入。

万年历设计报告

万年历设计报告
6.郭有强《C语言程序设计》清华大学出版社
7.李丹程,刘莹,那俊《C语言程序设计案例实践》清华大学出版社
8.李丽娟《C语言程序设计教程》人民邮电出版社
9.武雅丽,王永玲,解亚利《C语言程序设计》清华大学出版社
六、各阶段时间安排(共1周)
日期
内容
地点
星期一
教师讲解设计要求,准备参考资料
1B203
星期二
1.3需求背景
目前比较流行电子万年历程序,比较典型的是windows中各版本的日历程序。但是这些程序总是有一定的限制,需要一个跨度很大的日历来方便人们的生活,而C语言程序与设计充分发挥了这个优点,用很短的文本填补了这一个空白。同时也用强有力的证据告诉人们C语言这个新生事物的应用范围是极其广阔的。
8)参考文献、致谢等。
五、主要参考资料
1. 王连相.《C/C++程序设计》 武汉大学出版社
2.谭浩强《C语言程序设计(第2版)学习指导》清华大学出版社
3.杨莉,龚义建《C语言程序设计实训指导教程》华中科技大学出版社
4.张小东,郑宏珍《C语言程序设计与应用》人民邮电出版社
5.郭翠英《C语言C语言课程实训案例精编》中国水利水电出版社
1.1设计目的
1.通过实训可以综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关。更加了解了C语言的好处和其可用性。同时增加了同学之间的团队合作精神,更加也体会到以后在工作中团队合作的重要性和必要性。
3.4星期计算模块9
3.5打印月历模块11
3.6日期合法性检查模块13
4调试分析14
4.1错误分析14

万年历C语言报告范文1

万年历C语言报告范文1

万年历C语言报告范文1万年历实验报告---软件工程老师:班级:学号:姓名:-1-实验题目:编制一个万年历程序要求:输入一个年份(1-3000),然后显示12个月的月历,如屏幕显示不下,则应提供翻页功能。

一.实验目的通过实例使同学们掌握结构化数据流分析技术。

二.实验内容软件需求分析:1.总体而言,根据老师的要求来做一个万年历的C程序,要求分页输出每个月的月历,首先输入想要知道日历的年份,然后可按ENTER键逐月显示日历,这样就可以达到要求了。

3.求出一年中的第一天是周几(year+(year-1)/4-(year-1)/100+(year-1)/400)%7。

4.用FOR循环输出各月份的日历。

数据流图:软件设计与编码:实验完整代码:#include\longintf(intyear,intmonth){if(month<3)returnyear-1;elereturnyear;}longintg(intmonth){if(month<3)returnmonth+13;elereturnmonth+1;}longintn(intyear,intmonth,intday){return1461L某f(year,month)/4+153L某g(month)/5+day;}intw(intyear,intmonth,intday){return(int)((n(year,month,day)%7-621049L%7+7)%7);}intdate[12][6][7];intday_tbl[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31, 29,31,30,31,30,31,31,30,31,30,31}};main(){intw,leap,i,j,k,wd,day;intyear;chartitle[]=\printf(\请输入您想要知道万年历的年份:\输入年某/canf(\输入年份值和掠过值后的回车某/w=w(year,1,1);for(k=0;k<7;k++)date[i][j][k]=0;/某日期表置0某/for(i=0;i<12;i++)/某一年十二个月某/-3-for(wd=0,day=1;day<=day_tbl[leap][i];day++){/某将第i+1月的日期填入日期表某/date[i][wd][w]=day;w=++w%7;/某每星期七天,以0至6计数某/if(w==0)wd++;/某日期表每七天一行,星期天开始新的一行某/}printf(\年的年历===========|\\n\for(i=0;i<12;i++){/某先测算第i+1月的最大星期数某/for(wd=0,k=0;k<7;k++)/某日期表的第六行有日期,则wd!=0某/wd+=date[i][5][k]+date[i+6][5][k];wd=wd6:5;put(\printf(\月%|\\n|\for(j=0;jprintf(\\for(k=0;k<7;k++)if(date[i][j][k])printf(\eleprintf(\\printf(\\printf(\}put(\canf(\键入回车输出下一个月的日历某/}put(\put(\按任意键退出...\getch();}截图:-4--5-三.总结1.实验内容总结经过运行和调试得到了想要的结果——“万年历”,任意输入一个年份能按当初设计的格式输出每个月份的日历。

万年历实验报告c

万年历实验报告c

万年历实验报告c万年历实验报告一、引言万年历是一种用来记录时间和日期的工具,它可以帮助人们更好地组织日常生活和工作。

本实验旨在探究万年历的原理和功能,并通过实际操作来验证其准确性和可靠性。

二、实验设备和方法1. 实验设备:万年历软件、计算机、手机等。

2. 实验方法:通过使用万年历软件和其他设备,观察和记录不同日期和时间的显示情况,并与实际情况进行对比。

三、实验结果和讨论1. 日期显示准确性在实验过程中,我们发现万年历软件能够准确地显示当前日期,并且可以根据需要切换到其他日期。

无论是过去的日期还是将来的日期,软件都能正确地显示出来。

这表明万年历软件具有很高的日期显示准确性。

2. 节假日提醒功能万年历软件还具有节假日提醒功能,可以在特定的节假日提醒用户。

我们设置了几个节假日,如春节、国庆节等,并观察软件是否能够准确地提醒。

结果显示,软件能够在相应的节假日前一天或当天提醒用户,这对于人们合理安排假期和活动非常有帮助。

3. 日期计算功能万年历软件还提供了日期计算功能,可以根据用户输入的日期和天数,计算出未来或过去的日期。

我们进行了一些日期计算的实验,结果发现软件能够准确地计算出目标日期。

这对于人们进行时间规划和安排非常方便。

4. 多时区显示功能在实验中,我们还测试了万年历软件的多时区显示功能。

通过设置不同的时区,我们观察软件是否能够准确地显示不同地区的时间。

实验结果显示,软件能够根据设置的时区自动调整时间显示,确保用户能够准确了解不同地区的时间。

5. 天气预报功能一些万年历软件还提供了天气预报功能,可以显示当前和未来几天的天气情况。

我们对软件的天气预报功能进行了测试,结果显示软件能够准确地显示天气情况,并且提供了详细的天气信息。

这对于人们出行和活动的决策非常有帮助。

四、结论通过本实验,我们验证了万年历软件的准确性和可靠性。

它能够准确地显示日期、提醒节假日、进行日期计算、显示多时区时间以及提供天气预报等功能。

万年历实训报告

万年历实训报告

万年历实训报告目录第一部分:实训目的 (2)第二部分:实训意义 (2)第三部分:实训内容 (3)(一)硬件实训内容 (3)(二)软件实训内容 (3)1.秒、分的VHDL语言及CNT60模块 (3)2.时的VHDL语言及CNT24模块 (4)3.天的VHDL语言及tian模块 (6)4.月的VHDL语言及yue模块 (7)5.年的VHDL语言及nian模块 (9)6.调试的VHDL语言及tiaoshi模块 (10)7.显示的VHDL语言及xianshi模块 (11)8.万年历的原理图 (12)第四部分:实训中疑难解答 (14)第五部分:实训心得 (15)一.实训目的(一)硬件实训目的:1. 熟悉EDA实验箱的基本工作原理。

2. 熟悉并掌握EDA实验箱各个模式的功能。

3. 提高学生的动手能力。

(二)软件实训目的:1.熟悉并掌握Quartus II 6.0软件的使用。

2.熟练的使用原理图输入设计方法,VHDL语言编写程序,进一步了解和掌握各个程序语言,提高编程的熟练程度。

3.掌握年、月、日、时、分、秒程序的原理,进而理解万年历的设计原理。

4.拓宽学生知识面,增强工程意识,培养学生的分析和解决实际问题的能力。

5.提高学生的动手能历。

二.实训意义该数字时钟实现了调时、年、月、日、时、分、秒的显示功能,无需接译码器,可直接接八段共阴极数码管,总体结构如下图所示:第一部分第二部分第三部分D8(l5)D7(l2) D6 D5 (l4) D4(l1) D3 D2(l3)D18个LED数码管为了显示清楚只用了6个数码管,分为3个部分。

采用的是EDA试验箱上的模式7。

软件Quartus II 6.0方面:在显示程序中,k3控制分屏。

当k3=‘1’时,3部分数码管显示年、月、日;当k3=‘0’时,3部分数码管显示时、分、秒。

万年历正常工作时,D1~D8都不亮。

调时时,秒的变化不需控制,故需调时有年、月、日、时、分5个量。

实验报告4--万年历综合实验

实验报告4--万年历综合实验

实验报告
班级学号姓名同组人实验日期室温大气压成绩
3.2、系统时钟电路
LPC2100系列ARM7微控制器可使用外部晶振或外部时钟源,内部
运行速度更快(CPU最大操作时钟为60MHz)。

倘若不使用片内PLL功能及
3.3、键盘电路
3.4、LED显示电路
在显示方面,EasyARM2131开发板采用了一片74HC595驱动一位静态共阳
其时钟(SCK)、数据(SI)分别接到LPC2131的SPI接口的SCLK0、MOSI0
片选(RCK,即74HC595输出触发端)与P0.29口连接,由P0.29控制
输出(SQH)连接到LPC2131的SPI接口的MISO0,可用来读回数据。

这样连接就可以进行实验,并能把74HC595的移位输出读回来(由MISO0读回)。

这一部份电路通过在使用硬件SPI接口主方式时,要把SPI0/1的4个I/O口均设置为
而且SSEL0/1引脚不能为低电平,一般要接一个10KΩ的上拉电阻。

、蜂鸣器控制电路
如图1.11所示,蜂鸣器使用PNP三极管Q1进行驱动控制,当P0.7控制电平输出0
鸣器蜂鸣;当P0.7控制电平输出1时,Q1截止,蜂鸣器停止蜂鸣;若把JP6选择断开连接,
器停止蜂鸣。

Q1采用开关三极管8550,其主要特点是放大倍数高hFE = 300,最大集电极电流ICM =1500mA fT = 100MHz。

3.6实时时钟
3.6.1概述
实时时钟(RTC,Real Time Clock)提供一套计数器在系统上电和关闭操作时对时间进行测量,
3.7、PWM脉宽调制器3.7.1 概述。

万年历课程设计报告

万年历课程设计报告
软件工程一班
设计题目
万年历
内容概要:
设计用的计算机环境:WindowsXP,Turboc2.0和Microsoft Visual C++ 6.0
设计所运用的语言:C语言
算法中涉及的知识点:定义整型,字符型,指针变量,字符型数组和指针数组。数组的初始化和引用和指针的使用。
设计所包含的基本功能:模仿现实生活中的挂历.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月,每页的颜色都不相同。
int flag=0;
do
{
int f=0;
do
{
f=0;
printf("\n请输入相应数字:");
scanf("%s",menu);
if(strlen(menu)>2)f=1; //测量字符串长度。数字字符串长
}
while(f==1);
switch(*menu)
{
case '1':
system("cls"); //清屏
1.3课题的意义
掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。为了能更好地了解C语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。

万年历的实训报告模板

万年历的实训报告模板

摘要:本实训报告旨在通过对万年历的设计与应用,加深对时间管理、编程技术以及用户界面设计的理解。

通过实训,我们不仅学会了万年历的基本原理,还掌握了编程实现和用户体验优化的方法。

以下是对实训过程的详细记录和分析。

一、实训目的1. 理解万年历的基本原理和设计思路。

2. 掌握编程语言(如Python、Java等)在万年历开发中的应用。

3. 提升用户界面设计能力,优化用户体验。

4. 培养团队合作与沟通能力。

二、实训环境1. 操作系统:Windows 102. 开发工具:Python3.8、PyCharm3. 用户界面设计工具:Qt Designer4. 数据库:SQLite三、实训原理万年历是一种用于记录和显示日历的工具,它按照公历或农历的日期排列,方便用户查看和查询。

万年历的设计原理主要包括以下几个方面:1. 闰年判断:通过判断年份是否为4的倍数来确定是否为闰年,同时还需考虑能被100整除但不能被400整除的年份不是闰年。

2. 月份天数:根据月份和闰年/非闰年的判断来确定每月的天数。

3. 星期计算:根据年、月、日计算出星期几。

4. 农历转换:根据农历的算法将公历日期转换为农历日期。

四、实训过程1. 确定项目需求:根据实训要求,设计一个功能齐全、界面友好的万年历软件。

2. 设计软件架构:确定软件的模块划分,包括主界面、日期计算、农历转换等模块。

3. 编写代码实现:使用Python语言实现万年历的各个功能模块。

4. 用户界面设计:使用Qt Designer设计软件的用户界面,包括日期选择、查询结果展示等。

5. 数据库设计:使用SQLite数据库存储万年历的数据,包括日期、农历信息等。

6. 调试与优化:对软件进行调试,修复可能出现的问题,并优化用户体验。

五、实训结果1. 成功实现万年历的基本功能,包括公历和农历的日期转换、查询等。

2. 软件界面简洁美观,用户操作方便。

3. 数据库设计合理,保证了数据的完整性和安全性。

万年历实训报告

万年历实训报告

一、任务目的通过万年历的设计与制作,进一步熟悉单片机内部定时器、I/O口、中断、提高实践能力二、设计要求用单片机设计一个功能实用,使用简便万年历,具体要求:根据提供的单片机键盘接口模块电路,加上必要的外部电路,设计出万年历的硬件电路,编写软件,用Proteus进行仿真实验,然后进行实物的软硬件调试,并撰写符合要求的实训报告。

三、系统硬件电路设计可分为最小系统、键盘电路、显示部分等几个单元电路,要求画出各部分电路图,写出工作原理。

这是仿真总图1、最小系统:最小系统包括时钟电路和复位电路。

时钟信号的产生:在MCS-51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端引脚为XTAL2。

只在XTAL1和 XTAL2之间跨接晶振和微调电容,就可以构成一个稳定的自激振荡器。

复位电路,可分为上店复位电路和按键复位电路,在电子琴设计中采用的是按键复位电路。

该电路用RESET键实现复位,此时电源经两个电阻分压,在RST 端产生一个复位高电平2、按键电路:因为显示数码有限,所以就用P2_7口来判断,即当P2_7=0时显示时分秒;P2_7=1显示年月日。

而三个按钮分别是年月日或时分秒对应的加法按钮。

端,而P1口是段码输入端,来进行动态扫描。

四、软件设计#include<at89x51.h>unsigned int hour=0, min=0,sec=0,c=0,r=20, y=3,n=2012;unsigned char led[]={0x11,0xd7,0x32,0x92,0xd4,0x98,0x18,0xd3,0x10,0x90}; void delay(unsigned int x){unsigned int j;while(x--)for(j=0;j<125;j++);}void main(){TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;while(1){ unsigned int q=0;for(q=0;q<50;q++){ if (P2_7==0){P0=0XFE;P1=led[sec%10];delay(1);P0=0XFd;P1=led[sec/10];delay(1);P0=0XFb;P1=led[min%10];delay(1);P0=0Xf7;P1=led[min/10];delay(1);P0=0Xef;P1=led[hour%10];delay(1);P0=0Xdf;P1=led[hour/10];delay(1);}else{P0=0XFE;P1=led[r%10];delay(1);P0=0XFd;P1=led[r/10];delay(1);P0=0XFb;P1=led[y%10];delay(1);P0=0Xf7;P1=led[y/10];delay(1);P0=0Xef;P1=led[n%10];delay(2);P0=0Xdf;P1=led[n%100/10];delay(2);P0=0xbf;P1=led[n%1000/100];delay(2);P0=0x7f;P1=led[n/1000];delay(2);}}if(P2_0==0){delay(1);if(P2_0==0);if(sec==60){min++;}else sec++;}if(P2_1==0){delay(1);if(P2_1==0);if(min==60){hour++;}else min++;} if(P2_2==0){delay(1);if(P2_2==0);if(hour==24){r++;}else hour++;}if(P2_0==0){delay(1);if(P2_0==0);if(y==1||y==3||y==5||y==7||y==8|y==10||y==12){if(r==31){r=1;y++;}else r++;}if(y==2){if(((n%400==0||n%4==0&&n%100!=0))&&r>=29){r=1;y++;}else if(((n%400==1||n%4==1&&n%100!=1))&&r>=28){r=1;y++;}else r++;}if(y==4||y==6||y==9||y==11){if(r==30){r=1;y++;}else r++;}}if(P2_1==0){delay(1);if(P2_1==0);if(y==12){n++;y=1}else(y++);}if(P2_2==0){delay(1);if(P2_2==0);n++;}}}void T0_1() interrupt 1{ TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;c++;if(c==20) { c =0; sec++;}if(sec==60){sec = 0; min++; }if(min==60) { min=0; hour++; }if(hour==24){hour=0;r++;}if(y==1||y==3||y==5||y==7||y==8|y==10||y==12){if(r==31){r=1;y++;} else r++;}if(y==2){if(((n%400==0||n%4==0&&n%100!=0))&&r>=29){r=1;}else if(((n%400==1||n%4==1&&n%100!=1))&&r>=28){r=1;y++;}else r++;}if(y==4||y==6||y==9||y==11){if(r==30){r=1;y++;}else r++;}if(y==12){n++;y=1}else y++;}五、系统调试该万年历要实现以下功能:1、实现正常走时;2、能够校准时间和日期;3、能够自动区分平润年和大小月;在仿真过程中出现的最典型的问题是按下加法按钮要么出现闪烁或抖动,要么就加法跳动数次,经分析与试验得知这是由于延时时间使用不当,于是我们在循环扫描的前面加一个FOR语句循环50次后再扫描是否有键被按下六、心得体会通过此次万年历的设计与制作,获得了丰富的理论知识,极大地提高了实践能力。

java课程设计万年历报告

java课程设计万年历报告

java课程设计万年历报告一、课程目标知识目标:1. 掌握Java语言基础,包括数据类型、运算符、控制结构等;2. 学会使用Java中的类和对象,理解面向对象编程思想;3. 了解Java中日期时间处理类,如java.util.Calendar和java.time包的使用;4. 能够运用所学知识设计并实现一个简单的万年历程序。

技能目标:1. 培养学生运用Java语言解决实际问题的能力;2. 提高学生的编程实践能力,使其能够独立完成程序的设计、编码、测试和调试;3. 培养学生查阅资料、自学新知识的能力,为后续学习打下基础。

情感态度价值观目标:1. 培养学生热爱编程,对计算机科学产生浓厚兴趣;2. 培养学生积极思考、主动探究的学习态度,提高其解决问题的自信心;3. 培养学生良好的团队合作精神,学会在团队中沟通与协作。

分析课程性质、学生特点和教学要求:本课程为Java语言编程课程,旨在让学生掌握Java编程基础,并能运用所学知识解决实际问题。

学生处于初中年级,具备一定的逻辑思维能力,对新鲜事物充满好奇心,但编程实践经验不足。

因此,教学要求注重理论与实践相结合,以项目驱动教学,激发学生兴趣,培养其编程技能和解决问题的能力。

课程目标分解:1. 知识目标:通过讲解和练习,使学生掌握Java基础知识和日期时间处理类;2. 技能目标:通过项目实践,培养学生编程能力和解决问题的能力;3. 情感态度价值观目标:通过团队合作和互动交流,激发学生兴趣,培养其积极的学习态度和价值观。

二、教学内容1. Java基础知识回顾- 数据类型与变量- 运算符与表达式- 控制结构(顺序、分支、循环)2. 面向对象编程基础- 类与对象- 方法- 封装、继承、多态3. Java日期时间处理类- java.util.Calendar类- java.time包(LocalDate、LocalTime、LocalDateTime)4. 万年历项目实践- 项目需求分析- 程序设计(界面设计、功能模块划分)- 编码实现(关键代码:日期计算、界面展示)- 测试与调试5. 教学内容的安排和进度- Java基础知识回顾(1课时)- 面向对象编程基础(2课时)- Java日期时间处理类(1课时)- 万年历项目实践(3课时)6. 教材章节及内容列举- 《Java编程思想》第3章:控制结构- 《Java编程思想》第4章:面向对象编程- 《Java核心技术 卷I》第9章:日期时间处理教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合,以项目驱动教学,使学生在实践中掌握Java编程知识。

万年历实验报告

万年历实验报告

1 / 6用控制语句实现万年历一、 实验题目用控制语句实现万年历控制语句在程序设计中非常重要,通过控制语句,程序可以转向不同的流程。

控制语句的应用也是程序设计的基础,是必须要掌握的重要知识。

程序主要实现3个功能:显示某一年的每一个月的日历、显示某一年某一月的日历以及查询某一天是星期几。

程序功能结构如下图2.1所示。

图2.1二、 实验目的用户可以通过菜单选择不同的选项实现不同的功能,通过输入想要显示的年份,可以输出年的日历;输入年和月,可以输出该月的日历;输入年、月以及日,可以查询这一天是星期几。

三、 实验要求程序主要的设计要求如下:(1) 功能选择可以用菜单来实现。

例如: 请选择您的查询内容: 1. 显示一年的日历; 2. 显示一月的日历;3. 显示某一天是星期几; 0. 退出;用户通过输入不同的数字进入不同的菜单。

(2)每一月以日历表格的形式显示,表格的第一行显示星期,表格的内容是每一天。

用户可以很容易看到每一天是星期几。

四、 设计思想说明功能1:要想输出一年的日历,首先得解决输出一个月日历的问题,然后用循环输出十二月份的。

首先提示由键盘输入要显示的年份,得到年份后开始进入循环,定义月份变量month ,并赋初值为1(从一月份开始),第一步,进入monthdays(intyear,int month)函数判断月份天数,然后根据进入void printmonth(int year,int month)函数根据年月计算出该月一号是星期几并输出月份和每周的表头,由循环空出一号前面空的部分,再由另一个循环,加上前面该月天数的判断,就能输出该月的日历,此时一个月的日历输出完毕,进入第二次循环,输出下一个月的日历,知道十二个月份的日历全部输出,循环结束,第一个功能实现。

功能2:第二个功能是第一个功能的一部分,只需要输出一个月的日历,这是月份不是由1开始,而是由键盘输入的,日历输出方法与第一个功能中的方法相似。

万年历课程设计实验报告

万年历课程设计实验报告

黄淮学院JAVA 课程设计报告题目:《万年历》课程设计学院:信息工程学院专业:计算机科学与技术班级:计科1101班指导老师:二0一三年六月目录前言 (2)1需求分析 (3)1.1需求分析 (3)1.2功能设计 (3)2.概要设计 (3)2.1程序设计思路 (3)3.流程图 (7)4.程序的主要类,和说明: (7)C (19)F (20)G (20)I (20)M (21)S (21)U (21)类分层结构 (22)接口分层结构 (22)前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了Java。

1997年J2SE1.1发布。

1998年J2SE1.2发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有Java ME,Java SE和Java EE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中Java Development Kit 简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

1需求分析1.1需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。

C++万年历实验报告

C++万年历实验报告

C++万年历实验报告一、基本介绍万年历是一款可以展示日历的小应用程序,它能够显示不同年月日的具体日期,以及该日期是星期几等信息。

本次实验中,我们使用C++语言来实现这个功能,通过输入年月日等信息,计算出具体的日期信息,并且输出展示在屏幕上。

二、设计思路1. 基本 calendar 类我们首先需要创建一个calendar类,用于进行日期计算并且输出日历信息。

该类中包含以下成员变量和方法:- 成员变量:- m_year - 日历所在年份- m_month - 日历所在月份- m_day - 日历所在日- calendar() - 构造函数,初始化成员变量为0- set_date() - 设置日历日期- is_leapyear() - 判断当前年份是否为闰年- month_days() - 计算当前月份有多少天- week_day() - 计算当前日期是星期几- print_calendar() - 输出日历信息2. 输入信息为了方便用户输入信息,我们使用了getline()函数来获取用户输入的年、月、日信息,然后将其转换成整数型,并调用set_date()方法,将该信息赋值给我们的calendar 对象。

3. 计算并输出信息我们先根据输入的年份,判断是否为闰年,并且调用month_days()方法来计算出输入的月份有多少天。

然后,我们利用week_day()方法来计算出输入的日期是星期几,最后输出展示在屏幕上。

三、实现细节1. 日期设置设置日期时,我们需要检查输入的年月日是否符合实际情况。

例如,月份不能大于12,每月天数也不能超过实际天数。

2. 星期计算计算星期时,我们采用了一个基于蔡勒(Zeller)公式的方法。

根据该公式,我们可以计算出任何给定日期是星期几,具体方法如下:weekday = (day_num + ((13 * adjusted_month - 1) / 5.0) + adjusted_year + (adjusted_year / 4.0) - (adjusted_year / 100.0) + (adjusted_year / 400.0)) % 7;其中day_num是当前日期数,adjusted_month是当前月份数(3代表3月,4代表4月,以此类推),adjusted_year是当前年份。

万年历实训报告心得

万年历实训报告心得

万年历实训报告心得
我在参加万年历实训过程中学到了很多东西。

首先,我了解了如何设计和编写一个简单的万年历应用程序。

我学会了使用Java编程语言以及Java Swing GUI库来创建一个可以展示任意年份、月份和日期的日历。

其次,在实训过程中,我学到了如何使用版本控制工具Git来管理代码。

我了解了如何创建本地仓库、提交更改、创建分支和合并分支等操作。

这些知识对我的日后学习和工作都非常有用。

最后,在实训过程中,我还学到了如何与团队合作。

我们小组中的每个人都有自己的任务,并且我们需要相互协作来完成整个项目。

这让我更好地了解了团队合作的重要性。

总之,万年历实训让我学到了很多有用的知识和技能。

我相信这些知识和技能会在我的日后学习和工作中发挥巨大的作用。

- 1 -。

万年历程序实验报告

万年历程序实验报告

万年历程序实验报告一、实验目的与要求1.实验目的:(1)能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。

(2).在软件系统开发过程中,能综合利用一门编程语言、和软件工程二门课程的知识。

(3).通过实例使同学们掌握结构化数据流分析技术。

2.要求:(1)软件需求分析:要求做到使用结构化数据流分析技术分析课题需求,写出详细的数据流图和数据字典,数据流图的基本处理的个数不得少与5个。

(2)软件设计与编码:要求做到对上一实验的软件需求进行软件结构设计,模块数不少于四个。

然后再进行详细设计并编码。

程序要符合结构化程序的要求。

(3)软件测试和调试:要求掌握如何设计测试方案、撰写测试说明书,并掌握程序修改的常用技术。

要求对上一实验所编的程序进行测试,要分步进行,要有详细的测试说明书,要测试通过。

二、实验方案(一)软件需求分析1.需求分析:编制一个万年历程序,程序包括的功能查询具体某年某月某日是星期几,查询某一年是否闰年,打印某一年的年历。

2.根据需求画出初步的数据流图:把“万年历系统”细化,得出完整的数据流图如下:3.根据需求分析与数据流图,写出卡片式的数据字典(2)软件设计与编码1.首先进行总体设计,根据需求,系统应该划分功能模块如下:2.进行详细设计 按照需求,本系统有上图所示的三个功能模块,所以在编码设计的时候,应该就分别设计三个功能模块,三个功能模块主要就是三个分别的算法。

先定义本程序主要的几个数据项:char*month_str[]={"January","February","March","April","May","June","July","August","September","Oc tober","November","December"}; //月份的名称,在列印年历的功能时候使用到char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};//星期,在查询具体某天是星期几时候使用到接着就是三个算法,因为三个算法都是借鉴别人的,所以就不在这里显示了,最后在main 函数用switch 语句把三个功能组合起来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件工程》实验报告
学号:099074069
姓名:朱霄
班级:计092
指导教师:周兵
实验题目:编写一个万年历程序
要求:
输入一个年份(1-3000),然后显示12个月的月历,如屏幕显示不下,则应提供翻页功能。
一:实验目的
1、能按照软件工程的思想,采用面向对象过程的方法开发出一个小型的软件系统
2、在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程知识
year_start++;
}
for(temp=1;temp<=12;temp++){
switch(temp)
{
case 1:
printf("--------January(%d)--------\n",year);
break;
case 2:
printf("---------February(%d)--------\n",year);
break;
case 9:
printf("---------August(%d)---------\n",year);
break;
case 10:
printf("---------October(%d)---------\n",year);
b---------November(%d)---------\n",year);
int isleapyear(int year){
if((year%4==0)&&(year%100!=0)||year%400==0)
return 1;
else
return 0;
}
void main(){
int isleapyear(int);
int i,day,year,temp,temp_i,year_start=1,per_year_days,iserror=1;
3、培养良好的软件开发习惯,了解软件企业文化
4、掌握结构话数据流分析技术
5、掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格
6、掌握单元测试的一般步骤及技术
7、掌握集成测试的一般步骤和技术
二:实验内容
1、功能需求分析
·能列出公元元年到3000年所有月历
·能解决闰年和平年问题
·能输出显示结果
int month_days[]={31,28,31,30,31,30,31,31,30,31,30,31,29};
long int year_days=0;
while(iserror){
printf("Enter the year:");
scanf("%d",&year);
if(year<1||year>3000)
break;
case 12:
printf("---------December(%d)---------\n",year);
break;
}
i=year_days%7;
printf("Mon Tue Wed Thu Fri Sat Sun\n");
if(i!=0)
for(temp_i=0;temp_i<i;temp_i++)
break;
case 3:
printf("---------March(%d)---------\n",year);
break;
case 4:
printf("---------April(%d)---------\n",year);
break;
case 5:
printf("---------May(%d)---------\n",year);
心得与体会:通过这次实验让我对结构化程序设计有了更深一步的理解,了解到了软件设计的思想,也认识了软件测试和调试的重要性,对程序的模块化设计有了更深的理解。通过自己的努力完整地按照结构化的编程思想做好万年历程序,从中获益匪浅。
printf(" ");
day=1;
if(isleapyear(year)&&temp==2)
while(day<=month_days[12]){
if(day>1)
if(year_days%7==0)
printf("\n");
if(day>=10)
printf("%d ",day);
else
printf("%d ",day);
printf("input error!\n");
else
break;
getch();
}
·确定闰年
if((year%4==0)&&(year%100!=0)||year%400==0)
·显示表头
·计算一月一日
·程序代码:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
day++;
}
printf("\n");
if(getch()=='q')
exit(0);
}
}
5、单元测试与集成测试
·测试方案设计:
·白盒测试
输入若干数据,对程序逻辑路径进行测试,检验内部控制结构和数据是否
有错,实际的运行状态与预期的状态是否一致;
·测试数据:2012(闰年)2011(平年)test:-1, 3001
printf("input error!\n");
else
break;
getch();
}
while(year_start<year){
if(isleapyear(year_start))
per_year_days=366;
else
per_year_days=365;
year_days=year_days+per_year_days;
year_days++;
day++;
}
else
while(day<=month_days[temp-1]){
if(day>1)
if(year_days%7==0)
printf("\n");
if(day>=10)
printf("%d ",day);
else
printf("%d ",day);
year_days++;
break;
case 6:
printf("---------June(%d)---------\n",year);
break;
case 7:
printf("---------July(%d)---------\n",year);
break;
case 8:
printf("---------January(%d)---------\n",year);
白盒测试结果
·黑盒测试
根据程序的提示输入数据,检查程序是否满足功能要求。
·黑盒测试结果
启动程序,输入年份2012,按下enter键的时候会显示所有的月历。
输入年份2011,按下enter键的时候会显示所有的月历
按ESC键即可退出应用程序。
三、总结与心得:
总结:通过测试,程序内部控制结构和数据结构没有出现问题,实际运行结果和预期的相符合。
2、运行需求分析
·运行于window xp及更高版本操作系统上
3、数据流图
4、软件设计与编码
·检查输入
·输入数据是否超出程序处理范围
·输入数据是否非法字符机器处理
while(iserror){
printf("Enter the year:");
scanf("%d",&year);
if(year<1||year>3000)
相关文档
最新文档