求一篇,C语言时钟和万年历的程序设计论文。在线等,谢谢了

作者&投稿:柘昂 (若有异议请与网页底部的电邮联系)
c语言 万年历的程序设计~

#include
#include
#include
#include
using namespace std;
int week(int,int,int); //根据年月日判断星期几
int leap_year(int); //判断闰年
void display_year(int ); //显示某年日历
void demand_day(int,int,int); //查询某天
int main()
{
int y,m,d,es=1;
while(es)
{
HANDLE consolehwnd;
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(consolehwnd,12);
cout<<"请选择操作:
1→显示某年日历\

2→查询某天
0→退出"<<endl;
char tp[20];cin>>tp;
if(tp[1]!='\0'||tp[0]>'2'||tp[0]<'0'){cout<<"输入有误"<<endl;continue;}
switch(tp[0]-48)
{
case 1:{cout>y;system("cls");display_year(y);break;}
case 2:{cout>y>>m>>d;system("cls");
demand_day(y,m,d);break;}
case 0:{es=0;break;}
}
}
return 0;
}
//-----根据年月日判断星期几-------------------------
int week(int y,int m, int d)
{
int week1,yy=y;
if(m==1) {m=13;yy--;}
if(m==2) {m=14;yy--;}
week1=(d+2*m+3*(m+1)/5+yy+yy/4-yy/100+yy/400)%7;
int s;
switch (week1)
{
case 0: s=1; break;
case 1: s=2; break;
case 2: s=3; break;
case 3: s=4; break;
case 4: s=5; break;
case 5: s=6; break;
case 6: s=0; break;
}
return s;
}
//----判断闰年-------------------------------------
int leap_year(int y)
{
int i;
if((y%4==0&&y%100!=0)||y%400==0)i=1;
else i=0;
return i;
}
//--------显示某年日历------------------------
void display_year(int y)
{
int n1,n2,i,j,a[13],c,d;
HANDLE consolehwnd;
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(consolehwnd,5);
cout<<setw(38)<<y<<"年"<<endl;
cout<<setw(28)<<"*********";
for(i=1;i<=27;i++)cout<<'*';
cout<<endl;
a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;//
a[4]=a[6]=a[9]=a[11]=30; //确定每月天数
if(leap_year(y))a[2]=29;
else a[2]=28; //
for(i=1;i<=11;i+=2) //六次循环
{
SetConsoleTextAttribute(consolehwnd,1);
cout<<setw(14)<<i<<"月"<<setw(42)<<i+1<<"月"<<endl;
SetConsoleTextAttribute(consolehwnd,2);
cout<<setw(4)<<"日"<<setw(4)<<"一"<<setw(4)<<"二"<<setw(4)<<"三"<<setw(4)\
<<"四"<<setw(4)<<"五"<<setw(4)<<"六";
cout<<setw(16)<<' ';
cout<<setw(4)<<"日"<<setw(4)<<"一"<<setw(4)<<"二"<<setw(4)<<"三"<<setw(4)\
<<"四"<<setw(4)<<"五"<<setw(4)<<"六"<<endl;
SetConsoleTextAttribute(consolehwnd,7);
n1=week(y,i,1);n2=week(y,i+1,1);
if(n1) //-----------
{
for(j=1;j<=n1;j++) //
cout<<setw(4)<<' ';
}
for(j=1;j<=7-n1;j++)
cout<<setw(4)<<j;
cout<<setw(16)<<' ';
if(n2)
{ //-----输出每次循环的第一行---
for(j=1;j<=n2;j++)
cout<<setw(4)<<' ';
}
for(j=1;j<=7-n2;j++)
cout<<setw(4)<<j;
cout<<endl; //--------------
c=8-n1;d=8-n2;
for(int m=1;m<6;m++) //每月日历最多占六行
{
if(c>a[i])couta[i],则该月的这一行全部输出空格
for(j=c;j<=a[i];j++)
{
cout<<setw(4)<<j;
if((j-c+1)%7==0){c=j+1;break;}
if(j==a[i]){cout<<setw((6-week(y,i,a[i]))*4)<<' ';c=j+1;break;}
//如果j是该月最后一天,该行剩下的全部补空格
}
cout<<setw(16)<<' ';
if(d>a[i+1])cout<<setw(4*7)<<' ';
for(j=d;j<=a[i+1];j++)
{ //
cout<<setw(4)<<j;
if((j-d+1)%7==0){d=j+1;break;}
if(j==a[i+1]){cout<<setw((6-week(y,i+6,a[i+1]))*4)<<' ';d=j+1;break;}
}
cout<<endl;
}
cout<<endl;
}
cout<<endl;
}
//--------查询某天------------
void demand_day(int y,int m,int d)
{
int n;
HANDLE consolehwnd;
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(consolehwnd,5);
n=week(y,m,d);
switch(n)
{
case 1:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期一"<<endl;break;
case 2:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期二"<<endl;break;
case 3:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期三"<<endl;break;
case 4:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期四"<<endl;break;
case 5:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期五"<<endl;break;
case 6:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期六"<<endl;break;
case 0:cout<<y<<"年"<<m<<"月"<<d<<"日"<<","<<"星期日"<<endl;break;
default:break;
}
cout<<endl;
}

