调用getline( )函数从文件中每次读取一行字符串fin.getline(s,SLEN);然后再利用sscanf( )函数对该字符串做分析得到相应的数据。
其中俱乐部的成员数量的信息可以直接从文件中获取,例:
文件中可能出现一行为“2players:”则可得到球员数量为2.
为了方便,boss类中有两个数组players[ ]和staffs[ ]记录所有的球员和员工信息。在文件读取完毕,获得了所有俱乐部的信息后要给这两个数组赋值,实现如下:
为增加程序的健壮性,程序中有对相应数据进行判断。当文件读取发生错误的时候,就按第一版本的处理办法,自动生成一些俱乐部的信息。
(3) 文件的更新
在boss类中增加一个成员函数int updateFile( );每当发生俱乐部信息 的改变,包括球员的转会,俱乐部的更名或解散,俱乐部增加或删除球员的时候,就需要更新文件,即:将boss类的所有俱乐部信息以out的方式重新写入文件”clubs.txt”中。
2. 高级搜索功能
在boss类中增加如下成员函数:
算法思路: 用户的输入用一个字符串来存储。采用栈的思想,用一个数组char stacks[ ]来存储”|| ”、”&& ”、”@ ”、”(”和代表条件出现的
顺序等。遍历这个字符串,遇到”|| ”、”&& ”和左括号时就压入栈中,遇到‘@’就调用int dealOrder( char*, int [ ])函数对该条件做相应的处理,并将其序号压人栈中。当遇到右括号时,弹栈并调用void dealGroup(int [], int [], char)函数处理条件之间的关系,即用数组记录下满足条件的球员的下标。最后将栈中剩下的所有条件处理完。具体实现可见代码。
三.测试报告(高级搜索)
经检验 结果正确 经检验 结果正确 经检验 结果正确 经检验 结果正确 提示错 误成功 经检验 模糊查找球员姓名 结果正确 经检验 结果正确 模糊查找俱乐部名称 结果正 同时查找多个俱乐部 确 第三版本(企业版)
一.实验描述
在第二版本的基础上,使用Socket作为远程通信技术,增加远程访问功
能,采用客户端/服务端的方式,实现远程操作。
二.Socket说明
socket的英文原义是“孔”或“插座”作为4BDS UNIX的进程通信机 制,取后一种意思。通常也称作\套接字\,用于描述IP地址和端口,是一个通信链的句柄。被用于解决不同主机的进程间通讯问题。后在网络软件中被广泛应用于TCP/IP网络,成为开发网络应用软件的强有力工具。
在网络连接中,连接双方两个端点所组成的五元组(即通讯协议、本地
IP、本地PORT、远程IP 和远程PORT)称为socket pair,该五元组唯一的标识了一个网络连接。 通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。
1. 服务端的操作过程为:
1.创建套接字(socket)。
2.将套接字绑定到一个本地地址和端口上(bind)。 3.将套接字设为监听模式,准备接受客户请求(listen)。