实习报告书防灾科技学院灾害信息工程系2013年制实习目的:本课程是信息管理与信息系统专业的一门专业必修课程,是学生学习完C语言程序设计专业基础课程后,进一步学习其他专业课程前必须完成的一项实践教学环节。
也是信息管理与信息系统专业实习、信息管理与信息系统生产实习、信息管理与信息系统毕业实习课程的基础。
本次实习通过4-5个综合性强、实用性强的应用实例,使学生了解本专业毕业生所能从事的工作种类及工作岗位规格要求;培养学生掌握面向过程程序设计的基本素养、思维方法及技能,能够熟练应用C程序设计语言描述问题、解决问题,提高学生的综合编程能力。
使学生进一步明确学习目标、增强学习动力、培养学习兴趣,为后继专业课程的学习打下坚实的基础。
实习任务概述:任务一:万年历任务二:学生成绩管理系统任务三:简易四则运算计算器任务四:双人对战五子棋实习所用软件简介:Visual C++是一个功能强大的可视化软件开发工具。
自1993年Microsoft 公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。
Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。
这些组件通过一个名为Developer Studio的组件集成为任务一:万年历1.系统需求分析在日常生活中经常需要用计算器,比如科学计算、数值计算、会计业务等,实现一个简单的四则运算计算器,拥有加、减、乘、除功能,使用户方便、快捷。
2.系统环境要求使用C语言在VC环境下设计一个带图形界面的简易四则运算计算器,需要Windows 2000y以上的系统,Visual C++6.0/2008 (x86 & x64)/2010 (x86 & x64),Win32 Console Application和EasyX库。
3 系统功能及模块图1.输入年份,打印出十二月历和对应的星期2.输入年月,打印出该月的日历和对应的星期3.输入年月日,判断是星期几,是不是公历的某个节日4.根据系统日期推算出某一个日期距离今天还有多少天模块图:4.主要函数Int isleap(int year)/*判断是否为闰年*/Int maxDay(int year、int month)/*判断某一个月的天数*/int eachyeartotal(int year,int month,int day)/*判断某天是一年中的第几天*/int week(int year,int month,int day)/*对天数进行判断确定是星期几*/ void display(int year ,int month) /*输出年月*/void display1(int year) /*输出年历*/void display2(int year,int month) /*输出月历*/void display3(int year,int month,int day) /*输出日历*/int counterdays(int year,int month,int day)/*判断今天距特定日期的天数*/void whatweek(int year,int month,int day) /*判断是星期几*/void jieri(int month,int day) /*判断是否公历节日*/void getmenu() /* 显示菜单选择*/void setDay3(int year,int month,int day)/*通过键"PageUp""PageDown"控制日期的变换*/void setDay2(int year,int month,int day) /*通过键盘"←""→"控制月历的变换*/void setDay1(int year,int month,int day) /*通过键盘"↑""↓"控制年历的变换*/4.具体实现:#include <time.h> /*包含的头文件*/#include <stdio.h>#include <math.h>#include <windows.h>#include <conio.h>#define KEYNUMUp 0x48 /*宏定义*/#define KEYNUMDown 0x50#define KEYNUMLeft 0x4b#define KEYNUMRight 0x4d#define KEYNUMPageUp 0x49#define KEYNUMPageDown 0x51int eachyeartotal(int year,int month,int day); /*函数声明*/int counterdays(int year,int month,int day);int nowtime(int year,int month,int day);int week(int year,int month,int day);int maxDay(int year,int month);int isleap(int year);void getmenu();void whatweek(int year,int month,int day);void display(int year ,int month);void display2(int year,int month);void display3(int year,int month,int day) ;void setDay1(int year,int month,int day);void setDay2(int year,int month,int day);void setDay3(int year,int month,int day);void jieri(int month,int day);void display1(int year);int isleap(int year) /*判断是否为闰年*/{if(year%4==0&&year%100!=0||year%400==0)return 1;elsereturn 0;}int maxDay(int year,int month) /*每月的天数*/{int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; /*每个月中的天数*/ if(isleap( year))a[1]=29; /*闰年2月份有29天*/ return a[month-1];}int eachyeartotal(int year,int month,int day) /*判断某天是一年中的第几天*/ {int i,sum=0;for(i=1;i<month;i++)sum+=maxDay(year,i);sum+=day;return sum;}int week(int year,int month,int day) /*对天数进行判断确定是星期几*/ {int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7 ;return number;}void display(int year ,int month) /*输出年月*/{int max,number,i,j=1;max=maxDay(year,month);number=week(year,month,1);printf(" %4s %4s %4s %4s %4s %4s %4s\n","Sun","Mon","Tue","Wed", "Thu","Fri","sat");for(i=0;i<number;i++)printf(" "); /*1号前的星期补空格*/ while(j<=max){printf("%6d",j);if (i%7==6)printf("\n"); /* 每7格换一行*/i++;j++;}printf("\n\n");}void display1(int year) /*输出年历*/ {int i;printf("\n");for(i=1;i<=12;i++){printf("%d 年%d 月\n\n ",year,i);display(year,i);}}void display2(int year,int month) /*输出月历*/{printf("\n%d 年%d 月\n ",year,month);display(year,month);}void display3(int year,int month,int day) /*输出日历*/{whatweek( year,month,day);jieri(month,day);counterdays(year,month, day);}int counterdays(int year,int month,int day) /*判断今天距特定日期的天数*/{int year1, days0,days1,month1,days, day1;time_t timep;struct tm *p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year) ;month1=(1+p->tm_mon) ;day1=(p->tm_mday); /*获取系统时间year1、month1、day1分别为年、月、日*/days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1 );days=days0-days1; /*计算出两个日期之间的时间差*/printf("\n 今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}void whatweek(int year,int month,int day) /*判断是星期几*/{int number;number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7 ;switch( number){case 0:printf( "\n %d年%d月%d日是星期日",year,month,day);break;case 1:printf( "\n %d年%d月%d日是星期一",year,month,day);break;case 2:printf( "\n %d年%d月%d日是星期二",year,month,day);break;case 3:printf( "\n %d年%d月%d日是星期三",year,month,day);break;case 4:printf( "\n %d年%d月%d日是星期四",year,month,day);break;case 5:printf( "\n %d年%d月%d日是星期五",year,month,day);break;case 6:printf( "\n %d年%d月%d日是星期六",year,month,day);break;default:system("cls");printf(" 出现错误!\n" );}}void jieri(int month,int day) /*判断是否公历节日*/ {if(month==1)switch(day){case 1:printf(",这天是元旦");}if(month==2)switch(day){case 14:printf(",这天是情人节");}if(month==3)switch(day){case 8:printf(",这天是妇女节");break;case 12:printf(",这天是植树节");}if(month==4)switch(day){case 1:printf(",这天是愚人节");}if(month==5)switch(day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if(month==6)switch(day){case 1:printf(",这天是儿童节");}if(month==7)switch(day){case 1:printf(",这天是建党节");}if(month==8)switch(day){case 1:printf(",这天是建军节");}if(month==9)switch(day){case 10:printf(",这天是教师节");}if(month==10)switch(day){case 1:printf(",这天是国庆节");}}void setDay1(int year,int month,int day) /*通过键盘"↑""↓"控制年历的变换*/ { char k;getch();k=getch();switch(k){case KEYNUMUp: /*"↑"年份减小*/ if(year<2){system("cls");printf(" 警告!超出范围!\n");break;}year--;display1(year);setDay1(year,month,day);break;case KEYNUMDown: /*"↓"年份变大*/ year++;display1(year);setDay1(year,month,day);break;default:system("cls");}}void setDay2(int year,int month,int day) /*通过键盘"←""→"控制月历的变换*/ {char k;getch();k=getch();switch(k){case KEYNUMLeft: /*"←"月份变小*/ if(month<2){month+=12;year--;}if(year<1){system("cls");printf(" 警告!超出范围!\n");break;}month--;display2(year , month);setDay2(year,month,day);break;case KEYNUMRight:/*"→"月份变小*/if(month>11){month-=12;year++;}if(year<9999);month++;display2(year , month);setDay2(year,month,day);break;default:system("cls");break ;}}void setDay3(int year,int month,int day) /*通过键盘"PageUp""PageDown"控制日期的变换*/{char k;getch();k=getch();switch(k){case KEYNUMPageUp: /*"PageUp"日期变小*/if(day<2){month--;day=maxDay(year,month);}if(month<1){month+=12;year--;}if(year<1){system("cls");printf(" 警告!超出范围!\n");break;}day--;display3(year , month,day);setDay3(year,month,day);break;case KEYNUMPageDown: /*"PageDown"日期变大*/day++;if(day>maxDay(year,month)){day=1;month++;}if(month>12)month-=12;year++;}if(year<10000);display3(year , month,day);setDay3(year,month,day);break;default:system("cls");break;}}void getmenu() /* 显示菜单选择*/{printf(" \t\t 欢迎进入万年历系统\t\n");printf(" \t\t 1、-> 年历显示\t\n");printf(" \t\t 2、-> 月历查询\t\n");printf(" \t\t 3、-> 日期查询\t\n");printf(" \t\t 4、-> 退出系统\t\n");}void main() /*主函数*/{int year,month,day,select;while(1){getmenu();printf(" 请输入相应数字:"); /*菜单选择*/scanf("%d",&select);system("cls");switch(select){case 1: /*当选择为1时显示年历*/printf(" 年历显示:输入年(如2011):");scanf("%d",&year);if(year>0&&year<10000) /*显示年份从0-10000 */{display1(year); /*调用函数*/printf(" 提示按↑:上一年按↓:下一年按其他键:返回菜单\n\n");setDay1( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");case 2: /*当选择为2显示月历*/printf(" 月历显示:输入年月(如2011,6):");scanf("%d,%d",&year,&month);if(year>0&&year<10000&&month>=1&&month<=12){display2(year,month);printf(" 提示按←:上个月按→:下个月按其他键:返回菜单\n\n");setDay2( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 3: /*当选择为3时显示日期*/printf(" 日期显示:输入年月日(比如2011,6,23):");scanf("%d,%d,%d",&year,&month,&day);if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<=maxDay(year,month) ){display3(year,month,day);printf(" 提示按PageUp:前一天按PageDown:后一天按其他键:返回菜单\n\n");setDay3( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 4:exit(0);default: /*当输入其他数字时,输入无效,重新输入*/system("cls");printf(" 输入无效,重新输入!\n");}}}截图如下:任务二:学生成绩管理系统1. 1.系统需求分析随着科学技术的不断发展,对人们的工作水平要求也越来越高,然而计算机就成为帮助人们解决问题的工具,熟练的运用计算机,它能为人们解决许多工作上的问题。