10分太低,额..当然我也不是说人家会冲你的分数来,其实这个项目设计也不是太难,比我最近做的要简单一些,估计你也是大一学生吧,这种题目百度一下应该会有一大把的

我的课程设计报告,希望对你有帮助!

成绩

课程设计报告册
20 09 ~ 20 10 学年 第 2 学期

课程名称: C语言课程设计
任课教师:
班 级: B090602
姓 名: 臧富跃
学 号: B09060243

20 10 年 6 月

一.课程设计题目:万年历
二.题目要求:
(1) 程序运行的开始显示当前份的年年历
(2) 能够按照输入的年份显示月历
(3) 当输入小于1900的年份时退出程序

三.题目分析:
课程设计题目的分析,功能模块的划分。
(1)首先要根据起始年份判断每年的第一天是周几,然后根据周几控制每月的第一行输出的空格!
(2)判断每年是否为闰年,并设置相关的2月份的天数!
四.模块设计(流程图):
各个模块的设计说明,包括模块的名称、功能、入口参数说明与返回值说明,以及各个模块实现过程的说明(必要时画出流程图)。
(1)main函数: 该函数为程序入口,通过一个do-while来实现当输入年数小于1900时程序退出,否则main函数调用calculate函数,并将输入年数作为参数传递给claculate函数!
(2)calculate函数:该函数有一个参数,为main函数传递进来的输入年份,返回类型为void, 该函数负责从main函数中承接输入年份并显示出来,然后调用standpirnt函数

(3)standpirnt 函数:该函数有一个参数,为calculate函数传递进来的输入年份,返回类型为void,该函数负责实现标准的日历格式输出,根据循环次数设定每月的天数,并且通过tag与tag2来控制每个月的月首的空格!并且通过调用dayOfweek获得输入年份的第一天是周几,并且输出相应空格!
(4)dayOfweek函数:该函数有一个参数,是输入的年数,返回值为该年的第一天是周几,该函数负责返回输入年数的第一天是周几,并输出一个与周几匹配的空格数!
五.源代码:
各个模块实现的源代码。
main 函数:
void main() {
int input = 0;
int jude = 1;
do {

printf("please input a year!\n");
scanf("%d",&input);
if(input <= 1900) {
printf("DATA ERROR !!!");
jude = 0;
}
printf("the year is %d\n",input);

//这里判断是否闰年!
if(jude)
calculate(input);
} while(jude);
}

*************************************************************
Calculate 函数:
//该函数负责显示年份并且调用standpirnt函数!
void calculate(int year) {
printf("%d\n",year);
standpirnt(year);
// dayOfweek(year);

}

standpirnt函数

