通信工程本科快毕业了,要做毕业论文,求助大家

通信工程本科快毕业了,要做毕业论文,求助大家,第1张

您的电子信息工程专业论文具体是什么题目呢有什么要求呢论文是需要多少字呢 开题报告 任务书 都搞定了不你可以告诉我具体的排版格式要求,希望可以帮到你,祝写作过程顺利论文如何定题目 首先看是什么专业的题目其次根据专业和教授的口味来定题目尽可能不要大众化 (一)选题毕业论文(设计)题目应符合本专业的培养目标和教学要求,具有综合性和创新性。本科生要根据自己的实际情况和专业特长,选择适当的论文题目,但所写论文要与本专业所学课程有关。(二)查阅资料、列出论文提纲题目选定后,要在指导教师指导下开展调研和进行实验,搜集、查阅有关资料,进行加工、提炼,然后列出详细的写作提纲。(三)完成初稿根据所列提纲,按指导教师的意见认真完成初稿。(四)定稿初稿须经指导教师审阅,并按其意见和要求进行修改,然后定稿。 选题是决定毕业设计(论文)训练成败与质量好坏的关健之一。1、通信工程专业本科从选题的内容上可以分为理论型毕业设计(论文)和应用型毕业设计(论文)两大类。2、从本科毕业设计(论文)课题的来源,也可以分为教师命题型和自选型毕业设计(论文)两大类。3、学生要根据通信工程专业课程群来确定选题方向,数字通信与网络交换方向及信号及信息处理方向的所有应用方面课程均可以作为选题内容。但是,电子技术应用方向及计算机应用方向必须与通信或信号信息处理相结合,其中要有与通信相关的内容。4、从通信工程专业本科毕业设计(论文)所涉及的研究领域来看,可以是以下内容:(1)网络交换与数据传输分析;(2)通信网络或数字通信仿真(MATLAB,Systemview等);(3)信号及信息处理,(如数据采集,USB接口传输,图像数据处理等);(4)红外线遥感技术(如防盗遥感技术)(5)网络信息安全(如编码技术)(6)通信类软件开发,(如C语言与蓝牙结合)(7)数据传输类接口电路设计或软件设计(如嵌入式蓝牙设计)(8)光纤、无线、移动等通信新技术方面的应用或开发;(9)微波技术,电磁波传输技术,卫星雷达等方面(10)计算机网络或计算机控制方面(11)通信在军事方面的应用研究;(12)程控交换,交互式有线电视网等。(13)其他与通信相关的命题。计算机信息,通信工程,本科毕业论文参考选题 Linux(gatagram模块)源码分析Linux网络子系统stream模块分析Linux网络子系统的FDDI模块分析?? Linux网络子系统的hippi模块分析Linux网络子系统的PB022.C模块分析Linux网络子系统的psnap模块分析Linux系统中socket.c模块的分析港口进口业务设计与实施基于Linux系统中sock.c模块分析建材商行商务管理系统师技校网站网络子系统PKTGEN模块的分析网上考核系统-杭州刑侦警务信息平台子系统药库药品管理系统住院管理系统毕业设计管理系统的设计与实现仓库进销存管理系统----库存管理模块成绩管理系统的设计与开发杭州市自助旅游服务系统的开发与设计建材库存管理系统明星个人网站建设 农行信贷客户查询与信用等级管理系统皮具销售库存管理信息系统的分析与实现企业网站设计与建设汽车俱乐部管理系统的开发与设计人事工资管理系统人事管理系统瑞安市公交查询系统的设计与实现在线健身商品交易网站设计与实施杭州绿化网网站设计宁波亿泰工贸有限公司企业网站设计企业电子商务网站建设阳光集团人事信息管理系统的设计与实现义乌潜龙玩具厂电子商务网站建设LG分公司家电销售管理系统典当行传统物品管理系统电缆销售管理系统设计(订单管理系统)基于B/S结构的海关人事信息管理系统设计与实现基于WEB的人力资源管理系统家庭理财管理信息系统的设计与开发酒店客房管理系统的分析与设计旅行社业务管理信息系统的设计与实现企业设备档案管理信息系统的设计与实施汽车在线销售系统人事管理系统手机缴费帐务管理系统台帐管理信息系统网上书店的设计与实现小区物业管理信息系统的设计与实现烟草进销存管理信息系统的设计与实现中小型宾馆客房管理系统的实施与分析重庆九龙发电厂内部网站的设计与实现重庆索特集团销售信息管理系统DirectX小型游戏程序设计与分析基于3DS MAX三维建筑模型的设计与实现基于OPENGL的三维游戏引擎分析贪吃蛇游戏程序设计与实现Asp.net 2.0网络技术应用-在线实验教学管理信息系统的开发与设计银行人事管理信息系统的设计与实现珍珠及珍珠饰品(首饰)电子商务网站的设计与实现中学图书室图书管理信息系统从Perl正则表达式到关系数据库模式一种新型正则表达式分析树的建立用Perl语言抽取网页信息正则表达市的可视化构建超声图象管理系统设计与实施城际旅游铁路交通信息查询系统的设计与实现电脑经销物质管理信息系统基于Apriori算法的学籍课程成绩关联规则挖掘研究基于多维数据分析方法的学籍学分预警模型的研究课程教学管理信息系统联创客户关系管理系统的设计和实现审计辅助信息管理系统的设计与实现试题库管理和试卷生成系统图书借阅信息统计分析系统的设计与实现校园导游系统的设计与实现医药销售信息管理系统 浙江财经学院校园信息查询网站的设计与实现--基于ASP.NET的WEB项目开发技术研究及应用浙江财经学院信息学院网站综合导师工作管理信息系统仓储管理系统超市商品销售管理系统的设计与实现车辆销售管理系统工厂员工管理系统基于ASP的网上购物系统的开发与实现基于Web技术的网络考试系统的设计与实现健康保健网站健身房管理软件酒店管理系统的设计与实现网络销售系统基于LL(1)算法实现pascal的子集的程序设计语言的语法分析商场进销存系统电脑配件销售管理系统的开发与设计电脑销售客户服务管理信息系统工资管理系统设计与实施零售业物资管理决策系统农村有线电视收费系统人事档案管理系统开发与实施书店管理系统的设计与实现小型旅馆管理信息系统中小型超市管理系统的设计与实现VIP贵宾卡积分消费系统电力参数分析系统的开发与设计电网功率因数自动补偿控制器的研究高等院校课程安排管理系统基于LABVIEW的粮库PH3浓度检测系统的研究基于S3C44BOX+uCLinux的嵌入式用程序的设计与开发基于单片机的电动车测速/里程测量显示系统的设计基于单片机的交通信号控制系统的设计基于单片机的数字式温度测量系统的设计基于单片机的心率测量系统的设计基于单片机的液滴速度测量系统的设计驾校信息管理系统进出口公司货物运输管理系统 汽车配件管理系统的设计与实施题库管理系统智能行出租车计价系统的设计个人主页建设的设计与实现基于XML的RDBMS数据提取方法研究基于构件的GIS软件开发研究玩具租借网站的设计与开发网络搜索引擎机制的研究学生档案管理信息系统的设计与实现中小型企业人事管理系统的开发与实现110指挥中心接处警调度管理系统宾馆客户管理系统 个人所得税征管系统的设计与开发考勤管理系统的开发与设计企业人事管理系统信息系统安全策略的制订学生成绩管理信息系统第三方物流在供应链管理下的应用分析--区域经济下的第三方物流电子商务环境下的物流配送突破电子商务瓶颈、提高物流配送效率小区车辆收费管理系统的设计与开发IP网络QoS解决方案Intserv/RSVP研究当前IPV4向IPV6过渡技术浅析服装销售系统互联网路由器备份协议HSRP的研究拉链厂车间管理系统丽水学校校园设计方案网上聊天室程序设计网上人才管理信息系统的设计与实现网上银行系统的模拟与设计小区物业管理系统新天地健康会馆会员系统云和县国税局综合大楼网络规划运输物流信息管理系统在线图书零售系统IDXP(入侵检测信息交换协议)的标准IDXP(入侵检测信息交换协议)的简易实现IDXP协议的简易实现程序漏洞分析与利用基于RoadRunner的对等体间通信技术应用研究计算机网络安全案例分析鞋零售业进销存系统开发与设计出版社期刊出版中心发行业务管理系统纺织业务管理系统公关营销培训学校业务管理系统的设计与实施旅游资源及客户信息管理系统汽配管理系统嵊州市新型农村合作医疗征缴子系统校园网站设计与实现——数学与统计学院网站设计医药管理系统设计与实施银江电子科技有限公司库存管理系统的设计与实施浙江华天机械有限公司的客户信息管理系统的设计与实施住房公积金贷款管理系统餐饮管理系统城市公交线路查询系统房地产客户管理信息系统的设计与开发服装生产管理系统的设计与实现杭州伟星建材销售系统设计与实施基于WEB架构的幼儿园管理系统基于XML的影片租赁系统的开发与设计基于工作流思想的毕业设计管理系统健康风险评估系统社会劳动保障管理局新闻发布系统设计与实现塑料信息网站文件管理系统的开发与设计新闻网站管理系统的设计与实现医院住院管理 1、论文题目:要求准确、简练、醒目、新颖。2、目录:目录是论文中主要段落的简表。(短篇论文不必列目录)3、提要:是文章主要内容的摘录,要求短、精、完整。字数少可几十字,多不超过三百字为宜。4、关键词或主题词:关键词是从论文的题名、提要和正文中选取出来的,是对表述论文的中心内容有实质意义的词汇。关键词是用作机系统标引论文内容特征的词语,便于信息系统汇集,以供读者检索。 每篇论文一般选取3-8个词汇作为关键词,另起一行,排在“提要”的左下方。主题词是经过规范化的词,在确定主题词时,要对论文进行主题,依照标引和组配规则转换成主题词表中的规范词语。5、论文正文:(1)引言:引言又称前言、序言和导言,用在论文的开头。 引言一般要概括地写出作者意图,说明选题的目的和意义, 并指出论文写作的范围。引言要短小精悍、紧扣主题。〈2)论文正文:正文是论文的主体,正文应包括论点、论据、 论证过程和结论。主体部分包括以下内容:a.提出-论点;b.分析问题-论据和论证;c.解决问题-论证与步骤;d.结论。6、一篇论文的参考文献是将论文在和写作中可参考或引证的主要文献资料,列于论文的末尾。参考文献应另起一页,标注方式按《GB7714-87文后参考文献著录规则》进行。中文:标题--作者--出版物信息(版地、版者、版期):作者--标题--出版物信息所列参考文献的要求是:(1)所列参考文献应是正式出版物,以便读者考证。(2)所列举的参考文献要标明序号、著作或文章的标题、作者、出版物信息。

