vc++1到6实验报告程序设计报告.docx
- 文档编号:27625110
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:25
- 大小:1,017.74KB
vc++1到6实验报告程序设计报告.docx
《vc++1到6实验报告程序设计报告.docx》由会员分享,可在线阅读,更多相关《vc++1到6实验报告程序设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
vc++1到6实验报告程序设计报告
C/S软件开发实验报告书
学号:
201002520105
姓名:
杨明光___
指导老师:
_唐建清__
2012年6月17日
目录
实验一(显示学号与姓名)3
实验二(面积计算)4
实验三(消息映射)6
实验四(画笔与画刷)10
实验五(乘法运算)12
实验六(客户与服务端)16
实验七(客户与服务端多线程通信)22
实验总结................................................27
实验一
实验题目:
1、建一个公有继承(定义父类,私有属性)2、建一个学生类3、把学生信息显示出来
实验目的:
掌握继承类的用法
实验步骤:
(1)新建一个工程(Win32ConsoleApplication)命名为student,在工作区里面新建三个源文件分别为main.cpp,person..cpp,student.cpp;新建两个头文件分别为person.h,student.h。
(2)源代码:
main.cpp:
#include"student.h"
#include"person.h"
voidmain(){
studentb("杨明光","201002520105");
b.show();
}
person.cpp:
#include"person.h"
#include"string.h"
#include"iostream.h"
person:
:
person(char*na)
{name=newchar[strlen(na)+1];
strcpy(name,na);}
voidperson:
:
show()
{
cout< } student.cpp: #include"student.h" #include"string.h" #include"iostream.h" student: : student(char*na,char*xh): person(na) { xuehao=newchar[strlen(xh)+1]; strcpy(xuehao,xh);} voidstudent: : show(){person: : show(); cout<<'\t'<<"xuehao="< person.h: #include"iostream.h" #ifndefperson_h #defineperson_h classperson {private: char*name; public: person(char*name); voidshow(); }; #endif student.h: #include"person.h" #include"iostream.h" classstudent: publicperson{ private: char*xuehao; public: student(char*name,char*xuehao); voidshow(); }; 运行结果: 实验二 实验题目: 定义一个抽象基类Shape并从此基类派生出长方形类和圆形类及计算其面积。 实验目的: 掌握派生类算法和实现。 实验步骤: 1.新建一个工程(Win32ConsoleApplication)命名为22,在工作区里面新建一个源文件分别为main.cpp;新建三个头文件分别为changfangxing.h,tuxing.h,yuanxing.h。 2.源代码: main.cpp: #include"stdio.h" #include"tuxing.h" #include"changfangxing.h" #include"yuanxing.h" voidmain() {shape*p; circlea(5.0); tamgleb(2,5); p=&a;p->area(); p=&b;p->area();} changfangxing.h: #include"iostream.h" classtamgle: publicshape {private: floatl,m; public: tamgle(floatl1,floatm1) {l=l1;m=m1;} voidarea() {cout<<"areais: "< }; tuxing.h: #ifndefshape_h #defineshape_h classshape {public: virtualvoidarea(){}; shape(){}}; #endif yuanxing.h: #include"tuxing.h" classcircle: publicshape {private: floatr; public: circle(floatr1) {r=r1;} voidarea() {cout<<"areais: "<<3.14*r*r< }; 实验结果: 实验三 实验题目: 自定义消息映射: 创建视图时,产生定时器,处理定时器消息时,发出自定义的消息,然后在自定义消息处理函数中显示一提示信息。 实验目的: 学习消息映射的调用与实现以及咋样处理定时器消息 实验步骤: 1.利用MFCAppWizard[exe]向导创建一个名为Rotate的应用程序 利用ClassWizard类向导为CRotateView类生成消息WM_CREATE的消息处理函数 2. 3.通过设置定时器在指定的时间间隔向窗口发送WM_TIMER消息。 4.在文件RotateView.cpp开始位置定义一个用户自定义消息 5.利用ClassWizard为CRotateView类生成消息WM_TIME的消息处理函数 6.在类CRotateView的定义中声明自定义消息处理函数 7.在文件RotateView.cpp消息映射BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加自定义消息映射宏 8.在自定义消息处理函数中显示一提示信息 9.运行结果 实验四 实验题目: 双击鼠标左键,在试图能够分别用画笔和画刷画彩色的矩形。 实验目的: 掌握画笔和画刷的功能如何使用画笔绘制几何图形,如何使用画刷用颜色来填充区域 实验步骤: 第一步: 新建工程MFC类向导,多文档或者单文档。 第二步: 查看—建立类向导—选择CMyView,在Messages选择WM—LBUTTONDBLCLK 第三步: 单击EditCode voidCMyView: : OnLButtonDblClk(UINTnFlags,CPointpoint) {CView: : OnLButtonDblClk(nFlags,point); CClientDCdc(this); CPencpen; CBrushcbrush(RGB(0,255,0)); cpen.CreatePen(PS_SOLID,5,RGB(255,0,0)); SelectObject(dc,cpen); Rectangle(dc,50,50,150,150); SelectObject(dc,cbrush); Rectangle(dc,300,300,200,200); } 第四步: 运行结果: 实验五 实验题目: 通过菜单调用非模式对话框,并在该对话框上实现乘法运算。 实验目的: 熟悉菜单编辑器和工具栏编辑器的操作方法。 掌握通过菜单调用对话框的方法。 实验步骤: 第一步: 新建工程MFC类向导,多文档或者单文档。 第二步: 插入—资源—DIALOG—在对话框里面添加编辑框—弹出如下图所示的对话框 第三步: 插入—资源—Dialog—新建,查看—建立类向导—新建CLASS文件。 第四步: 选择menu—查看,单击右键—属性—弹出如下图所示的对话框 第五步: 单击左键—建立类向导—选择视图选项下自己所创建的窗体名称点确定—弹出如下图所示的代码框。 第六步: 在所建立的消息映射中写入如下代码。 voidCMyView: : Oncn() {CModDlg*s; s=newCModDlg; s->Create(IDD_DIALOG1,this); s->ShowWindow(SW_SHOW); } 第七步: 在建立类向导—定义变量—如下图所示。 第八步: 在对话框中双击左键确定按钮进入代码框写入运算代码—如下图所示。 voidCModDlg: : OnOK() {UpdateData(true); m_s3=m_s1*m_s2; UpdateData(false); } 第九步: 编译正确后所显示的视图框如下图所示。 第十步: 在菜单栏点查看—乘法,在所运行的对话框中输入数字验证是否正确。 实验六 实验题目: 客户端和服务端 实验目的: 客户端和服务端应用程序实现,利用socket原理,建立socket连接启动一个线程进行通信和连接 实验步骤: 客服端 第一步: 新建工程MFC类向导—基本对话框—选择WindowsSockets 第二步: 设计客户端窗口选择ip,编辑框等等如下图: 第三步: 在第二步的基础上面建立类向导—选择MemberVariables对ip、port、list2进行定义 第四步: 查看—建立类向导—IDOK—EditCode voidCMyDlg: : OnOK() {WSADATAwsaData; WSAStartup(0x101,&wsaData); chartemp[512]; SOCKETclient; client=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_inserver; DWORDdwIp; UpdateData(true); ((CIPAddressCtrl*)GetDlgItem(IDC_IP))->GetAddress(dwIp); server.sin_addr.S_un.S_addr=htonl(dwIp); server.sin_port=htons(m_dk); server.sin_family=AF_INET; if(connect(client,(structsockaddr*)&server,sizeof(server))! =0) {m_xinxi.AddString("未建立连接"); closesocket(client); return;} recv(client,temp,sizeof(temp),0); m_xinxi.AddString(temp); send(client,"vc++sheji",9,0);} 第五步: 运行结果 服务端: 第一步: 新建工程MFC类向导—基本对话框—选择WindowsSockets 第二步: 设计客户端窗口选择ip,编辑框等等如下图: 第三步: 在第二步的基础上面建立类向导—选择MemberVariables对ip、port、list2进行定义 第四步: 查看—建立类向导—IDOK—EditCode voidCMyDlg: : OnOK() {WSADATAwsaData; WSAStartup(0x101,&wsaData); SOCKETconn; conn=socket(AF_INET,SOCK_STREAM,0); sockaddr_inserver; DWORDdwIp; UpdateData(true); ((CIPAddressCtrl*)GetDlgItem(IDC_IP))->GetAddress(dwIp); server.sin_addr.S_un.S_addr=htonl(dwIp); server.sin_port=htons(m_dk); server.sin_family=AF_INET; if(bind(conn,(structsockaddr*)&server,sizeof(server))! =0) {m_xx.AddString("绑定未成功"); return;} if(listen(conn,10)! =0) {m_xx.AddString("未监听"); return;} SOCKETclient; chartemp[512]; sockaddr_infrom; intfromlen=sizeof(from); client=accept(conn,(structsockaddr*)&from,&fromlen); strcpy(temp,inet_ntoa(from.sin_addr)); send(client,temp,strlen(temp),0); {recv(client,temp,strlen(temp),0); m_xx.AddString(temp);} } 运行结果: 实验结果: 对服务端和客户端建立连接,运行结果如下,说明连接成功 实验七 实验题目: 实现服务端和客服端多线程通信 实验目的: 客户端和服务端应用程序实现,利用socket原理,实现多线程链接与通信。 实验步骤: 客服端: 1.新建工程MFC类向导—基本对话框—选择WindowsSockets 2.在弹出的对话框中添加ip地址控件、编辑框控件、列表框控件 3.查看—建立类向导,为各控件定义 4.返回对话框,双击确定进行编码 voidCMyDlg: : OnOK() {WSADATAwsaData; WSAStartup(0x101,&wsaData); chartemp[512]; SOCKETclient; client=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_inserver; DWORDdwIp; UpdateData(true); ((CIPAddressCtrl*)GetDlgItem(IDC_IP))->GetAddress(dwIp); server.sin_addr.S_un.S_addr=htonl(dwIp); server.sin_port=htons(m_dk); server.sin_family=AF_INET; if(connect(client,(structsockaddr*)&server,sizeof(server))! =0) {m_xinxi.AddString("未建立连接"); closesocket(client); return;} recv(client,temp,sizeof(temp),0); m_xinxi.AddString(temp); send(client,"vc++sheji",9,0); intp=open("c: \\005",4,0x0800|0x0100); inty; while(true) {y=recv(client,temp,512,0); write(p,temp,y); if(y<512) {m_xinxi.AddString("hello"); close(p); break; } } closesocket(client); } 服务器端: 1.新建工程MFC类向导—基本对话框—选择WindowsSockets 2.在弹出的对话框中添加ip地址控件、编辑框控 3.查看—建立类向导,为各控件定义 4.返回对话框,双击确定进行编码 voidCMyDlg: : OnOK() {WSADATAwsaData; WSAStartup(0x101,&wsaData); SOCKETconn; conn=socket(AF_INET,SOCK_STREAM,0); sockaddr_inserver; DWORDdwIp; UpdateData(true); ((CIPAddressCtrl*)GetDlgItem(IDC_IP))->GetAddress(dwIp); server.sin_addr.S_un.S_addr=htonl(dwIp); server.sin_port=htons(m_dk); server.sin_family=AF_INET; if(bind(conn,(structsockaddr*)&server,sizeof(server))! =0) {m_xx.AddString("绑定未成功"); return;} if(listen(conn,10)! =0) {m_xx.AddString("未监听"); return;} SOCKETclient; chartemp[512]; sockaddr_infrom; intfromlen=sizeof(from); client=accept(conn,(structsockaddr*)&from,&fromlen); strcpy(temp,inet_ntoa(from.sin_addr)); send(client,temp,strlen(temp),0); {recv(client,temp,strlen(temp),0); m_xx.AddString(temp); } } 5.运行结果: 实现多个客户端与服务端通信 实验总结: 把这学期所做的实验整理了一遍,期间从中巩固了许多学过的知识点,曾经做过的实验,没过多久就忘了,当从新拿出来看时,有种不是自己做的感觉,所以这次的实验报告做的也很纠结,不过经过努力,还是完成了任务,感觉挺愉快的, 感谢唐建清老师这学期的教导。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 实验 报告 程序设计