基于C#+.net+UDP的网络办公助理设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于C#+.net+UDP的网络办公助理设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
- 本次毕业设计的题目是网络办公助理的网络办公自动化系统,是采用C#作为平台开发的系统。C#是一种专门用于.NET Framework的新的软件开发语言。C#在与网络相关的软件开发中越来越显示它的优越性,而且它还提供了一种编写Windows平台上几乎任何类型的软件或组件的方式
- 网络办公助理是一种在计算机前即可发送消息,公告还可以进行网络会议的一款软件。本软件采用TCP/UDP协议与多点广播,还采用了多线程技术。UDP协议是一个功能较少的简单协议,是一个无连接的协议,所以开销也较少。所以该软件是一个既经济又实惠的工具。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:4544个字14页
包含内容:全套源码+配整论文
开题报告、论文答辩、课题报告等ppt模板推荐下载方式:
3、关键词
网络办公助理 C# 协议4、毕设简介
提示:以下为毕业论文的简略介绍,项目完整源码及完整毕业论文下载地址见文末。
C#简介
C# 是一种新的面向对象编程语言,C#重要性替现在两个方面:
(1) 它是专门为Microsoft与.Nnet Framework的一起使用而设计的(功能全面的平台,用于分布式应用程序的开发,部署和执行).
(2) 它是一种基于现代面向对象设计方法的语言,在设计时,Microsoft还研究了其他类似语言的经验,这些语言是近20年来面向对象规则得到广泛应用以来开发出来的.
C#就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分.一些特性由.NET支持,但C#不支持.而另一些特性C#语言支持, .NET却不支持!
C#的优点:
(1)完全支持类和面向对象编程,包括接口和继承,虚函数和运算符重载的处理.
(2)定义完整,一致的基类集合.
(3)对自动生成XML文档说明的内置支持.
(4)自动清理动态分配的内存.
(5)可以用用户定义的属性标记类或方法.着可以用于文档说明,对编译有一定的影响(例如,把方法标记为只在调试时编译).
(6)对.NET基类库的完全访问权,并易于访问Windows API(有时确实需要访问,但这是不常出现的).
(7)可以使用指针和直接内存访问,但该语言可以在没有他们的条件下工作.
(8)改变编译器选项,可以把程序编译为可执行文件或.NET组件库,该组件可以用ActiveX控件(COM组件)相同的方式由其他代码调用.
(9)C#可以用于编写ASP.NETWeb页面.
.NET简介
.NET是一种在Windows上编程的新构架------- 一种新API.它的优点:
(1) 它是一个库,且是对Windows API的扩展,使用它可以调用Windows操作系统中的传统特性:显示窗口和对话框,验证安全证书,调用基本操作系统服务,创建线程等;还可以使用一些新特性,例如访问数据库或接Internet,或提供Web服务.
(2) .NET提供了程序的运行环境(.NET运行时).
.NET的改进特性:
(1) 面向对象的编程:.NET和C#从一开始就完全是基于面向对象的.
(2) 优秀的设计:一个基类库,这是从一种非常直观的方式设计出来的.
(3) 语言的无关性:有了.NET,VB.NET和C#和Managed C++等所有语言都可以编译为通用的中间语言(Intermediate Languege).这说明,语言可以用以前没有的方式交互操作.
(4) 对动态Web页面的支持:ASP具有很大的灵活性,但效率不是很高,这是因为他使用了解释性的脚本语言,且缺乏面向对象的设计,从而导致ASP代码比较凌乱.
.NET使用一种新技术ASP.NET为Web页面提供了一种集成式的支持.使用ASP.NET,可以编译页面中的代码,这些代码还可以使用.NET高级语言来编写,例如C#或VB.NET
(5) 高效的数据访问:一组.NET组件总称为ADO.NET,提供了对关系数据库和各种数据源的高效访问.这些组件也可以访问文件系统和目录…NET内置了XML支持,可以处理从非Windows平台导入的数据.
(6) 代码共享:.NET引入了程序集的概念,代替了传统的DLL,可以完美无暇地修补代码在应用程序之间的共享方式。程序集有解决版本冲突的正式系统,程序集的不同版本可以同时存在.
(7) 增强的安全性:每个程序集还可以包含内置的安全信息,这些信息可以准确地指出谁或哪种类型的用户或进程可以调用什么类的哪些方法.这样就可以非常准确地控制程序集使用的方式.
(8) 对安装没有任何影响:有两种类型的程序集,共享程序集和私有程序集.共享程序集是可以用语所有软件的公共库,私有程序集只是用于某个软件.私有程序集功能完备,所以安装的过程非常简单,没有注册表项目,只需把相应的文件放在文件系统的相应文件夹中即可.Web服务的支持:.NET集成了对开发Web服务的完全支持,用户可以开发出任何类型的应用程序.
(9) Visual Studio.NET:.NET附带了一个新的开发环境Visual Studio.NET,它还可以很好地与C++,C#,VB.NET和ASP.NET代码合并使用. Visual Studio.NET集成了Visual Studio 6环境中各种语言专用的所有最佳功能.
(10) C#:是使用.NET的一种面向对象的新语言.
网络办公助理简介
基于诸多方便条件,我们将其用于我们的生活中,让我们的生活更适应现代化的发展.在
现在科技在不断更新,技术日新月异的情况下,我们的生活中很多办公模式还停留在原始阶段:
当同一办公室的两位员工有问题探讨时,还得离开自己的位置交谈,这就会对其他人员造成影响。
当有资源共享时,只是简单的共享,有着很大的安全隐患。有些甚至还在使用纸介质。
当要召开会议时。既需要专人通知,浪费了人力资源,又需要会议室。
• 为了方便办公,解决以上问题,我们开发了一款软件—网络办公助理(NOA)!
• 此软件主要有以下优点:
• 网络设置
• 发送短信
• 发布通知
• 网上会议
• 文件传输
• .NET是MS新推出的一种面向网络,支持各种用户终端的开发平台环境。它将会带来一种软件革命。
• NET实现“3A”(AnyTime,AnyWhere,AnyDevice”);
即使用不同的开发语言,在不同的目标设备上作.它是一种能够横亘于整个网络,跨越各种操作系统和终端设备之上的操作与平台.
• 随着.NET推出的一种新兴的开发语言C#,C#是 MS将C和C++改良的产物,他继承了 C和C++的优点,去掉的繁琐的东西,如指针(若使用,需指定unsafe关键字),模板,宏等,以及继承了 VB的RAD特性,使得开发应用程序的周期大大缩短。
• 与JAVA语言相比,C#是MS的产物,它与MS自己的操作系统windows有着更好的亲和能力。
• C#和.NET整个构架更适合客户端和服务端工作的混合。
• JAVA体系主要面向服务器端应用和企业级的应用,而在广泛使用Windows平台的中低端应用上,不如.NET有优势。
• 正是因为DOTNET平台和C#开发语言的特点(安全性,兼容性等), 因此我们选择用C#语言进行开发。
• 这就是--------网络办公助理(NOA)
网络办公助理实现细节
• 本软件采用了UDP协议与多点广播,其中多点广播用于发送短信功能;UDP协议用于发布通知,网上会议和文件传输功能。此外,本软件还采用了多线程技术,使各个功能都能够并发执行。
网络办公助理的示意图如下:
办公助理的功能特色:
• 本软件设计是从用户的角度进行开发,处处为用户着想 。而且我们充分考虑到了用户可能在操作中出现的各种错误,本软件对一定错误都对用户进行友善的提示。
• 由于C#可以支持多国语言,所以本软件可以支持中文,英文,日文,韩文,俄文等多种语言。
• 同时本软件已经打包成为一个安装文件,安装十分简便,只需按照所给的提示,就可以进行安装,简单易行。
• 一般的网络通信软件,都采用C/S或B/S 模式。本软件则省去了专用服务器;将服务器所具有的功能嵌入到软件中,使软件本身不仅具有客户端的功能,而且具有服务器的功能。
• 传统的通信都采用对等网的形式进行通信.
而本软件不仅有点对点的通信,还有发广播的特点。
传统的通用软件如QQ,MSN等都需要登陆其服务器后,才能进行双方通信,不能保证信息的安全性。而本软件只是在本局域网内流通,无需登陆服务器,有利于信息的保护。
该软件还有很强的扩展性,可以将很多功能加入进去。
此软件我们在将来还将如一些语音交流,视频会议等功能添加进来。
以及还有发送通知的权限,可以设置权限来管理办公人员是否能够发送通知等等。
在网络会议室内显示在线人员等。
办公助理的用途
• 办公助理的用途主要用在办公楼局域网内的计算机上。
– 发送短信功能,是用于办公人员在不干扰别人的情况下,与另一个人进行交流。
– 发布通知功能,能让主管人员不用在奔波于各个部门之间,只要使用发布通知功能,就可以通知到各个人,十分方便。
– 网上会议功能,可以让大家能够随时地在网上进行开会,免除了开会要到会议室开会的麻烦,节约了时间.
– 文件传输功能,可以使相邻计算机之间的文件交换变得十分简单,不必在用U 盘等来拷贝,极大了方便了办公人员。
• 由于DOTNET是MS新推出的战略平台,用C#进行Socket类的编程,难度较高;而且时间比较仓促,所以本软件还存在不少不足,一些扩展性的功能还没有实现。
以下是部分代码的实现
using System.Reflection;
using System.Runtime.CompilerServices;
// 有关程序集的常规信息是通过下列
//属性集控制的。更改这些属性值可修改与程序集
//关联的信息。
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 程序集的版本信息包含下列 4 个值:
// 主版本
// 次版本
// 内部版本号
// 修订号
// 您可以指定所有值,或使用“修订号”和“内部版本号”的默认值,方法为按如下方式
// 使用“*”:
[assembly: AssemblyVersion("1.0.*")]
// 要对程序集进行签名,必须指定要使用的密钥。有关程序集签名的更多信息,请参考
// Microsoft .NET 框架文档。
// 使用下面的属性控制用于签名的密钥。
// 注意:
// (*) 如果未指定密钥,则程序集不会被签名。
// (*) KeyName 是指已经安装在计算机上的
// 加密服务提供程序 (CSP) 中的密钥。KeyFile 是指包含
// 密钥的文件。
// (*) 如果 KeyFile 和 KeyName 值都已指定,则
// 发生下列处理:
// (1) 如果在 CSP 中可以找到 KeyName,则使用该密钥。
// (2) 如果 KeyName 不存在而 KeyFile 存在,则
// KeyFile 中的密钥安装到 CSP 中并且使用该密钥。
// (*) 要创建 KeyFile,可以使用 sn.exe(强名称)实用工具。
// 在指定 KeyFile 时,KeyFile 的位置应该相对于
// 项目输出目录,即
// %Project Directory%\obj\<configuration>。例如,如果 KeyFile 位于
// 该项目目录,应将 AssemblyKeyFile
// 属性指定为 [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) “延迟签名”是一个高级选项 - 有关它的更多信息,请参阅 Microsoft .NET 框架
// 文档。
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
IP的设定:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace NetStar
{
/// <summary>
/// UserIPDlg 的摘要说明。
/// </summary>
public class UserIPDlg : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.TextBox txtUserID;
private System.Windows.Forms.TextBox txtIPAddress;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public UserIPDlg()
{
// Windows 窗体设计器支持所必需的
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.txtUserID = new System.Windows.Forms.TextBox();
this.txtIPAddress = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
// btnOK
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Location = new System.Drawing.Point(64, 112);
this.btnOK.Name = "btnOK";
this.btnOK.TabIndex = 4;
this.btnOK.Text = "确认";
// btnCancel
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(200, 112);
this.btnCancel.Name = "btnCancel";
this.btnCancel.TabIndex = 5;
this.btnCancel.Text = "放弃";
// txtUserID
this.txtUserID.AcceptsReturn = true;
this.txtUserID.AcceptsTab = true;
this.txtUserID.Location = new System.Drawing.Point(88, 24);
this.txtUserID.Name = "txtUserID";
this.txtUserID.Size = new System.Drawing.Size(200, 21);
this.txtUserID.TabIndex = 1;
this.txtUserID.Text = "";
this.txtUserID.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtUserID_KeyDown);
// txtIPAddress
this.txtIPAddress.AcceptsReturn = true;
this.txtIPAddress.AcceptsTab = true;
this.txtIPAddress.Location = new System.Drawing.Point(88, 56);
this.txtIPAddress.Name = "txtIPAddress";
this.txtIPAddress.Size = new System.Drawing.Size(200, 21);
this.txtIPAddress.TabIndex = 3;
this.txtIPAddress.Text = "";
this.txtIPAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtIPAddress_KeyDown);
// label1
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(8, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(66, 17);
this.label1.TabIndex = 0;
this.label1.Text = "用户标识符";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// label2
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(32, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(42, 17);
this.label2.TabIndex = 2;
this.label2.Text = "IP地址";
// UserIPDlg
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(306, 151);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.txtIPAddress);
this.Controls.Add(this.txtUserID);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "UserIPDlg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "输入用户标识符和IP地址对话框";
this.ResumeLayout(false);
}
#endregion
private void txtUserID_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode==Keys.Enter)
{
this.txtIPAddress.Focus();
}
}
Private void txtIPAddress_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode==Keys.Enter)
this.btnOK.PerformClick();
}
public string GetUserID
{
get{ return this.txtUserID.Text;}
}
public string GetIPAddress
{
get{ return this.txtIPAddress.Text;}
}
}
}
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace NetStar
{
/// <summary>
/// ProgressDlg 的摘要说明。
/// </summary>
public class ProgressDlg : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public ProgressDlg()
{
// Windows 窗体设计器支持所必需的
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300,300);
this.Text = "ProgressDlg";
}
#endregion
}
}
小结
通过对C#进行一段时间的理论学习,是我对C#产生了浓厚的兴趣. C#语言自C/C++演变而来。但是,它现代、简单、完全面向对象和类型安全。如果您是C/C++程序员,学习曲线将会很平坦。许多C#语句直接借用您所喜爱的语言,包括表达式和操作符。C#最重要的一点:它是现代的编程语言。它简化和现代化了C++在类、名字空间、方法重载和异常处理等领域。屏弃了C++的复杂性,使它更易用、更少出错。C#的易用有贡献的是减少了C++的一些特性,不再有宏、模板和多重继承。特别对企业开发者来说,上述功能只会产生更多的麻烦而不是效益。使编程更方便的新功能是严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功能的目标都是瞄准了开发面向组件的软件。
当毕业论文步入总结时,对自己尚未能亲临C#编程环境中进行研发深感遗憾.经过努力阅读分析大量有关C#的书籍和文献之后,对C#的基本理论有了一个粗浅的认识和理解,并认真完成了我的毕业论文.希望自己以后可以有机会理论联系实践,真正进入我感兴趣的C#世界中去.同时在此由衷感谢指导教师对我的悉心指点!
参考文献:
[1]Christian Holm(德) & Mike Kruger Bernhard Spuida .Dissecting a C# Application Inside SharpDevelop.薛兴涛 袁勤勇. 清华大学出版社. 2003年 8月第一版
[2]Simon Robinson K.Scott Allen 等著. Professional C# 2 nd Edition. 杨浩 杨铁男 等 .清华大学出版社.2002年7月第一版
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于C#+.net+UDP的网络办公助理设计与实现(源码+文档)_.net_UDP协议_网络办公助理.zip |