自从开始学linux网络编程后就想写个聊天室,一开始原本打算用多进程的方式来写,可是发觉进程间的通信有点麻烦,而且开销也大,后来想用多线程能不能实现呢,于是便去看了一下linux里线程的用法,实际上只需要知道 pthread_create 就差不多了,于是动手开干,用了两天时间,调试的过程挺痛苦的,一开始打算用纯C来撸,便用简单的数组来存储客户端的连接信息,可是运行时出现了一些很奇怪的问题,不知道是不是访问了临界资源,和线程间的互斥有关等等;奇怪的是,当改用STL的set或map时问题就解决了,但上网搜了下发现STL也不是线程安全的,至于到底是什么问题暂时不想去纠结了,可能是其它一些小细节的错误吧。先贴上代码:

首先是必要的头文件 header.h:

#ifndef  __HEADER_H#define  __HEADER_H#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <error.h>#include <signal.h>#include <sys/wait.h>#include <assert.h>#include <pthread.h>#define  bool  int                  // the 3 lines is for c originally#define  true   1#define  false  0#define  PORT  9003#define  BUF_LEN  1024              // 缓冲区大小#define  MAX_CONNECTION  6          // 服务器允许的最大连接数,可自行更改#define  For(i,s,t)  for(i = (s)i != (t)++i)#endif // __HEADER_H

