《管理系统中计算机应用》实践报告Word格式文档下载.docx

上传人:b****6 文档编号:20201621 上传时间:2023-01-17 格式:DOCX 页数:20 大小:72.19KB
下载 相关 举报
《管理系统中计算机应用》实践报告Word格式文档下载.docx_第1页
第1页 / 共20页
《管理系统中计算机应用》实践报告Word格式文档下载.docx_第2页
第2页 / 共20页
《管理系统中计算机应用》实践报告Word格式文档下载.docx_第3页
第3页 / 共20页
《管理系统中计算机应用》实践报告Word格式文档下载.docx_第4页
第4页 / 共20页
《管理系统中计算机应用》实践报告Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

《管理系统中计算机应用》实践报告Word格式文档下载.docx

《《管理系统中计算机应用》实践报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《管理系统中计算机应用》实践报告Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

《管理系统中计算机应用》实践报告Word格式文档下载.docx

打开客户端(client.exe),根据提示,将客户端(server.exe)所在的服务器的IP地址输入进去。

第四步:

输入在服务器端(server.exe)中建立的端口号值。

第五步:

选择和服务器端(server.exe)中一样的协议第六步:

收发数据第七步:

关闭连接。

2.2原理说明书2.3程序注释/*client.c-简单的TCP/UDP套接字客户程序windows环境*/#include/关于套接字的头文件#include#include#include#include#pragmacomment(Iib,ws2_32)添加ws2_32库intmain(void)unsignedshortport=5001;

/端口号intsocket_type=SOCK_STREAM;

/缺省使用TCP连接charBuffer1280;

/收发缓冲区套接字地址结构变量structsockaddr_inserver,from;

/指针/先输入客户程序所需要的基本信息:

服务器地址,端口号,套接字类型printf(请输入服务器地址:

);

scanf(%s,Buffer);

