常州大学数学与应用数学专业证券投资学实务课程设计word报告

常州大学  

 课 程 设 计 任 务 书

设计课程名称:              证券投资学课程设计             

题        目:      关于Goals Soccer Center plc 公司的     

                           分析报告投资可行性              

小 组 成 员:            郭宏宇 12453118 (组长)            

        蔡耀元 12453116      陈冬冬 12453117    

        金昊哲 12453119      冷天12453120     

学  院(系):  信息、数理   专 业 班 级:   应用数学121 

指 导  教 师:      刘方     专业技术职务:       讲师    

设计时间: 20## 9 7 日 ~  20## 9 18

A 部分 (总分40 )

1.概述Goal 公司的历史和主要经营活动             (4分)

公司历史:Goal Soccer Centre公司(以下简称“公司”)是一家成立于20##年,在伦敦证券交易所AIM板块上市的五人制足球运营商,企业业务主要分布于英美两国。公司自20##年上市以来,公司已经由原来的12家五人制足球中心迅速发展到20##年的45家,20##年6月在美国洛杉矶运营了第一家英国海外的“试点”中心,并在第一个完整营业年份实现了盈利。公司现有员工800名左右,在英国,公司已经建立了颇为成熟的销售、体验网络,为参与五人制足球的体验者和运动员提供专业、友好、成熟的运动体验。

主要经营活动:五人制足球运动中心的运作,具体涉及符合英足总标准的球场及其他设施建设,与知名运动品牌,如talkSPORT等合作,策划线下足球活动,促进更多民众参与足球健身,与各大赞助商合作组织各种形式的足球杯赛,鼓励民众参加运动。与英足总合作,开发足球游戏,在社交媒体上发挥体育的影响力。在足球周边设施,如场地草皮,比赛精彩视频的线上传播等,除此之外,在足球中心,公司还有酒吧等周边休闲产业。

2.公司在 AIM上市,这意味着什么?                (2分)

英国AIM市场(Alternative Investment Market,伦交所官方中文翻译为“高增长市场”),创建于1995年,是继美国NASDAQ后欧洲第一个独立管理运行的高成长市场,由伦敦证券交易所(London Stock Exchange,LSE)负责监管和运营。AIM自成立以来,依托伦敦全球最国际化的金融中心地位和实力,吸引了超过2000家企业在此上市,集资总额超过2000亿英镑,融资能力多年领先全球高成长市场,而且上市企业失败率不超过3%,号称“全球最成功的高成长市场(创业板市场)”。AIM市场实行“终身保荐人制度”,由任命保荐人负责上市适宜性审核、伦交所备案而无需审批,上市手续简便,上市时间确定而快速。AIM市场除对企业财务报表和终身保荐人要求外,对营运规模、利润、股东人数等均无硬性要求。AIM市场对再融资次数不限制并无需股东大会同意(反向收购除外),且证交所不收取增发费用。此外,由于AIM市场强大的融资能力、简明的监管程序、合理的成本,同时配合其他优惠措施,AIM市场近年来吸引了越来越多的股权投资机构或基金在AIM上市。

公司选择在AIM板块上市,意味着如下几个好处:

一是方便公司融资,减轻公司对债券,银行借贷的依赖,更为自由的集资和扩大生产规模;二是作为一家上市公司,公司在业界知名度将得到提升,有利于公司未来活动影响的积累,起到宣传公司的目的;三是作为AIM板块的上市方之一,公司自然必须符合伦交所的交易规则,这也向外界投资者传递出公司健康透明的财富经营状况和积极的品牌形象等这类的信息。

3.概述公司战略的主要特点                         (3分)

公司战略旨在通过发起赛事活动,运营开发足球游戏应用程序促进更多英国民众和洛杉矶民众参与五人制足球的体育运动,并保持公司在五人制足球赛事设施与服务提供商业界内的领导者地位。在20##年营业年,公司将在Manchester等地新开足球中心,美国业务也会继续加速公司的盈利

4.公司最近几年的业绩怎么样                       (6分)

公司最近几年的业绩如下表所示:

表A-1 营业情况表

从收入额我们看到,公司营业能力良好,11年间公司已经翻了三倍,营业利润总体呈现上升趋势,偶有20##年因不良天气(雪量较多)影响公司营业天数致使营业利润并未如预期趋势上涨。

5.评价公司的财务状况                             (5分)

资产负债率为61.34%,水平较高,与苏格兰银行签订了于20##年7月到期的4250万英镑借款协议,为控制部署在英国和美国的新中心,提供了一个显著的资金应变支持。净收益与股利之比为6.7,水平也很高。

