网络通信winsock课程设计

网络通信winsock课程设计
网络通信winsock课程设计

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

目录

一.设计目的 (2)

二.功能介绍 (2)

三.程序流程 (2)

四.设计步骤 (4)

五.详细设计 (4)

六.设计总结 (17)

七.参考文献 (17)

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一.设计目的

通过课程设计,使学生理解和学会应用winsock来进行编程;使学生提高理论联系实际解决实际问题的能力;也使学生对基于c++的网络通信编程进行系统设计过程中的诸多具体问题有感性的认识和深入的理解;进而提高学生的学习兴趣为其将来顺利进入毕业环节作必要的准备。

二.功能介绍

(1)配置文件支持功能:使用配置文件存储程序配置信息。

(2)网络参数管理功能:能够管理网络参数,例如IP、机器名、掩码和DNS等。

(3)路由表管理功能:能够查看和管理主机路由表条目。

三.程序流程

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

图1.程序流程图

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊四.设计步骤

1. 资料整理

2. 配置文件支持功能

3. 网络参数管理功能

4. 路由表管理功能

五.详细设计

(一)获取本地网络配置信息

图2.获取本地网络配置信息

本功能实现的是查询本地网络的基本配置信息,包括了主机名,注册域名,DNS服务器,获取信息后打印出来,如图2,具体的代码如下:

int main()

{

FIXED_INFO fi;

ULONG ulOutBufLen = sizeof(fi)+100;

// 获取本地电脑的网络参数

/* if(GetNetworkParams(&fi, &ulOutBufLen) != ERROR_SUCCESS) {

printf(" GetNetworkParams() failed \n");

getch();

return -1;

}*/

GetNetworkParams(&fi, &ulOutBufLen);

// 主机名称

printf(" Host Name: %s \n", fi.HostName);

// 电脑注册的域名

printf(" Domain Name: %s \n", fi.DomainName);

// 打印出所有的DNS服务器

printf(" DNS Servers: \n");

printf(" \t%s \n", fi.DnsServerList.IpAddress.String);

IP_ADDR_STRING *pIPAddr = fi.DnsServerList.Next;

while(pIPAddr != NULL)

{

printf(" \t%s \n", pIPAddr->IpAddress.String);

pIPAddr = pIPAddr->Next;

}

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

getch();

return 0;

}

(二)读取网卡信息

图3.网卡信息

图4.网卡信息

本功能实现的获取本地网卡信息,打印出本地连接,无线连接,WiFi适配器等,具体的内容如图所示,主要代码如下:

typedef struct tagAdapterInfo

{

string strName; // 适配器名称

string strDriverDesc; // 适配器描述

string strIP; // IP地址

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

string strNetMask; // 子网掩码

string strNetGate; // 网关

string strBroadcastIp; // 广播地址

string strS; // 测试用的

}ADAPTER_INFO;

BOOL GetAdapterInfo();//获取网络适配器信息

BOOL RegGetIP(ADAPTER_INFO *pAI, LPCTSTR lpszAdapterName, int nIndex = 0); vector AdapterInfoVector;

int main()

{

GetAdapterInfo();

int i;

for (i = 0;i < AdapterInfoVector.size();i++)

{

cout << AdapterInfoVector[i]->strName << ":" << endl << endl;

cout << " " << AdapterInfoVector[i]->strDriverDesc << endl;

cout << " " << AdapterInfoVector[i]->strIP << endl;

cout << " " << AdapterInfoVector[i]->strNetMask << endl;

cout << " " << AdapterInfoVector[i]->strNetGate << endl;

cout << " " << AdapterInfoVector[i]->strBroadcastIp << endl;

cout << endl;

}

getch();

return 0;

}

// 取得所有网卡信息

BOOL GetAdapterInfo()

{

// 这里的代码适合WINDOWS2000,对于NT需要读取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

NT\CurrentVersion\NetworkCards

HKEY hKey, hSubKey, hNdiIntKey;

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,

"System\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}", 0,

KEY_READ,

&hKey) != ERROR_SUCCESS)

return FALSE;

DWORD dwIndex = 0;

DWORD dwBufSize = 256;

DWORD dwDataType;

char szSubKey[256];

unsigned char szData[256];

while(RegEnumKeyEx(hKey, dwIndex++, szSubKey, &dwBufSize, NULL, NULL,

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊NULL, NULL) == ERROR_SUCCESS)

