电子日历课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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运行结果: