1、 1 摘 要 本次毕业设计的题目是网络办公助理的网络办公自动化系统,是采用 C#作为平台开发的系统。 C#是一种专门用于 .NET Framework 的新的软件开发语言。 C#在与网络相关的软件开发中越来越显示它的优越性,而且它还提供了一种编写 Windows 平台上几乎任何类型的软件或组件的方式 网络办公助理是一种在计算机前即可发送消息,公告还可以进行网络会议的一款软件。本软件采用 TCP/UDP 协议与多点广播,还采用了多线程技术。 UDP 协议是一个功能较少的简单协议,是一个无连接的协议,所以开销也较少。所以该软 件是一个既经济又实惠的工具。 关键字 : 网络办公助理 C# 协议 AB
2、STRACT The topic of this graduation design is the Network Operation Assistant, is adopt the C# be the terrace development of system.C# is a kind of to used for the new software development language of the .NET Framework exclusively.C# show its superiority more and more in with related software devel
3、opment of network, and it still provides a kind of plait to write the terrace of Windows up the way of almost any software of type or modules The Network Operation Assistant is on sowing in the calculator, the front can immediately send out the news, announce can also carry on a software of the netw
4、ork meeting.This software adopts the DUP agreement with order broadcast more, still adopted the multi-threading technique.The agreement of DUP is the simple agreement of a function less, is a has no copular agreement, so expense also less.So that software is 1 since the economy is again the tool of
5、the real benefit. Key word:The Network Operation Assistant C# Negotiate 2 绪 论 C#简介 C# 是一种新的面向对象编程语言, C#重要性替现在两个方面 : (1)它是专门为 Microsoft 与 .Nnet Framework 的一起使用而设计的 (功能全面的平台 ,用于分布式应用程序的开发 ,部署和执行 ). (2)它是一种基于现代面向对象设计方法的语言,在设计时 ,Microsoft 还研究了其他类似语言的经验 ,这些语言是近 20 年来面向对象规则得到广泛应用以来开发出来的 . C#就其本身而言只是一种语言 ,
6、尽管它是用于生成面向 .NET 环境的代码 ,但它本身不是 .NET 的一部分 .一些特性由 .NET 支持 ,但 C#不支持 .而另一些特性 C#语言支持 , .NET 却不支持 ! C#的优点 : (1)完全支持类和面向对象编程 ,包括接口和继承 ,虚函数和运算符重载的处理 . (2)定义完整 ,一致的基类集合 . (3)对自动生成 XML 文档说明的内置支持 . (4)自动清理动态分配的内存 . (5)可以用用户定义的属性标记类或方法 .着可以用于文档说明 ,对编译有一定的影响 (例如 ,把方法标记为只在调试时编译 ). (6)对 .NET 基类库的完全访问权 ,并易于访问 Window
7、s API(有时确实需要访问 ,但这是不常出现的 ). (7)可以使用指针和 直接内存访问 ,但该语言可以在没有他们的条件下工作 . (8)改变编译器选项 ,可以把程序编译为可执行文件或 .NET 组件库 ,该组件可以用ActiveX 控件 (COM 组件 )相同的方式由其他代码调用 . (9)C#可以用于编写 ASP.NETWeb 页面 . 3 .NET 简介 .NET 是一种在 Windows 上编程的新构架 - 一种新 API.它的优点 : (1)它是一个库 ,且是对 Windows API 的扩展 ,使用它可以调用 Windows 操作系统中的传统特性 :显示窗口和对话框 ,验证安全证
8、书 ,调用基本操作系统服务 ,创建线程等 ;还可以使用一些新特性 ,例如访问数据库或接 Internet,或提供 Web 服务 . (2).NET 提供了程序的运行环境 (.NET 运行时 ). .NET 的改进特性 : (1)面向对象的编程 :.NET 和 C#从一开始就完全是基于面向对象的 . (2)优秀的设计 :一个基类库 ,这是从一种非常直观的方式设计出来的 . (3)语言的无关性 :有了 .NET,VB.NET 和 C#和 Managed C+等所有语言都可以编译为通用的中间语言 (Intermediate Languege).这说明 ,语言可以用以前没有的方式交互操作 . (4)对
9、动态 Web 页面的支持 :ASP 具有很大的灵活性 ,但效率不是很高 ,这是因为他使用了解释性的脚本语言 ,且缺乏面向对象的设计 ,从而导致 ASP 代码比较凌乱 . .NET 使用一种新技术 ASP.NET 为 Web 页面提供了一种集成式的支持 .使用ASP.NET,可以编译页面中的代码 ,这些代码还可以使用 .NET 高级语言来编写 ,例如 C#或 VB.NET (5)高效的数据访问 :一组 .NET 组件总称为 ADO.NET,提供了对关系数据库和各种数据源的高效访问 .这些组件也可以访问文件系统和目录 .NET内置了 XML支持 ,可以处理从非 Windows 平台导入的数据 .
10、(6)代码共 享 :.NET 引入了程序集的概念 ,代替了传统的 DLL,可以完美无暇地修补代码在应用程序之间的共享方式。程序集有解决版本冲突的正式系统 ,程序集的不同版本可以同时存在 . (7)增强的安全性 :每个程序集还可以包含内置的安全信息 ,这些信息可以准确地指出谁或哪种类型的用户或进程可以调用什么类的哪些方法 .这样就可以非常准确地控制程序集使用的方式 . (8)对安装没有任何影响 :有两种类型的程序集 ,共享程序集和私有程序集 .共享程序集是可以用语所有软件的公共库 ,私有程序集只是用于某个软件 .私有程序集功能完备 ,所以安装的过程非常简单 ,没有注册 表项目 ,只需把相应的文件
11、放在文件系统的相应文件夹中即可 .Web服务的支持 :.NET集成了对开发 Web服务的完全支持 ,用户可以开发出任何类型的应用程序 . (9)Visual Studio.NET:.NET 附带了一个新的开发环境 Visual Studio.NET,它还可4 以很好地与 C+,C#,VB.NET 和 ASP.NET 代码合并使用 . Visual Studio.NET 集成了 Visual Studio 6 环境中各种语言专用的所有最佳功能 . (10) C#:是使用 .NET 的一种面向对象的新语言 . 网络办公助理简介 基于诸多方便条 件 ,我们将其用于我们的生活中 ,让我们的生活更适应现
12、代化的发展 .在 现在科技在不断更新,技术日新月异的情况下 ,我们的生活中很多办公模式还停留在原始阶段: 当同一办公室的两位员工有问题探讨时,还得离开自己的位置交谈,这就会对其他人员造成影响。 当有资源共享时,只是简单的共享,有着很大的安全隐患。有些甚至还在使用纸介质。 当要召开会议时。既需要专人通知,浪费了人力资源,又需要会议室。 为了方便办公,解决以上问题,我们开发了一款软件 -网络办公助理( NOA)! 此软件主要有以下优点: 网络设 置 发送短信 发布通知 网上会议 文件传输 .NET 是 MS 新推出的一种面向网络 ,支持各种用户终端的开发平台环境。它将会带来一种软件革命。 NET
13、实现 “3A”(AnyTime,AnyWhere,AnyDevice”) ; 即使用不同的开发语言 ,在不同的目标设备上作 .它是一种能够横亘于整个网络 ,跨越各种操作系统和终端设备之上的操作与平台 . 随着 .NET 推出的一种新兴的开发语言 C#, C#是 MS 将 C和 C+改良的产物,他继承了 C和 C+的优点,去 掉的繁琐的东西,如指针 (若使用,需指定 unsafe 关键字 ),模板,宏等,以及继承了 VB 的 RAD 特性,使得开发应用程序的周期大大缩短。 与 JAVA 语言相比, C#是 MS 的产物,它与 MS自己的操作系统 windows 有着更好的亲和能力。 5 C#和
14、.NET 整个构架更适合客户端和服务端工作的混合。 JAVA 体系主要面向服务器端应用和企业级的应用 ,而在广泛使用 Windows 平台的中低端应用上 ,不如 .NET 有优势。 正是因为 DOTNET 平台和 C#开发语言的特点 (安全性,兼容性等 ), 因此我们选择用 C#语言进行开发。 这就是 -网络办公助理 (NOA) 网络办公助理实现细节 本软件采用了 UDP 协议与多点广播,其中多点广播用于发送短信功能; UDP 协议用于发布通知 ,网上会议和文件传输功能。此外,本软件还采用了多线程技术,使各个功能都能够并发执行。 网络办公 助理的示意图如下: 办公助理的功能特色: 本软件设计是
15、从用户的 角度进行开发,处处为用户着想 。而且我们充分考虑到了用户可能在操作中出现的各种错误,本软件对一定错误都对用户进行友善的提示。 由于 C#可以支持多国语言,所以本软件可以支持中文,英文,日文,韩文,俄文等多种语言。 主 页 面 启 动 文 件 传 输 网 上 会 友 发 布 通 知 发 送 短 信 网 络 设 置 版 本 信 息 6 同时本软件已经打包成为一个安装文件,安装十分简便,只需按照所给的提示,就可以进行安装,简单易行。 一般的网络通信软件,都采用 C/S 或 B/S 模式。本软件则省去了专用服务器;将服务器所具有的功能嵌入到软件中,使软件本身不仅具有客户端的功能,而且具有服务
16、器的功能。 传统的通信都采用对等网的形式进行通信 . 而本软件不仅有点对点的通信 ,还有发广播的特点。 传统的通用软件如 QQ, MSN 等都需要登陆其服务器后,才能进行双方通信,不能保证信息的安全性。而本软件只是在本局域网内流通,无需登陆服务器,有利于信息的保护。 该软件还有很强的扩展性,可以将很多功能加入进去。 此软件我们在将来还将如一些语音交流,视频会议等功能添加进来。 以及还有发送通知的权限,可以设置权限来管理办公人员是否能够发送通知等等。 在网络会议室内显示在线人员等。 办公助理的用途 办公助理的用途主要用在办公楼局域网内的计算机上。 发送短 信功能,是用于办公人员在不干扰别人的情况
17、下,与另一个人进行交流。 发布通知功能,能让主管人员不用在奔波于各个部门之间,只要使用发布通知功能,就可以通知到各个人,十分方便。 网上会议功能,可以让大家能够随时地在网上进行开会,免除了开会要到会议室开会的麻烦,节约了时间 . 文件传输功能,可以使相邻计算机之间的文件交换变得十分简单,不必在用 U 盘等来拷贝,极大了方便了办公人员。 由于 DOTNET 是 MS 新推出的战略平台,用 C#进行 Socket 类的编程,难度较高;而且时间比较仓促,所以本软件还存在不少不足 ,一些扩展性的功能还没有实现。 7 以下是部分代码的实现 using System.Reflection; using S
18、ystem.Runtime.CompilerServices; / 有关程序集的常规信息是通过下列 /属性集控制的。更改这些属性值可修改与程序集 /关联的信息。 assembly: AssemblyTitle(“) assembly: AssemblyDescription(“) assembly: AssemblyConfiguration(“) assembly: AssemblyCompany(“) assembly: AssemblyProduct(“) assembly: AssemblyCopyright(“) assembly: AssemblyTrademark(“) asse
19、mbly: AssemblyCulture(“) / 程序集的版本信息包含下列 4 个值: / 主版本 / 次版本 / 内部版本号 / 修订号 / 您可以指定所有值,或使用“修订号 ”和“内部版本号”的默认值,方法为按如下方式 / 使用“ *”: assembly: AssemblyVersion(“1.0.*“) / 要对程序集进行签名,必须指定要使用的密钥。有关程序集签名的更多信息,请参考 / Microsoft .NET 框架文档。 / 使用下面的属性控制用于签名的密钥。 / 注意: / (*) 如果未指定密钥,则程序集不会被签名。 / (*) KeyName 是指已经安装在计算机上的
20、/ 加密服务提供程序 (CSP) 中的密钥。 KeyFile 是指包含 8 / 密钥的文件。 / (*) 如果 KeyFile 和 KeyName 值都已指定,则 / 发生下列处理: / (1) 如果在 CSP 中可以找到 KeyName,则使用该密钥。 / (2) 如果 KeyName 不存在而 KeyFile 存在,则 / KeyFile 中的密钥安装到 CSP 中并且使用该密钥。 / (*) 要创建 KeyFile,可以使用 sn.exe(强名称)实用工具。 / 在指定 KeyFile 时, KeyFile 的位置应该相对于 / 项目输出目录,即 / %Project Directory
21、%obj。例如,如果 KeyFile 位于 / 该项目目录,应将 AssemblyKeyFile / 属性指定为 assembly: AssemblyKeyFile(“.mykey.snk“) / (*) “延迟签名”是一个高级选项 - 有关它的更多信息,请参阅 Microsoft .NET 框架 / 文档。 assembly: AssemblyDelaySign(false) assembly: AssemblyKeyFile(“) assembly: AssemblyKeyName(“) IP 的设定: using System; using System.Drawing; using S
22、ystem.Collections; using System.ComponentModel; using System.Windows.Forms; namespace NetStar / / UserIPDlg 的摘要说明。 / public class UserIPDlg : System.Windows.Forms.Form private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Button btnCancel; 9 private System.Windows.Forms.TextBox txt
23、UserID; private System.Windows.Forms.TextBox txtIPAddress; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; / / 必需的设计器变量。 / private System.ComponentModel.Container components = null; public UserIPDlg() / Windows 窗体设计器支持所必需的 InitializeComponent(); / TODO: 在 Initia
24、lizeComponent 调用后添加任何构造函数代码 / / 清理所有正在使用的资源。 / protected override void Dispose( bool disposing ) if( disposing ) if(components != null) components.Dispose(); base.Dispose( disposing ); #region Windows Form Designer generated code / / 设计器支持所需的方法 - 不要使用代码编辑器修改 / 此方法的内容。 / private void InitializeCompon
25、ent() 10 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.F
26、orms.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.F
27、orms.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
28、.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“;