{

if(RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS)

{

if(RegOpenKeyEx(hSubKey, "Ndi\\Interfaces", 0, KEY_READ, &hNdiIntKey) == ERROR_SUCCESS)

{

dwBufSize = 256;

if(RegQueryValueEx(hNdiIntKey, "LowerRange", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

{

if(strstr((char*)szData, "ethernet") != NULL)// 判断是不是以太网卡

{

dwBufSize = 256;

if(RegQueryValueEx(hSubKey, "DriverDesc", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

{

ADAPTER_INFO *pAI = new ADAPTER_INFO;

pAI->strDriverDesc = (LPCTSTR)szData;

dwBufSize = 256;

if(RegQueryValueEx(hSubKey, "NetCfgInstanceID", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

{

pAI->strS = (LPCTSTR)szData;

RegGetIP(pAI, (LPCTSTR)szData);

}

AdapterInfoVector.push_back(pAI); // 加入到容器中

}

}

}

RegCloseKey(hNdiIntKey);

}

RegCloseKey(hSubKey);

}

dwBufSize = 256;

} /* end of while */

RegCloseKey(hKey);

return true;

}

// 得到注册表中的IP信息

BOOL RegGetIP(ADAPTER_INFO *pAI, LPCTSTR lpszAdapterName, int nIndex/* =0 */)

{

HKEY hKey, hSubKey, hNdiIntKey;

string strKeyName = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";

strKeyName += lpszAdapterName;

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,

strKeyName.c_str(),0,KEY_READ,

&hKey) != ERROR_SUCCESS)

return FALSE;

unsigned char szData[256];

DWORD dwDataType, dwBufSize;

dwBufSize = 256;

if(RegQueryValueEx(hKey, "DhcpIPAddress", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

pAI->strIP = (LPCTSTR)szData;

else{

if(RegQueryValueEx(hKey, "IPAddress", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

pAI->strIP = (LPCTSTR)szData;

}

dwBufSize = 256;

if(RegQueryValueEx(hKey, "DhcpSubnetMask", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

pAI->strNetMask = (LPCTSTR)szData;

else

{

if(RegQueryValueEx(hKey, "SubnetMask", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

pAI->strNetMask = (LPCTSTR)szData;

}

dwBufSize = 256;

if(RegQueryValueEx(hKey, "DhcpDefaultGateway", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

pAI->strNetGate = (LPCTSTR)szData;

else

{

if(RegQueryValueEx(hKey, "DefaultGateway", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

pAI->strNetGate = (LPCTSTR)szData;

}

RegCloseKey(hKey);

strKeyName = "SYSTEM\\ControlSet001\\Control\\Network";

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName.c_str(),0,

KEY_READ,&hKey) != ERROR_SUCCESS)

return FALSE;

char szSubKey[256];

char szSubKey_two[256];

memset(szSubKey, 0, 256);

DWORD dwIndex = 0;

DWORD dwIndex_two = 0;

dwBufSize = 256;

DWORD dwBufSize_two = 256;

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

pAI->strName = pAI->strDriverDesc;

while(RegEnumKey(hKey, dwIndex++, szSubKey, dwBufSize) == ERROR_SUCCESS)

{

string strKeyName_two;

strKeyName_two = strKeyName + "\\";

strKeyName_two += szSubKey;

if(RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS)

{

while(RegEnumKey(hSubKey, dwIndex_two++, szSubKey_two, dwBufSize_two) == ERROR_SUCCESS)

{

if (strstr(szSubKey_two, lpszAdapterName) != NULL)

{

strcat(szSubKey_two, "\\Connection");

if(RegOpenKeyEx(hSubKey, szSubKey_two, 0, KEY_READ, &hNdiIntKey) == ERROR_SUCCESS)

{

if(RegQueryValueEx(hNdiIntKey, "Name", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)

{

pAI->strName = (LPCTSTR)szData;

break;

}

RegCloseKey(hNdiIntKey);

}

}

}

RegCloseKey(hSubKey);

}

}

RegCloseKey(hKey);

return TRUE;

}

(三)添加和删除IP

图5.添加和删除新的IP

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊本功能实现的是在本地IP地址列表中添加新的IP地址,然后删除新添加的IP地址,实现对IP列表的管理。添加成功会出现“IPv4 address was successfully added.”的语句,删除成功会出现“IPv4 address was successfully deleted.”的语句。具体的代码实现如下:

int main( )

{

/* Variables used by GetIpAddrTable */

PMIB_IPADDRTABLE pIPAddrTable;

DWORD dwSize = 0;

DWORD dwRetVal = 0;

IN_ADDR IPAddr;

DWORD ifIndex;

UINT iaIPAddress;

UINT imIPMask;

/* IPv4 address and subnet mask we will be adding */

iaIPAddress = inet_addr("192.168.0.17");

imIPMask = inet_addr("255.255.255.0");

/* Variables where handles to the added IP are returned */

ULONG NTEContext = 0;

ULONG NTEInstance = 0;

/* Variables used to return error message */

LPVOID lpMsgBuf;

// Before calling AddIPAddress we use GetIpAddrTable to get

// an adapter to which we can add the IP.

pIPAddrTable = (MIB_IPADDRTABLE *) MALLOC(sizeof (MIB_IPADDRTABLE));

if (pIPAddrTable == NULL)

{

printf("Error allocating memory needed to call GetIpAddrTable\n");

return 0;

}

else

{

dwSize = 0;

// Make an initial call to GetIpAddrTable to get the

// necessary size into the dwSize variable

if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) ==

ERROR_INSUFFICIENT_BUFFER)

{

FREE(pIPAddrTable);

pIPAddrTable = (MIB_IPADDRTABLE *) MALLOC(dwSize);

}

if (pIPAddrTable == NULL)

{

printf("Memory allocation failed for GetIpAddrTable\n");

return 0;

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

}

}

// Make a second call to GetIpAddrTable to get the

// actual data we want

if ((dwRetVal = GetIpAddrTable(pIPAddrTable, &dwSize, 0)) == NO_ERROR)

{

// Save the interface index to use for adding an IP address

ifIndex = pIPAddrTable->table[0].dwIndex;

printf("\n\tInterface Index:\t%ld\n", ifIndex);

IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[0].dwAddr;

printf("\tIP Address: \t%s (%lu%)\n", inet_ntoa(IPAddr),

pIPAddrTable->table[0].dwAddr);

IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[0].dwMask;

printf("\tSubnet Mask: \t%s (%lu%)\n", inet_ntoa(IPAddr),

pIPAddrTable->table[0].dwMask);

IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[0].dwBCastAddr;

printf("\tBroadCast Address:\t%s (%lu%)\n", inet_ntoa(IPAddr),

pIPAddrTable->table[0].dwBCastAddr);

printf("\tReassembly size: \t%lu\n\n",

pIPAddrTable->table[0].dwReasmSize);

}

else

{

printf("Call to GetIpAddrTable failed with error %d.\n", dwRetVal);

if (pIPAddrTable)

FREE(pIPAddrTable);

return 0;

}

if (pIPAddrTable)

{

FREE(pIPAddrTable);

pIPAddrTable = NULL;

}

if ((dwRetVal = AddIPAddress(iaIPAddress,

imIPMask ,

ifIndex,

&NTEContext, &NTEInstance)) == NO_ERROR)

{

printf("\tIPv4 address was successfully added.\n");

}

else

{

printf("AddIPAddress failed with error: %d\n", dwRetVal);

if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwRetVal, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊// Default language

(LPTSTR) & lpMsgBuf, 0, NULL)) {

printf("\tError: %s", lpMsgBuf);

LocalFree(lpMsgBuf);

return 0;

}

}

//删除刚利用NTEContext所添加的IP地址

// variable where the handle was returned

if ((dwRetVal = DeleteIPAddress(NTEContext)) == NO_ERROR) {

printf("\tIPv4 address was successfully deleted.\n");

}

else

{

printf("\tDeleteIPAddress failed with error: %d\n", dwRetVal);

return 0;

}

getch();

return 0;

}

(四)获取当前路由信息

图6.获取路由信息

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊本功能实现的是获取当前所有活动的路由信息,并且打印出来,打印结果如图所示,打印内容包括了网络地址,网关,默认网关,下一跳等。具体的实现代码如下:void PrintIpForwardTable()

{

PMIB_IPFORWARDTABLE pIpRouteTable = MyGetIpForwardTable(TRUE);

if(pIpRouteTable != NULL)

{

DWORD i, dwCurrIndex;

struct in_addr inadDest;

struct in_addr inadMask;

struct in_addr inadGateway;

PMIB_IPADDRTABLE pIpAddrTable = NULL;

char szDestIp[128];

char szMaskIp[128];

char szGatewayIp[128];

printf("Active Routes:\n\n");

printf(" Network Address Netmask Gateway Address Interface Metric\n");

for (i = 0; i < pIpRouteTable->dwNumEntries; i++)

{

dwCurrIndex = pIpRouteTable->table[i].dwForwardIfIndex;

// 目的地址

inadDest.s_addr = pIpRouteTable->table[i].dwForwardDest;

// 子网掩码

inadMask.s_addr = pIpRouteTable->table[i].dwForwardMask;

// 网关地址

inadGateway.s_addr = pIpRouteTable->table[i].dwForwardNextHop;

strcpy(szDestIp, inet_ntoa(inadDest));

strcpy(szMaskIp, inet_ntoa(inadMask));

strcpy(szGatewayIp, inet_ntoa(inadGateway));

printf(" %15s %16s %16s %16d %7d\n",

szDestIp,

szMaskIp,

szGatewayIp,

pIpRouteTable->table[i].dwForwardIfIndex, // 可以在此调用GetIpAddrTable获取索引对应的IP地址

pIpRouteTable->table[i].dwForwardMetric1);

}

MyFreeIpForwardTable(pIpRouteTable);

}

}

PMIB_IPFORWARDTABLE MyGetIpForwardTable(BOOL bOrder)

{

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

PMIB_IPFORWARDTABLE pIpRouteTab = NULL;

DWORD dwActualSize = 0;

// 查询所需缓冲区的大小

if(::GetIpForwardTable(pIpRouteTab, &dwActualSize, bOrder) == ERROR_INSUFFICIENT_BUFFER)

{

// 为MIB_IPFORWARDTABLE结构申请内存

pIpRouteTab = (PMIB_IPFORWARDTABLE)::GlobalAlloc(GPTR, dwActualSize);

// 获取路由表

if(::GetIpForwardTable(pIpRouteTab, &dwActualSize, bOrder) == NO_ERROR) return pIpRouteTab;

::GlobalFree(pIpRouteTab);

}

return NULL;

}

void MyFreeIpForwardTable(PMIB_IPFORWARDTABLE pIpRouteTab)

{

if(pIpRouteTab != NULL)

::GlobalFree(pIpRouteTab);

}

(五)修改默认网关

图7.修改默认网关

本功能实现的是修改默认网关的功能,修改失败会提示失败,修改成功会提示如图5,并打印出新的默认网关的地址。具体代码如下:

int main()

{

// 新网关地址

DWORD dwNewGateway = ::inet_addr("192.168.0.1");

// 在表中查找我们想要的入口。默认网关的目的地址为0.0.0.0

PMIB_IPFORWARDTABLE pIpRouteTable = MyGetIpForwardTable(TRUE);

PMIB_IPFORWARDROW pRow = NULL;

if(pIpRouteTable != NULL)

{

for(DWORD i=0; idwNumEntries; i++)

{

if(pIpRouteTable->table[i].dwForwardDest == 0) // 找到了默认网关

{

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

// 申请内存来保存这个入口。

// 这比自己填充MIB_IPFORWARDROW结构简单许多,我们仅需要改变网关地址

if(pRow == NULL)

{

pRow = (PMIB_IPFORWARDROW)::GlobalAlloc(GPTR,

sizeof(MIB_IPFORWARDROW));

memcpy(pRow, &pIpRouteTable->table[i],

sizeof(MIB_IPFORWARDROW));

}

// 删除旧的默认网关入口

if(::DeleteIpForwardEntry(&pIpRouteTable->table[i]) !=

ERROR_SUCCESS)

{

printf("Could not delete old gateway \n");

exit(1);

}

}

}

MyFreeIpForwardTable(pIpRouteTable);

}

if(pRow != NULL)

{

// 设置dwForwardNextHop域为我们的新网关,所有其它的路由属性将和先前的相同

pRow->dwForwardNextHop = dwNewGateway;

// 为默认网关创建新的路由入口

if(::SetIpForwardEntry(pRow) == NO_ERROR)

{

printf(" Gateway changed successfully \n");

printf(" The New Gateway is:192.168.0.1 \n");

}

else

printf(" SetIpForwardEntry() failed \n");

::GlobalFree(pRow);

}

getch();

return 0;

}

PMIB_IPFORWARDTABLE MyGetIpForwardTable(BOOL bOrder)

{

PMIB_IPFORWARDTABLE pIpRouteTab = NULL;

DWORD dwActualSize = 0;

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

// 查询所需缓冲区的大小

if(::GetIpForwardTable(pIpRouteTab, &dwActualSize, bOrder) ==

ERROR_INSUFFICIENT_BUFFER)

{

// 为MIB_IPFORWARDTABLE结构申请内存

pIpRouteTab = (PMIB_IPFORWARDTABLE)::GlobalAlloc(GPTR, dwActualSize);

// 获取路由表

if(::GetIpForwardTable(pIpRouteTab, &dwActualSize, bOrder) == NO_ERROR) return pIpRouteTab;

::GlobalFree(pIpRouteTab);

}

return NULL;

}

void MyFreeIpForwardTable(PMIB_IPFORWARDTABLE pIpRouteTab)

{

if(pIpRouteTab != NULL)

::GlobalFree(pIpRouteTab);

}

(六)获取网络适配器列表

图8.获取网络适配器列表

本功能实现的是获取网络适配器列表并打印其属性信息,打印的信息包括了适配器名字,适配器目录和适配器数目。具体的代码如下:

int main()

{

PIP_INTERFACE_INFO pInfo =

(PIP_INTERFACE_INFO)::GlobalAlloc(GPTR,

sizeof(IP_INTERFACE_INFO));

ULONG ulOutBufLen = sizeof(IP_INTERFACE_INFO);

// 如果上面申请的内存不够的话,再重新申请

if(::GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) {

::GlobalFree(pInfo);

pInfo = (PIP_INTERFACE_INFO)::GlobalAlloc(GPTR, ulOutBufLen);

}

// 再次调用GetInterfaceInfo来获取我们实际需要的数据

if(::GetInterfaceInfo(pInfo, &ulOutBufLen) == NO_ERROR)

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

{

printf(" \tAdapter Name: %ws\n", pInfo->Adapter[0].Name);

printf(" \tAdapter Index: %ld\n", pInfo->Adapter[0].Index);

printf(" \tNum Adapters: %ld\n", pInfo->NumAdapters);

}

else

{

printf(" GetInterfaceInfo() failed \n");

}

::GlobalFree(pInfo);

getch();

return 0;

}

六.设计总结

本次设计让我学会了使用winsock进行网络的通信编程。本设计是基于c++的,让我又重新温习了一遍c++的知识,并对winsock有了具体的深刻的了解。设计中,遇到了很多的问题和不足,如功能的实现不完善,有些功能的方法写错了,缺失头文件等。但在坚持不懈的努力下,查找了许多资料,也上网搜索了许多解决的方法,在诸多的尝试后,终于一一解决了这些问题。但是本设计还是有很多不完善的地方,比如没有一个完整的界面实现,程序功能不完善等。这次设计让我知道了实践出真知,也让我懂得实践是掌握所学知识的十分有效的途径。空有纸上谈兵,即使再强也是没用的,真正有用的实践中对知识的运用和掌握,以及本身解决问题的能力。本次设计让我对这些能力有了更清楚的认识,并且也有了一定的提升,希望以后,自身的能力能够更加的完善,能够把设计做的更加完善健全。

七.参考文献

(1)《Windows网络与通信程序设计》人民邮电出版社王艳平 2009

(2)《Visual C++网络通信开发入门与编程实践》电子工业出版社李媛媛 2008 (3)《计算机网络(第5版) 》电子工业出版社谢希仁2008

网络设计与通信课程设计报告

课程设计报告 课程名称网络技术及应用 课题名称网络设计与通信系统实现 专业信息管理与信息系统 班级1302 学号27 姓名陈静 指导教师余新宇谢雅赵锦元张益星 2015年12 月28日

湖南工程学院 课程设计任务书 课程名称网络技术及应用 课题网络设计与通信系统实现 专业班级信管1302 学生姓名陈静 学号27 指导老师余新宇谢雅赵锦元张益星审批 任务书下达日期2015年12月28 日 任务完成日期2015年1 月8 日

目录 1、课程设计目的及要求 (1) 1.1实训项目内容 (4) 1.2实训内容及要求 (1) 2、需求分析及设计原则 (2) 2.1需求分析 (2) 2.2设计原则 (2) 3、详细设计 (4) 3.1拓扑结构图 (4) 3.2详细步骤 (4) 3.2.1设备选型 (4) 3.2.2 VLAN及IP地址规划 (5) 3.2.3 服务器等设备的IP地址分配 (5) 3.3 路由器或交换机配置的代码 (6) 3.3.1 三层交换机 (6) 3.3.2 二层交换机 (9) 3.3.3 接入路由器 (10) 4、校园网络安全 (12) 4.1 网络安全的概念 (12) 4.2 网络安全的脆弱性及面临的威胁 (12) 4.3 网络安全防范的内容 (12) 4.4 网络安全的主要技术 (13) 5、系统测试的结果 (13) 6、总结 (15) 7、参考文献 (15) 8、评分表 (16)

1.课程实训目标 ?增加学生对于网络系统分析设计、通信软件的实现。 ?了解实际网络项目设计及软件开发全过程。 ?体验企业工作环境和工作方式。 ?加强团队意识,增强交流和表达能力、书写文档的能力。 1.1实训项目内容 (1)典型企业网络方案分析与设计(网络拓扑参考例图如下) (2)通信项目软件实现:使用Java技术实现窗体效果、能够实现在线点对点私聊、组群聊天等功能 开发环境: Eclipse版本JDK1.6以上 1.2课程实训内容及要求 组网设计部分: (以方案设计为主,以网络仿真为辅,仿真部分需要用Packet Tracer) 要求: (1)要求论述详尽,主要内容有: 需求分析、总体设计方案与拓扑图、设备选型、关键设计、仿真配置与测试。 (2)对方案中关键设计,尽可能用仿真软件进行仿真配置与测试。

数据库课程设计题目16个经典实例

数据库课程设计题目16个经典实例 1、机票预定信息系统 系统功能得基本要求: 航班基本信息得录入,包括航班得编号、飞机名称、机舱等级等。机票信息,包括票价、折扣、当前预售状态及经手业务员等。客户基本信息,包括姓名、联系方式、证件及号码、付款情况等.按照一定条件查询、统计符合条件得航班、机票等;对结果打印输出. 2、长途汽车信息管理系统 系统功能得基本要求: 线路信息,包括出发地、目得地、出发时间、所需时间等.汽车信息:包括汽车得种类及相应得票价、最大载客量等.票价信息:包括售票情况、查询、打印相应得信息. 3、人事信息管理系统 系统功能基本要求: 员工各种信息:包括员工得基本信息,如编号、姓名、性别、学历、所属部门、毕业院校、健康情况、职称、职务、奖惩等;员工各种信息得修改;对转出、辞退、退休员工信息得删除;按照一定条件,查询、统计符合条件得员工信息;教师教学信息得录入:教师编号、姓名、课程编号、课程名称、课程时数、学分、课程性质等。科研信息得录入:教师编号、研究方向、课题研究情况、专利、论文及著作发表情况等.按条件查询、统计,结果打印输出. 4、超市会员管理系统 系统功能得基本要求: 加入会员得基本信息,包括:成为会员得基本条件、优惠政策、优惠时间等.会员得基本信息,包括姓名、性别、年龄、工作单位、联系方式等.会员购物信息:购买物品编号、物品名称、所属种类,数量,价格等。会员返利信息,包括会员积分得情况,享受优惠得等级等。对货物流量及消费人群进行统计输出。 5、客房管理系统 系统功能得基本要求: 客房各种信息,包括客房得类别、当前得状态、负责人等;客房信息得查询与修改,包括按房间号查询住宿情况、按客户信息查询房间状态等。以及退房、订房、换房等信息得修改。对查询、统计结果打印输出。 6、药品存销信息管理系统 系统功能基本要求 药品信息,包括药品编号、药品名称、生产厂家、生产日期、保质期、用途、价格、数量、经手人等;员工信息,包括员工编号、姓名、性别、年龄、学历、职务等;客户信息,包括客户编号、姓名、联系方式、购买时间、购买药品编号、名称、数量等。入库与出库信息,包括当前库存信息、药品存放位置、入库数量与出库数量得统计. 7、学生选课管理信息系统 系统功能基本要求 教师信息,包括教师编号、教师姓名、性别、年龄、学历、职称、毕业院校,健康状况等。学生信息,包括学号、姓名、所属院系、已选课情况等.教室信息,包括,可容纳人数、空闲时间等.选课信息,包括课程编号、课程名称、任课教师、选课得学生情况等。成绩信息,包括课程编号、课程名称、学分、成绩。按一定条件可以查询,并将结果打印输出。 8、图书管理系统

数据库课程设计完整版

数据库课程设计完 整版

HUNAN CITY UNIVERSITY 数据库系统课程设计 设计题目:宿舍管理信息系统姓名: 学号: 专业:信息与计算科学指导教师:

20年 12月1日 目录 引言3 一、人员分配 4 二、课程设计目的和要求 4 三、课程设计过程 1.需求分析阶段 1.1应用背景 5 1.2需求分析目标5 1.3系统设计概要5 1.4软件处理对象 6 1.5系统可行性分析6 1.6系统设计目标及意义7 1.7系统业务流程及具体功能 7

1.8.1数据流程图8 2.系统的数据字典11 3.概念结构设计阶段 13 4.逻辑结构设计阶段 15 5.物理结构设计阶段 18 6.数据库实施 18 7.数据库的运行和维护 18 7.1 解决问题方法 19 7.2 系统维护 19 7.3 数据库性能评价 19 四、课程设计心得. 20参考文献 20 引言

学生宿舍管理系统对于一个学校来说是必不可少的组成部分。当前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强能够接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条一条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,而且具备修改功能,能够快速的查询学校所需的住宿信息。 面对当前学校发展的实际状况,我们经过实地调研之后,对宿舍管理系统的设计开发做了一个详细的概述。

数据库课程设计(完整版)

HUNAN CITY UNIVERSITY 数据库系统课程设计 设计题目:宿舍管理信息系统 姓名: 学号: 专业:信息与计算科学 指导教师:

20年 12月1日 目录 引言 3 一、人员分配 4 二、课程设计目的和要求 4 三、课程设计过程 1.需求分析阶段 1.1应用背景 5 1.2需求分析目标5 1.3系统设计概要 5 1.4软件处理对象 6 1.5系统可行性分析 6 1.6系统设计目标及意义7 1.7系统业务流程及具体功能 7 1.8.1数据流程图8 2.系统的数据字典11 3.概念结构设计阶段 13 4.逻辑结构设计阶段 15 5.物理结构设计阶段 18 6.数据库实施 18 7.数据库的运行和维护 18 7.1 解决问题方法 19 7.2 系统维护 19 7.3 数据库性能评价 19 四、课程设计心得. 20

参考文献 20 引言 学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条一条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备修改功能,能够快速的查询学校所需的住宿信息。 面对目前学校发展的实际状况,我们通过实地调研之后,对宿舍管理系统的

网络编程课程设计

课程设计说明书 课程名称:Windows网络编程 设计题目:基于JA V A网络聊天室设计 学院:计算机科学与信息工程学院 专业班级:网络工程12级 指导教师: 小组成员: 2015年6月 目录 摘要 (1) 引言: (1) 1.需求分析 (1) 1.1需求分析 (1) 1.2系统简介 (2) 2. 系统开发技术 (2)

2.1 JAVA网络编程技术 (2) 2.2 Socket套接字 (3) 2.3 TCP三次握手 (3) 3. 系统总框图与功能分析 (4) 3.1系统总框图 (4) 3.2系统功能模块分析 (5) 4. 系统模块代码设计与分析 (6) 4.1系统流程分析 (6) 4.2类的设计与分析 (7) 4.3客户端模块部分代码 (7) 4.4服务器端模块部分代码: (9) 5.系统测试 (11) 6. 总结 (13) 7.成员分工 (13) 参考文献: (14)

网络聊天室 摘要:随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。本文所介绍的网络聊天系统是基于JAVA应用程序开发设计的,其主要特性是简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。 关键词:局域网、聊天室、JAVA、Socket、WindowsSocket 引言:目前,基于TCP/IP协议的网络得到了普及和飞速的发展,Windows下的网络程序越来越显得重要。利用TCP/IP协议提供的编程接口———Socket(套接字)可以开发出TCP/IP应用程序。正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows 环境下顺利进行各种网络通信,因此研究WinSock更有意义。而基于TCP/IP协议网络环境下的应用程序是通过客户机/服务器(C/S)作用方式模式在网络(应用)编程界面实现的。本次实验采用java语言设计一个基于C/S模式的TCP网络通讯程序。实现客户端与服务器端之间的数据传输。 1.需求分析 1.1需求分析 根据当前网络的需求,网络聊天越来越受到各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而小组成员也都学习过JAVA 语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,小组成

数据库课程设计案例

目录 一、设计目的....................................... 错误!未定义书签。 二、设计内容....................................... 错误!未定义书签。 三、设计过程....................................... 错误!未定义书签。 E-R模型设计............................................ 错误!未定义书签。 关系模型设计........................................... 错误!未定义书签。 数据库的实现........................................... 错误!未定义书签。 四、设计总结....................................... 错误!未定义书签。 五、参考文献....................................... 错误!未定义书签。

小区物业管理系统数据库设计与实现 一、设计目的 经过十几年的发展,中国房地产业逐步走向成熟,物业管理也由新生到发展再到深入,面临着蓬勃发展的局面。随着ISO9002等管理体系在物业管理中的引入,对原有的物业管理模式进行了一次深刻的变革,对物业管理公司朝着正规化、科学化、集团化的发展,起到有力的推动作用。 随着我国经济发展和城市开发,住宅小区越来越成为居住的主流,小区物业管理是针对当代社会这一市场需要应运而生的。本系统是为住宅小区物业管理部门日常管理工作信息化,规范化而开发的软件。它以物业管理部门为服务中心,以业主(住户)为服务对象。通过实施各种服务项目,全面地反映了在小区物业经营管理活动中,物业部门与业主之间各种业务往来。使各项业务的办理迅速、准确,极大的提高了小区物业管理的工作效率。 由于物业管理涉及的管理范围较为广泛,管理内容繁杂,加上政策性的变动因素,日常工作需要耗费大量人力和物力,而采取现代化电脑管理手段是一种行之有效的解决方法,用计算机操作的小区物业管理系统是为小区管理者和小区用户更好的维护各项物业管理业务处理工作而开发的管理软件。 数据库在一个管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的及将来可能增加的需求。 二、设计内容 (1)E-R模型设计:对物业公司、业主等实体进行抽象,提取相关属性;并设计出E-R图; (2)关系模型设计:根据E-R模型图,将E-R模型转化为关系模型;要求关系模型符合3NF要求; (3)数据库的实现:在SQL Serve 2000中实现数据库及各数据表的建立。 三、设计过程 E-R模型设计 作为物业公司,主要是对物业公司员工进行管理,任务分配是由系统用户分配的,物业公司员工负责维护小区以及为业主服务,根据以上分析,可以大

数据库课程设计(自己做的)

——货存控制系统 6、1数据库设计概述 ㈠数据库设计的概念:数据库设计就是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求与处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。 ㈡数据库设计的特点 1、数据库建设就是硬件、软件与干件的结合:三分技术、七分管理、十二分基础数据,技术与管理的界面称之为干件。 2、数据库设计过程就是结构设计与行为设计的密切结合:结构设计就是设计数据库结构,行为设计就是设计应用程序、事务处理等。 ㈢数据库设计的方法 1、手工试凑法:设计质量与设计人员的经验与水平有直接关系,缺乏科学理论与工程方法的支持,工程质量难保证。 2、规范设计法:基本思想就是过程迭代与逐步求精。 ㈣数据库设计的基本步骤 准备工作:选定参加设计的人员。 ⑴分析员:数据库设计的核心人员,自始至终参与数据库设计,其水平决定了数据库系统的质量。 ⑵用户:主要参加需求分析与数据库的运行维护,用户的积极参与将加速数据库设计,提高数据库设计的质量。 ⑶程序员:在系统实施阶段参与进来,负责编制程序。 ⑷操作员:在系统实施阶段参与进来,准备软硬件环境。 ㈤数据库设计的过程(六个阶段) 1、需求分析阶段: 准确了解与分析用户需求(包括数据与处理),就是整个设计过程的基础,就是最困难、最耗费时间的一步。 2、概念结构设计阶段: 整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型 3、逻辑结构设计阶段: 将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。 4、数据库物理设计阶段: 为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构与存取方法)。 5、数据库实施阶段: 运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计与物理设计的结果建立数据库、编制与调试应用程序、组织数据入库并进行试运行。 6、数据库运行与维护阶段: 数据库应用系统经过试运行后即可投入正式运行,在运行过程中不断对其进行评价、调整与修改。 设计一个数据库应用系统往往就是上述六个阶段的不断反复。 ㈥数据库设计各阶段的模式形成: 1、需求分析阶段:综合各个用户的应用需求。 2、概念设计阶段:形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)。

数据通信课程设计报告

《计算机控制技术》 课程设计 目录一....................................................................... 课程设计目的.. (3) 二....................................................................... 课程设计题目和要求. (3) 2.1 课程设计题目 2.2课程设计要求 三....................................................................... 设计内容 (4) 3.1 设计方案的选定与说明 3.2 系统总体框图 3.3论述方案的各部分工作原理; 3.4 设计说明书 四....................................................................... 设

计总结 (11) 参考书目 (11)

一.课程设计目的 通过本课程设计主要目的是实现两台西门子1200PLC之间的通信,利用PLC1发 送指令给PLC2 PLC2接到指令后控制电动机的启停,主要训练和培养学生的以下能 力: (1).查阅资料:搜集与本设计有关的资料(包括从已发表的文献中或者通过网络 交流平台搜集)的能力; (2).软件使用:了解并掌握西门子S7-1200软件的使用,明白网络通信实现的机 理与过程; (3).用简洁的文字,清晰的图表来表达自己设计思想的能力。 .课程设计题目和要求 2.1课程设计题目 题目:当一台S7-1200上发出一个启停信号时,另一台S7-1200收到信号,并启停一台电动机 1)主要软硬件配置 一套Step7 Basic v10.5(或以上版本),一根网线,2台CPU 1214C 2)相关指令:TSEND_C (发送数据指令),TRCV_C(接受数据指令) 3)硬件组态与编程 新建工程--- 添加硬件--- 用子网连接两个cpu ----- 编写主控cpu程序----- 调整主控cpu连接参数 --- 编写另一台cpu程序----- 调整另一台cpu连接参数

数据库课程设计(实例+论文)

[运网物流管理系统] 开发文档 [版本:2.0] 班级: 2003级计算机科学与技术3班开发小组组长: 邓彬(20034043180) 开发组成员:汪庆春(20034043179)、 邹奇(20034043181)、 黄键(20034043107)指导老师:何迎生 二〇二一年一月二十七日星期三

摘要 《运网物流管理系统》是一个基于https://www.360docs.net/doc/906783370.html,开发的Web物流管理管理系统。作为B/S结构的web数据库管理系统,本系统具有所有B/S结果系统的优点,同时又具有https://www.360docs.net/doc/906783370.html,的高效的优势。 从技术上说,本系统采用了C#编写,充分利用https://www.360docs.net/doc/906783370.html,强大的组件DATAGRID,结合https://www.360docs.net/doc/906783370.html, 对任务书中的物流管理的SQL Server2000数据库进行管理。通过本系统可以对数据库执行添加、删除、修改、查询等全面的操作。系统支持分页功能,能支持大量数据的存储。我利用具有高安全性的Cookie作为安全校验的依据,对用户的权限进行审核,提供系统的安全保障。 从功能上说,本系统主要分为2大模块:用户登陆模块和数据操作模块。通过用户登陆模块能对用户身份进行核实和验证,通过数据操作模块能对物流系统的相关信息进行操作,添加删除修改在一个页面内完成,直观简洁。 作为课程设计,本系统达到了设计任务的基本要求,并在其上才用了更先进的语言,提供了更强大的扩展能力和更好的执行效率,作为一个完善的系统的雏形,本系统只要进入软件开发的螺旋法则,不久之后就可以进化为一个成熟的,能让最终用户所接受的系统。 此次课程设计内容则是以c# 作为开发语言,编写https://www.360docs.net/doc/906783370.html, 程序,c#是一门全新的语言,具有更强大的编辑和操作能力,在此过程中,我又开始了认真的从无到有的学习,通过锲而不舍的实践操作和对各种相关书籍的钻研,终于理解了c#的语言,并迅速开发出了本系统。 在学习和实践的过程中,我充分体会到了c#和.Net技术的强大,在学习的过程中,我认识了几个来自Microsoft 社区的MVP,在通过和他们交流和认真学习他们编写的经验文章后,我已经能更好的理解 .Net 平台的运行机制,从内核这个层次认识到了Microsoft 给作为程序员的我们带来了什么。 本文关于运网物流管理系统的设计是在何迎生老师的指导下完成的。经过一个学期的设计,我们基本完成了任务。设计过程中,何迎生老师给予了我们极大的帮助与鼓励,在此,我们对他的悉心指导表示衷心的感谢! 关键字:运网物流管理,C#,https://www.360docs.net/doc/906783370.html,, B/S, Web 第一章绪论

大工15春《SQL数据库课程设计》模板及要求(最新)

大工15春《SQL数据库课程设计》模板及要求网络教育学院 《SQL数据库课程设计》 题目:XX系统的设计与实现 学习中心: 专业: 年级:年春/秋季

学号: 学生: 指导教师: 《SQL数据库课程设计》要求 《SQL数据库课程设计》是大连理工大学网络教育学院计算机应用技术专业开展的一项实践教学环节,是理论联系实践的纽带和桥梁,是培养学生综合运用所学知识解决实际问题的有效手段。该课程设计要求如下:1.要求学生以SQL Server 2008或其他版本为后台数据库,以VB、VC 或其他开发工具作为前台开发工具,围绕自己选定的某一个具体的系统完成一个小型数据库应用系统的开发,例如《图书管理系统的设计与实现》《书店管理系统的设计与实现》等。其课程设计具体内容包括项目概况、需求分析、详细设计等,详见课程离线作业中上传的《SQL数据库课程设计模板》。 注意:禁止撰写《学生成绩管理系统》课程设计!! 2.要求学生必须按照《SQL数据库课程设计模板》提供的格式和内容进行课程设计,完成课程设计模板提供的全部课程设计内容,字数要求达到3000字以上。 3.学生在进行课程设计的过程中,可参考辅导教师在导学资料中上传的

文献资料,有问题可通过课程论坛答疑。 4.2015年春季学期学生提交本课程设计形式及截止时间 学生需要以WORD附件形式(附件的大小限制在10M以内)将完成的课程设计以"离线作业"形式上传至课程平台中的"离线作业"模块,通过选择已完成的课程设计,点"上交"即可,如下图所示。 截止时间:2015年9月1日。在此之前,学生可随时提交课程设计,如需修改,可直接上传新文件,平台会自动覆盖原有文件。 5.课程设计批阅 老师会在离线作业关闭后集中批阅课程设计,在离线作业截止时间前不进行任何形式的批阅。 注意: 本课程设计应该独立完成,不准抄袭他人或者请人代做,如有雷同作业,

基于UDP网络通信系统的服务端程序设计课程设计报告

毕业论文声明 本人郑重声明: 1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。 2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。 3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。 4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。 学位论文作者(签名): 年月

关于毕业论文使用授权的声明 本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。本人完全了解大学有关保存,使用毕业论文的规定。同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据 库和收录到《中国学位论文全文数据库》进行信息服务。在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 论文作者签名:日期: 指导教师签名:日期:

数据库课程设计题目16个经典实例学习资料.doc

数据库课程设计题目16个经典实例 1.机票预定信息系统 系统功能的基本要求: 航班基本信息的录入,包括航班的编号、飞机名称、机舱等级等。机票信息,包括票价、折扣、当前预售状态及经手业务员等。客户基本信息,包括姓名、联系方式、证件及号码、付款情况等。按照一定条件查询、统计符合条件的航班、机票等;对结果打印输出。 2.长途汽车信息管理系统 系统功能的基本要求: 线路信息,包括出发地、目的地、出发时间、所需时间等。汽车信息:包括汽车的种类及相应的票价、最大载客量等。票价信息:包括售票情况、查询、打印相应的信息。 3.人事信息管理系统 系统功能基本要求: 员工各种信息:包括员工的基本信息,如编号、姓名、性别、学历、所属部门、毕业院校、健康情况、职称、职务、奖惩等;员工各种信息的修改;对转出、辞退、退休员工信息的删除;按照一定条件,查询、统计符合条件的员工信息;教师教学信息的录入:教师编号、姓名、课程编号、课程名称、课程时数、学分、课程性质等。科研信息的录入:教师编号、研究方向、课题研究情况、专利、论文及著作发表情况等。按条件查询、统计,结果打印输出。 4.超市会员管理系统 系统功能的基本要求: 加入会员的基本信息,包括:成为会员的基本条件、优惠政策、优惠时间等。会员的基本信息,包括姓名、性别、年龄、工作单位、联系方式等。会员购物信息:购买物品编号、物品名称、所属种类,数量,价格等。会员返利信息,包括会员积分的情况,享受优惠的等级等。对货物流量及消费人群进行统计输出。 5.客房管理系统 系统功能的基本要求: 客房各种信息,包括客房的类别、当前的状态、负责人等;客房信息的查询和修改,包括按房间号查询住宿情况、按客户信息查询房间状态等。以及退房、订房、换房等信息的修改。对查询、统计结果打印输出。 6.药品存销信息管理系统 系统功能基本要求 药品信息,包括药品编号、药品名称、生产厂家、生产日期、保质期、用途、价格、数量、经手人等;员工信息,包括员工编号、姓名、性别、年龄、学历、职务等;客户信息,包括客户编号、姓名、联系方式、购买时间、购买药品编号、名称、数量等。入库和出库信息,包括当前库存信息、药品存放位置、入库数量和出库数量的统计。

数据库课程设计

图书馆管理系统的设计 1、需 求 分 析 图书馆,是搜集、整理、收藏图书资料以供人阅览、参考的机构。借阅读者可分为教师和学生。不同的借阅者最多可借书的数量和期限不同,如教师最多可借两本,期限为三个月,学生最多可借一本,期限为一个月,无论是教师还是学生,借阅超期都要进行罚款处理;每次借阅都要有相应的记录,以上就是图书馆管理系统所要完成的主要功能。 2、概 念 结 构 设 计 客观存在并可以相互区别的事物称为实体,本系统涉及到的实体只有读者和图书,二者之间存在借阅和罚款的联系,据此可以画出该系统的E-R 图,如图2.1所示。 图2.1 图书馆管理系统的E-R 图 其中读者与其属性关系如图2.2所示,图书与其属性关系如图2.3所示。 图2.2 读者实体与其属性 借出日期 归还日期 罚款金额 超期天数 处罚日期 借阅 罚款 读者 图书 性别 读者姓名 借书证号 读者类别 是否超期 读者

图2.3 图书实体与其属性 3、逻 辑 结 构 设 计 根据E-R 图向关系模式的转换规则可得如下的关系模式,加下划线的属性为相应关系的主键。 读者(借书证号,读者姓名,性别,读者类别,是否超期)。 图书(条形码号,图书编号,书名,作者,出版社,出版日期,类别,借阅状态,借阅次数),其中属性“借阅状态”给出是否在库的信息,分为“在馆”和“借出”两种状态。 借阅(借书证号,条形码号,借出日期,归还日期,罚款状态),主码为三个属性的组合,因为同一个读者可能重复借同一本书,只有加上借出日期才能区分出不同的借阅记录。 这里的日期精确到秒,此外,为了在进行超期罚款处理时能够区分出是否已经进行了罚款,这里还加了一个罚款状态的字段。 罚款(借书证号,条形码号,处罚日期,超期天数,罚款金额),主码为三个属性的组合,理由同上。 另外,为了保证系统的安全性,采用了登陆的措施,用户名和密码存放在密码表中。 密码表(用户名,密码)。 4、规 范 化 分 析 一个关系模式是好是坏,需要一个标准来衡量,这个标准就是模式的范式。用规范化理论对上述关系模式进行分析,除“罚款”关系外,其他四个关系模式中,主码是本模式的唯一决定因素,所以这四个关系模式都属于BCNF ,在函数依赖范畴内,规范化程度已经达到了最高。但是在“罚款”关系中,罚款金额=超期天数×日罚款额,所以超期天数→罚款金额。又因为处罚日期与归还日期为同一天,故(借书证号,条形码号,处罚日期)→超期天数,所以(借书证号,条形码号,处罚日期)→罚款金额,存在传递函数依赖,所以“罚款”关系属于2NF ,存在冗余现象。但根据实际情况,读者往往既关心超期天数,又关心罚款金额,所以“罚款金额”是必要的冗余。 5、用 SQL2014 建 立 数 据 库 1、读者表的建立 条形码号 图书编号 出版日期 书名 作者 出版社 借阅状态 借阅次数 类别 图书

计算机网络与通信课程设计:小型校园网的组建

湖南涉外经济学院课程设计报告 学院:计算机科学与技术 专业名称:计应1001、计软1001 课程名称:计算机网络与通信 设计题目:小型校园网的组建 学生姓名: 指导教师: 时间:2015年6月23日

任务分配表

摘要 随着计算机网络通信技术和Internet的飞速发展,校园网络的建设是学校向信息化发展的必然选择,校园网网络系统是一个非常庞大而复杂的系统,它不仅为现代化教学、综合信息管理和办公自动化等一系列应用提供基本操作平台,而且能提供多种应用服务,使信息能及时、准确地传送给各个系统。而校园网工程建设中主要应用了网络技术中的重要分支局域网技术来建设与管理的,因此本课程设计课题将主要以校园局域网络建设过程可能用到的各种技术及实施方案为设计方向,为校园网的建设提供理论依据和实践指导。 关键字:计算机网络通信技术,局域网,Internet

目录 任务分配表....................................................................................................................................... I 摘要 ............................................................................................................................................... II 第1章引言.. (1) 1.1 课程设计目的及要求 (1) 1.2 问题陈述 (1) 第2章需求分析及设计原则 (2) 2.1 需求分析 (2) 2.2 设计原则: (2) 2.2.1 实用性和经济性 (2) 2.2.2 先进性和成熟性 (3) 2.2.3 可靠性和稳定性 (3) 2.2.4 可扩展性和易维护性 (3) 第3章课程设计的内容 (4) 3.1 拓扑结构图 (4) 3.2 详细步骤: (4) 3.2.1 设备选型 (4) 3.2.2 VLAN及IP地址规划如下 (5) 3.2.3 服务器等设备的IP地址分配如下 (5) 3.3 路由器或交换机配置的代码: (5) 3.3.1 三层交换机 (5) 3.3.2 二层交换机 (9) 3.3.3 接入路由器 (10) 3.3.4 校园服务器的IP配置 (11) 3.3.5 外网服务器的IP配置 (12) 第4章校园网络安全 (13) 4.1 网络安全的概念 (13) 4.2 网络安全的脆弱性及面临的威胁 (13) 4.3 网络安全防范的内容 (13) 4.4 网络安全的主要技术 (14) 第5章系统测试的结果 (15) 5.1 学生ping教师 (15) 5.2 教师ping学生 (15) 5.3 学生ping实验中心 (16) 5.4 实验中心ping外网服务器 (16) 第6章课程设计总结 (17) 参考文献 (18)

数据库系统课程设计--实例

摘要 数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。 随着信息技术的飞速发展,信息化的大环境给各成人高校提出了实现校际互联,国际互联,实现静态资源共享,动态信息发布的要求; 信息化对学生个人提出了驾驭和掌握最新信息技术的素质要求;信息技术提供了对教学进行重大革新的新手段;信息化也为提高教学质量,提高管理水平,工作效率创造了有效途径. 校园网信息系统建设的重要性越来越为成人高校所重视. 利用计算机支持教学高效率,完成教学管理的日常事务,是适应现代教学制度要求、推动教学管理走向科学化、规范化的必要条件;而教学管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,不允许出错,如果实行手工操作,每月须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行教学管理工作,不仅能够保证各项准确无误、快速输出,而且还可以利用计算机对有关教学的各种信息进行统计,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高员工工资管理的效率,也是教学的科学化、正规化管理,与世界接轨的件。在软件开发的过程中,随着面向对象程序设计和数据库系统的成熟,数据设计成为软件开发的核心,程序的设计要服从数据,因此教学管理系统的数据库设计尤其重要。 本文主要介绍教学管理系统的数据库方面的设计,从需求分析到数据库的运行与维护都进行详细的叙述。本系统利用IBM DB2企业版本开发出来的。DB2是IBM公司开发的关系关系数据库管理系统,它把SQL语言作为查询语言。 本文的分为5章。其中第1章主要是课题简介及设计的内容与目的。第2章是需求分析,此阶段是数据库设计的起点。第3章是概念设计,它是将需求分析的用户需求抽象为信息结构,这是整个数据库设计最困难的阶段。第4章是逻辑结构设计,它将概念模型转换为某个DBMS所支持的数据模型。第5章是数据库的实施与运行,它包括数据的载入及数据库的运行。 关键词:SQL语言;IBM DB2;数据库设计;教学管理系统 I

数据库课程设计(完整版)

HUNAN CITY UNIVERSITY 数据库系统课程设计 设计题目:宿舍管理信息系统 姓名: 学号: 专业:信息与计算科学 指导教师: 20年 12月1日

目录 引言 3 一、人员分配 4 二、课程设计目的和要求 4 三、课程设计过程 1.需求分析阶段 1.1应用背景 5 1.2需求分析目标5 1.3系统设计概要 5 1.4软件处理对象 6 1.5系统可行性分析 6 1.6系统设计目标及意义7 1.7系统业务流程及具体功能 7 1.8.1数据流程图8 2.系统的数据字典11 3.概念结构设计阶段 13 4.逻辑结构设计阶段 15 5.物理结构设计阶段 18 6.数据库实施 18 7.数据库的运行和维护 18 7.1 解决问题方法 19 7.2 系统维护 19 7.3 数据库性能评价 19 四、课程设计心得. 20参考文献 20

引言 学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条一条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备修改功能,能够快速的查询学校所需的住宿信息。 面对目前学校发展的实际状况,我们通过实地调研之后,对宿舍管理系统的设计开发做了一个详细的概述。

通信与现场总线课程设计报告书

电气工程学院 通信与现场总线课程设计

目录 一:设计任务 (4) 理想模型: (4) 实验中用到的任务模型 (5) 二:力控软件平台建立的实验模型 (5) 三、实验设备与仪器 (6) 四、设计思路与过程 (6) 五、调试和功能 (13) 六、联机调试:C/S方式的远程控制 (26) 七、课设总结与心得 (29)

(一)本次课程设计题目: 通过三维力控组态软件实现对搅拌罐的网络控制 (二)主要容及要求 在组态软件Forecontrol V6.1平台上,通过工业以太网,分别以C/S方式(客户端/服务器)及B/S方式(浏览器/服务器)完成对SIEMENS的可编程序控制器通过工业现场总线PROFIBUS方式与2台SIEMENS MM440变频器控制的三相异步电机的实际工程平台,实现对搅拌罐PLC控制系统(含本地控制和远程控制)的网络控制。 独立完成,承担系统设计、系统分析、组态软件的学习与编程、网络系统调试等任务,要求提供最终的解决程序(验收)和相关文件,并以报告论文方式说明实现的思路及工程应用前景。 (三)进度安排: (1)在第一次课堂上了解并知道了Forecontrol V6.1软件的初步使用。 (2)根据相关资料,熟悉并设计并完成客户端组态软件的实际工艺流程界面界面的绘制。 (3)对搅拌罐工程相关控制进行了编程。 (4)熟悉服务器端通信参数的要求,完成C/S的网络控制。 (4)3月30日在实验室完成整个系统的软件调试及最后联机调试。 (5)撰写设计报告。

通过三维力控组态软件实现 对搅拌罐的网络控制 一:设计任务 在组态软件Forecontrol V6.1平台上,通过工业以太网,分别以C/S方式(客户端/服务器)及B/S方式(浏览器/服务器)完成对SIEMENS的可编程序控制器通过工业现场总线PROFIBUS方式与2台SIEMENS MM440变频器控制的三相异步电机的实际工程平台,实现对搅拌罐PLC控制系统(含本地控制和远程控制)的网络控制。 本次课程设计中,我们主要运用了C/S(客户端/服务器)方式,实现对搅拌罐PLC控制系统(含本地控制和远程控制)的网络控制。 理想模型:

数据库课程设计模板(实例)

1.前言 (2) 1.1选题的理由和实际意义 (2) 1.2国内外关于该课题的研究现状及趋势 (3) 2需求分析 (5) 2.1 用户对系统要求 (5) 2.2功能介绍 (5) 3 系统设计 (7) 3.1定义 (7) 3.2系统模块图 (7) 3.4 数据表的设计 (8) 3.5 用例列举 (11) 3.5.1建立数据表 (11) 3.5.2建立视图 (14) 3.5.3建立索引 (15) 3.5.4约束条件的增加、删除、修改 (15) 3.5.5查询语句 (15) 3.5.6建立存储过程,触发器 (17) 4 总结 (18)

1.前言(本部分要有因果关系,前后通顺)1.1选题的理由和实际意义 随着IT事业的发展,如今,我们已经全面跨入信息时代。计算机被广泛的应用于各个行业,人工战略已经转化为信息战略,如何在短时间内获取大量信息并整合信息,成为立足于时代的关键。 为了适应考生人数的急剧增长,当今社会各大高校都在进行扩招政策,学生数量的急剧增加带来信息量的成倍增长,由于信息管理的不善与疏忽,各大高校大小事故时有发生。进行正确的信息管理,对于信息及时处理和反应,能够最大程度的减少学校以及在校学生的损失,减小潜在危机。 学生宿舍是学生生活的基本单位,是同学休息与学习的地方,为了保障同学入住学生宿舍的安全性,信息的处理和管理极为重要。据了解,本校的宿舍信息管理仍然使用传统的手工方式,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。学校的宿舍管理缺乏系统,规范的信息管理手段。 建立学生宿舍管理系统,使宿舍管理工作系统化,规范化,便捷化,程序化,避免宿舍管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改宿舍情况。 随着高校规模的扩大,在校学生的基本情况随之层次化、多样化、复杂化,相应的,学生管理工作面临严峻的挑战。高校学生信息日渐庞大,相应的宿舍管理工作变得复杂而困难。传统的账本化工作模式,手工记录学生信息并存档,这样的人工管理方式费时、费事、费力,信息获取慢,更新滞后,查阅困难,容易出错。为了给学生提供一个安全舒适的工作、生活、学习环境,方便宿舍管理工作的同时为学生、教师提供准确实时的信息至关重要。 本校的宿舍信息管理,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。 以上的管理缺陷对学生宿舍管理造成了相当大的阻力,工作进展困难,问题

相关文档
最新文档