6.公司 20## 年后扩张很快,它的融资渠道是什么     (3分)

20##年上市后通过发行股票的方式进行融资,除此之外,还有与苏格兰银行签订的借款协议。

7.你认为公司面临哪些潜在的机遇和风险?           (5分)

潜在机遇:五人制足球市场准入资格较高,因此公司的竞争者有限,潜在的主要竞争对手是Powerleague,另一个位于苏格兰的公司,但是,英国市场似乎足够大,允许两家公司享受在中期内持续增长,为公司提供利好;英国足球人口占比较高,足球人口基数大可以促进公司盈利的扩大;20##年伦敦奥运会旨在“激励一代人”(inspire a generation),英国政府和英足总都大力在学校、社区推行五人制足球作为新的锻炼形式提升民众健康水平,五人制足球也正式被英足总认证和支持;公司在新的营业年份即将新开设Doncaster,Manchester的足球中心,成为公司新的利润增长点;公司在美国的事业也继续保持高速增长,在得到建设美国网站的允许后,公司在美国的影响力将有力扩大;公司也将注意力拓展至社交网络和线上领域,包含游戏开发等,这将进一步吸引青少年加入踢球者的队伍中来。

潜在风险:

潜在风险主要分为以下几类:

1.外界不可抗力风险,主要体现为恶劣天气条件使公司无法维持经营,或因设施维修必须停业等情况;

2.企业内部风险,如员工招聘及其发展,健康和安全风险,公司业务连续性等;

3.金融方面类风险,公司在股票市场会有一定的风险,另外,公司在苏格兰银行有借款,有一定的风险。

8.用最新的收盘价计算:                           (3分)

1)市盈率

市盈率=当前股价/每股净收益=161.5/8.9=18.146

2)股息收益率

股息收益率=普通股股利/当前股价*100%=1.325/161.5=0.820%

3)每股净资产

每股净资产=净资产/普通股股数=79932000/57289241=1.395

9.用股息折现模型计算股票的公允价值,解释你的假设。(5分)

采用标准戈登模型可以得出未来几年的预测股票价格,假设:

净收益和股利可以在未来几年稳定在一定水平,设为15%。

由20##年财务报告得到公司的税后折现率为5.23%,2007~20##年股利增长率均值为4.44%,由此,20##年股票价格估计值为:

折现后价格为1863.23/(1.523)^4=346.02

10.计算2010 年以来公司的绝对和相对股票业绩        (4分)

绝对业绩:

公司绝对业绩如下表所示:

表A-2 绝对业绩表

图B-1 绝对股票业绩图

相对业绩:

英国富时指数和AIM指数如下表所示:

表B-3 相对业绩相关数据表

图B-1 相对股票业绩图

B 部分(总分60)

选取有用信息,给投资委员会写一份投资报告,内容包括:

1.简介,包括对公司的简单描述                (5分 )

2.总结公司的历史营业业绩                    (10分)

3.评价公司的财务状况                        (10分)

4.简单讨论公司的前景                        (10分)

5.讨论最近的股价情况                        (10分)

6.对公司股票估价                            (10分)

7.结论                                      (5分)


投资报告

致:MacAskill资产管理公司

来自:投资分析师

报告日期:2015/9/16

报告主题:关于 Goal Soccer Centre公司(以下简称“公司”)的业绩,财务状况及针对该公司财务年报给出的投资建议

这份报告展示了关于20##年公司财务报告的研究,并对此讨论了MacAskill公司是否应在公司投资以及理由。

1.公司简介

Goal Soccer Centre公司是一家成立于20##年,在伦敦证券交易所AIM板块上市的五人制足球运营商,在英国同行业中处于领导者的地位,总部位于苏格兰。截至20##年9月16日收盘,公司市值为95亿英镑。公司现有员工800名左右,在英国有45家分支中心。在美国洛杉矶,公司还有一家分部。公司的主营业务是五人制足球运动中心的运作,具体涉及符合英足总标准的球场及其他设施建设;与知名运动品牌合作,与各大赞助商合作组织各种形式的足球杯赛活动,鼓励民众参加足球运动;与英足总合作,开发足球游戏,在社交媒体上发挥足球体育的影响力。在足球周边设施的业务,如场地草皮、比赛精彩视频的线上传播等,除此之外,在各家足球中心公司还有酒吧等周边休闲产业。

2.公司的历史营业业绩

公司最近几年的业绩如下表所示:

表B-1 营业情况表

图B-1 营业情况图