void standpirnt(int year){
//这里测试日历格式输出!
int date[31] = {0};

for(int i=0; i<31; i++) {
date[i] = i+1;
}
int input = year;
int tag = 0;
int tag2 = 0;
int leap = 0;
int ccyd = 0;
int bug = 0;
for(int j=0; j<12; j++) {

printf("******************************\n");
printf(" %d 年 %d 月\n",input,(j+1));
printf("******************************\n");
printf(" 日 一 二 三 四 五 六\n");
//设定月份的天数!

if(input % 4 ==0 || input %100 ==0 && input%400 != 0) ccyd = 1;
switch((j+1)) {
case 1: leap = 31;break;
case 2: ccyd?leap = 29:leap = 28;break;
case 3: leap = 31;break;
case 4: leap = 30;break;
case 5: leap = 31;break;
case 6: leap = 30;break;
case 7: leap = 31;break;
case 8: leap = 31;break;
case 9: leap = 30;break;
case 10: leap = 31;break;
case 11: leap = 30;break;
case 12: leap = 31;break;
}

//这里控制跳转换行!
for(int k =0; k<leap; k++) {

if(k==0 && j == 0) {
tag = dayOfweek(input);
if(tag == 7) tag = 0;
}

else if(k==0) {

switch(tag2) {
case 0: printf(" "); break;
case 1: printf(" "); break;
case 2: printf(" "); break;
case 3: printf(" "); break;
case 4: printf(" "); break;
case 5: printf(" "); break;
case 6: printf(""); break;
}

}

printf("%3d",date[k]);
tag ++;
//新加的
if(date[k] == leap) {
tag2 = tag - 1;
}

if(tag==7) {
printf("\n");
tag = 0;
}
}
printf("\n");
}
}
dayOfweek 函数:
//该函数负责判断输入年数的第一天是周几!
int dayOfweek(int dayy) {

int value = 0;
int input2 =dayy ;

int start = 1990;
int days = 1;
days = input2 - start;

int total = 0;
int years[100000] = {0};
for(int i=0; i<days; i++) {
years[i] = start + i;

if(years[i] % 4 == 0 || (years[i] %100 ==0 && years[i] %400 !=0)) {
//printf("是闰年!");

total += 366;

}
else{
//平年!
total += 365;
}
}

int week = total % 7;
switch(week) {
case 0: value = 1;
printf(" "); break;
case 1: value = 2;
printf(" "); break;
case 2: value = 3;
printf(" "); break;
case 3: value = 4;
printf(" "); break;
case 4: value = 5;
printf(" "); break;
case 5: value = 6;
printf(" "); break;
case 6: value = 7;
printf(""); break;
}
return value;
}
六.测试与调试:
设计系统及各模块的测试方法、测试方案。
(1)完成main函数后,通过输入小于1900函数观察程序是否退出来测试程序main模块是否正常!
(2)完成calculate函数后,在main中调用calculate函数,在calculate中输出相关信息来判断calculate函数是否正常!
(3)完成standpirnt函数后,在calculate函数中调用,观察在控制台输出的日历格式是否正确!
(4)完成dayOfweek函数后,在standpirnt函数中调用,最终观察输出情况!
七.课程设计总结:
(1)通过该课程设计,增强了对C语言中函数调用,与换行跳转的理解与掌握。
(2)加深了对面向过程编程思想的理解!
(3)对万年历的具体实现有了深刻的理解!