然后是客户端部分 client.cpp,相对来说简单一些:

#include "header.h"// 客户端接收消息的线程函数void* recv_func(void *args)

{    char buf[BUF_LEN]   int sock_fd = *(int*)args   while(true) {        int n = recv(sock_fd, buf, BUF_LEN, 0)       if(n <= 0)   break                 // 这句很关键,一开始不知道可以用这个来判断通信是否结束,用了其它一些很奇葩的做法来结束并关闭 sock_fd 以避免 CLOSE_WAIT 和 FIN_WAIT2 状态的出现T.T        write(STDOUT_FILENO, buf, n)

}

close(sock_fd)

exit(0)

}// 客户端和服务端进行通信的处理函数void process(int sock_fd)

{

pthread_t td

pthread_create(&td, NULL, recv_func, (void*)&sock_fd)     // 新开个线程来接收消息,避免了一读一写的原始模式,一开始竟把它放进 while 循环里面了,泪崩。。。

char buf[BUF_LEN]   while(true) {        int n = read(STDIN_FILENO, buf, BUF_LEN)

buf[n++] = '\0'                           // 貌似标准读入不会有字符串结束符的,需要自己手动添加

send(sock_fd, buf, n, 0)

}

close(sock_fd)

}int main(int argc, char *argv[])