从收入额我们看到,公司营业能力良好,11年间公司已经翻了三倍,营业利润总体呈现上升趋势,偶有20##年因不良天气(雪量较多)影响公司营业天数致使营业利润并未如预期趋势上涨。

3.评价公司的财务状况

资产负债率为61.34%,水平较高,与苏格兰银行签订了于20##年7月到期的4250万英镑借款协议,为控制部署在英国和美国的新中心,提供了一个显著的资金应变支持。净收益与股利之比为6.7,水平也很高。

4.简单讨论公司的前景

公司主营英国五人制足球市场,同行业潜在的主要竞争对手是Powerleague,另一个位于苏格兰的公司。但是,英国市场似乎足够大,允许两家公司享受在中期内持续增长,为公司提供利好。因此看好未来公司趋势为继续增长。英足总在今年完全认可了公司的五人制足球场地,手机足球游戏等业务,因此未来公司在与英足总的合作上会得到其大力支持,保持公司利润持续增长和该行业的领导地位。

5.讨论最近的股价情况

公司20##年报收213.76便士,截至20##年9月16日报收161.50便士,中间跨度较大,应考虑以下原因:

1)20##年增发新股,股本数扩大,公司市值并没有较大程度的变动;

2)公司继续扩张,Doncaster和Manchester的中心及美国洛杉矶分部还需要一部分现金流支持,使公司自由现金流,银行利率有一定程度限制。

股票的绝对与相对业绩如下图所示:

图B-2 绝对业绩情况图

图B-2 相对业绩情况图

6.对公司股票估价

由20##年财务报告得到公司的税后折现率为5.23%,2007~20##年股利增长率均值为4.44%,由此,20##年股票价格估计值为:

折现后价格为1863.23/(1.523)^4=346.02

因此估计股价为346.02便士

7.结论

当前公司股价为161.50便士,预测分析后市价值为346.02便士,具有较高投资价值,可以考虑参股公司。但股市有风险,需要考虑尚未可知的系统性风险。

 

第二篇:常州大学 C程序课程设计报告

序号: 1

学号: 12477218

ZHOUUNIVE

课 程 设 计

课程设计名称: 繁花曲线 学 院 名 称 : 信息科学与工程学院 学 生 姓 名: 孙剑峰

小 组 成 员: 孙剑峰 陈菲 陈菲 夏园园 何凯 .

设计时间: 2013 年 06 月 17 日 ? 20xx年 06 月 28 日

RSCHANGITY

目 录

“繁花曲线”任务书..........................................02

一、翻译..........................................................03

二、程序概述...................................................07

三、结构框图...................................................07

四、程序代码...................................................07

五、使用说明...................................................18

六、心得体会...................................................18

1

"繁华曲线"任务书

一、目的要求

本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个绘图程序,并能最终实现本系统的功能要求。本任务必须完成拓展练习一。

二、功能要求

【题目描述】

有一种玩具叫做繁花曲线规,它由一套彩色塑料齿轮组成。一个大齿轮是环状的,牙齿做在里面;几个小齿轮的牙齿做在外面,小齿轮内部有一些小圆孔和几个其它形状的、较大的孔。

使用时左手按住大齿轮,让它紧贴在纸上,不能移动。在大齿轮里放一只小齿轮,把笔尖插进小齿轮的某一个孔里,让小齿轮紧贴大齿轮内壁滚动,这时笔尖就会在纸上画出许多美丽的曲线花纹。

常州大学C程序课程设计报告

图 1繁华曲线规所作出的图 繁花曲线规的原理可以用下图

图 2繁花曲线原理图

设大圆半径为R,小圆半径为r,小圆上孔距小圆圆心为t。当小圆在大圆内转动时,小圆圆心与大圆圆心构成转动后的角度α,由于小圆与大圆走过的圆弧长度相同(齿啮合)所以小圆转过的圆弧β可通过α与R和r计算得到。则小圆上的小孔新的坐标也可计算得到。

题目要求:使用你的数学能力计算出繁花曲线上的每一点的坐标公式,变换你的画笔的线型,线宽,色彩,使用循环描绘出美丽的图形。

要求1:通过菜单生成对话框输入大圆半径R,小圆半径r和小孔位置t,画出单色调的繁花曲线。

要求2:通过不同的菜单绘制4幅不同的预定义的彩色繁花曲线,其中包括图一两幅图案。

1

一、翻译

About Lines and Curves

0 out of 2 rated this helpful - Rate this topic

Many types of applications use lines and curves to draw graphics output on raster devices. Computer-aided design (CAD) and drawing applications use lines and curves to outline objects, specify the centers of objects, the dimensions of objects, and so on. Spreadsheet applications use lines and curves to draw grids, charts, and graphs. Word processing applications use lines to create rules and borders on a page of text.

