首先谈谈,域名费用
凡是网站都是要域名的,域名是访问网站的一个重要途径,域名有时候像我们的车牌号,简短有规律的域名比较好记,用户容易访问,而冗长又无规律域名,记起来就难了,想要通过输入网站地址访问域名,是一件很让人抓狂的事情。
正常而言域名的价格都是一样的,可是我们知道车牌号也是如此,但是那种三连号的车牌号想要得到,通过摇号是很难的,不过可以购买,域名也是如此。一个朗朗上口的域名,早已经被人抢注了,一定想要获得这样的域名,就得额外支付一笔费用了。在这里,原则上无论是定制网站还是自助建站,如果没有特殊要求,企业建站的花费价钱基本上是一样的。
然后谈谈,空间费用
空间的选择很重要,那些免费的空间,可能有很多网站同时存在,就像合租房一样,稍微条件好的,可以用独立空间,这就意味着需要支付一笔不菲的费用。当然好空间利于网站优化,而差的空间可能会影响到网站的排名,同样的优化力度,因为空间选择的失误,导致排名靠后,这样的例子实在太多了。
自助建站和定制网站在空间的选择上会有一定差别,但还不是主要的,因为空间费用和域名费用一样。
接着谈谈,设计费用
想要自己的网站与众不同,就需要技术高超的设计人员来进行设计了。
定制网站和自助网站之间,在网站设计费用的差别上,一下凸显出来,自助网站几乎没有任何费用,就算做了一些更改,那也是低端的设计,分分秒秒就搞定;而定制网站从建站开始到网站做成,大概需要1-2个月的时间,想象下这块的设计费用,肯定比自助建站贵!
再接着谈谈:功能开发费用
很多自助建站看起来很漂亮,其实大多数都是中看不中用,这些网站具有的功能都是一些开放的免费功能。而腊仔定制网站是指针对企业进行重新策划、方案书写、重新设计、重新功能开发的网站制作,说的简单一点,就是按照客户要求、根据企业的产品特点、宣传推广量身订做的。具体费用根据功能复杂程度而定。这也是自助建站和定制网站之间拉开价格重要的一项。
最后谈谈,维护和推广费用
网站上线后,需要进行推广,在推广过程中,发现问题则需要维护。推广的费用是无法衡量的,根据网站的宣传力度,这个价格根本不确定。这个时候,自助网站和定制备早网站的推广效果会很快看出来,花费同样价格的钱,定制网站更有优势,因为搜索引擎喜欢原创的,包括网站自身。
在未来的网络营销过程中,定制专属网站可能将成为企业最基本的一项竞争优势,如果想让企业的网络营销做的愈加超卓,愈加有实际作用和价值,那么定制网站将是首选的网站制作方式。
VC++6.0上机 *** 作指南贵州大学计算机科学与技术学院
张志明
2006年9月
目录
1. Visual C++ 控制台应用程序上机实现步骤
2. MFC对话框应用程序实现举例
3. MFC单文档应用程序实现举例
4. 用32位调试程序了解类和对象的内存映象
1. Visual C++控制台应用程序(Win32 Console Application Project)
上机实现步骤
一. 单文件程序的实现
本教材中的程序在Visual C++环境下缺迅山都是以Win32 Console Application 项目实现,而且都是单文件程序,即只含有一个源程序(.cpp)文件的C++程序。
一个单文件程序在Visual C++ IDE中的实现主要步骤是:(1)建立新项目(2)建立新文件(3)输入源代码(4)编译、连接,生成可执行程序文件。以上步骤均可在Visual C++的Wizard指导下通过对话框交互输入完成。
1. 建立新项目:
每个C++程序的实现都要建立一个项目。所谓项目是一个文件生成过程的管理单位,项目名称就是最后实现的可执行文件的名称,一个项目就是与生成这个可执行程序文件相关的所有源文件和中间文件的集合,存放在以项目名称命名的文件夹中。
图1 Microsoft Visual C++ 6.0系统初始界面
执行菜单命令File>New,打开New对话框:
图2 打开New对话框
在New对话框的Project选项卡中选择Win32 Console Application选项,然后输入项目存放位置项目名称后确定。
图3 输入项目位置和名称
在Win32 ConsoleApplication-Step 1 of 1对话框中选择An empty project,完成后返回。系统d出新建项目信息报告对话框。
图4 Win32 ConsoleApplication-Step 1 of 1对话框
图5 新建项目信息报告
2. 建立新文件:
再一次执行菜单命令File>New,打开New对话框,在File选项卡中选择C++ Sourse File选项,然后输入源程序文件名。完成后系统打开源程序(.cpp)文件编辑窗口。
图6 在New对话框输入源程序文件名
3. 输入源代码:
此时即可在源程序(.cpp)文件编辑窗口输入源程序代码。
图7 源程序(.cpp)文件编辑窗口
4. 生成和运行可执行程序文件:
11从源程序文件生成可执行文件,昌铅需要经历编译,连接两步,在VC++6.0编程环境中可以有以下几种 *** 作方式:
(1)打开Build (编译)菜单,先执行Compile命令,接着再执行Build命令。
(2)打开Build (编译)菜单,执行Rebuilde All命令。
(3)打开Build (编译)菜单,直接发出Execute 执行命令,一次性完成编译、连接和启动程序执行的任务。
(4)直接单击“!”(BuildExecute)命令按钮,一次性完成编译、连接和启动程序执行的任务。
图8 Build (编译)菜单
图9 程序运行结果
打开工程文件夹可以找到该工程的所有工作文件。
打开工程文件夹中的Debug子文件夹,可以找到生成的可执行(.exe)文件。
二. 多文件程序的实现
一个较大型C++程序,有时需要包含多个源程序文件。一种常见的情况是将类的定义放在头(.h)文件中,将类的实现或对类的访问放在源(.cpp)文件中。
多文件程序的实现与单文件程序的实现方式需要经历同样的步骤,不同的是,在编译之前需要利用新建文件对话框逐一将所有需要的文件追加到项目伏中中。
1. 建立新项目:
2. 建立新文件:
(1)加入和编辑头文件:
在New对话框,在File选项卡中选择C/C++ Header File选项,然后输入头文件名。完成后系统将打开源程序(.h)文件编辑窗口。
(2)加入和编辑源程序文件
打开New对话框,在File选项卡中选择C++ Sourse File选项,然后输入源程序文件名。完成后系统打开源程序(.cpp)文件编辑窗口。
注意:在源程序文件中应该用文件包含命令将头文件包含进来。如下例源程序文件s719.cpp的第一行:#include"h719.h"
3. 生成和运行可执行程序文件:
步骤同单文件程序的生成和执行。
#
2.MFC对话框应用程序实现举例
本指导书给出3个MFC对话框应用程序的实现实例,例1为求三科平均成绩的简单程序,例2为实现一个具有四则运算功能的简单计算器,例3为一个彩票机程序(提供手动摇号和自动摇号两个彩票机程序版本)。
通过这些程序可以达到以下目的:
掌握AppWizard的使用方法。
掌握Workshop中各种视图的使用和在不同视图之间切换的方法。
学会利用控件工具箱中的控件定制对话框界面。
学会控件变量及其他类成员变量的设置。
学会消息映射的概念和 *** 作方法。
学会查看和编辑代码。
学习编译、运行和调试对话框应用程序。
例1.实现一个求三科平均成绩的MFC对话框应用程序。假设运行时的界面如下:
实现步骤:
1. 在Visual C++ 6.0工作开发环境中,New对话框中选择MFC AppWizard [exe]项目,输入项目名称并指定存放位置。
2. 在MFC Wizard Step1选择Dialog(基本对话)程序类型,在MFC Wizard Step2中输入对话框标题“求平均成绩”。
AppWizard对话结束后打开对话框编辑窗口如下:
3. 定制界面:添加控件、设置属性
删除对话框模板中原有的“确定”按钮和内容为“TODO: 在这里设置对话控制。”的Static Text控件。
在控件工具箱中取一个Group Box控件,调整适当大小,鼠标右键单击该控件边框,在d出的下拉菜单中打开属性对话框。将Group Box控件标题由“Static”改为“求平均分”。
在Group Box中添加4个Static Text控件,按同样方法修改它们的标题属性为“成绩1”、“成绩2”、“成绩3”和“平均分”。
在Group Box中添加4个Edit Box控件,打开属性对话框的Extended Styles选项卡中将它们设置为文本右对齐(Right Aligend Text)方式。其中第4 个Edit Box控件的Styles属性设置为Read-only。
在Group Box中添加一个按钮Button1,打开属性对话框将按钮的标题属性改为 “计算平均分”。
鼠标右键单击“取消”按钮边框,在d出的下拉菜单中打开属性对话框。将按钮标题改为“退出”。
设计完成的界面如图,其中控件属性列表如下:
控件
ID号
标题
属性
Group Box
IDC_STATIC
求平均分
Static Text
IDC_STATIC
成绩1
Static Text
IDC_STATIC
成绩2
Static Text
IDC_STATIC
成绩3
Static Text
IDC_STATIC
平均分
Edit Box
IDC_EDIT1
Align text:Right
Edit Box
IDC_EDIT2
Align text:Right
Edit Box
IDC_EDIT3
Align text:Right
Edit Box
IDC_EDIT4
Align text:RightRead-only
Button
IDC_BUTTON1
计算平均分
Button
IDCANCEL
退出
4. 添加成员变量
单击View(查看)>ClassWizard(建立类向导)菜单进入ClassWizard,打开Member Variables选项卡:为4 个Edit Box控件设置对应的变量:
同样的方法为其它3个Edit Box控件设置变量:
控件ID
变量名
变量类型
数值范围
IDC_EDIT1
m_S1
int
0~100
IDC_EDIT2
m_S2
int
0~100
IDC_EDIT3
m_S3
int
0~100
IDC_EDIT4
m_Sav
CString
5. 添加消息映射(两条消息)
进入ClassWizard,打开Messages Maps选项卡,在Object Ids中选择CAverageDlg,在Messages中鼠标单击WM_INIDIALOG,在Member functions中出现生成的消息映射成员函数OnInitDialog提示:
在Object Ids中选择IDC_BUTTON1,在Messages中鼠标单击BN_CLIKED,在d出对话框中单击OK按钮:在Member functions中出现第二个生成的消息映射成员函数OnButton1。
6. 添加代码
在ClassWizard中双击OnInitDialog函数,打开代码编辑器中的OnInitDialog()函数代码,找到其中的 // TODO: Add extra initialization here,加入下面的黑体字给出的3行代码:
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog()
…
// TODO: Add extra initialization here
m_Sav="0.00"
m_S1=m_S2=m_S3
UpdateData(FALSE)
return TRUE // return TRUE unless you set the focus to a control
}
在ClassWizard中双击OnButton1()函数,打开代码编辑器中的OnButton1()函数代码,找到其中的 // TODO: Add extra initialization here,加入下面的黑体字给出的4行代码:
void CDlgDlg::OnButton1()
{
// TODO: Add extra initialization here
UpdateData()
double ave=(double)(m_S1+m_S2+m_S3)/3.0
m_Sav.Format("%6.2f",ave)
UpdateData(FALSE)
}
7. 编译运行程序:
注释:
UpdateData()函数的作用是允许更新控件变量,
UpdateData(FALSE) 禁止更新控件变量的值。
例2.设计MFC对话框应用程序,实现一个具有四则运算功能的简单计算器。
1. 新建项目:
2. 定制界面:
(1) 修改MFC AppWizard自动创建的对话框项目模板。删除模板上自动创建的三个控件。
(2) 加入“简单计算器”、“请输入数据:”、“结果”三个静态文本框和相应的3个编辑框。
(3) 加入一个Group Box,标题修改为“请选择运算符:”,并在其中放入4个Radio Button将标题分别改为“+”、“-”、“*”、“/”。
(4) 继续用鼠标从工具箱中向对话框添加和3个按钮控件,更改按钮的标题为“计算”、“清除”、“关闭”。
3. 添加变量
本例中用到以下4个CSimpleCalcDlg类的成员变量:
变量类型
名称
float
m_N1
float
m_N2
float
m_ Result
char
Operator
用ClassWizard为编辑框添加变量:m_N1, m_N2, m_Result
变量char Operator的添加方法:
在WorkSpace中进入ClassView视图, 鼠标右键单击CSimpleCalcDlg, 在菜单中选择“Add Member Variable…”
然后在d出的对话框的输入变量类型和名称:
4. 添加消息映射
用ClassWizard为按钮控件添加消息映射:
继续用ClassWizard为Radio Button控件添加消息映射:
5. 加入单击按钮时的事件响应代码
在实现文件(cpp文件)中加入单击按钮时的事件响应代码。(双击一个按钮可直接进入函数编辑)
//选择运算符
void CSimpleCalcDlg::OnRadio1()
{ Operator='+' }
void CSimpleCalcDlg::OnRadio2()
{ Operator='-' }
void CSimpleCalcDlg::OnRadio3()
{ Operator='*' }
void CSimpleCalcDlg::OnRadio4()
{ Operator='/' }
//计算
void CSimpleCalcDlg::OnButton1()
{
UpdateData()
switch(Operator)
{
case '+':
m_Result=m_N1+m_N2
break
case '-':
m_Result=m_N1-m_N2
break
case '*':
m_Result=m_N1*m_N2
break
case '/':
if(m_N2 == 0 )
MessageBox("除数不能为零!")
else
{
m_Result = m_N1/m_N2
break
}
default:
m_Result=m_N1+m_N2
}
UpdateData(FALSE)
}
//清除
void CSimpleCalcDlg::OnButton2()
{
UpdateData()
m_N1=0
m_N2=0
m_Result=0
UpdateData(FALSE)
}
//关闭
void CSimpleCalcDlg::OnButton3()
{ CDialog::OnOK() }
6. 编译运行程序
例3. 彩票机程序:
本例给出手动摇号和自动摇号两个彩票机程序版本。
1. 彩票机界面:
定制含有7个Edit Box 、1个Progress(进度条)和3侦探按钮控件的对话框界面如下:
2. 设置变量:
(1) 设置进度条变量:
(2) 设置7个编辑框变量:
(3)添加类成员变量m_x:
3. 消息映射:
在ClassWizard中产生OnInitDialog、OnButton1、OnButton2、OnOK四个消息映射函数:
4. 添加代码:
//初始化
BOOL CLotusDlg::OnInitDialog()
{
CDialog::OnInitDialog()
……
// TODO: Add extra initialization here
m_x=0
m_pProg.SetRange(0,70)
srand((unsigned)time(NULL))
return TRUE // return TRUE unless you set the focus to a control
}
(一)手动摇号
//手动摇号,每按一次摇号按钮出一个号
void CLotusDlg::OnButton1()
{
// TODO: Add your control notification handler code here
switch(m_x/10)
{
case 0:
m_N1=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 1:
m_N2=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 2:
m_N3=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 3:
m_N4=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 4:
m_N5=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 5:
m_N6=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 6:
m_N7=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
}
UpdateData(FALSE)
}
void CLotusDlg::OnButton2()
{
// TODO: Add your control notification handler code here
m_x=0
m_N1=0
m_N2=0
m_N3=0
m_N4=0
m_N5=0
m_N6=0
m_N7=0
UpdateData(FALSE)
m_pProg.SetPos(1)
}
void CLotusDlg::OnOK()
{
CDialog::OnOK()
}
(二)自动摇号
将前面实现的手动摇号程序修改为自动定时摇号。
添加OnTimer消息映射函数:
//按摇号按钮启动摇号
void CLotusDlg::OnButton1()
{
SetTimer(1,2000,NULL)
}
void CLotusDlg::OnButton2()
{
m_x=0
m_N1=0
m_N2=0
m_N3=0
m_N4=0
m_N5=0
m_N6=0
m_N7=0
UpdateData(FALSE)
m_pProg.SetPos(0)
KillTimer(1)
}
void CLotusDlg::OnTimer(UINT nIDEvent)
{
switch(m_x/10)
{
case 0:
m_N1=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 1:
m_N2=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 2:
m_N3=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 3:
m_N4=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 4:
m_N5=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 5:
m_N6=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
case 6:
m_N7=rand()%36+1
m_pProg.SetPos(m_x+=10)
break
}
UpdateData(FALSE)
CDialog::OnTimer(nIDEvent)
}
void CLotusDlg::OnOK()
{
KillTimer(1)
CDialog::OnOK()
}
5. 注释:
(1)产生随机数的方法
函数unsigned int rand() 产生随机数。
函数void srand(unsigned int seed) 设定随机数产生器的种子,其中seed为随机数产生器的种子,本例中用系统时钟当前值作随机数种子:
srand((unsigned)time(NULL))函数的
表达式rand()%36+1产生1-36之间的随机数
(3) 定时器的使用方法
定时器的使用涉及OnTimer、SetTimer、KillTimer三个函数。
SetTimer用于设定定时时间和启动定时器,其中第一个参数是定时编号,第二个参数是定时的毫秒数。本例中将1号定时器定时时间设定为2秒:
SetTimer(1,2000,NULL)
定时器启动以后将持续工作,每到达一次定时时间即启动一次OnTimer消息函数的执行。KillTimer的作用是停止指定定时器的工作。
3.
MFC单文档应用程序实现举例
创建单文档应用程序的一般步骤:
利用AppWizard创建单文档应用程序框架。
在文档类中声明保存文档数据所需要数据对象。
完成文档类的OnNewDocument函数,初始化新文档。
完成文档类的Serialize函数,保持和加载文档数据。
完成视类的OnInitialUpdate函数,初始化显示。
完成视类的OnDraw函数,显示当前文档内容。
在视类中加入可以使用户编辑文档数据所需的代码。
本实验指导通过以下4 个实验循序渐进演示创建单文档应用程序的基本 *** 作,在前一个例子中演练过的 *** 作,在后面的中出现时不再重复描述。
例1 一个简单的单文档应用程序——记事本程序
例2 简单文本和图形输出
例3 利用定时器输出滚动字幕
例4 文档串行化编程
例1.
一个简单的单文档应用程序——记事本程序
1. 只要在AppWizard的Step 6将Base Class设置为EditView,AppWizard就自动完成了一个记事本程序的设计:
2. 运行程序,即可测试记事本的各种功能:
3.说明:
(1)打开Workshop中的Class视图,可以看到,一个简单的单文档应用程序向导自动建立五个类:
向导自动建立的类
相应源文件
其他源文件
相应头文件
其他头文
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)