{

assert(argc == 2)   struct sockaddr_in cli

bzero(&cli, sizeof(cli))

cli.sin_family = AF_INET

cli.sin_addr.s_addr = htonl(INADDR_ANY)

cli.sin_port = htons(PORT)                    // 少了 htons 的话就连接不上了,因为小端机器的原因???

int sc = socket(AF_INET, SOCK_STREAM, 0)   if(sc <0) {

perror("socket error")

exit(-1)

}

inet_pton(AF_INET, argv[1], &(cli.sin_addr))          // 用第一个参数作为连接服务器端的地址

int err = connect(sc, (struct sockaddr*)&cli, sizeof(cli))   if(err <0) {

perror("connect error")

exit(-2)

}

process(sc)

close(sc)   return 0

}

最后是服务端 server.cpp:

#include <map>#include "header.h"using std::map

map<int, struct sockaddr_in*>socks        // 用于记录各个客户端,键是与客户端通信 socket 的文件描述符,值是对应的客户端的 sockaddr_in 的信息// 群发消息给 socks 中的所有客户端inline void send_all(const char *buf, int len)

{    for(auto it = socks.begin()it != socks.end()++it)

send(it->first, buf, len, 0)

}// 服务端端接收消息的线程函数void* recv_func(void* args)

{    int cfd = *(int*)args   char buf[BUF_LEN]   while(true) {        int n = recv(cfd, buf, BUF_LEN, 0)       if(n <= 0)   break                    // 关键的一句,用于作为结束通信的判断        write(STDOUT_FILENO, buf, n)       if(strcmp(buf, "bye\n") == 0) {         // 如果接收到客户端的 bye,就结束通信并从 socks 中删除相应的文件描述符,动态申请的空间也应在删除前释放

printf("close connection with client %d.\n", cfd)           free(socks[cfd])

socks.erase(cfd)           break

}

send_all(buf, n)          // 群发消息给所有已连接的客户端    }

close(cfd)                // 关闭与这个客户端通信的文件描述符}// 和某一个客户端通信的线程函数void* process(void *argv)

{

pthread_t td

pthread_create(&td, NULL, recv_func, (void*)argv)        // 在主处理函数中再新开一个线程用于接收该客户端的消息

int sc = *(int*)argv   char buf[BUF_LEN]   while(true) {        int n = read(STDIN_FILENO, buf, BUF_LEN)

buf[n++] = '\0'               // 和客户端一样需要自己手动添加字符串结束符

send_all(buf, n)              // 服务端自己的信息输入需要发给所有客户端    }

close(sc)

}int main(int argc, char *argv[])

{    struct sockaddr_in serv

bzero(&serv, sizeof(serv))

serv.sin_family = AF_INET

serv.sin_addr.s_addr = htonl(INADDR_ANY)

serv.sin_port = htons(PORT)   int ss = socket(AF_INET, SOCK_STREAM, 0)   if(ss <0) {

perror("socket error")       return 1

}    int err = bind(ss, (struct sockaddr*)&serv, sizeof(serv))   if(err <0) {

perror("bind error")       return 2

}

err = listen(ss, 2)   if(err <0) {

perror("listen error")       return 3

}

socks.clear()         // 清空 map

socklen_t len = sizeof(struct sockaddr)   while(true) {        struct sockaddr_in *cli_addr = (struct sockaddr_in*)malloc(sizeof(struct sockaddr_in))       int sc = accept(ss, (struct sockaddr*)cli_addr, &len)       if(sc <0) {            free(cli_addr)           continue

}        if(socks.size() >= MAX_CONNECTION) {            // 当将要超过最大连接数时,就让那个客户端先等一下

char buf[128] = "connections is too much, please waiting...\n"

send(sc, buf, strlen(buf) + 1, 0)

close(sc)           free(cli_addr)           continue

}

socks[sc] = cli_addr                       // 指向对应申请到的 sockaddr_in 空间

printf("client %d connect me...\n", sc)

pthread_t td

pthread_create(&td, NULL, process, (void*)&sc)      // 开一个线程来和 accept 的客户端进行交互    }    return 0

}

makefile文件:

all: server client

server: server.cpp

g++ -std=c++11 -o server server.cpp -lpthread

client: client.cpp

g++ -std=c++11 -o client client.cpp -lpthread

clean:

rm -f *.o

在我的ubuntu 14.04 64 位的机器上测试过没有什么问题,客户端与服务端能正常的交互和退出,能通过服务端接收其它客户端发送的消息,运行时cpu和内存占用情况正常,不会产生什么奇怪的bug。暂时只写了个终端的界面,客户端的UI迟点再去弄吧~

*****************************************************************************************************************************************

今天试了下用 PyQt4 去写个客户端的界面,调了好一天,总算能看到点东西了,先上图:

而命令行下的客户端(上面的 client.cpp 文件)的运行界面是这样子的:

服务端的运行情况是:

PyQt4 编写的客户端(pyqt_client.py)代码是:

#!/usr/bin/env python#-*- coding: utf-8 -*-from PyQt4 import QtGui, QtCoreimport sysimport socketimport threadclass Client(QtGui.QWidget):

BUF_LEN = 1024    def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)

self.setWindowTitle(u'TCP客户端')

self.resize(600, 500)

self.center()

layout = QtGui.QGridLayout(self)

label_ip = QtGui.QLabel(u'远程主机IP:')

layout.addWidget(label_ip, 0, 0, 1, 1)

self.txt_ip = QtGui.QLineEdit('127.0.0.1')

layout.addWidget(self.txt_ip, 0, 1, 1, 3)

label_port = QtGui.QLabel(u'端口:')

layout.addWidget(label_port, 0, 4, 1, 1)

self.txt_port = QtGui.QLineEdit('9003')

layout.addWidget(self.txt_port, 0, 5, 1, 3)

self.isConnected = False

self.btn_connect = QtGui.QPushButton(u'连接')

self.connect(self.btn_connect, QtCore.SIGNAL(            'clicked()'), self.myConnect)

layout.addWidget(self.btn_connect, 0, 8, 1, 2)

label_recvMessage = QtGui.QLabel(u'消息内容:')

layout.addWidget(label_recvMessage, 1, 0, 1, 1)

self.btn_clearRecvMessage = QtGui.QPushButton(u'↓ 清空消息框')

self.connect(self.btn_clearRecvMessage, QtCore.SIGNAL(            'clicked()'), self.myClearRecvMessage)

layout.addWidget(self.btn_clearRecvMessage, 1, 7, 1, 3)

self.txt_recvMessage = QtGui.QTextEdit()

self.txt_recvMessage.setReadOnly(True)

self.txt_recvMessage.setStyleSheet('background-color:yellow')

layout.addWidget(self.txt_recvMessage, 2, 0, 1, 10)

lable_name = QtGui.QLabel(u'姓名(ID):')

layout.addWidget(lable_name, 3, 0, 1, 1)

self.txt_name = QtGui.QLineEdit()

layout.addWidget(self.txt_name, 3, 1, 1, 3)

self.isSendName = QtGui.QRadioButton(u'发送姓名')

self.isSendName.setChecked(False)

layout.addWidget(self.isSendName, 3, 4, 1, 1)

label_sendMessage = QtGui.QLabel(u' 输入框:')

layout.addWidget(label_sendMessage, 4, 0, 1, 1)

self.txt_sendMessage = QtGui.QLineEdit()

self.txt_sendMessage.setStyleSheet("background-color:cyan")

layout.addWidget(self.txt_sendMessage, 4, 1, 1, 7)

self.btn_send = QtGui.QPushButton(u'发送')

self.connect(self.btn_send, QtCore.SIGNAL('clicked()'), self.mySend)

layout.addWidget(self.btn_send, 4, 8, 1, 2)

self.btn_clearSendMessage = QtGui.QPushButton(u'↑ 清空输入框')

self.connect(self.btn_clearSendMessage, QtCore.SIGNAL(            'clicked()'), self.myClearSendMessage)

layout.addWidget(self.btn_clearSendMessage, 5, 6, 1, 2)

self.btn_quit = QtGui.QPushButton(u'退出')

self.connect(self.btn_quit, QtCore.

多人聊天室可通过保持网络连接、保持进程运行保持通信。想要自己搭建多人聊天室其实也很简单,你可以直接用ZEGO即时通讯,内置文本、图片、语音、视频、地理位置等各种消息类型,支持单聊、群聊、房间聊天,自由组合IM能力,也可针对自身业务场景,定制所需服务规格。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8980118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存