软件工程-万年历实验报告
万年历实训报告.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万年历设计报告

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的情况下,程序应给出错误提示信息,如下:输入的年份或月份不合法,请重新输入。
万年历设计报告

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万年历实验报告---软件工程老师:班级:学号:姓名:-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万年历实验报告一、引言万年历是一种用来记录时间和日期的工具,它可以帮助人们更好地组织日常生活和工作。
本实验旨在探究万年历的原理和功能,并通过实际操作来验证其准确性和可靠性。
二、实验设备和方法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个量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)