LineTo function

1 out of 2 rated this helpful - Rate this topic

The LineTo function draws a line from the current position up to, but not including, the specified point.

Syntax

BOOL LineTo(

_In_ HDC hdc,

_In_ int nXEnd,

_In_ int nYEnd

);

Parameters

1

hdc [in]

Handle to a device context.

nXEnd [in]

Specifies the x-coordinate, in logical units, of the line's ending point.

nYEnd [in]

Specifies the y-coordinate, in logical units, of the line's ending point.

Return value

If the function succeeds, the return value is nonzero. If the function fails, the return value is zero.

Remarks

The line is drawn by using the current pen and, if the pen is a geometric pen, the current brush.

If LineTo succeeds, the current position is set to the specified ending point.

Examples

For an example, see Drawing Markers.

2

MoveToEx function

1 out of 2 rated this helpful - Rate this topic

The MoveToEx function updates the current position to the specified point and optionally returns the previous position. Syntax

BOOL MoveToEx(

_In_ HDC hdc,

_In_ int X,

_In_ int Y,

_Out_ LPPOINT lpPoint

);

Parameters

hdc [in]

Handle to a device context.

X [in]

Specifies the x-coordinate, in logical units, of the new position, in logical units.

Y [in]

Specifies the y-coordinate, in logical units, of the new position, in logical units.

lpPoint [out]

Pointer to a POINT structure that receives the previous current 3

position. If this parameter is a NULL pointer, the previous position is not returned.

Return value

If the function succeeds, the return value is nonzero. If the function fails, the return value is zero.

Remarks

The MoveToEx function affects all drawing functions.

Examples

For an example, see Drawing Markers.

4

二、程序概述

主要功能:

1、用户能够通过菜单打开对话框输入大圆半径R,小圆半径r和小孔位置t(分为小圆上的小孔半径t1和大圆上的小孔半径t2),画出单色调的繁花曲线。

2、用户能够通过不同的菜单绘制4幅不同的预定义的彩色繁花曲线。

三、结构框图

常州大学C程序课程设计报告

常州大学C程序课程设计报告

常州大学C程序课程设计报告

常州大学C程序课程设计报告

四、程序代码

#include "stdafx.h"

#include<stdio.h>

#include "resource.h"

#include<stdlib.h>

#include<math.h>

#define MAX_LOADSTRING 100

struct curve

{

double R; double rr; double t1; double t2;

}Curve,Cur[12];

int s[4]={0},C;

HINSTANCE hInst;

TCHAR szTitle[MAX_LOADSTRING];

ATOM

BOOL TCHAR szWindowClass[MAX_LOADSTRING]; MyRegisterClass(HINSTANCE hInstance); InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

5

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

MSG msg;

HACCEL hAccelTable;

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_FLOVERCURVE, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance);

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}

hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_FLOVERCURVE); while (GetMessage(&msg, NULL, 0, 0))

{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

return msg.wParam;

}

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_FLOVERCURVE); wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = (LPCSTR)IDC_FLOVERCURVE;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex);

}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance;

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, 6

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

LRESULT CALLBACK Input(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) {

switch(message)

{

case WM_INITDIALOG:

{

SetDlgItemInt(hDlg,IDC_R,Curve.R,FALSE);

SetDlgItemInt(hDlg,IDC_rr,Curve.rr,FALSE);

SetDlgItemInt(hDlg,IDC_t1,Curve.t1,FALSE);

SetDlgItemInt(hDlg,IDC_t2,Curve.t2,FALSE);

SetDlgItemInt(hDlg,IDC_C,C,FALSE);

}

return TRUE;

case WM_COMMAND:

if(LOWORD(wParam)==IDOK)

{

Curve.R=GetDlgItemInt(hDlg,IDC_R,NULL,FALSE);

Curve.rr=GetDlgItemInt(hDlg,IDC_rr,NULL,FALSE);

Curve.t1=GetDlgItemInt(hDlg,IDC_t1,NULL,FALSE);

Curve.t2=GetDlgItemInt(hDlg,IDC_t2,NULL,FALSE);

C=GetDlgItemInt(hDlg,IDC_C,NULL,FALSE);

}

if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)

{

EndDialog(hDlg,LOWORD(wParam));

return TRUE;

}

break;

}

return FALSE;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

TCHAR szHello[MAX_LOADSTRING];

LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

float i,j,x,y;

7

switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); switch (wmId) { case IDM_INPUT: } { } { } { } { } { } DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; DestroyWindow(hWnd); break; return DefWindowProc(hWnd, message, wParam, lParam); s[3]=1-s[3]; InvalidateRect(hWnd,NULL,TRUE); break; s[2]=1-s[2]; InvalidateRect(hWnd,NULL,TRUE); break; s[1]=1-s[1]; InvalidateRect(hWnd,NULL,TRUE); break; s[0]=1-s[0]; InvalidateRect(hWnd,NULL,TRUE); break; if(DialogBox(hInst,(LPCTSTR)IDD_INPUT,hWnd,(DLGPROC)Input)==IDOK) { } break; InvalidateRect(hWnd,NULL,TRUE); case IDM_1: case IDM_2: case IDM_3: case IDM_4: case IDM_ABOUT: case IDM_EXIT: default: 8

break;

InvalidateRect(hWnd,NULL,TRUE);

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

{

if(s[0]==1)

{

Cur[0].R=360;

Cur[0].rr=200;

Cur[0].t1=75;

Cur[0].t2=50;

Cur[1].R=200;

Cur[1].rr=147;

Cur[1].t1=47;

Cur[1].t2=33;

Cur[2].R=351;

Cur[2].rr=153;

Cur[2].t1=73;

Cur[2].t2=33;

for(i=0;i<3;i++)

{

HPEN

a1=CreatePen(PS_SOLID,3,RGB(rand()%255,rand()%255,rand()%255));

HGDIOBJ olda1=SelectObject(hdc,a1);

for(j=0;j<62.8;j+=0.01)

{

x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t1*cos(j+Cur[0].R*j/Cur[0].rr)+650+2*i;

y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t1*sin(j+Cur[0].R*j/Cur[0].rr)+350+2*i; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t2*cos(j+Cur[0].R*j/Cur[0].rr)+650+2*i;

y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t2*sin(j+Cur[0].R*j/Cur[0].rr)+350+2*i; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

}

SelectObject(hdc,olda1);

DeleteObject(a1);

HPEN

a2=CreatePen(PS_SOLID,3,RGB(rand()%255,rand()%255,rand()%255));

HGDIOBJ olda2=SelectObject(hdc,a2);

for(j=0;j<62.8;j+=0.01)

{

9

x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t1*cos(j+Cur[0].R*j/Cur[0].rr)+650+2*i; MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); } SelectObject(hdc,olda3); DeleteObject(a3); HPEN HGDIOBJ olda4=SelectObject(hdc,a4); for(j=0;j<62.8;j+=0.01) { MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); } SelectObject(hdc,olda2); DeleteObject(a2); HPEN HGDIOBJ olda3=SelectObject(hdc,a3); for(j=0;j<62.8;j+=0.01) { MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t1*sin(j+Cur[0].R*j/Cur[0].rr)+350-2*i; x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t2*cos(j+Cur[0].R*j/Cur[0].rr)+650+2*i; y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t2*sin(j+Cur[0].R*j/Cur[0].rr)+350-2*i; a3=CreatePen(PS_SOLID,3,RGB(rand()%255,rand()%255,rand()%255)); x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t1*cos(j+Cur[0].R*j/Cur[0].rr)+650-2*i; y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t1*sin(j+Cur[0].R*j/Cur[0].rr)+350+2*i; x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t2*cos(j+Cur[0].R*j/Cur[0].rr)+650-2*i; y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t2*sin(j+Cur[0].R*j/Cur[0].rr)+350+2*i; a4=CreatePen(PS_SOLID,3,RGB(rand()%255,rand()%255,rand()%255)); x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t1*cos(j+Cur[0].R*j/Cur[0].rr)+650-2*i; y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t1*sin(j+Cur[0].R*j/Cur[0].rr)+350-2*i; x=(Cur[0].R-Cur[0].rr)*cos(j)+Cur[0].t2*cos(j+Cur[0].R*j/Cur[0].rr)+650-2*i; 10

y=(Cur[0].R-Cur[0].rr)*sin(j)+Cur[0].t2*sin(j+Cur[0].R*j/Cur[0].rr)+350-2*i;

MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

}

SelectObject(hdc,olda4);

DeleteObject(a4);

}

for(i=0;i<62.8;i+=0.01)

