课程设计
学 号
班 级
冬天来了写一段话姓 名
指导教师
2007年 月 日
课程设计任务书
题目:正弦函数的图形表示
一、课程设计时间
2007年9月10日至2007年9月14日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
在图形模式下,绘制正弦函数sin(x)在x1~x2之间的图形。
注意:此程序必须用TC2.0编写。
三、课程设计要求
1. 程序质量:
✧ 贯彻结构化的程序设计思想。
✧ 用户界面友好,功能明确,操作方便。
✧ 用户界面中的菜单至少应包括“输入x的区间”、“开始绘制”、、“退出”3项。
✧ 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:_______ 人民警察职业道德规范学生签名:________
五、成绩:
六、教师评语:
目录
一、需求分析 Ⅰ
二、程序流程图 Ⅱ
三、核心技术的实现说明及相应程序段 Ⅹ
四、个人总结 ⅩⅣ
五、参考文献 ⅩⅣ
六、源程序 ⅩⅤ
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三大模块,其中他们的功能分别是:绘制图象(Strat Up)、函数参数的设定(Settings)、退出(Quit)。在这些函数当中,绘制图象(Strat Up)又包括菜单栏的绘制,函数图形及坐标轴的绘制和函数的缩放与移动;函数参数的设定(Settings)包括函数Y=ASin(Bx)+C的参数A、B、C及X的区间MinX~MaxX.
二、程序流程图
整体框架图
Y=ASin(Bx)+C
绘制函数图象及功能模块图
(1)菜单界面
(2)函数参数设置
焖排骨的家常做法
怎么重置手机(3)函数区间设置
(4)欢迎屏幕
(5)函数图象
(6)函数的缩放
(7)函数的上下移动
(8)函数的左右移动
三、核心技术的实现说明及相应程序段
void StartUp()/* 图形环境启动*/
{
Initialize();
Start();
Draw();
Pau();
}
/****************************************/
void Initialize()/* 图形设备初始化*/
{
int GD=VGA;
int GM=VGAHI;
int ErrorC;
clrscr();
initgraph(&GD,&GM,"");
ErrorC=graphresult();
if (ErrorC!=0)
{
printf("Graphics System ERROR");
exit(1);
}
cleardevice();
/****************************************/
void Start()/* 欢迎屏幕及视图初始化*/
{
tcolor(RED);
ttextstyle(TRIPLEX_FONT,0,9);
outtextxy(120,180,"Welcome");
tcolor(YELLOW);
ttextstyle(0,0,1);
outtextxy(6,470,"Press ");
getch();
cleardevice();
tfillstyle(SOLID_FILL,7);
tlinestyle(0,0,1);
bar(0,0,639,479);
tfillstyle(SOLID_FILL,BLUE);
bar(1,1,638,12);
Title("Function Graphics V0.1");
DrawRect(3,465,636,476);
DrawMenuBar();
Inform("Ready!");
}
/****************************************/
int ScreenX(double x)/*数学座标转换为屏幕坐标*/
少先队礼仪规范/*对于屏幕坐标而言,它的X轴坐标与数学坐标的正方向相同,而Y轴的坐标相反*/
{
return (316+ZOOM*x+RX*ZOOM);
}
int ScreenY(double y)
{
return (211-ZOOM*y+RY*ZOOM);
}
void MoveUp()
{
if(RY-1>=-15) RY-=1;
Draw();
Inform("MoveUp");
}
void MoveDown()
{ if(RY+1<=15) RY+=1;
Draw();
Inform("MoveDown");
}
void MoveLeft()
{
if(RX-1>=-15) RX-=1;
Draw();
Inform("MoveLeft");
}
void MoveRight()
{
if(RX+1<=15) RX+=1;
Draw();
Inform("MoveRight");
}
/****************************************/
/* 图形缩放*/寿司的做法视频
void ZoomIn()
{
if(ZOOM*1.5<=80) ZOOM*=1.5;
Draw();
Inform("ZoomIn");
}
void ZoomOut()
{
if(ZOOM/1.5>=1.5) ZOOM/=1.5;
Draw();
Inform("ZoomOut");
}
/* 目录的选择功能实现*/
switch(getch())
ca ‘0’: ;break;
ca ‘1’: ;break;
ca ‘2’: ;
判断所输入的数据是否符合要求:
void SetA()
{
do
{
printf("\nPlea Input A(-10~10):");
美的历程在线阅读
scanf("%f",&A);
if (A*A>100) printf("Input Wrong(-10~10)! Try Again.\n");
}while(A*A>100);
}
void SetB()
{
do
{
printf("\nPlea Input B(-10~10):");
scanf("%f",&B);
if (B*B>100) printf("Input Wrong(-10~10)! Try Again.\n");
}while(B*B>100);
}
void SetC()
{
do
{
printf("\nPlea Input C(-10~10):");
scanf("%f",&C);
if (C*C>100) printf("Input Wrong(-10~10)! Try Again.\n");
}while(C*C>100);
}
/****************************************/
/* 区间设置*/
void SetMaxX()
{
do
{
printf("\nPlea Input Max X(-100~100):");
scanf("%f",&MaxX);
if (MaxX*MaxX>10000||MaxX<=MinX) printf("Input Wrong.(-100~100),And MaxX>MinX! Try Again.\n");
}while(MaxX*MaxX>10000||MaxX<=MinX);
}
void SetMinX()
{
do
{
printf("\nPlea Input Min X(-100~100):");
scanf("%f",&MinX);
if (MinX*MinX>10000||MaxX<=MinX) printf("Input Wrong.(-100~100),And MinX<MaxX! Try Again.\n");
}while(MinX*MinX>10000||MaxX<=MinX);
四、个人总结
通过这次C语言的课设实践活动,使我充分的体会到自己的不足。这让我在实践中对C语言又有了一个全新的认识。这让我在了解到自己的不足的同时,使自己对C语言的掌握又加深了一步。尤其是在这次实践活动中,我的课题:
绘制函数SinX的过程中了解了更多的知识,对于C语言的绘图有了一定的掌握。使得自己可以运用程序画出简单的函数图象。在对C语言绘制图形的过程中,让自己了解到不少东西,如数学坐标转换成屏幕坐标,菜单栏及欢迎屏幕的制作,图形的缩放及移动,图形的颜色和立体感上也有了一定的了解,并可以进行一些简单的操作等
五、参考文献
1 谭浩强.C程序设计.北京:清华大学出版社,2005
六、 源程序
/* 编译预处理*/
#include <graphics.h>小蜜瓜
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <dos.h>
#include <string.h>
#define ESC 0x1b
#define MENU struct menu
/*>>>>>>>>>*//* 菜单结构体*/
struct menu
{
char Name[16];
int Value;
void (*Function)();
};
/*>>>>>>>>>*//* 全局变量*/
int RX=0,RY=0;
double ZOOM=10;