C语言编辑一个程序。要求在屏幕上显示一个图形时钟(用程序绘制一个与...
include<stdio.h> include<dos.h> include<conio.h> include<math.h> include<graphics.h> define PI 3.1415926 int main(){ int X=300,Y=250,R=100,RR=130;int X_HOUR,X_MINUTE,X_SECOND;int Y_HOUR,Y_MINUTE,Y_SECOND;int X_DRAW=0,Y_DRAW=0,R_DRAW=120;int NUM=0;struct ...

求用单片机c语言做一个电子时钟,实现调时、显示、整点报时等功能。_百...
(1)用数字逻辑集成块实现;(2)时间以24小时为一个周期,显示时、分、秒;(3)计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时;(4)为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。c51单片机 晶振为11.0592MHz include<reg52.h> define HOUR1 1 define HOUR0 0 de...

c语言中的时钟问题
include"stdio.h"include"graphics.h"include"math.h"include"time.h"include"dos.h"int point_sec,point_min,point_hour;int x,y,z;int array_sec[60][2];int array_min[60][2];int array_hour[60][2];int a[60][2];void zhongmian(){ int n,m,p;x=320;y=240;z=140;point_...

用单片机写一个C语言程序关于电子时钟,用键盘调制时分秒的加减 第一个...
我给你一个保证好用的,KEY_COM调模式,按一下进入调时 ,在按一下调分,再按一下退出调时模式,这时加减按键都无效,在调时模式时会产生闪烁方式,这段程序是我自己想的办法实现的,可能有点笨拙,但效果很好,我建议你用DS1302做时钟,用单片机计数器由于晶振等原因会有很大的误差,实际中没有用...

怎么使用C语言制作一个时钟?
这个也是我在别的地方找到的 很好的 include "stdio.h"include "graphics.h"include "math.h"include "time.h"include "dos.h"define r 200 define pi 3.1415926 define X(a,b,c) x=a*cos(b*c*pi\/180-pi\/2)+300; \/*遇到X(a,b,c) 就用x=a*cos(b*c*pi\/180-pi\/2)+300 ...

c语言 时钟模拟
include<math.h> include<dos.h> include<graphics.h> include<conio.h> include define PI 3.141592653589793 int h,m,s,i,l,mon,y,d;struct time t;struct date data;draw(){ gettime(&t); \/\/取得时间信息到t s=t.ti_sec; \/\/秒 h=t.ti_hour; \/\/时 m=t.ti_min; \/\/分 get...

能帮我用C语言编写一个时钟的程序么 Visual c\/c++ 新手 没分 求帮助...
include <windows.h> include <gl\/gl.h> include <gl\/glu.h> include <gl\/glut.h> include <math.h> \/\/ Rotation amounts static GLfloat xRot = 0.0f;static GLfloat yRot = 0.0f;\/\/ Current Time static GLfloat h = 0; \/\/小时 static GLfloat m = 0; \/\/分钟 static GL...

求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图
\/\/***DS1302读写程序***\/\/\/*** 函 数 名:RTInputByte()功 能:实时时钟写入一字节说 明:往DS1302写入1Byte数据 (内部函数)入口参数:d 写入的数据 返 回 值:无 ***\/void RTInputByte(uchar d) { uchar h;

单片机C语言编程问题。怎么实现按键切换两个子程序啊。。(时钟和温度...
应该用一个标志位,如果你这种是普通的按键,即按下时是低电平,松开时是高电平的,大概这样写,在main声明一个变量,作为标志位.char Flag;然后按键按下时,直到弹起按键才改变Flag的状态。if(!Key){ while(!Key);Flag=~Flag;} if(Flag){ time = hour*100 + min;ShowTest(time);delay();...

用C语言编数码管时钟程序
05-02-01 \/ include <reg51.h> \/\/LCD的口线 sbit E=P3^5;sbit RW=P3^6;sbit RS=P3^7;\/\/8字LED的连接方法 \/\/P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0 \/\/G, F A E B H C D sbit l1=P2^7;sbit l2=P2^6;sbit l3=P2^5;sbit l4=P2...

同心县13111705542: c语言 万年历的程序设计 -
道胃富马: #include <windows.h> #include <winnt.h> #include<iostream>#include<iomanip> using namespace std; int week(int,int,int); //根据年月日判断星期几 int leap_year(int); //判断闰年 void display_year(int ); //显示某年日历 void demand_day(int,int,...

同心县13111705542: 求一篇,C语言时钟和万年历的程序设计论文.在线等,谢谢了 -
道胃富马: 我的课程设计报告,希望对你有帮助!成绩课程设计报告册 20 09 ~ 20 10 学年 第 2 学期课程名称: C语言课程设计 任课教师: 班 级: B090602 姓 名: 臧富跃 学 号: B0906024320 10 年 6 月一.课程设计题目:万年历 二.题目要求: (...

同心县13111705542: 设计一个万年历c语言 -
道胃富马: #include int getDays(int year,int month,int day); int isLeapYear(int year); int getMonthDays(int year,int month); void main() { int year,month,day; int i,days=0,weekday,monthdays; int calendar[42]={0}; char *p[7]={"SUN","MON","TUE","WES...

同心县13111705542: C语言程序设计 万年历查询程序. -
道胃富马: 实验名称:万年历的查询及打印【内容】:设计一个查询并打印万年历的程序.【步骤】:1. 画出程序流程图;2. 编写程序;3. 调试程序,对调试过程中出现的问题进行分析,找出错误的原因并予改正;4. 写出通过调试并修改正...

同心县13111705542: 求一个C语言编写的万年历系统. -
道胃富马: 这是你要的 呵呵:系统库定义#include "stdio.h" #include "BIOS.h" #include "dos.h" #define X " Sun Mon Tue Wed Thu Fri Sat" #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define PGUP ...

同心县13111705542: c语言怎么样编写一个时钟程序 -
道胃富马: c语言时钟程序代码如下:#include<windows.h>#include<math.h>#define ID_TIMER 1//计时器ID#define TWOPI (2*3.14159) LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hInstance,...

同心县13111705542: 求 c语言课程设计 关于日历显示 高手们 帮帮忙哈 不要用图片 -
道胃富马: 万年历的输出:输入一个年份,将整年的日历显示出来:#include int monthCode[12]={1,4,4,7,2,5,7,3,6,1,4,6};int monthday[12]={31,28,31,30,...

同心县13111705542: 急求一份C语言实验报告:C语言编写一万年历系统设计报告 -
道胃富马: 程序如下: #include<stdio.h>#include<time.h> int c,week=0,p; FILE *fp; int dyear(int year) { int leap; leap=(year%4==0&&year%100!=0)||year%400==0; return leap; } int day_of_year(int year,int month,int day) { int k,leap; int tab[2][12]={ {31,28,31,...

同心县13111705542: C语言"年历显示"程序设计 -
道胃富马: #includeint leap(int); //判断是否为闰年 int md(int m,int y); //返回本月的天数 void prtweek(void); //输出表头 int fw(int m,int y); //返回本月一号是星期几 void prtmonth(int m); //输出月份表头 int main(int argc, char* argv[]) { int y,m,i,test,week; printf("Year:"); scanf("%d",&y); for (m=1; m

同心县13111705542: 求C语言程序万年历设计
道胃富马:#include "stdio.h" int leap(int); /*判断是否为闰年*/ int md(int month,int year); /*返回本月的天数*/ void prtweek(void); /*输出表头*/ int fw(int month,int year); /*返回本月一号是星期几*/ void prtmonth(int month); /*输出月份表头*/ void main(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网