logo资料库

网络编程实践报告.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
程 序 实 践 报 告 (网络程序设计) 姓 班 名 级 学 号 指 导 教 师 程 序 实 践 名 称 程 序 实 践 内 容 网 络 程 序 设 计 网 络 程 序 设 计 开 设 学 期 2 0 1 0 - 2 0 1 1 第 二 学 期 开 设 时 间 第 1 8 周 — — 第 2 0 周 评 定 人 签 字 评 定 日 期 报 告 日 期 评 定 成 绩 一、程序实践概述 1、题目名称: Linux 编程基础 2、时间进度: 18 周周二和周四,共 8 学时 3、开发环境: Linux 操作系统 二、问题分析 1、功能说明: ①编程实现快速排序算法; ②实现文本文件拷贝函数 copy(f_source, f_target);即实现如下功能: 0
$ ./copy f1 f2 以上程序执行后当前目录会形成一个新的文件 f2,且其内容与 f1 完全一致。 ③编写一个程序,要求:输入 N 个学生的学号和成绩,并保存在 stu.txt 文 本文件中,对学生成绩进行排序并把排序后的结果输出到 score.txt 文件中,同时 在屏幕上输出高于平均成绩的学生的学号和成绩。 ④编写一个程序找出串 str1 和串 str2 的所有最长公共子串。 2、解决方案: (1)、定义一个数组,保存待排序的数据;按照快速排序算法,排序之后输 出; (2)、将文件中的字符顺序读入另一个文件; (3)、运行时输入 10 个学生的学号和成绩,然后将其保存到 stu.txt 文本文 件中,然后调用冒泡排序算法,将排好序的结果输出到屏幕和 score.txt 文件 中,同时将平均成绩和高于平均成绩的名单输出。 (4)、依次输入串,分别保存在 str1 和 str2 中,然后依次对应比较,若相 等则输出对应的子串。 三、方案设计 1、模块结构: (1)、定义快排子函数 QuickSort(),此快速排序算法为通用算法;在 main() 函数中调用。 (2)、依次从 file.in 文本文件中读入字符并判断是否为 EFO,若不是将读 取的元素写入 file.out 文本文件中。 (3)、定义一个结构体数组保存学生的学号和成绩,依次输入 N 个学生的 学号和成绩,并写入到 score.txt 文件中,然后求平均值并进行比较将大于平 均值得学生名单输出,最后排序并将排序好的学生名单写入到 stu.txt 文件中。 (4)、首先读入两个字符串,然后依次比较对应位置字符是否相同,若相 同则将其保存在相应的公共子串中。输出公共子串。 2、数据结构: 第 1 和 4 个程序都定义的数据结构是一个一维数组,分别保存的是待排序的 数据、从文件中读取的字符串。 第三个程序使用的数据结构是: struct { int sum; //总分 1
int number; //学号 }student[N]; 3、总体流程: 1.快速排序算法 2.文件拷贝 2
3.学生平均成绩 4. 字符串比较 3
第四个实验流程图 4、关键算法: (1)、快速排序:在待排序的 n 个记录中任取一个记录(一般选取第一个),以 它的关键字 k 为准,将剩余的 n-1 个记录分割成两个子集。第一个集中的每一 个记录关键字均小于 k,第二个子集中的每个记录关键字均大于 k。然后将 k 对 应的记录排在两个子集之间。这是一趟排序。递归调用可以完成快速排序。 void quickSort(SqList *lpt,int low,int high,int key) { int i,j; int initLow=low,initHigh=high; while (lowr[i] > lpt->r[key];i--) { high--; } if(high != key) lpt->r[0] = lpt->r[high]; lpt->r[high] = lpt->r[key]; lpt->r[key] = lpt->r[0]; key = high; } for(j = low; lpt->r[j] < lpt->r[key]; j++) { low++; } if(low != key) { lpt->r[0] = lpt->r[low]; lpt->r[low] = lpt->r[key]; lpt->r[key] = lpt->r[0]; key = low; } } if(key - initLow > 1) { 4
quickSort(lpt,initLow,key-1,initLow); } if(initHigh-key > 1) { quickSort(lpt,key+1,initHigh,key+1); } } (2)、调用 getc 函数和 putc 函数实现文本文件复制: for(i=0;;i++) { if((k=getc(p1))==EOF) break; putc(k,p2); } (3)、算法在源程序中给出,主要是排序算法。 (4)、两个串进行最大相同字串的输出。 for (i=1;i<=n;i++) for (j=0;jmaxlength) { maxlength = i; start = j; } } if (maxlength==0) printf("No Answer"); else for (i=0;i
四、调试记录 由于粗心大意造成了一些低级错误,如在编辑程序时将变量名写错,或是 忘记了句末分号。 五、创新说明:无 6
一、程序实践概述 1、题目名称: Socket 编程基础 (1)时间服务器 (2)远程文件备份服务器 2、时间进度: 19 周周一到周三共 12 学时。 3、开发环境: Linux 操作系统 二、问题分析 1、功能说明: ①编程实现时间服务器 编写一个网络时间服务器 timeserver,该服务器能应具有如下功能:  够为网络上的用户提供时间服务,即为网络用户返回服务器的当前时 间;  记录发出请求的网络用户的 IP 地址(保存到文件中),格式如下: IP 地址 请求时间 编写时间服务客户端 timeclient,该客户端能够向服务器发送时间服务请 求,并把获得的时间返回给用户。 ②编程实现远程文件备份服务器 分别采用 TCP 或 UDP 协议编写一个远程数据备份服务器,运行客户端将本 地文件备份到远程的服务器中。 服务器的功能:接受客户端请求,把客户端的文件进行备份(可以备份 到指定的文件夹)。 客户端的功能:与远程服务器进行连接,在连接后把本地的文件发送给 远程备份服务器。 2、解决方案: (1)、实现时间服务器 通过面向连接的 TCP 协议实现,TCP 提供可靠的数据传输。服务器端打开 端口并监听连接,有连接到来时就与对方建立连接,将对应的 IP 和时间发送给 客服端。 (2)、实现远程文件备份服务器 7
分享到:
收藏