欢迎来到天天文库
浏览记录
ID:49202012
大小:364.00 KB
页数:57页
时间:2020-02-01
《C++从入门到精通 系列 第24章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第24章信息管理不用愁——信息管理系统实战日历系统学生成绩管理系统银行卡管理系统第24章信息管理不用愁——信息管理系统实战日历系统学生成绩管理系统银行卡管理系统第24章信息管理不用愁——信息管理系统实战日历系统学生成绩管理系统银行卡管理系统第24章信息管理不用愁——信息管理系统实战日历系统学生成绩管理系统银行卡管理系统24.1日历系统本系统实现了控制台下打印日历。只要输入指定年份,就能打印出该年的日历,包括星期。通过本例的学习,培养读者在VC++6.0环境中,学会调试程序的能力,巩固分支结构和循环
2、结构的知识,让读者形成C++模块化设计的思想。24.1日历系统24.1.1系统分析24.1.2功能分析及实现24.1.3开发常见问题及解决24.1.1系统分析1.需求分析随意给出某年(如2003年),可以显示该年的日历(包括每月的天数和对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐,美观。24.1.1系统分析2.系统分析根据问题描述,整个系统包含2个模块,为了体现模块化编程的思想,对每一个模块都分别编写函数来实现。系统流程图如下。输入年份显示日历开始结束输
3、入年份显示日历开始结束24.1.2功能分析及实现1.定义日历类01classcalendar02{03intweekday;04intyear;05public:06voidprintmonthdays();//打印每月的日历07voidprinttitle(intm);//打印日历头08intmonthdays(intm);//计算每月的天数09intfirstday(inty);//计算每年的第一天是周几10};24.1.2功能分析及实现2.计算每月的天数在一年中有的月份是30天,有的是31天
4、,2月份的天数根据是否是闰年不同,又有28天和29天的区别。24.1.2功能分析及实现01intcalendar::monthdays(intm)//判断每月的天数02{03switch(m)04{05case1:06case3:07case5:08case7:09case8:10case10:11case12:12return31;//1,3,5,7,8,10,12每月有31天13case4:14case6:15case9:16case11:17return30;//4,6,9,11每月有30天
5、18case2:19if(((year%4==0&&year%100!=0)
6、
7、year%400==0))//判断是否闰年。20return29;21else22return28;23default:return0;24}25}24.1.2功能分析及实现3.打印日历01voidcalendar::printmonthdays()02{03intdays;04for(intn=1;n<=12;n++)//12个月份05{06printtitle(n);//打印日历头07days=monthdays(
8、n);08for(inti=1;i<=days;i++)09{10printf("%5d",i);11weekday=(weekday+1)%7;12if(weekday==0)printf("");13}14printf("");15}16}24.1.2功能分析及实现4.打印每月的日历头01voidcalendar::printtitle(intm)//02{03inti;04printf("%d月日一二三四五六",m);05printf("");06for(i=0;i9、day;i++)07printf("");08}24.1.2功能分析及实现5.判断每年的第一天是星期几intfirstday(intyear)//判断元旦是星期几{doubles;s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);return(int)s%7;}24.1.2功能分析及实现6.提示打印模块01voidmain(intargc,char*argv[])02{0304intyear;05intweekday;06ca10、lendarcal;07printf("请输入你要查看的年份:");08scanf("%d",&year);09weekday=cal.firstday(year);10printf("");11printf("%d年",year);12cal.printmonthdays();//打印日历13printf("");14}24.1.3开发常见问题及解决⑴从公元01年的第一天开始考虑(01年1月1日对应星期一),以计算从01年至该年开始的总天数;⑵注意每月的天数不
9、day;i++)07printf("");08}24.1.2功能分析及实现5.判断每年的第一天是星期几intfirstday(intyear)//判断元旦是星期几{doubles;s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);return(int)s%7;}24.1.2功能分析及实现6.提示打印模块01voidmain(intargc,char*argv[])02{0304intyear;05intweekday;06ca
10、lendarcal;07printf("请输入你要查看的年份:");08scanf("%d",&year);09weekday=cal.firstday(year);10printf("");11printf("%d年",year);12cal.printmonthdays();//打印日历13printf("");14}24.1.3开发常见问题及解决⑴从公元01年的第一天开始考虑(01年1月1日对应星期一),以计算从01年至该年开始的总天数;⑵注意每月的天数不
此文档下载收益归作者所有