vc++课程设计.docx
- 文档编号:28725139
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:16
- 大小:166.96KB
vc++课程设计.docx
《vc++课程设计.docx》由会员分享,可在线阅读,更多相关《vc++课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
vc++课程设计
枣庄学院
信息科学与工程学院课程设计任务书
题目:
基于C/S模式的绘图程序设计与实现
小组成员:
王维民
成员学号:
2012121303
专业班级:
12本三软件外包
课程:
VC++应用开发
指导教师:
燕职称:
副教授
完成时间:
2015年6月11日----2015年6月24日
枣庄学院信息科学与工程学院制
2015年6月24日
任务小组成员及任务分工
王维民:
组长,负责调试程序。
课程设计上机部分请联系QQ925586186
==
课程设计任务书及成绩评定
课程设计的任务和具体要求
课程设计采用分小组形式,学生随机选项目(可以选择给定的题目,也可以根据自己兴趣爱好自定题目),每组2人,合作完成一个课题的开发,包括课题的分析、设计与实现。
要求每组提交一份课程设计报告和源程序。
推荐题目主要有:
绘图程序设计、文本编辑器、聊天程序设计、数据库应用程序设计。
具体要求如下:
(1)明确所要开发系统的设计任务;
(2)做好需求分析,合理选择设计方案;
(3)完成该系统预期要求的功能;
(4)能够设计出美观大方的程序界面;
(5)养成良好的代码书写习惯;
(6)在编写程序过程中应注意相关文档的编写;
(7)综合应用VC++各种控件实现程序功能;
(8)独立制作,提倡原创,反对拷贝;
(9)认真撰写课程设计总结任务书。
指导教师签字:
日期:
指导教师评语
成绩:
____________指导教师签字:
日期:
课程设计所需软件、硬件等
⏹硬件环境:
Iterl(R)Corei5CPU,主频2.31GHz;内存4G;
硬盘500Gaa;1366×768显示分辨率
⏹软件环境:
windows7,VisualStudio2008,ACCESS2007
课程设计进度计划
起至日期
工作内容
备注
6.11----6.13
6.13----6.17
6.17----6.20
6.20----6.22
项目制定任务分配编写用户图形界面
用户操作类画图代码编写并校验
后台服务器程序编码调试纠错
课程设计任务书编辑排版
程序调试
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
[1]宋坤等编著VisualC++信息管理系统开发人民邮电出版社
[2] 刘锐宁,李伟明,梁水等著. Visual C++编程宝典. 北京:
人民邮电出版社,
[3]陈志泊主编VisualC++程序设计中国铁道出版社
[4]杨章伟等编著. 21天学通Visual C++. 北京:
电子工业出版社
[5]刘瑞宁、宋坤编著VisualC++开发典型模块大全人民邮电出版社
目录
一、系统介绍5
1.1MFC简介5
1.1.1MFC文档程序6
1.1.2基于对话框的程序6
1.2网络编程6
1.3多线程编程6
1.4数据库应用程序7
二、功能流程7
2.1基本图形的绘制7
2.2数据库文件的存储7
2.3服务器文件的删除7
三、系统设计7
3.1系统整体结构8
3.1.1系统中的图形类型划分8
3.1.2对图形的操作8
3.2主要模块设计8
3.2.1图形基类的设计8
3.2.2命令类的设计9
3.2.3文件的存储11
3.3程序界面设计13
3.3.1菜单栏的设计13
3.4类与函数的设计与实现13
3.4.1直线类的实现13
3.4.2矩形类的实现14
3.4.3圆弧类的实现14
3.5服务器14
四、实验总结17
一、系统介绍
1.1MFC简介
MFC(MicrosoftFoundationClassLibrary)即微软基础类库的简称,MFC的目的就是让程序员在MFC基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓中。
MFC类库以层次结构组织起来,其中封装了大部分WindowsAPI函数和Windows控件,它所包含的功能几乎涉及整个windows操作系统。
1.1.1MFC文档程序
在文档/视图结构的应用程序中,文档是应用程序数据基本元素的集合,它构成应用程序所使用的数据单元;视图是数据显示单元。
文档/视图结构的应用程序提供了管理、维护以及显示数据的手段。
在单文档程序中,用户同一时刻只能操作一个文档,Windows操作系统提供的记事本程序就是单文档程序;多文档程序允许用户同时操作多个文档,在打开的多个文档对应的窗口中,同一时刻只有一个活动窗口,用户可以随时切换活动窗口。
1.1.2基于对话框的程序
对话框作为Windows应用程序中一个很重要的用户接口,其作用是接受用户的数据输入或显示数据给用户。
通过编写对话框类的代码来实现对线条的颜色、宽度等编辑。
1.2网络编程
随着互联网技术的普及和发展,网络通信成为程序开发必不可少的一部分,在此次课程实践中,我们利用WindowsScockets接口和WinSockMFC类来实现客户端/服务器之间的传输。
并且支持客户端将图像文件存储到服务器端、客户端。
并且可以查看存储在服务器上的文件列表。
1.3多线程编程
对于比较复杂的应用程序,具有同时执行多个任务能力的通常是一个关键因素,这可以通过多线程来实现。
例如,字处理程序能够在继续操作文档的同时进行拼写检查。
1.4数据库应用程序
数据库作为信息系统的核心,是数据库的重要技术之一。
数据库编程已经成为多数的数据处理软件的重要内容。
数据库管理系统是指数据库系统中对数据进行管理的软件系统,他是数据库系统的核心组成部分。
我们通过SQL语言来对数据进行数据的增删查改。
在此次的课程设计中我们将实现绘图文件保存到数据库中,并且可以删除存储在服务器上的文件。
二、功能流程
2.1基本图形的绘制
首先通过我们的程序,我们可以用绘制图形选项进行图形绘制,其中包含直线、矩形及圆形。
2.2数据库文件的存储
绘制完图形后我们可以通过保存选项保存到我们的服务器中。
2.3服务器文件的删除
在服务器中我们可以对保存的文件进行删除。
三、系统设计
3.1系统整体结构
3.1.1系统中的图形类型划分
本系统中主要为基本图形,基本图形主要包括直线、矩形、圆形。
本系统中的图形类型
3.1.2对图形的操作
在本次课程设计中实现对图形的删除。
3.2主要模块设计
3.2.1图形基类的设计
首先将图形的基本属性归为一个基类CEntity,基类里包括图形的类型、颜色、线性、线宽基本属性。
3.2.2命令类的设计
1.定义直线
#pragma once
#include "Shape.h"
//#include
class CLine:
public CShape
{
DECLARE_SERIAL(CLine);
public:
CLine();
CLine(CPoint ptStart,CPoint ptEnd);
void Draw(CDC* pDC);
};
2.画直线的方法
#include "stdafx.h"
#include "Line.h"
#include
using namespace std;
IMPLEMENT_SERIAL(CLine,CShape,1)
CLine:
:
CLine()
{
}
CLine:
:
CLine(CPoint ptStart,CPoint ptEnd):
CShape(ptStart,ptEnd)
{
}
void CLine:
:
Draw(CDC* pDC)
{
pDC -> MoveTo(m_ptStart);
pDC -> LineTo(m_ptEnd);
}
3.绘制图形
// CtestView 绘制
void CtestView:
:
OnDraw(CDC* pDC)
{
CtestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!
pDoc)
return;
COLORREF c1;
switch(m_LineColor)
{
case 0:
c1=RGB(255,0,0);
break;
case 1:
c1=RGB(0,255,0);
break;
case 2:
c1=RGB(0,0,255);
break;
default:
c1=RGB(0,0,0);
}
//创建新笔
CPen pen(PS_SOLID,m_LineWidth,c1);
CPen* pOldPen = pDC->SelectObject(&pen);
//绘制已有图形
POSITION pos;
for(pos = GetDocument() ->m_obList.GetHeadPosition();pos!
=NULL;)
{
CShape* pShape =(CShape*)(GetDocument()->m_obList.GetNext(pos));
pShape -> Draw(pDC);
}
if(m_nType>0 && m_bDrawing)
{
m_pShape ->Draw(pDC);
}
pDC->SelectObject(pOldPen);
// TODO:
在此处为本机数据添加绘制代码
}
3.2.3文件的存储
1.保存到服务器的类
#pragma once
// CSaveToServerDlg 对话框
class CSaveToServerDlg :
public CDialog
{
DECLARE_DYNAMIC(CSaveToServerDlg)
public:
CSaveToServerDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CSaveToServerDlg();
// 对话框数据
enum { IDD = IDD_SAVETOSERVER };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
CString m_edFileName;
};
2.实现的函数
// SaveToServerDlg.cpp :
实现文件
//
#include "stdafx.h"
#include "test.h"
#include "SaveToServerDlg.h"
// CSaveToServerDlg 对话框
IMPLEMENT_DYNAMIC(CSaveToServerDlg, CDialog)
CSaveToServerDlg:
:
CSaveToServerDlg(CWnd* pParent /*=NULL*/)
:
CDialog(CSaveToServerDlg:
:
IDD, pParent)
m_edFileName(_T(""))
{
}
CSaveToServerDlg:
:
~CSaveToServerDlg()
{
}
void CSaveToServerDlg:
:
DoDataExchange(CDataExchange* pDX)
{
CDialog:
:
DoDataExchange(pDX);
DDX_Text(pDX, IDC_ED_FILENAME, m_edFileName);
}
BEGIN_MESSAGE_MAP(CSaveToServerDlg, CDialog)
END_MESSAGE_MAP()
// CSaveToServerDlg 消息处理程序
3.3程序界面设计
界面环境作为人机交互的通道,主要是辅助用户完成工作,为了方便用户使用,菜单栏是必不可少的。
3.3.1菜单栏的设计
3.4类与函数的设计与实现
3.4.1直线类的实现
从图元基类CEntity派生出的Cline类,在该类中覆盖其父类CEntity中的所有虚函数,并定义两个描述直线所必须的成员变量:
直线起点坐标和直线终止坐标,重载父类中的函数。
3.4.2矩形类的实现
从图元基类CEntity派生出的CRectangle类,在该类中覆盖其父类CEntity中的所有虚函数,并定义两个描述矩形所必须的成员变量:
左上角坐标和右下角坐标,重载父类中的函数。
3.4.3圆弧类的实现
从图元基类CEntity派生出的CArc中覆盖其父类CEntity中的所有虚函数,
并定义两个描述矩形所必须的成员变量:
圆心坐标、起始坐标和终点坐标,重载父类中的函数。
3.5服务器
1.服务器的实现
// PaintOfficeServer.cpp :
定义应用程序的类行为。
//
#include "stdafx.h"
#include "PaintOfficeServer.h"
#include "PaintOfficeServerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CPaintOfficeServerApp
BEGIN_MESSAGE_MAP(CPaintOfficeServerApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp:
:
OnHelp)
END_MESSAGE_MAP()
// CPaintOfficeServerApp 构造
CPaintOfficeServerApp:
:
CPaintOfficeServerApp()
// TODO:
在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CPaintOfficeServerApp 对象
CPaintOfficeServerApp theApp;
// CPaintOfficeServerApp 初始化
BOOL CPaintOfficeServerApp:
:
InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。
否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp:
:
InitInstance();
if (!
AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO:
应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CPaintOfficeServerDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO:
在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO:
在此放置处理何时用
// “取消”来关闭对话框的代码
}
POSITION pos;
for(pos=m_socketList.GetHeadPosition();pos!
=NULL;)
{
delete (m_socketList.GetNext(pos));
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}
四、实验总结
通过本次的课程设计,更加熟悉了vc++的相关操作,特别是vc++的快捷操作,更加意识到了熟练掌握知识的重要性,实践的重要性,知识不能只满足于课本,要勇于实践,勇于尝试,大胆试错,认真操作,细心改错,这样才能学到真东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 课程设计