printf(请输入端口号(5000):

scanf(%d,&

i);

if(i65535)printf(不正确的端口号d,用缺省端口号5001n,i);

elseport=i;

printf(请输入套接字类型(1,TCP;

2,UDP):

if(i=1)socket_type=SOCK_STREAM;

设定为SOCK_STREAMelseif(i=2)socket_type=SOCK_DGRAM;

设定为SOCK_DGRAMelseprintf(”不正确的输入d使用TCP数据流n,i);

/在windows环境下,需要先初始化协议栈if(retval=WSAStartup(0x202,&

wsaData)!

=0)/WSAStartup函数调用,用来初始/socketprintf(WSAStartup失败,错误号:

%dn,retvaI);

WSACIeanup();

/当调用了WSAStartup之后,就需要调用WSACIeanu函数释放内存return-1;

/取得主机IP地址是域名或命名地址,用首字母的if(isaIpha(Buffer0)/从一个主机数据库中提是否在A-Z,或者a-z来判断是域名还是IP地址hp=gethostbyname(Buffer);

/取出主机信息elseaddr=inet_addr(Buffer);

/是点分地址hp=gethostbyaddr(char*)&

addr,4,AF_INET);

/根据网络地址,获得主机信息,执行成功,就返回一个指向主机信息的结构if(hp=NULL)printf(不能解析地址%s:

错误号%dn,Buffer,WSAGetLastError();

/用于获取错误信息WSACleanup();

exit

(1);

/拷贝解析的信息到sockaddr_in结构中memset(&

server,0,sizeof(server);

/分配内存空间,由server返回memcpy(&

(server.sin_addr),hp-h_addr,hp-h_length);

/信息的copyserver.sin_family=hp-h_addrtype;

/组协议初始化server.sin_port=htons(port);

/端口号初始化/建立套接字conn_socket=socket(AF_INET,socket_type,0);

if(conn_socketh_name);

(connect(conn_socket,(structsockaddr*)&

server,sizeof(server)=SOCKET_ERROR)printf(connect()失败,错号:

%dn,WSAGetLastError();

closesocket(conn_socket);

/如果创建失败,就关闭连接套接字WSACleanup();

return-1;

while

(1)/得到要发送的信息字符串puts(n输入送到服务器的信息:

gets(Buffer);

if(!

strlen(Buffer)/如果没有输入信息,继续循环continue;

/发送网络信息strlen(Buffer)+1,0);

/面向tcp,类似BSDwrite()elseretval=sendto(conn_socket,Buffer,strlen(Buffer)+1,0,/发送字符串的时候,须将字符串的结束符0发送(structsockaddr*)&

server,sizeof(server);

/面向UDPif(retval=SOCKET_ERROR)printf(发送失败,错误号:

break;

elseprintf(发送信息:

%sn,Buffer);

/接收网络信息i=sizeof(from);

sizeof(Buffer),0);

/面向tcp,类似BSDread()elseretval=recvfrom(conn_socket,Buffer,sizeof(Buffer),0,(structsockaddr*)&

from,&

/面向UDPif(retval=SOCKET_ERROR)printf(接收信息失败,错误号:

elseif(retval=0)/对于面向连接的套接字,需要判断对方是否关闭连接printf(服务器关闭连接n);

%sn,retval,windows环境else/正确接收到网络信息printf(收到%d字节信息:

Buffer);

/程序的一个退出条件if(!

stricmp(Buffer,quit)break;

/关闭套接字closesocket(conn_socket);

WSACleanup();

return0;

/*server.c-简单TCP/UDP套接字服务器程序*/#include/套接字头文件#include#include#include#include#pragmacomment(lib,ws2_32)/添加库intmain(void)unsignedshortport=5001;

intsocket_type=SOCK_DGRAM;

charBuffer1024;

intretval,fromlen,i,isconnected=0;

变量structsockaddr_inlocal,from;

量SOCKETlisten_socket,msgsock;

/WSADATAwsaData;

息/端口号/缺省使用TCP连接/收发缓冲区/临时/套接字地址结构变套接字变量/windows套接字信/先输入服务器程序所需要的基本信息:

端口号,套接字类型printf(请输入端口号(5000):

if(i65535)printf(不正确的端口号d用缺省端口号5001n,i);

2,UDP):

elseif(i=2)socket_type=SOCK_DGRAM;

elseprintf(”不正确的输入d使用TCP数据流n,i);

=0)/初始化套接字版本等信息printf(WSAStartup失败,错误号:

%dn,retval);

/在创建失败,或者程序结束,都要调用return-1;

/建立套接字listen_socket=socket(AF_INET,socket_type,0);

if(listen_socket=INVALID_SOCKET)printf(socket()失败,错误号:

/拷贝解析的信息到sockaddr_in结构中local.sin_family=AF_INET;

local.sin_addr.s_addr=INADDR_ANY;

local.sin_port=htons(port);

/邦定网络地址到套接字if(bind(listen_socket,(structsockaddr*)&

local,sizeof(local)=SOCKET_ERROR)/绑定网络地址printf(bind()失败,错误号:

/对于流式套接字,让套接字处于监听状态,等待连接到来if(socket_type!

=SOCK_DGRAM)if(listen(listen_socket,5)=SOCKET_ERROR/)监听网络printf(listen()失败,错误号:

printf(监听端口:

%d,使用协议:

%sn,port,(socket_type=SOCK_STREAM)TCP:

UDP);

while

(1)fromlen=sizeof(from);

if(socket_type=SOCK_DGRAM)msgsock=listen_socket;

elseif(isconnected=0)/对于TCP连接,如果没有连接,等待一个连接的到来msgsock=accept(listen_socket,(structsockaddr*)&

fromlen);

if(msgsock=INVALID_SOCKET)printf(accept()失败,错误号:

isconnected=1;

printf(从%s收到连接,端口是:

%dn,inet_ntoa(from.sin_addr),htons(from.sin_port);

/等待接收网络信息if(socket_type!

=SOCK_DGRAM)retval=recv(msgsock,Buffer,sizeof(Buffer),0);

/面向tcp,类似BSDread()elseretval=recvfrom(msgsock,Buffer,sizeof(Buffer),0,(structsockaddr*)&

/面向UDPprintf(从%s收到数据报,端口是:

/结果判断if(retval=SOCKET_ERROR)printf(recv()失败,错误号:

closesocket(msgsock);

continue;

elseif(retval=0)printf(客户端关闭连接n);

else/正常接收printf(收到%d字节的数据:

%sn,retval,Buffer);

if(socket_type!

=SOCK_DGRAM)/对于TCP连接,我们收到exit有一个关闭连接的操作if(!

stricmp(Buffer,exit)printf(关闭TCP连接,等待下一次连接.n);

isconnected=0;

/信息回送printf(将同样的信息回送给客户端.nn);

printf(pleaseinputthemessage:

n);

=SOCK_DGRAM)retval=send(msgsock,Buffer,strlen(Buffer)+1,0);

/面向tcp,类似BSDwrite()elseretval=sendto(msgsock,Buffer,strlen(Buffer)+1,0,(structsockaddr*)&

from,fromlen);

/面向UDPif(retval=SOCKET_ERROR)printf(send()失败,错误号:

3.连接数据库连接数据库3.1使用说明书第一步:

在开始菜单中找到SQLSERVE并打开第二步:

建立一个新的数据库。

在SQLSERVER建立一个名为student的数据库第三步:

在student库下创建一个Stu_Info表,并在表中包含以下字段名:

snum,sname,ssex,sage,smajor。

输入一些数据,进行测试。

在安全性中设置密码为123.第三步:

编译生成可执行的文件,点击运行。

根据提示框中的信息,输入我们需要插入的数据。

关闭程序第四步:

在次点击运行,查看我们插入的数据是否成功的插入。

3.2原理说明通过ADO访问数据库的技术进行数据库编程。

我们需要在计算机上配置数据源。

配置数据源的过程,就是和让数据库的驱动程序来对数据库进行操作,以便使我们再程序中,可以调用驱动程序来完成我们需要完成的工作。

处理ADO访问技术之外,还有ODB(开放式数据库互联)等。

3.3程序注释/*利用ADC访问MSSQL2000要求:

【1】输出Stu_Info表内的每一条记录【2】添加一条新记录【3】删除名字为李立的记录*/#importc:

ProgramFilesCommonFilesSystemADOmsado15.dll/导入动态链接库,使我们可以为了防止命名冲突,使用ADC编程no_namespacerename(EOF,EndOfFile)/不使用命名空间#include/标准输入输出流#include/forsetw()usingnamespacestd;

classSTU/定义学生类public:

charsnum10;

/学号charsname10;

/姓名charssex2;

/姓别longsage;

/年龄charsmajor20;

/专业public:

STU()STU();

intmain()STUstudent;

/定义学生对象:

Colnitialize(NULL);

/初始化OLE/COM库环境,为访问ADO接口做准备_RecordsetPtrm_pRecordset(ADODB.Recordset);

/建立记录集_ConnectionPtrm_pConnection(ADODB.Connection);

/建立连接_bstr_tbstrSQL(select*fromstu_info);

/查询语句char*query_cmd=DELETEFROMstu_infoWHEREsname=李立;

try/异常处理/创建Connection对象m_pConnection.Createlnstance(ADODB.Connection);

/设置连接字符串,必须是BSTR型或者_bstr_t类型_bstr_tstrConnect=Provider=SQLOLEDB;

Server=(local);

Database=student;

uid=sa;

pwd=123;

/若数据库在网络上则Server为形如/用户sa和密码123只是针对我的库m_pConnection-Open(strConnect,adModeUnknown);

if(m_pConnection=NULL)cerrOpen(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

_variant_tvsnum,vsname,vsage,vssex,vsmajor;

/对应库中的snum,sname,sage,ssex,smajorcout学号姓名年龄姓别专业;

coutEndOfFile)/如果记录集没有到记录的尾端vsnumm_pRecordset-GetCollect(_variant_t(long)0);

/这儿给字段编号和字段名都可以vsname=m_pRecordset-GetCollect(sname);

vsage=m_pRecordset-GetCollect(sage);

vssex=m_pRecordset-GetCollect(ssex);

vsmajor=m_pRecordset-GetCollect(smajor);

if(vsnum.vt!

=VT_NULL&

vsname.vt!

vsage.vt!

vssex.vt!

vsmajor.vt!

=VT_NULL)/如果不为空cout.setf(ios:

left);

/设置左对齐coutsetw(14)(char*)(_bstr_t)vsnum;

/输出学号coutsetw(14)(char*)(_bstr_t)vsname;

/输出姓名coutsetw(8)vsage.lVal;

/输出年龄性别coutsetw(20)(char*)(_bstr_t)vsmajor;

/出专业cout.unsetf(ios:

/取消左对齐coutMoveNext();

/移到下一条记录coutnn;

/输入将要插入的信息coutn请输入你要添加的学生信息n;

coutstudent.snum;

coutstudent.sname;

coutstudent.sage;

coutstudent.ssex;

coutstudent.smajor;

m_pRecordset-MoveFirst();

/移动到第一条记录m_pRecordset-AddNew();

/添加新记录m_pRecordset-PutCollect(snum,_variant_t(student.snum);

/将数据添加进去输入库m_pRecordset-PutCollect(sname,_variant_t(student.sname);

m_pRecordset-PutCollect(sage,_variant_t(student.sage);

m_pRecordset-PutCollect(ssex,_variant_t(student.ssex);

m_pRecordset-PutCollect(smajor,_variant_t(student.smajor);

m_pRecordset-Update();

/更新操作,如果不更新,对数据库的操作将没有得到相应的操作m_pConnection-Execute(query_cmd,NULL,1);

/用Execute执行sql语句来删除m_pRecordset-Close();

/关闭记录集/捕捉异常catch(_com_errore)/显示错误信息cerrnERROR:

State)m_pConnection-Close();

:

CoUninitialize();

4.实习总结、体会与收获实习总结、体会与收获通过这些天老师给我们讲授实习课,我知道的我们专业的实用性,以及在软件工程上我们应该怎么学,学些什么,光靠课堂上我们学习的东西十分有限,要充分利用课余时间,利用图书馆和互联网。

学习这个专业,要求我们要深入进去,不能只学会些皮毛,要不断跟进时代的步伐,不断学习新的知识,开拓视野,才能在这个专业上有更好的作为,使我们走得更远,这门课程的学习使我受益匪浅,为以后的学习打下了基础,激发了我的学习兴趣,使我明确了自己的专业方向。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1