电子日历课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《电子日历》

程序设计基础课程设计报告

专业:

班级:

姓名:

学号:

指导教师:

年月日

目录

1、课程设计的目的、课程设计题目、题目要求 (3)

1.1课程设计的目的 (3)

1.2课程设计的题目 (3)

1.3题目要求 (3)

2课程设计的实验报告内容: (3)

3课程设计的原程序代码: (5)

4运行结果 (5)

5. 课程设计总结 (11)

6参考书目 (13)

1课程设计的目的

1.1课程设计的目的:

通过以前的学习以及查看相关资料,按着题目要求编写程序,进一步加强对

编程的训练,使得自己掌握一些将书本知识转化为实际应用当中.在整个程序中,主要应用的是链表,但是也运用了类.通过两种方法解决现有问题.

1.2课程设计的题目:用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。

1.3题目要求:

1、利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。

2、能在屏幕上输出月份日历.

2课程设计的实验报告内容:

整个程序采用类与链表相结合的编程方法一共完成了8个功能.在每个功能输入时,若未按所给的提示信息操作便会给出相应的报错信息.这样使整个程序运行起来更加完整.程序中有class Client//会员类以及class Chain_belt//链表类

在会员类class Client中设有void input_1(Client *haid)//手动录入函数和int input()//自动录入函数,进行对会员的录入,它包含有辨别功能,如果所输入的编号已经存在便会给出相应的信息,录入通过插入形式录入直接将顺序排好..在friend void save(Client *haid)保存功能内定义了static ifstream ofile;输入流静态成员,保证每次调用input()时,指针地址不会改

变.

链表类class Chain_belt//中包含了Client *set_array()//建立初级链表, Client *cut_in(Client &b,Client *haid1)//插入void amend(Client *haid,int n,int i)//修改链表编号函数void amend_name(Client *haid,char b[20])//根据姓名查询Client *delete1(Client *haid,int n)删除,统计void total_age(Client *haid)//统计不同年龄段的人数void total_month(Client *haid)//统计不同时间段的资金情况,输出功能的函数,这些功能都是通过链表实现的,而在主函数主要运用了goto语句进行循环.运用if语句设置不同的功能条件,进行不同的功能实现.

3课程设计的原程序代码:

#include

void main()

{

int n,x,y,a[32],i,j,k;

n=x=y=i=-1;

while(n<0)

{

printf("请输入年份:");

scanf("%d",&n);

}

while(x>7||x<1)

{

printf("请输入星期(1-7数字):");

scanf("%d",&x);

}

while(y<0||y>12)

{

printf("请输入月份:");

scanf("%d",&y);

}

while(i<31)

a[++i] = i;

n%400==0?k=1:n%4==0&&n%100!=0?k=1:k=0;//是否为闰年n=0;//初始化天数

switch(y-1)//某月末至1月1日有多少天

{

case 11:n+=334;i=0;break;

case 10:n+=304;i=1;break;

case 9:n+= 273;i=0;break;

case 8:n+= 243;i=0;break;

case 7:n+= 212;i=1;break;

case 6:n+= 181;i=0;break;

case 5:n+= 151;i=1;break;

case 4:n+= 120;i=0;break;

case 3:n+= 90;i=1;break;

case 2:n+= 59;i=0;break;

case 1:n+= 31;i=3;break;

case 0:i=0;break;

}

if(y>2)//2月以后

{

n=(n+k+x)%7;//求要输出的空格个数}

else n=(n+x)%7;

if(y==2&&k==1)//闰月

i = 4;

for(y=0;n>0;n--)

{

printf(" ");

y++;

}

for(j=1;j<=31-i;j++)

{

if(y%7==0)

putchar('\n');

printf("%4d ",a[j]);

y++;

}

printf("\n");

}

4运行结果:

相关文档
最新文档