软件瀑布模型:自顶向下,逐步分析

问题的定义:需要解决的问题是什么

可行性分析:该软件是否可以实现,成本分析,技术分析

需求分析:需求功能的分解(重要)

概要设计:模块功能的设计,模块规模设计,参数传递,数据库设计等

详细设计:数据结构,算法

实现:编写代码,实现功能

测试:单元的测试,集成的测试,功能的测试,回溯测试

运行维护:上线运行,版本迭代

日历软件的制作:

问题定义:用于输入年,月,日,屏幕打印日历,参照window日历

可行性分析:yes

需求分析:

        输入:年,月,日

        处理:

                (1)input()接收输入结果

                (2)判断闰年,判断大月,判断小月

                (3)得出大月:31天  小月:30天  2月:28 29天(闰年)

                (4)判断输入的月份在1-12月

                (5)判断每月第一天是星期几:蔡勒公式

                        <1>蔡勒公式:判断1582年10月4日有以后的任意日期是星期几

                                        #计算每月第一天是星期几

                        <2>w=(y%100)+(y%100//4)+(y//100//4)-(2(y//100))+26(m+1)//10+1-1

                        <3>.w是星期几的数字代,星期一:1 星期二:2.......星期日:0

                        <4>.w可能是负数,需要处理为整数

                        <5>.蔡勒公式中若为1月或为2月表示为上一年的13月和14月,需要处理

                (6)输出一\t 二\t 三\t 四\t 五\t 六\t 日

                (7)根据计算的w将本月第一天与星期几对齐

                (8)输出每月的数字,间隔符\t,逢7换行

输出

概要设计:略

详细设计:略

实现:

测试:黑盒

#y:年 m:月 d:日 w:星期几  其他为控制
#2022-10-18 1.0版本    Andy

y=int(input('请输入四位数年份数字:'))
m=int(input('请输入月份数字:'))
t=0   #t变量用于表示闰年和平年的标志位
if y%4==0 and y%100!=0 or y%400==0:
    t=1
if m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12:
    d=31    #计算大月天数
elif m==2 and t==0:
    d=28   #计算平年2月天数
elif m==2 and t==1:
    d=29   #计算闰年2月天数
elif m==4 or m==6 or m==9 or m== 11:
    d=30  #计算小月的天数
if m>=1 and m<=12:  #保证输入月份在1-12月
    print('\n===============',y,'年',m,'月','====================\n')
    if m==1:
        m=13
        y=y-1   #若为1月则为蔡勒公式中为上一年的13月
    elif m==2:
        m=14
        y=y-1     #若为2月则蔡勒公式中为上一年的14月
    #蔡勒公式
    w=(y%100)+(y%100//4)+(y//100//4)-(2*(y//100))+26*(m+1)//10+1-1
    w=(w%7+7)%7    #保证w为正数
    if w==0:    #蔡勒公式中星期日数值为0,改为7
        w=7
    print('一\t二\t三\t四\t五\t六\t日')
    i=1
    while i<w:    #将本月第一天与星期几对齐
        print('\t',end='')
        i+=1
    i=1
    while i<=d: #循环输出每月的天数字
        print('%2d'%i,'\t',end='')
        if w%7==0: #%逢7换行
            print()
        w=w+1
        i=i+1
    print('\n===============================================\n')
else:
    print('日期错误')
#方法2:
#方2:
import calendar
y=int(input('请输入四位数年份数字:'))
m=int(input('请输入月份数字:'))
cal=calendar.month(y,m)
print(cal)