C语言课程设计-学生成绩管理系统软件设计分析方案 .docx
精品名师归纳总结安徽师范高校物理与电子信息学院C 语言程序设计试验报告专业名称:电子信息工程试验室: 3404试验课程: C 语言课程设计试验名称:打印月历姓名:同组人员: 指导老师:试验完成日期: 2021-6-26一、问题描述:打印月历程序要求在程序运行后年份和月份由键盘输入,然后依据日期和星期相吻合的次序把这个月的月历打印显示在屏幕上,打印的月历按星期一到星期日排列。可编辑资料 - - - 欢迎下载精品名师归纳总结二,基本要求:(1)要打印何年何月的月历完全由用户准备,在程序运行后由键盘输入。( 2)在打印月历中要留意闰年,大小月的问题,而且日期和星期要相对应。三、系统分析与设计。在打印月历程序中,程序可以依据用户输入的年份和月份在电脑屏幕上打印出该月的月历,打印的月历是按星期一到星期日排列的。初看起来,打印月历的程序的规律似乎特别简洁,实际上却要考虑大量细节性问题,例如,闰年和大小月问题。在程序的设计思路中,第一我定义了两个全局变量int month,year。然后我定可编辑资料 - - - 欢迎下载精品名师归纳总结义了两个函数 void printmessage_(1)和 void printmessage_(2)函数,第一个可编辑资料 - - - 欢迎下载精品名师归纳总结函数的功能是在打印月历前显示友好界面和关于本打印月历程序的Introductin。其次个函数的功能是在打印月历后显示此程序的制作者等信息。而后我定义了 int EstimateYearint year 函数,此函数是用来判定用户输入的年份是不是闰年(此函数有一个返回值,返回 1 代表是闰年,返回 0 代表是非闰年)。在后我定义了 int Judgeweekdayint year,int month函数,此函数的作用是用来判定用户输入的月份的 1 号是星期几。在函数体中有下面语句:rst=year-1+intyear-1/4-intyear-1/100+intyear-1/400+days 。weekday=rst%7。(函数的返回值即变量 weekday的值: 1 到 6 代表星期一到星期六,返回值是0 代表是星期日)。接下来就是最重要的事情了,也就是在电脑屏幕上打印出该月的月历。我在函数中定义了 Printclendarint weekday,int monthday函数,此函数的作用就是实现所需功能。在此函数中,我定义了计数变量i,j,通过 weekday的值可以知道此可编辑资料 - - - 欢迎下载精品名师归纳总结月的 1 号是星期几,在第一行打印 1 前全部打印 t,计数变量累加,计数变量的值达到 7( j 从 0 开头)就输出 n 换行,最终从其次行开头又进行循环,当 i 累加到这个月的总天数后终止循环,这样月历就打印出来了最终就是主函数了,在主函数中依次调用 printmessage_1 ,Judgeweekdayyear,month, Printclendarweekday,monthday,printmessage_2 , 最终在电脑屏幕上打印出相应年份的月份的月历。四、运行结果:程序运行后显现如下界面:在界面上会提示用户输入数据的格式(Year-Month,例如用户输入 2021-6后,程序会显示如下界面:可编辑资料 - - - 欢迎下载精品名师归纳总结又或者用户输入 2000-5,程序会显现如下界面:可编辑资料 - - - 欢迎下载精品名师归纳总结五、程序运行流程图:输程序开头提示用户输 入 year,month.可编辑资料 - - - 欢迎下载精品名师归纳总结入(year,month判定是否非法输入否return 0判定是否是闰年否monthdays2=29monthdays2=28判定此月的第一天是星期几打印该年此月的月历调用 printmessage_2 函数程序终止是是六、小结及收成和体会:在这次 C 语言程序设计中,我学到了很多东西,第一对于C 语言中循环的使用更加的娴熟,对于程序设计的思路也更加灵敏。当然在程序设计中我也遇到了很多问题,第一是Printclendarweekday,monthday函数的设计思想上有问题,当然最终通过努力才得以解决。仍有就是开头的时候我设计的打印月历的程序打印出来的月历排列是从星期日到星期一的,后来观看要求是要从星期一到星期日,在多次的试验下,我最终将程序的循环进行了转变,才实现了所需的功能。可编辑资料 - - - 欢迎下载精品名师归纳总结七、参考书目:(1) 、谭浩强版 C 语言程序设计教程(2) 、华中科大版标准 C 语言程序设计八、 C 语言程序设计打印月历完整源程序如下:#include <stdio.h> int month,year。void printmessage_1 printf"nt"。printf"nt *"。printf"nt *" 。printf"nt *Welcome to use this program .*"。printf"nt *" 。printf"nt *"。printf"n"。printf"nIntroduction:" 。printf"nIn this program,you can input a month in one year,then"。 printf"nit can show you the calendar of this month ."。 printf"n"。printf"nLet's have a try ."。printf"n"。printf"nPlease input the Year and Month Year-Month here : "。void printmessage_2printf"n-"。printf"n"。printf"nThank you for using this program ."。printf"ndesigner:"。printf"nXiong shi"。printf"nWang zhan n"。int EstimateYearint yearint leap。ifyear%4=0ifyear%100=0ifyear%400=0leap=1。可编辑资料 - - - 欢迎下载精品名师归纳总结elseelseleap=0。可编辑资料 - - - 欢迎下载精品名师归纳总结elseleap=1。leap=0。可编辑资料 - - - 欢迎下载精品名师归纳总结returnleap。int Judgeweekdayint year,int monthint days=0,i,rst,weekday。int monthdays13=0,31,28,31,30,31,30,31,31,30,31,30,31。if EstimateYearyear monthdays2=29。 for i=1。i<month。i+ days+=monthdaysi。 days+=1。rst=year-1+intyear-1/4-intyear-1/100+intyear-1/400+days。weekday=rst%7。returnweekday。Printclendarint weekday,int monthdayint dt=1,i,j=0。printf"n"。printf"nttThe calendar of %d in %d tt",month,year 。printf"n-"。printf"ntMontTuetWedtThutFritSattSunn"。printf" t" 。for i=1。i<weekday。i+printf"t" 。j+。while j.=7printf"%3d",dt 。if j<6printf"t" 。elseprintf"nt" 。dt+。j+。可编辑资料 - - - 欢迎下载精品名师归纳总结while 1for j=0。j<7。j+printf"%3d",dt 。if j.=6printf"t" 。elseprintf"nt" 。if dt.=monthday dt+。elsereturn 0。mainint monthday,weekday,monthdays13=0,31,28,31,30,31,30,31,31,30,31,30,3。1 printmessage_1。scanf"%d-%d",&year,&month 。if year<0|month<1|month>12 return 0。if EstimateYearyear monthdays2=29。monthday=monthdaysmonth。 weekday=Judgeweekdayyear,month。 Printclendarweekday,monthday。 printmessage_2 。物理与电子信息学院课程设计评定看法可编辑资料 - - - 欢迎下载精品名师归纳总结主要内容包括:设计报告内容的完整性和完整情形、报告格式的规范性、通过课程设计取得的收成等。成果:签名:年月日指导老师评语注:本页与上一页用A3 纸套印成封面和封底,课程设计报告正文用A4 纸打印然后装订可编辑资料 - - - 欢迎下载