C语言课程设计-简谐振动实验的模拟
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二:基本要求
1)能够实现简谐振动的模拟;
2)简谐振动的振幅、频率以及相位由键盘输入;
3)能够实现动画效果。
三、系统分析和过程
简谐振动的函数是y=a*cos(w*x+f),是一条余弦函数。
振幅、频率和相位由键盘输入,最重要的是要使用到画图函数,并且实现动画效果。整个程序包括头文件,函数及变量声明,main主函数,开始页面函数,菜单页面函数,画图函数,输入处理函数和图形初始化函数。先用一个开始页面的函数,说明该程序的基本功能,再进入菜单页面,从中可以选择操作(输入处理函数选项、画图选项、退出选项),到其他函数。在输入处理函数中输入振幅、频率、相位,在画图函数中进行画图,能够实现动画效果,退出选项退出运行。
outtextxy(25,145,s);
sprintf(s,"can show changes of the(y) with time(t).");
outtextxy(25,167,s);
sprintf(s,"Press any key to enter to the Menu!");
outtextxy(25,193,s);
#include"stdlib.h"
#include"graphics.h"
#include"conio.h"
#include"math.h"
#include"time.h"
#define GAIN 10/*增益*/
void welcome();/*初始界面*/
void menu();/*选择菜单页面*/
outtextxy(25,30,s);
sprintf(s,"Instruction: ");
outtextxy(25,57,s);
sprintf(s,"This function of the program is that drawi");
outtextxy(25,79,s);
sprintf(s,"-ng two simple harmonic motion's waves");
getch();
closegraph();
menu();
}
void menu()
{
int cho;
system("cls");/*调用DOS命令清屏*/
printf("\t\t\tWelcome to use this program\n\n\n\n");
printf("\tPlease choose:\n\n");
void menu();/*菜单页面*/
void input();/*输入处理函数*/
void initial();/*图形初始化*/
void draw();/*画图及合成处理过程*/
在以下的清单中对它们列出,且简要说明。
四、流程图
True False
用户输入1(合成)2
五:程序清单
#include"stdio.h"
sprintf(s,"A2=%.2f,W2=%.2f",a2,w2);
outtextxy(480,190,s);
sprintf(s,"f2=%.2f",f2);
outtextxy(480,200,s);
/*合成函数信息区初始化*/
setfillstyle(1,7);
bar(467,297,612,403);
setfillstyle(7,14);
bar(4,4,636,476);
setcolor(4);
rectangle(11,11,629,469);
setfillstyle(1,1);
bar(12,12,628,468);
setfillstyle(1,7);
bar(26,26,454,404);
/*图形区动画区初始化*/
outtextxy(70,280,s);
/*函数Y1信息区初始化*/
setfillstyle(1,7);
bar(467,27,612,133);
setfillstyle(1,12);
bar(470,30,609,130);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);/*设置直线的风格(实线)一点宽*/
sprintf(s,"Dynamic");
outtextxy(480,40,s);
sprintf(s,"Information");
outtextxy(480,50,s);
sprintf(s,"of Y1:");
outtextxy(480,60,s);
sprintf(s,"A1=%.2f,W1=%.2f",a1,w1);
《C语言程序设计》
课程设计报告
题目
简谐振动实验的模拟
姓名
学号
同组人员
学号
年级专业
09电子信息工程(2)班
指导教师
完成日期
2010
年
6
月
13
日
一、问题描述
二、基本要求
三、系统分析和过程
四、流程图
五、源程序代码
六、小结及收获体会
七、参考文献
八、评定意见
一:问题描述
本程序设计是一个将物理问题与C语言程序设计结合的程序设计问题。能够实现用用C语言编程让计算机模拟简谐振动的实验,可以改变振动函数的各参数,绘出不同振幅、频率和相位的简谐振动图形。以及完成两简谐振动的合成。
难点是画图函数中画线,画图框,和实现动态效果,要运用到专门的函数,要了解他们的使用方法,作用,还要用到循环,要求能够在屏幕中显示出同方向传播的两列简谐波和它们的合成波,因此实现此功能必须引用图形函数,和其中很多功能的应用。
在屏幕中我们要实现三列波动态的演示效果,并能够在动态图形中观察三波的关系。因此在这里我们要引用时间函数来实现此功能。
void input();/*输入处理函数*/
void draw();/*画图函数*/
void initial();/*图形初始化*/
float a1,w1,f1;/*两振动的参数*/
float a2,w2,f2;
int main()
{
welcome();
menu();
return 0;
}
void welcome()
rectangle(20,20,540,380);
setfillstyle(1,13);
floodfill(19,19,14);
setcolor(15);
settextstyle(4,0,6);
outtextxy(135,55,"Welcome You!");
setviewport(100,150,540,380,0);
setfillstyle(1,12);
bar(470,300,609,400);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
sprintf(s,"Dynamic");
outtextxy(480,310,s);
sprintf(s,"Information");
outtextxy(480,320,s);
getch();
menu();
}}Βιβλιοθήκη void input(){
/*输入Y1的参数*/
printf("\n\n\t\tY1=A1*COS(W1*t+f1)\n");
printf("\t\tPlease input the parameters for Y1\n");
printf("\t\tA1=");
scanf("%f",&a1);
getch语言程序设计报告安徽师范大学物理与电子信息学院collegeelectronicinformationanhuinormaluniversity15六小结及收获体会回顾起此次课程设计我们有很多的感慨自从拿到题目到完成整个编程从理论到实践的过程中可以学到很多很多的的东西同时不仅可以巩固以前所学过的知识而且学到了很多在书本上所没有学到过的知识例如很多画图文件的应用加深了对c语言的学习理解
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
sprintf(s,"Dynamic");
outtextxy(480,160,s);
sprintf(s,"Information");
outtextxy(480,170,s);
sprintf(s,"of Y2:");
outtextxy(480,180,s);
textcolor(15);/*设置字体为白色*/
clrscr();
switch(cho)
{
case 1:input();break;
case 2:draw();break;
case 3:exit(0);
default:printf("Error input! Please input again: ");
{
char s[40];
/*屏幕初始化*/
int gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\tc");
cleardevice();
setbkcolor(0);/*设置背景为黑色*/
setfillstyle(6,14);/*用黄色粗“\\”线填充*/
printf("\t\tA2=");
scanf("%f",&a2);
printf("\t\tW2=");
scanf("%f",&w2);
printf("\t\tf2=");
scanf("%f",&f2);
printf("\n\t\tPress any key to return to the Menu");
printf("\t\tW1=");
scanf("%f",&w1);
printf("\t\tf1=");
scanf("%f",&f1);
/*输入Y2的参数*/
printf("\n\n\t\tY2=A2*COS(W2*t+f2)\n");
printf("\t\tPlease input the parameters for Y2\n");
outtextxy(480,70,s);
sprintf(s,"f1=%.2f",f1);
outtextxy(480,80,s);
/*函数Y2信息区初始化*/
setfillstyle(1,7);
bar(467,147,612,253);
setfillstyle(1,12);
bar(470,150,609,250);
getch();/*等待任意键* /
menu();
}
void initial()
{
char s[50];
setbkcolor(BLACK);/*设置背景色为黑色*/
cleardevice();/*清屏*/
/*画最外围的边框及内部一些边框*/
setfillstyle(1,3);
bar(1,1,639,479);
printf("\n\n\n\t\t1.Input");
printf("\t\t2.Draw");
printf("\t\t3.Exit\n");
printf("\n\n\n\n\t\tselect the number:");
scanf("%d",&cho);
textbackground(9);/*设置背景为淡蓝色*/
setcolor(14);
rectangle(20,20,420,230);
setfillstyle(1,12);
floodfill(21,100,14);
setcolor(1);
settextstyle(3,0,1);
/*程序功能说明部分*/
sprintf(s," Thanks for you to use this program!");
bar(2,2,638,478);
setfillstyle(1,1);
bar(8,8,632,472);
setviewport(40,40,600,440,1);
setfillstyle(1,2);
setcolor(YELLOW);
rectangle(0,0,560,400);
floodfill(50,50,14);
sprintf(s,"of SY:");
outtextxy(480,330,s);
setlinestyle(SOLID_LINE,0,NORM_WIDTH);/*设置直线风格为细线*/
本实验中我们调用了以下库函数:
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
#include<time.h>
为实现功能写了以下5个函数:
void welcome();/*开始页面*/
setfillstyle(1,0);
bar(30,30,450,400);
setcolor(15);
sprintf(s,"THE Y1:");/*三坐标轴的说明*/
outtextxy(70,40,s);
sprintf(s,"THE Y2:");
outtextxy(70,160,s);
sprintf(s,"THE SYNTHESZED BELOW:");
outtextxy(25,101,s);
sprintf(s,"andsynthesising the twoharmonic motions,");
outtextxy(25,123,s);
sprintf(s,"it also can draw synthesised motion's wave.It");
1)能够实现简谐振动的模拟;
2)简谐振动的振幅、频率以及相位由键盘输入;
3)能够实现动画效果。
三、系统分析和过程
简谐振动的函数是y=a*cos(w*x+f),是一条余弦函数。
振幅、频率和相位由键盘输入,最重要的是要使用到画图函数,并且实现动画效果。整个程序包括头文件,函数及变量声明,main主函数,开始页面函数,菜单页面函数,画图函数,输入处理函数和图形初始化函数。先用一个开始页面的函数,说明该程序的基本功能,再进入菜单页面,从中可以选择操作(输入处理函数选项、画图选项、退出选项),到其他函数。在输入处理函数中输入振幅、频率、相位,在画图函数中进行画图,能够实现动画效果,退出选项退出运行。
outtextxy(25,145,s);
sprintf(s,"can show changes of the(y) with time(t).");
outtextxy(25,167,s);
sprintf(s,"Press any key to enter to the Menu!");
outtextxy(25,193,s);
#include"stdlib.h"
#include"graphics.h"
#include"conio.h"
#include"math.h"
#include"time.h"
#define GAIN 10/*增益*/
void welcome();/*初始界面*/
void menu();/*选择菜单页面*/
outtextxy(25,30,s);
sprintf(s,"Instruction: ");
outtextxy(25,57,s);
sprintf(s,"This function of the program is that drawi");
outtextxy(25,79,s);
sprintf(s,"-ng two simple harmonic motion's waves");
getch();
closegraph();
menu();
}
void menu()
{
int cho;
system("cls");/*调用DOS命令清屏*/
printf("\t\t\tWelcome to use this program\n\n\n\n");
printf("\tPlease choose:\n\n");
void menu();/*菜单页面*/
void input();/*输入处理函数*/
void initial();/*图形初始化*/
void draw();/*画图及合成处理过程*/
在以下的清单中对它们列出,且简要说明。
四、流程图
True False
用户输入1(合成)2
五:程序清单
#include"stdio.h"
sprintf(s,"A2=%.2f,W2=%.2f",a2,w2);
outtextxy(480,190,s);
sprintf(s,"f2=%.2f",f2);
outtextxy(480,200,s);
/*合成函数信息区初始化*/
setfillstyle(1,7);
bar(467,297,612,403);
setfillstyle(7,14);
bar(4,4,636,476);
setcolor(4);
rectangle(11,11,629,469);
setfillstyle(1,1);
bar(12,12,628,468);
setfillstyle(1,7);
bar(26,26,454,404);
/*图形区动画区初始化*/
outtextxy(70,280,s);
/*函数Y1信息区初始化*/
setfillstyle(1,7);
bar(467,27,612,133);
setfillstyle(1,12);
bar(470,30,609,130);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);/*设置直线的风格(实线)一点宽*/
sprintf(s,"Dynamic");
outtextxy(480,40,s);
sprintf(s,"Information");
outtextxy(480,50,s);
sprintf(s,"of Y1:");
outtextxy(480,60,s);
sprintf(s,"A1=%.2f,W1=%.2f",a1,w1);
《C语言程序设计》
课程设计报告
题目
简谐振动实验的模拟
姓名
学号
同组人员
学号
年级专业
09电子信息工程(2)班
指导教师
完成日期
2010
年
6
月
13
日
一、问题描述
二、基本要求
三、系统分析和过程
四、流程图
五、源程序代码
六、小结及收获体会
七、参考文献
八、评定意见
一:问题描述
本程序设计是一个将物理问题与C语言程序设计结合的程序设计问题。能够实现用用C语言编程让计算机模拟简谐振动的实验,可以改变振动函数的各参数,绘出不同振幅、频率和相位的简谐振动图形。以及完成两简谐振动的合成。
难点是画图函数中画线,画图框,和实现动态效果,要运用到专门的函数,要了解他们的使用方法,作用,还要用到循环,要求能够在屏幕中显示出同方向传播的两列简谐波和它们的合成波,因此实现此功能必须引用图形函数,和其中很多功能的应用。
在屏幕中我们要实现三列波动态的演示效果,并能够在动态图形中观察三波的关系。因此在这里我们要引用时间函数来实现此功能。
void input();/*输入处理函数*/
void draw();/*画图函数*/
void initial();/*图形初始化*/
float a1,w1,f1;/*两振动的参数*/
float a2,w2,f2;
int main()
{
welcome();
menu();
return 0;
}
void welcome()
rectangle(20,20,540,380);
setfillstyle(1,13);
floodfill(19,19,14);
setcolor(15);
settextstyle(4,0,6);
outtextxy(135,55,"Welcome You!");
setviewport(100,150,540,380,0);
setfillstyle(1,12);
bar(470,300,609,400);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
sprintf(s,"Dynamic");
outtextxy(480,310,s);
sprintf(s,"Information");
outtextxy(480,320,s);
getch();
menu();
}}Βιβλιοθήκη void input(){
/*输入Y1的参数*/
printf("\n\n\t\tY1=A1*COS(W1*t+f1)\n");
printf("\t\tPlease input the parameters for Y1\n");
printf("\t\tA1=");
scanf("%f",&a1);
getch语言程序设计报告安徽师范大学物理与电子信息学院collegeelectronicinformationanhuinormaluniversity15六小结及收获体会回顾起此次课程设计我们有很多的感慨自从拿到题目到完成整个编程从理论到实践的过程中可以学到很多很多的的东西同时不仅可以巩固以前所学过的知识而且学到了很多在书本上所没有学到过的知识例如很多画图文件的应用加深了对c语言的学习理解
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
sprintf(s,"Dynamic");
outtextxy(480,160,s);
sprintf(s,"Information");
outtextxy(480,170,s);
sprintf(s,"of Y2:");
outtextxy(480,180,s);
textcolor(15);/*设置字体为白色*/
clrscr();
switch(cho)
{
case 1:input();break;
case 2:draw();break;
case 3:exit(0);
default:printf("Error input! Please input again: ");
{
char s[40];
/*屏幕初始化*/
int gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\tc");
cleardevice();
setbkcolor(0);/*设置背景为黑色*/
setfillstyle(6,14);/*用黄色粗“\\”线填充*/
printf("\t\tA2=");
scanf("%f",&a2);
printf("\t\tW2=");
scanf("%f",&w2);
printf("\t\tf2=");
scanf("%f",&f2);
printf("\n\t\tPress any key to return to the Menu");
printf("\t\tW1=");
scanf("%f",&w1);
printf("\t\tf1=");
scanf("%f",&f1);
/*输入Y2的参数*/
printf("\n\n\t\tY2=A2*COS(W2*t+f2)\n");
printf("\t\tPlease input the parameters for Y2\n");
outtextxy(480,70,s);
sprintf(s,"f1=%.2f",f1);
outtextxy(480,80,s);
/*函数Y2信息区初始化*/
setfillstyle(1,7);
bar(467,147,612,253);
setfillstyle(1,12);
bar(470,150,609,250);
getch();/*等待任意键* /
menu();
}
void initial()
{
char s[50];
setbkcolor(BLACK);/*设置背景色为黑色*/
cleardevice();/*清屏*/
/*画最外围的边框及内部一些边框*/
setfillstyle(1,3);
bar(1,1,639,479);
printf("\n\n\n\t\t1.Input");
printf("\t\t2.Draw");
printf("\t\t3.Exit\n");
printf("\n\n\n\n\t\tselect the number:");
scanf("%d",&cho);
textbackground(9);/*设置背景为淡蓝色*/
setcolor(14);
rectangle(20,20,420,230);
setfillstyle(1,12);
floodfill(21,100,14);
setcolor(1);
settextstyle(3,0,1);
/*程序功能说明部分*/
sprintf(s," Thanks for you to use this program!");
bar(2,2,638,478);
setfillstyle(1,1);
bar(8,8,632,472);
setviewport(40,40,600,440,1);
setfillstyle(1,2);
setcolor(YELLOW);
rectangle(0,0,560,400);
floodfill(50,50,14);
sprintf(s,"of SY:");
outtextxy(480,330,s);
setlinestyle(SOLID_LINE,0,NORM_WIDTH);/*设置直线风格为细线*/
本实验中我们调用了以下库函数:
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
#include<time.h>
为实现功能写了以下5个函数:
void welcome();/*开始页面*/
setfillstyle(1,0);
bar(30,30,450,400);
setcolor(15);
sprintf(s,"THE Y1:");/*三坐标轴的说明*/
outtextxy(70,40,s);
sprintf(s,"THE Y2:");
outtextxy(70,160,s);
sprintf(s,"THE SYNTHESZED BELOW:");
outtextxy(25,101,s);
sprintf(s,"andsynthesising the twoharmonic motions,");
outtextxy(25,123,s);
sprintf(s,"it also can draw synthesised motion's wave.It");