网络应课程设计报告
系 (院): 计算机科学学院
专业班级: 计科
姓 名:
学 号:
指导教师:
设计时间: 2017612 2017623
设计点: 4教软件工程机房
目录
课程目意义 1
二系统需求分析 1
21设计题目 1
22 系统需求 1
三 详细设计 2
31设计成果心 3
四 总结 4
五 附录 4
课程目意义
计算机网络课程设计目学生更深入掌握计算机网络核心容实现理实践相结合学生具体实践成果体现理知识掌握程度利学生提高计算机网络实践力加深计算机网络理知识理解基目:
1培养学生理联系实际设计思想训练综合运学基础理知识结合生产实际分析解决网络应中问题力基础理知识巩固加深
2学掌握网络应工程般设计程方法
二系统需求分析
21设计题目
题目2:基TCP协议通讯录
22 系统需求
1需录入联系通讯录中
2够通讯录中项信息进行添加删浏览等系列操作
3够完成通讯录基功
4程序具定健壮性会户输入错误引起程序运行错误中 断执行输入值类型范围字符串长度等进行正确性检查合法输入值出出错信息指出错误类型等重新输入
5删数应出警告
23 功分析
1添加功:选择功户手动输入联系项信息
2查功:选择功时选择根种信息查询联系电话住址性邮箱QQ等项信息
3删功:选择功时够通输入联系姓名者电话删联系全部信息
4退出系统功:选择功时够退出系统保存数
菜单
功结构图:
添加联系
删联系
查联系
退出
输入意键进入菜单
流程图
输入0~3选择功
1:查
2:添加
3:删
4:退出
输入2:添加项信息添加
输入1:查项信息
输入4:退出
输入3:删学号
三 详细设计
套接字应层传输层接口准确说Socket作应程序TCPIP协议交互接口通Socket区分TCPIP连接应程序进程
TCP客户端服务端流程图:
服务端:
void Start() 创建套接字
stdlist m_list链表类 链表象
CSocket m_sock 定义套接字
BOOL Browse(CSocket *pSocka)查联系信息
BOOL AddData(CSocket *pSocka)添加联系信息
BOOL OnReceive(CSocket* pSocka)收发数
BOOL Delete(CSocket *pSocka)删信息
客户端:
void Delete()删数
void Print()输入数
void Input()添加数
int Menu()创建菜单
void Start()创建套接字
31设计成果心
添加功:客户端运行结果:
服务端运行结果:
删功:
客户端运行结果:
服务端运行结果:
文档保存删:
四 总结
紧紧张张两周课设刚开始手程序想法运行心里时时种喜悦通两周课设认识书老师教容限想掌握更知识必须动脑思考断学时应请教解更知道知识回头编写程序原想难相信做什事仔细思考认真做定做 通周编程发现足编写时常犯低级错误马虎浪费少时间知进行时候种信总想正做什足然发现做事中注意争取改掉 两周努力掌握基C++进行程序设计技巧更深理解运结构化程序设计思想方法掌握开发型实系统基方法时学会调试较长程序基方法提高书写程序设计开发文档力(书写课程设计报告)周实践受益匪浅感谢孜孜倦指导老师感谢困惑时帮助学感谢学校样动手动脑机会理实践相结合方面次锻炼收获
五 附录
服务端代码:
Studenth中代码:
Studenth interface for the CStudent class
#if defined(AFX_STUDENT_H__51E819EA_E8BD_4CCD_9E03_F45C00E0494F__INCLUDED_)
#define AFX_STUDENT_H__51E819EA_E8BD_4CCD_9E03_F45C00E0494F__INCLUDED_
#include
#if _MSC_VER > 1000
#pragma once
#include
#endif _MSC_VER > 1000
enum {PORT10011}
enum {
REQ_ADD0x1111
REQ_DEL
REQ_MOD命令号
REQ_FIND
REQ_BROW
}
typedef struct SStud
{ int nNumb
char sName[20]
char sAge[20]
char sSex[4]
char sUnit[20]
char sAdd[20]
}DATA
class CStudent
{
stdlist m_list链表类 链表象 保存SaveLoad中
CSocket m_sock客户端通信socka象
BOOL Browse(CSocket *pSocka)
BOOL AddData(CSocket *pSocka)
BOOL OnReceive(CSocket* pSocka)
BOOL Delete(CSocket *pSocka)
public
void Load()
void Save()
void Start()
CStudent()
virtual ~CStudent()
}
#endif defined(AFX_STUDENT_H__51E819EA_E8BD_4CCD_9E03_F45C00E0494F__INCLUDED_)
Studentcpp代码:
Studentcpp implementation of the CStudent class
#include stdafxh
#include Studenth
#include
#include
#include
#include
using namespace std
ConstructionDestruction
CStudentCStudent()
{
}
CStudent~CStudent()
{
}
void CStudentStart()
{
WSADATA wd
WSAStartup(0x0202&wd)套接字初始化
if( m_sockCreate (PORT))
{
cout <<端口创建失败 << WSAGetLastError() <
}
m_sockListen()
CSocket socka
sockaddr_in sa
int nLen sizeof(sa)
while(m_sockAccept(socka(sockaddr*)&sa&nLen))
{
cout <<户登录:<
sockaClose ()关闭客户端服务器连接
}
}
网络协议:
硬件协议
协议命令+附加数
1DATA
2nNumb
BOOL CStudentOnReceive(CSocket *pSocka)
{返回值决定否继续该登陆户通讯(否断开连接)
int nCmd0
if(pSocka>Receive(&nCmdsizeof(nCmd))<0)
return FALSE
switch(nCmd)
{
case REQ_ADD
return AddData(pSocka)
case REQ_DEL
return Delete(pSocka)
case REQ_MOD
break
case REQ_FIND
break
case REQ_BROW
return Browse(pSocka)
}
return FALSE}
BOOL CStudentAddData(CSocket *pSocka)
{
DATA d
FILE *fp
if(pSocka >Receive(&dsizeof(d))<0)
return FALSE
服务器收客户端传信息存入4txt中
fpfopen(4txta)
if(fpNULL)
printf(开文件失败)
fprintf(fp\n)
fprintf(fpddnNumb)
fprintf(fp\t)
fprintf(fpsdsName )
fprintf(fp\t)
fprintf(fpsdsAge )
fprintf(fp\t)
fprintf(fpsdsSex )
fprintf(fp\t)
fprintf(fpsdsUnit )
fprintf(fp\t)
fprintf(fpsdsAdd )
fprintf(fp\t)
fprintf(fp\n)
fclose(fp)
system(@color 0a)
cout<<学号\t姓名\t年龄\t性\t单位\t手机号码<
return TRUE
}
BOOL CStudentBrowse(CSocket *pSocka)
{system(cls)
int nm_listsize()
pSocka>Send(&nsizeof(n))
listiterator itm_listbegin()
while(itm_listend())
{
DATA&d*it++ it指结构体数赋itit 移动
pSocka>Send(&dsizeof(d))
某项信息删更新文件
FILE *fp
int nm_listsize() 删n变化
fpfopen(4txtw)
fprintf(fp\n)
fprintf(fpddnNumb)
fprintf(fp\t)
fprintf(fpsdsName )
fprintf(fp\t)
fprintf(fpsdsAge )
fprintf(fp\t)
fprintf(fpsdsSex )
fprintf(fp\t)
fprintf(fpsdsUnit )
fprintf(fp\t)
fprintf(fpsdsAdd )
fprintf(fp\t)
fprintf(fp\n)
fclose(fp)
system(@color 0a)
cout<<学号\t姓名\t年龄\t性\t单位\t手机号码<
{}
void CStudentLoad()
{}
BOOL CStudentDelete(CSocket *pSocka){
int nNumb
if(pSocka>Receive (&nNumb sizeof(nNumb))<0)连接
return false
listiterator itm_listbegin()查找链表
while(itm_listend())
{if(it>nNumb nNumb)找nNumb
{m_listerase(it)删nNumb
return true}++it}return true}
客户端代码:
Studenth中代码:
Studenth interface for the CStudent class
#if defined(AFX_STUDENT_H__B679D35B_EF78_4F77_A33E_E69960383116__INCLUDED_)
#define AFX_STUDENT_H__B679D35B_EF78_4F77_A33E_E69960383116__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif _MSC_VER > 1000
#include
#include
system(color AB)
COLOR[A]
enum {PORT10011}
enum { REQ_ADD0X1111
REQ_DELREQ_BROW}
typedef struct SStud
{
int nNumb
char sName[20]
char sAge[20]
char sSex[4]
char sUnit[20]
char sAdd[20]}DATA
class CStudent
{public
void Delete()
void Print()
void Input()
int Menu()
void Start()
CSocket m_sock
CStudent()
virtual ~CStudent()}
#endif defined(AFX_STUDENT_H__B679D35B_EF78_4F77_A33E_E69960383116__INCLUDED_)
Studentcpp中代码:
Studentcpp implementation of the CStudent class
#include stdafxh
#include Studenth
#include
#include
#include
#include
using namespace std
ConstructionDestruction
CStudentCStudent()
{
}
CStudent~CStudent()
{
}
void CStudentStart()
{
WSADATA wd套接字初始化
WSAStartup(0x0202&wd)
if(m_sockCreate ())
{
cout <<网络启动失败 << WSAGetLastError() <
}
if(m_sockConnect(10201155PORT))
{
cout <<连接网络服务器时失败(错误号码:<< WSAGetLastError()<<)<
}
while(Menu())
}int CStudentMenu()
{system(color 0a)
cout <<\n\n\n\t\t********欢迎基TCP通讯录*********** <
cin >>i
switch(i){
case 1
Print()
break
case 2
Input()
break
case 3
Delete()
break
}return i}
void CStudentInput()
{ DATA d
cout <<请输入学号:<
cout <<请输入姓名:<
cout<<请输入年龄:<
cout<<请输入性:<
cout <<请输入单位:<
cout <<请输入手机号码:<
int nCmdREQ_ADD
m_sockSend(&nCmdsizeof(nCmd))
m_sockSend(&dsizeof(d))
Print()}
void CStudentPrint(){
system(color 0a)
int nCmdREQ_BROW
m_sockSend(&nCmdsizeof(nCmd))
DATA d
int n0
m_sockReceive(&nsizeof(n))
system(cls)
cout<<学号\t姓名\t年龄\t性\t\t单位\t\t手机号码<
m_sockReceive(&dsizeof(d))
cout<< dnNumb<<\t<
void CStudentDelete(){
cout<<请输入删学号:
int nNumb
cin>>nNumb
cout<<确定删学号?[yn]
char cgetch()
putch(c)
if(c'Y'||c'y') {
int nCmdREQ_DEL定义协议号命令号
m_sockSend(&nCmdsizeof(nCmd))发送协议号
m_sockSend(&nNumb sizeof(nNumb))发送命令号(学号) }
Print()}
长江学
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档