{

HPEN b=CreatePen(PS_SOLID,3,RGB(168,15,251));

HGDIOBJ oldb=SelectObject(hdc,b);

x=(Cur[1].R-Cur[1].rr)*cos(i)+Cur[1].t1*cos(i+Cur[1].R*i/Cur[1].rr)+650;

y=(Cur[1].R-Cur[1].rr)*sin(i)+Cur[1].t1*sin(i+Cur[1].R*i/Cur[1].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[1].R-Cur[1].rr)*cos(i)+Cur[1].t2*cos(i+Cur[1].R*i/Cur[1].rr)+650;

y=(Cur[1].R-Cur[1].rr)*sin(i)+Cur[1].t2*sin(i+Cur[1].R*i/Cur[1].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldb);

DeleteObject(b);

}

for(i=0;i<62.8;i+=0.01)

{

HPEN c=CreatePen(PS_SOLID,3,RGB(130,2,130));

HGDIOBJ oldc=SelectObject(hdc,c);

x=(Cur[2].R-Cur[2].rr)*cos(i)+Cur[2].t1*cos(i+Cur[2].R*i/Cur[2].rr)+650;

y=(Cur[2].R-Cur[2].rr)*sin(i)+Cur[2].t1*sin(i+Cur[2].R*i/Cur[2].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[2].R-Cur[2].rr)*cos(i)+Cur[2].t2*cos(i+Cur[2].R*i/Cur[2].rr)+650;

y=(Cur[2].R-Cur[2].rr)*sin(i)+Cur[2].t2*sin(i+Cur[2].R*i/Cur[2].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldc);

DeleteObject(c);

}

}

if(s[1]==1)

{

11

Cur[3].R=350;

Cur[3].rr=150;

Cur[3].t1=75;

Cur[3].t2=22;

Cur[4].R=197;

Cur[4].rr=67;

Cur[4].t1=59;

Cur[4].t2=195;

Cur[5].R=189;

Cur[5].rr=77;

Cur[5].t1=85;

Cur[5].t2=45;

for(i=0;i<62.8;i+=0.01)

{

HPEN d=CreatePen(PS_SOLID,3,RGB(242,155,247)); HGDIOBJ oldd=SelectObject(hdc,d);

x=(Cur[3].R-Cur[3].rr)*cos(i)+Cur[3].t1*cos(i+Cur[3].R*i/Cur[3].rr)+650;

y=(Cur[3].R-Cur[3].rr)*sin(i)+Cur[3].t1*sin(i+Cur[3].R*i/Cur[3].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[3].R-Cur[3].rr)*cos(i)+Cur[3].t2*cos(i+Cur[3].R*i/Cur[3].rr)+650;

y=(Cur[3].R-Cur[3].rr)*sin(i)+Cur[3].t2*sin(i+Cur[3].R*i/Cur[3].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldd);

DeleteObject(d);

}

for(i=0;i<62.8;i+=0.01)

{

HPEN e=CreatePen(PS_SOLID,3,RGB(129,143,248)); HGDIOBJ olde=SelectObject(hdc,e);

x=(Cur[4].R-Cur[4].rr)*cos(i)+Cur[4].t1*cos(i+Cur[4].R*i/Cur[4].rr)+650;

y=(Cur[4].R-Cur[4].rr)*sin(i)+Cur[4].t1*sin(i+Cur[4].R*i/Cur[4].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[4].R-Cur[4].rr)*cos(i)+Cur[4].t2*cos(i+Cur[4].R*i/Cur[4].rr)+650;

y=(Cur[4].R-Cur[4].rr)*sin(i)+Cur[4].t2*sin(i+Cur[4].R*i/Cur[4].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,olde);

12

} DeleteObject(e); for(i=0;i<62.8;i+=0.01)

{

HPEN f=CreatePen(PS_SOLID,3,RGB(237,250,126)); HGDIOBJ oldf=SelectObject(hdc,f);

x=(Cur[5].R-Cur[5].rr)*cos(i)+Cur[5].t1*cos(i+Cur[5].R*i/Cur[5].rr)+650;

y=(Cur[5].R-Cur[5].rr)*sin(i)+Cur[5].t1*sin(i+Cur[5].R*i/Cur[5].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[5].R-Cur[5].rr)*cos(i)+Cur[5].t2*cos(i+Cur[5].R*i/Cur[5].rr)+650;

y=(Cur[5].R-Cur[5].rr)*sin(i)+Cur[5].t2*sin(i+Cur[5].R*i/Cur[5].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldf);

DeleteObject(f);

}

}

if(s[2]==1)

{

Cur[6].R=201;

Cur[6].rr=53;

Cur[6].t1=47;

Cur[6].t2=33;

Cur[7].R=143;

Cur[7].rr=33;

Cur[7].t1=53;

Cur[7].t2=133;

Cur[8].R=78;

Cur[8].rr=99;

Cur[8].t1=18;

Cur[8].t2=13;

for(i=0;i<62.8;i+=0.01)

{

HPEN g=CreatePen(PS_SOLID,3,RGB(160,124,226)); HGDIOBJ oldg=SelectObject(hdc,g);

x=(Cur[6].R-Cur[6].rr)*cos(i)+Cur[6].t1*cos(i+Cur[6].R*i/Cur[6].rr)+650;

y=(Cur[6].R-Cur[6].rr)*sin(i)+Cur[6].t1*sin(i+Cur[6].R*i/Cur[6].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[6].R-Cur[6].rr)*cos(i)+Cur[6].t2*cos(i+Cur[6].R*i/Cur[6].rr)+650;

13

y=(Cur[6].R-Cur[6].rr)*sin(i)+Cur[6].t2*sin(i+Cur[6].R*i/Cur[6].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldg);

DeleteObject(g);

}

for(i=0;i<62.8;i+=0.01)

{

HPEN h=CreatePen(PS_SOLID,3,RGB(103,223,226)); HGDIOBJ oldh=SelectObject(hdc,h);

x=(Cur[7].R-Cur[7].rr)*cos(i)+Cur[7].t1*cos(i+Cur[7].R*i/Cur[7].rr)+650;

y=(Cur[7].R-Cur[7].rr)*sin(i)+Cur[7].t1*sin(i+Cur[7].R*i/Cur[7].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[7].R-Cur[7].rr)*cos(i)+Cur[7].t2*cos(i+Cur[7].R*i/Cur[7].rr)+650;

y=(Cur[7].R-Cur[7].rr)*sin(i)+Cur[7].t2*sin(i+Cur[7].R*i/Cur[7].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldh);

DeleteObject(h);

}

for(i=0;i<31.4;i+=0.01)

{

HPEN m=CreatePen(PS_SOLID,3,RGB(138,247,111)); HGDIOBJ oldm=SelectObject(hdc,m);

x=(Cur[8].R-Cur[8].rr)*cos(i)+Cur[8].t1*cos(i+Cur[8].R*i/Cur[8].rr)+650;

y=(Cur[8].R-Cur[8].rr)*sin(i)+Cur[8].t1*sin(i+Cur[8].R*i/Cur[8].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

x=(Cur[8].R-Cur[8].rr)*cos(i)+Cur[8].t2*cos(i+Cur[8].R*i/Cur[8].rr)+650;

y=(Cur[8].R-Cur[8].rr)*sin(i)+Cur[8].t2*sin(i+Cur[8].R*i/Cur[8].rr)+350; MoveToEx(hdc,x,y,NULL);

LineTo(hdc,x,y);

SelectObject(hdc,oldm);

DeleteObject(m);

}

}

if(s[3]==1)

{

14

Cur[9].R=250; Cur[9].rr=152; Cur[9].t1=50; Cur[9].t2=22; Cur[10].R=360; Cur[10].rr=200; Cur[10].t1=75; Cur[10].t2=50; Cur[11].R=351; Cur[11].rr=196; Cur[11].t1=97; Cur[11].t2=8; for(i=0;i<62.8;i+=0.01) { HPEN j=CreatePen(PS_SOLID,3,RGB(252,121,88)); HGDIOBJ oldj=SelectObject(hdc,j); x=(Cur[9].R-Cur[9].rr)*cos(i)+Cur[9].t1*cos(i+Cur[9].R*i/Cur[9].rr)+650; y=(Cur[9].R-Cur[9].rr)*sin(i)+Cur[9].t1*sin(i+Cur[9].R*i/Cur[9].rr)+350; MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); x=(Cur[9].R-Cur[9].rr)*cos(i)+Cur[9].t2*cos(i+Cur[9].R*i/Cur[9].rr)+650; y=(Cur[9].R-Cur[9].rr)*sin(i)+Cur[9].t2*sin(i+Cur[9].R*i/Cur[9].rr)+350; } for(i=0;i<62.8;i+=0.01) { HPEN k=CreatePen(PS_SOLID,3,RGB(245,236,122)); HGDIOBJ oldk=SelectObject(hdc,k); MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); SelectObject(hdc,oldj); DeleteObject(j); x=(Cur[10].R-Cur[10].rr)*cos(i)+Cur[10].t1*cos(i+Cur[10].R*i/Cur[10].rr)+650; y=(Cur[10].R-Cur[10].rr)*sin(i)+Cur[10].t1*sin(i+Cur[10].R*i/Cur[10].rr)+350; MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); x=(Cur[10].R-Cur[10].rr)*cos(i)+Cur[10].t2*cos(i+Cur[10].R*i/Cur[10].rr)+650; y=(Cur[10].R-Cur[10].rr)*sin(i)+Cur[10].t2*sin(i+Cur[10].R*i/Cur[10].rr)+350; MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); SelectObject(hdc,oldk); 15

} } DeleteObject(k); for(i=0;i<62.8;i+=0.01) { HPEN l=CreatePen(PS_SOLID,3,RGB(97,214,220)); HGDIOBJ oldl=SelectObject(hdc,l); x=(Cur[11].R-Cur[11].rr)*cos(i)+Cur[11].t1*cos(i+Cur[11].R*i/Cur[11].rr)+650; y=(Cur[11].R-Cur[11].rr)*sin(i)+Cur[11].t1*sin(i+Cur[11].R*i/Cur[11].rr)+350; MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); x=(Cur[11].R-Cur[11].rr)*cos(i)+Cur[11].t2*cos(i+Cur[11].R*i/Cur[11].rr)+650; y=(Cur[11].R-Cur[11].rr)*sin(i)+Cur[11].t2*sin(i+Cur[11].R*i/Cur[11].rr)+350; } MoveToEx(hdc,x,y,NULL); LineTo(hdc,x,y); SelectObject(hdc,oldl); DeleteObject(l); HPEN hpen=CreatePen(PS_SOLID,1,RGB(252,92,218)); HGDIOBJ oldp=SelectObject(hdc,hpen); i=0; MoveToEx(hdc,(Curve.R-Curve.rr)*cos(i)+Curve.t1*cos(i+Curve.R*i/Curve.rr)+650,( } LineTo(hdc,x,y); for(i=0;i<6.28*C;i+=0.01) { Curve.R-Curve.rr)*sin(i)+Curve.t1*sin(i+Curve.R*i/Curve.rr)+350,NULL); x=(Curve.R-Curve.rr)*cos(i)+Curve.t1*cos(i+Curve.R*i/Curve.rr)+650; y=(Curve.R-Curve.rr)*sin(i)+Curve.t1*sin(i+Curve.R*i/Curve.rr)+350; MoveToEx(hdc,(Curve.R-Curve.rr)*cos(i)+Curve.t2*cos(i+Curve.R*i/Curve.rr)+650,( } SelectObject(hdc,oldp); LineTo(hdc,x,y); for(i=0;i<6.28*C;i+=0.01) { Curve.R-Curve.rr)*sin(i)+Curve.t2*sin(i+Curve.R*i/Curve.rr)+350,NULL); x=(Curve.R-Curve.rr)*cos(i)+Curve.t2*cos(i+Curve.R*i/Curve.rr)+650; y=(Curve.R-Curve.rr)*sin(i)+Curve.t2*sin(i+Curve.R*i/Curve.rr)+350; 16

DeleteObject(hpen);

EndPaint(hWnd, &ps);

break;

}

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {

switch (message)

{

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {

EndDialog(hDlg, LOWORD(wParam));

return TRUE;

}

break;

}

return FALSE;

}

17

五、使用说明

点击FloverCurve.exe文件后,会弹出一个空白对话框,在对话框的菜单中使用鼠标点击选择模式,可以选择用户自定义模式,也可以选择预设模式,当选择预设模式后,屏幕上会出现不同的繁花曲线,再次选择某个模式,相应的繁花曲线会消失,不同的预设繁花曲线可以叠加。当选择用户自定义模式后,会弹出一个对话框,要求用户输入R,r,t1,t2的值,当用户单击确定按钮后屏幕上会出现相应的繁花曲线。当用户选择了退出后,程序会自动退出。

六、心得体会

通过这次的课程设计我感悟颇深,简单描述一下整个过程中我的心情变化:当接到课题时,我感到压力很大,很紧张,因为我感觉题目很难,而且要用到没有接触过的Windows编程;当进入机房做课程设计时,我感到恐惧,因为我无论怎么百度,都无法找到和繁花曲线相关的代码资料,这意味着我无法借鉴前人的成果;然而,当我在周老师的帮助下把程序写出来时,我回头看看代码,我觉得其实这次的课程设计核心思想很简单,并不复杂。通过这次课程设计,我尝到了失败的心酸痛楚,和历经艰难后获得成功的喜悦,同时,我感受到了团队合作的力量。在这次课程设计中,我收获最大的是一种学习能力的培养,如何才能高效地学习没有接触过的知识?这种能力不仅是在现在,还是在将来,都显得至关重要。

最后感谢周老师在这十天来的不遗余力的悉心指导!

18

相关推荐