C#平台

2024-09-26

C#平台(精选8篇)

C#平台 篇1

摘要:C#程序设计语言因其简单、面向对象和灵活等优点已受到越来越多的青睐。本文结合笔者的教学改革体会, 从教学方法和教学手段等方面提出了《.NET平台与C#编程》课程教学的看法和建议。

关键词:C#教学,案例教学,项目驱动

引言

《.NET平台与C#编程》是高校计算机专业一门非常重要的专业课, 要求学生能够理解.NET框架, 和各种不同的数据类型, 学习使用C#中的泛型, 体会使用面向对象的好处, 能够用面向对象的思想进行应用程序开发。本课程教学内容丰富, 实践性强, 旨在培养学生的实践动手能力。传统的“理论+上机练习”教学方法无法达到预期的目标, 课程教学应采取一系列的改革措施, 使学生能够真正掌握并运用这门语言。笔者在我院08和09级两个教改班的《.NET平台与C#编程》课程教学中进行了教学模式和教学手段的改革试验, 以课堂实例演示和学生项目实践为主进行教学, 在教学过程中实施案例教学和项目驱动模式, 注重学生实践动手能力的培养和项目设计思路的训练。教学案例和项目的安排和设计重视阶段性和连续性。

一、结合学生实际, 明确教学目标

我院学生在《.NET平台与C#编程》学习之前已开设《C语言程序逻辑》和《数据结构》等相关课程, 未建立面向对象的思想, 项目设计经验非常少。为提高学生的项目实战技能, 并有效地将理论和实践相结合, 笔者结合我院学生的实际情况, 在课程内容上主要安排了以下几个内容:Windows应用程序开发;面向对象之封装;面向对象之数据类型;泛型集合;文件操作;面向对象之继承;面向对象之多态和接口;序列化等, 并明确了学生能结合面向对象的思想进行项目开发的整体目标。

二、案例教学, 项目驱动

案例教学法是在教师的指导下, 学生通过对案例的调查、思考、分析、讨论和交流等活动, 提高分析和解决问题的能力。案例教学有利于培养学生创新能力, 提高学生团队协作能力, 并引导学生形成自主学习的气氛。这种方法要求教师应具有扎实的理论知识和丰富的实践经验, 能将理论与实践融会贯通, 案例的设计应该是通过调研和研究分析工作而形成的。笔者结合个人项目实践经验和教学内容要求, 通过查阅大量的相关文献资料, 精心提炼了一些案例, 并注意案例的易懂性和趣味性。例如, 在讲继承和多态时, 可以就新学期教师和学生见面的自我介绍为例, 教师和学生都须作自我介绍但方式不同, 由于两者都具有共同的特征, 由此可以得到基类;如果在基类中制定一种自我介绍的行为规范, 要求每个对象必须遵守, 即可得到抽象;如果在制定行为规范时提供一种默认的具体行为方式, 即可正确地理解虚方法的含义, 同时也同正确的区分这两种多态。学生通过此案例可比较轻松地理解了面向对象的基本特性。

由于面向对象的程序设计思想始终贯穿了整个课程教学内容, 因此在课程实践过程采用了项目驱动的模式。笔者引入一个较大的项目, 采用边学边设计的方式进行教学, 并制定学生项目设计的最低要求, 要求学生完成阶段性的设计任务。在此过程中, 师生互动, 共同参与, 学生自主地完成学习任务。这种项目驱动式的教学模式强调项目的设计步骤和方法, 学生可在实践的过程中掌握相应的知识点和项目设计方法。同时, 为增强学生的学习兴趣, 笔者还设计了几个小项目如“千千静听”模拟版、加强版记事本等, 并作为拓展性学习内容, 鼓励学生利用课余时间进行, 增强了学生的自主学习能力。

三、组织阶段成果汇报, 重视项目总结

课程教学过程是结合项目的开发设计进行的, 笔者要求学生进行项目的阶段性成果汇报。学生应在阶段成果汇报中给出当前的项目进度分析、存在的主要问题和个人经验体会。汇报过程中, 同学们都可以针对问题提出自己的看法。项目完成后, 学生不仅要进行项目答辩, 同时也须进行项目总结。教师可以通过学生的项目汇报, 了解到学生的学习现状, 同时也能发现教学过程中存在的问题, 有利于不断地改进教学方法和教学手段。

通过这种形式, 学生之间可以进行学习上的相互交流, 不仅能切身感受到与其他同学之间的差距, 同时也能在班级中形成一种非常良好的学习氛围。

四、结束语

通过教学实践发现, 在C#等程序设计语言课程教学过程中, 结合各种教学手段, 采用案例教学和项目驱动模式, 能充分调用学生的学习积极性, 同时还能提高学生实际动手能力。案例教学方法和项目驱动模式在高等教育尤其是工科专业课程教学中的优势越来越明显, 教师需要在教学过程中不断地改进教学方支, 积累教学经验, 不断提高教学的效果。

参考文献

[1]朱金生, 刘耀辉.案例教学法在教学中的应用探讨[J].理工高教研究, 2005.12 (6)

[2]郑绮萍, 包昆荣, 陈志铭.成人教育中案例教学的实践与探索[J].教育发展研究, 2006 (8)

C#中不同循环结构比较 篇2

循环结构是程序设计中一种很重要的结构,其特点是:在给定条件成立的情况下,反复执行某段程序,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C#语言提供了多种循环语句,包括for语句、while语句、do-while语句、foreach语句、break语句、continue语句等;此文仅对for语句、while语句、do-while语句、foreach语句进行比较,使学习者明确它们之间的区别,以便使用循环结构时进行选用。

一、for循环

for循环语句是c#中使用最广泛,最灵活的一种循环语句。它不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。

首先我们来介绍一下for语句的基本格式与语法:

for(①初始化表达式;②循环条件表达式;④变量控制表达式)

{

③循环体

}

执行过程如下:①初始化表达式:一般为赋值表达式,为循环控制变量赋初值。只在第一次循环开始时执行;②循环条件表达式:一般为逻辑表达式,是用来控制循环是否继续的条件。当表达式的值为“真”时,循环继续执行转向步骤③;当表达式的值为“假”时,跳过循环体③,循环结束;③循环体:反复执行的代码段;④变量控制表达式:一般为赋值表达式,为循环控制变量增量或减量。执行完后,转向步骤②,循环继续执行。

使用for循环时需要注意几点:

①在循环结构中,一定要有使循环趋向结束的操作。以上程序代码中,语句i++;使i不断增1,当i>5时,循环结束。如果没有i++;这一语句,i的值始终不变,循环将无限进行,即为死循环。

②for后面括号内的3个表达式之间用两个“;”隔开,3个表达式的内容可以为空,但”;”不能省略。

③for后面括号后没有“;”,紧接“{}”,如在for后的“()”后紧接“;”,则表示循环体为空。

④当循环体只有一个子句时“{}”可以省略。

二、while循环

While语句的作用是判断一个条件表达式,以便决定是否应当进入和执行循环体,当满足该条件时进入循环,不满足该天剑时则不再执行循环。

基本格式与语法:

while(①条件表达式)

{

②循环体

}

执行过程如下:①条件表达式:一般为逻辑表达式,是用来控制循环是否继续的条件。当表达式的值为“真”时,循环继续执行转向②;当表达式的值为“假”时,跳过循环体②,while循环结束;②循环体:反复执行的代码段。执行完后,转向步骤①,循环继续执行。

使用while循环时需要注意几点:

①在循环体中,一定要有使循环趋向结束的语句。以上程序代码中,语句i++;使i不断增1,当i>5时,循环结束。如果没有i++;这一语句,i的值始终不变,循环将无限进行,即为死循环。

②如果循环体只包含一个语句,可以省略{}。

三、do..while循环

基本格式与语法:

do

{

①循环体

}while(②条件表达式);

执行过程如下:①循环体:反复执行的代码段。当流程到达do后,立即执行循环体,循环体至少执行一次。完后转向while后的条件表达式②;②条件表达式:一般为逻辑表达式,是用来控制循环是否继续的条件。当表达式的值为“真”时,循环继续执行转向①;当表达式的值为“假”时,循环结束。

使用do...while循环时需要注意几点:

①在循环体中,一定要有使循环趋向结束的语句。以上程序代码中,语句i++;使i不断增1,当i>5时,循环结束。如果没有i++;这一语句,i的值始终不变,循环将无限进行,即为死循环。

②和while语句的相同点是:都是在while后表示循环条件;循环体都在{}中。和while语句的区别是:语法结构上do..while结构do开始,“;”结束;do..while结构不管一开始循环条件是否满足都先执行了循环体,循环体至少执行一次。

四、foreach语句

foreach循环语句可以遍历集合中的元素。foreach语句的语法格式如下:

foreach(类型变量in表达式)

{

循环体

}

其中:

类型:变量的类型

变量:能被集合元素赋值的循环变量,是一个只读的局部变量。

表达式:对象集合或数组表达式。集合元素的类型必须可以显式转换为变量类型。

执行过程如下:①变量在表达式中遍历时,循环体反复执行。

五、综合对比

经过对四种循环结构的介绍我们发现:①foreach循环语句通过遍历集合中的元素进行循环,其他三种都是通过循环变量控制循环;②在这三种循环结构中只有for循环明确的给出了循环变量定义及循环变量控制语句,因此使用更为灵活,还有更好的可读性;③do...while和while语句的相同点是:都是在while后表示循环条件;循环体都在{}中。和while语句的区别是:语法结构上do..while结构do开始,“;”结束;do..while结构不管一开始循环条件是否满足都先执行了循环体,循环体至少执行一次。

C#平台 篇3

关键词:XML,数据平台,DOM,OLEDB,C#

在信息化时代和科技强警的新环境下, 办理案件时查询某一个人讯息的时候, 往往需要查询多个基于各种异构数据源的业务系统和外部系统后, 进行大量数据查询后才能搜集到这个人的全部资料, 其工作量大, 且容易出现人为差错, 从而影响办理案件的决策。另外, 即使是一个经过严密信息规划的部门, 因时间推移、人事以及数据变迁, 数据库技术的发展和数据库时常变化, 都有可能造成异构数据库并存的局面。因此, 异构数据库使用的要求非常迫切并会长期存在下去。由此可见, 建立一个异构数据库平台对公安部门科技强警是充分必要的。

1 异构数据库问题分析

1.1 建立异构数据库的目的

异构数据库系统是相关的多个数据库系统的集合, 可以实现数据的共享和透明访问, 每个数据库系统在加入异构数据库系统之前本身就已经存在, 拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性, 实现数据共享的同时, 每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。

异构数据库系统的异构性主要体现在三个方面:计算机体系结构的异构、基础操作系统的异构、DBMS本身的异构。

1.2 异构数据库所要解决的问题

解决异构数据库问题的目的是为企业综合应用系统提供集成的、统一的、安全的、快捷的信息查询、数据挖掘和决策支持服务。为了满足这个需求条件, 整合、集成后的数据必须保证一定的集成性、完整性、一致性和访问安全性。整合、集成后的数据应该根据一定的数据转换模式和公安内部进行统一数据结构和字段语义编码转换。

1.3 异构数据库应用模型

在较大的公安业务查询信息系统中, 由于历史原因以及各业务部门所用的数据库系统各不相同, 因此, 在建立综合信息服务系统中, 就必然要面对异构数据库的问题。异构数据库在综合信息服务系统中较典型的应用如下图所示。

2 异构数据库的解决方案

异构数据库的解决方案主要有:利用现成数据转换工具, 如PowerBuilder的DataPipeline、SQLServer的DTS、Oracle的SQL*Loder等;利用ODBC和JDBC的解决方案;利用XML的解决方案。异构数据库项目以XML的解决方案和JDBC解决方案联合使用为主, 以下主要介绍利用XML的解决方案。

2.1 利用XML的解决方案

(1) XML (eXtensible Markup Language) 简介

XML是一种可以对信息进行自我描述的语言。它允许定义一套符合自己需要的标记, 作为信息传输的载体。标记用于界定内容。XML语法允许自行定义任意复杂的标记结构。XML使用普通的文本, 而不是二进制的数据格式, 具有跨平台的优点。因此, XML为异构数据库平台在Web方式下的应用提供了有利条件。

(2) XML应用与异构数据库平台结合

由于XML具有上述优点, 因而, 在异构数据库平台系统中可以大量应用XML技术。

首先由于XML具有跨平台性, 因而在异构数据库平台中应用XML这一特性解决了平台无关性;其次, XML简单、规范, 因而对XML的查询变得简单;另外, XML以文本方式存储, 这使得HTTP传输变得容易, 从而可以使异构数据库平台以Web方式实现, 扩大了异构数据库的应用规范, XML的自描述性对描述数据库的数据字典提供了简单便捷高效的方法。

(3) 对异构数据库平台建模

UML (Unified Modeling Language) 是一种绘制软件蓝图的标准语言。可以用UML对软件系统进行可视化、构造和文档化。特别是, UML适于对所有重要的分析、设计和实现决策进行详细描述。用UML所建的模型是精确的、无歧义的和完整的。UML产生于面向对象的技术, 从它诞生以来, UML就是面向对象技术领域内占主导地位的标准建模语言。

2.2 异构数据库平台的分析

开发的异构数据库平台使用UML进行建模, 采用JAVA技术, 因此解决了操作系统平台的无关性, 以C#为前端开发工具, 采用XML描述不同数据库的数据字典, 并保留各部门原有的数据库系统。实现异种数据库的相互访问, 数据集成是关键, 数据集成是指将多个异种数据库看作一个逻辑数据库处理。虚拟数据库集成技术是一种解决方法, 该方法只是把指针存储于中心位置, 而数据仍放在它们原来的位置。这样解决了许多传统的数据存储问题。虚拟数据库集成让用户能实时地看到异构数据库的数据, 这样使用户得到的是一个全面的、集成的视图, 而不仅仅是同一数据源的数据。

用XML表示的全局数据字典是数据集成的中心成份, 全局数据字典可获得一个对分布数据的整体的逻辑视图, 它主要用于解决语义差异, 支持异构数据流, 支持数据的透明访问。

Database map的主要完成虚拟数据库以及数据的透明访问, 能让DBA实时地看到异构数据库中的数据, 从而实现异种数据库的相互访问以及对Application提供数据查询的服务。

3 关键技术

3.1 XML技术

XML (可扩展标记语言, Extensible Markup Language) 是SGML的一个子集, 于1998年2月, 由W3C正式推出XML1.0版本。XMI不是一种编程语言, 而是一套定义语义标记的规范。其目的在于使得在Web异构数据源系统结构图上能以现有超文本标记语言 (HTML) 的使用方式提供、接收和处理通用的SGML成为可能。XML具有平台无关性, 其数据的基本形式是XML文档, 且文档可以独立于internet存在。

3.2 DOM技术

目前, 处理XML文档的方法主要有DOM (Document Object Model, 文档对象模型) , SAX (Simple API for XML, XML的简单API接口) , JAXP (Java API for XML Parsing) 几种, 其中DOM和SAX都是跨平台语言的。DOM是来自W3C的官方标准, 它允许按照W3C标准W3C DOM Levell和W3C DOM Level2的规范所定义的规则, 通过编程来读取、操纵和修改XML文档。

3.3 数据库连接技术

现在C#里面连接数据库的方法有:SQL-Client, 它专门用于连接MS SQL Server数据库, 速度最快但通用性差;OLEDB连接符合OLEDB的数据源, 如MSAccess, MS Excel等。这里用OLEDB来连接数据库。OLEDB (Object Linking and Embedding DataBase) 对象链接和嵌入数据库, 是一种底层数据访问界面接口, 是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序。它是用于访问数据的重要系统级编程接口, 是ADO的基础技术, 同时还是ADO.NET的数据源。

4 结论

异构数据库的使用不仅在公安领域发挥着重要作用, 而且对公安信息化的未来也有重要影响。主要系统有:重点单位信息系统、人口信息系统、户政信息系统、指挥中心综合决策系统、各类MIS系统。相信异构数据库将在公安信息系统建设中起到关键的支撑作用。

参考文献

[1]Grady Booch, James Rumbaugh, Ivar Jacobson.UML用户指南[M].北京:机械工业出版社, 2006.

[2]莫勇腾.深入浅出设计模式 (C#) [M].北京:清华大学出版社, 2006.

[3]张龙祥.UML与系统分析设计[M].北京:人民邮电出版社, 2007.

[4]Horton I.Java2入门经典[M].北京:机械工业出版社, 2006.

[5]程明光.电子商务数据交换标准与应用[M].北京:人民邮电出版社, 2006.

C#平台 篇4

二十一世纪以来,伴随着信息技术和网络技术的普及与飞速发展,世界范围内的高等教育正在上演一场别开生面的开放教育的全球性变革。2012 年以来,MOOC在全球迅速崛起,一举成为国际高等教育发展的新趋势、新动向。2003 年4 月,国家教育部高教司于宣布启动国家精品课程项目,并计划于2003-2007五年内建设1500门精品课程[1]。2011年,教育部启动国家精品开放课程建设,2013 年5 月,基于对精品课程建设体会及多年教学实践与探索,加之国外发展如火如荼的MOOC运动,我国开始对原国家精品课程进行转型升级,隔月,改造后的首批120门资源共享课通过爱课程网(www.icourses.edu.cn)正式免费上线。高职院校作为我国高等教育的一个重要组成部分,近几年来无论是在高职教育的教育理论研究方面,还是在建设网络课、精品资源共享课、公开课等实践方面都取得了长足的进步,积累了很多宝贵的经验。

公共学习资源的开放,对于高职院校的学生来说,并不意味着他们会主动参与学习。高职学生是高等院校大学生中的特殊群体,他们一方面理论基础比较差,另一方面学习自觉性不强,尤其对高等教育理论知识的学习倍感吃力。如何激发学生的学习兴趣,提高学习效果是高职院校面临的共同课题。

2 信息平台下教学方法的变化

在以网络为主导的信息社会里,教育的目标是培养学生对知识和信息的不断自组织和自适应的能力,教育的功能主要表现为促进信息的共享、流通与增值[2]。教育的目的是要培养学生获取知识信息的能力和素质。过去以“教师为中心”的教学方法无法适应当前网络环境下的教学需求,以“学生和知识传播为中心”的教学模式,促使教师对教学方法进行改革[3]。运用网络平台进行教学,已成为当代教育改革的一个主要趋势。教师准备课程完全从学生的角度出发,设置目标,选择教学内容,设计适合学生的学习活动等等。这样学习者由课堂中教学的被动学习转变为主动学习,学习动机自然会提高。下面以C#程序设计单元教学为例,以开发的精品课程网站为平台,充分利用课程资源库,对课堂教学进行设计。

3 信息平台下的教学设计

教学设计首先要考虑课程在整个课程体系中的地位。由于C#程序设计前导课程是《C程序设计基础》,后续课程是《C#高级编程》。该课程作为一门专业基础课程,教学目标要注重语言基础,使学生从知识目标、能力目标、素质目标三方面得到提升。基于此,教学的设计思路:按课前预习、课堂解读、课后拓展三个阶段实施教学。本单元以计算器的设计与实现为任务载体,采用任务驱动法、情境教学法、合作探究法、自主学习法等课堂教学方法,借助信息化学习平台、录屏软件、多媒体视频、思维导图、电子教室等信息化教学手段,实现教学目标。

3.1 课前预习

课前预习阶段以提前让学生参与学习为目的,教师通过本课程的信息化学习平台发布预习任务单,学生下载预习任务单,并以小组的方式收集资料,并上传。

3.2 课堂解读

课堂解读阶段分为知识回顾、情境导入、任务实施、总结评价四个子环节,

1)知识回顾

知识回顾子环节切记不能简单地理解为复习以前的知识,教师要针对性地提出问题,或者借助视频提出一些相关实际需求,要求学生解决,使学生尽快进入课堂状态。

2)情境导入

学生在课前已经收集了计算器相关图片,教师在此环节,展示学生收集的作品,提高学生的参与度,鼓励学生开始动手自己完成这些计算器的设计工作,以此激发学生的学习兴趣。

3)任务实施

学生首先有了对界面的具体认识,在此基础上,只需要介绍的工具箱的相关工具的使用,学生们已经很快根据自己收集的图片设计出不同形态的计算器界面。

实现计算器的运算功能”是本次课的难点,高职学生的逻辑思维能力较弱,为了训练学生的分析能力,让各小组各抒己见,确定需要实现计算器的哪些功能,对学生思维进行发散训练,在全面分析问题的同时,也锻炼了学生的表达能力;同时也活跃了课堂气氛。教师这时扮演一个聆听及记录的角色,课堂的主导是学生。

既然有发散,当然离不开思维的集中。在学生表述完自己的思想后,教师对记录的思维进行梳理,运用学习平台上的Mind Manger软件将思维过程绘制成思维导图,并在重点处加上注释。思维导图相当于建筑的施工蓝图,学生有了这张思维导图,可以进行代码编写及调试了。

4)总结评价

总结评价子环节,是对学生学习的肯定。首先让每个小组展示自己的作品并予以评价,完成后通过学习平台进行在线自评,既增强了学生的自信心同时也培养了学生的语言表达能力;接着进行小组交叉答辩,旨在检查本次课知识点的掌握情况,同时也活跃了课堂气氛;最后教师总结,针对学生在本次课的优缺点进行点评,让学生明白自己存在的不足,并利用课后进行修改和完善。

课堂的整个过程,教师采用录屏软件进行实时录屏,课后将录屏上传到学习平台,供学生课后复习巩固。

3.3 课后拓展

课后在学习平台上,由学生自行选取拓展任务,对课堂外知识进行拓展,教师借助学习平台,对学生的问题进行答疑。同时,在课程资源库中,教师将所有单元教学的相关素材、源代码、ppt已经上传,学生可以根据自己的需要,自行下载,为了保证自觉学习效果,在规定的时间段内让学生进行学习检测,改变了以往固定时间,笔试作答的形式,增加了学习的灵活性。

4 结束语

借助信息化学习平台,使用教学录像、多媒体视频、录屏软件、思维导图、电子教室等多种信息化教学手段进行课程教学设计,实现了三个优化:通过优化教学资源,学生的学习从课堂内延伸到课堂外;通过优化教学手段,活跃了课堂气氛,激发学生的学习兴趣;通过优化教学过程,培养了学生的自主学习能力和团队合作精神。

参考文献

[1]张金磊,王颖,张宝辉.翻转课堂教学模式研究[J].远程教育杂志,2012(8).

[2]万新恒.国内外校园信息化进程[M].北京:北京大学出版社,2000.

C#在成长 篇5

C#读做"C sharp“, 是一种安全现代而又优雅的面向对象的编程语言。1999年原BROLAND公司的首席研发设计师Anders Hejlsberg在微软开发了Visua J++1.0, 很快的Visual J++由1.1版本升级到6.0版。由于微软违反了了许可证协议中的条款, SUN公司就microsoft违反了Java开发平台的中立性, 对微软提出了诉讼, 应而微软不得不停止对j++的研发。不过, 2000年6月26日微软在奥兰多举行的“职业开发人员技术大会” (PDC 2000) 上, 发表新的语言C#。C#语言取代了Visual J++, 语言本身深受Java、C和C++的影响。C#本身继承了C和C++强大功能, 同时将它们的一些复杂特性如宏和模板, 多重继承去掉了, 同时综合了VB简单的可视化操作和C++的高效率, 以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

2 发展

微软于2000年7月发布了C#语言的第一个预览版。因此人们一般认为C#是2000年发布的, 并以此来计算它的“年龄”。其实, 在此后的一年多时间里, 微软一直在修补各个测试版本中的BUG。直到2002年2月, 微软才推出了迟迟未上市的Visual Studio 7.0, 并将其定名为“Visual studio.NET2002”。伴随着这套开发环境, C#语言的第一个正式版本——C#1.0出现了。这一时期的C#提出了纯粹的面向对象概念它将所有对象自动的变成为COM对象, 以ASP和windows环境的紧密集成, 如果c#能取得很大的市场份额的话, 它将给ASP带来类似于Java的功能。Java尽管号称是面向对象的, 但实际上, 对于对象所应该具备的三种构成结构——属性、方法和事件, Java仅提供了方法, 其它两种结构都要通过方法来模拟。在C#1.x中, 所有面向对象的概念都在语言中得到了非常好的体现。

2004年的6月份发布了Visual Studio2005的第一个Beta版, 同时向开发者展示了C#语言的2.0版本。2005年4月, 微软发布了Visual Studio 2005 Beta2, 这已经是具备了几乎全部功能的Visual Studio, 包括的产品有SQL Server2005、Team Foundation Server和TEAMSUITO。这时的C#编译器已经能够处理C#2.0中所有的新特性。

2005年9月份的PDC大会上, 微软带来了研发代号—魔鬼的c#3.0。3.0的Lamda Linq, 集合对象初始化支撑起3.0的魔鬼代号。在C#3.0中, 我们可以用类似于SQL语句的语法从一个数据源中轻松地得到满足一定条件的对象集合。例如要查找一个字符串数组cat中所有长度为3的字符串, 就可以写:var long=from n in cat where n Length=3 select n;同时W PF, W C F, WF F等新技术的加入使c#发展的更魔幻WPF (下一代显示系统) , 它可以创建能带给用户震撼视觉的windows客户端应用程序, 还可以创建广泛的独立应用程序以及浏览器承载的应用程序。WPF的界面由可扩展应用程序标志语言 (XAML) 来实现, 在WPF中可使用dockpanel与border控件配合进行界面布局。

C#4.0新增dynamic关键字, 提供动态编程 (dynamic programming) :Dynamic Lookup动态查找, The dynamic type dynamic类型, Dynamic operations动态操作类似于Java Script把既有的静态物件标记为动态物件, 4.0的动态编程使得对象变的越来越“动态化”, 你无法通过静态类型捕获它们的结构和行为。例如:通过IDispatch访问的COM对象, 通过反射访问的一般.NET类型, 结构发生过变化的对象等。C#4.0中的新特性分为四组——动态查找Dynamic lookup, 命名参数和可选参数Named and optional parameters, 特定于COM的互操作特性COM specific interop features, 变性Variance。Dynamic类一种特殊的object类, 其定义的对象可以动态的使用:dynamic dn=1;int a=dn;dynamic dn=1;int a=dn;不仅是方法调用, 字段和属性访问、索引器和运算符调用甚至委托调用都可以动态地分派

如果你想体验一下4.0就装个visual studio 2010吧。4.0的动态编程, 可选参数使c#又发展到一个新的高度。c#如此迅猛地发展, 升级, 特别是荧光和WPF已得到大量使用, 在UI体验这一块, .NET已走在前面。确实让人感觉来势如虹, 但尽管如此, 仍有很多人认为:c#也就现在还行, Java发展前景广阔, java比.net要安全一些, 用的人多了, 也就发展, 完善了。因而现下大多数学编程的人都会选Java。

3 未来

C#实现屏幕截取 篇6

屏幕截取是图像编程的一个重要课题, 可将截取的屏幕作为图像存储在内存中。.NET提供了GDI+作为编程工具, 能够方便地将截取的屏幕以各种图像格式存储起来。目前, 在公开发表的C#屏幕截取编程中, 通常的效果都不好, 在此提供一种效果良好的C#屏幕截取编程方法。

2 API函数进行C#屏幕截取

在SDK platform中, 与此相关的API有GetDesktopWindow、CreateCompatibleDC、GetSystemMetrics、SelectObject、BitBlt、ShowWindow, 可将有关的API封装到相应的C#文件中, 如以下代码封装了CreateCompatibleDC的API函数:

3 存储

为将截取屏幕存储为多种图像格式, 引入了System.Windows.Forms.SaveFileDialog类, 对其Filter属性编程:

以下代码可实现将截取屏幕存储为多种图像格式:

4 实现代码

这样就可以效果很好地实现C#屏幕截取编程了。

5 总结

C#屏幕截取编程需要使用很多API编程, 使用单独封装的cs文件, 即可采用“分而治之”的策略降低编程难度。

(收稿日期:2009-3-16)

摘要:给出了一种效果良好的C#屏幕截取编程方法及其实现代码, 所截取的屏幕能够以各种图像格式存储起来。

C#开发邮件工具 篇7

在工作中, 邮件的发送和接收应该是经常要使用到的功能的。因此知道电子邮件的应用程序的原理也是非常有必要的, 在这一个专题中将介绍电子邮件应用程序的原理、电子邮件应用程序中涉及的协议和实现一个简答的电子邮件收发器程序。

2 邮件应用程序基本知识

2.1 电子邮件原理及相关协议

说到电子邮件的原理, 其实和现实生活中寄邮件和寄包裹是一样的原理的。就先回顾下现实生活中寄邮件的流程吧———首先, 先写好信, 信封上面写好收信人的地址, 写信人的地址, 然后把信放到寄信箱中, 邮局的人会某个时候去这个信箱中的信取出来, 然后邮局的人根据信封上写的收信人地址进行转发到当地的邮局, 当地邮局把信寄到收信人的信箱中 (寄包裹的话可能会电话联系, 像在淘宝, 京东买的东西的, 收货人就是通过电话联系一样) , 最后收信人会到自己的信箱中收取信件。上面大致是平时生活中寄信的一个流程。前面已经讲过电子邮件的原理和这个差不多的下面就介绍本专题中电子邮件的原理, 大家可以和现实生活中的寄信过程进行对比, 这样可以更加容易理解和掌握:

通过电子邮件应用 (例如基于客户端的Outlook电子邮件软件和一些基于Web的电子邮件系统———新浪邮箱、谷歌邮箱、QQ邮箱等都属于电子邮件应用) 将一封写好的邮件 (相当于现实生活中的信, 当然邮件也要写明收件人地址, 邮件内容等信息的) 通过电子邮件协议 (SMTP, 在后面的电子邮件相关协议中会介绍) 发送到SMTP服务器 (就是存储邮件的地方, 相当于生活中的邮局一样) , 然后SMTP服务器根据收件人的地址通过SMTP协议转发到相应SMTP接收服务器上, (SMTP服务器进行转发相当于现实生活中邮局的人配送信的过程, 配送到收件人当地的邮局, 然而现实生活中邮局都是一家, 所以可以相互识别———意思就是发送到当地邮局, 当地邮局会接收, 并且帮助你发送到指定人的信箱中, 在网上就是通过SMTP协议来规定这样的一个过程的, 发送到别人的SMTP服务器上别人的服务器必须要认识发送来的邮件并接收) 结束, 接收端邮件服务器 (POP3服务器) 把邮件存放到接受者的电子信箱内 (相当于当地邮局的人把信放到收信人的邮箱中) , 最后收件人可以登录自己的电子信箱, 再与POP3服务器进行连接, 从POP3服务器上下载发送来的邮件, 这样在收件人的电子信箱中就可以看到发送来的电子邮件了 (这就是现实生活中收信人从自己的信箱中取信的一个过程) 。

上面已经把电子邮件的原理和现实生活中寄信的过程进行对比, 相信大家可以更加清楚电子邮件的原理和发送接收过程的, 其实网络上的很多应用都可以以现实生活的例子去理解, 这样的话可以加深对知识的理解。下面就介绍下电子邮件中的相关协议的内容:

网络上的应用的核心就是协议, 因为协议让网络上的客户端相互认识发生来的数据, 所以电子邮件应用也不例外, 也有相关的电子邮件协议来完成发送电子邮件和接收电子邮件的过程, 这些协议主要是:SMTP (简单邮件传输协议, Simple Mai Transfer Protocol) 、POP3 (邮局协议, Post Office Protocol) 和IMAP (网络邮件访问协议, Internet Message Access Protocol) 。

(1) SMTP———SMTP主要负责将邮件从一台机器转发至另一台机器 (可以对照上面电子邮件的过程来理解SMTP的作用) 。

(2) POP3———3表示POP协议的版本, 主要负责将邮件从邮箱中 (POP3服务器) 传输到本地计算机。

(3) IMAP———现在常用的版本为第四版本, 即IMAP4, 主要负责邮件的检索和处理功能, 客户端不需要下载邮件到本地计算机, 可直接从邮件客户端软件对服务器上的信件和文件目录进行操作, 它是POP3的替代协议。

2.2 邮件系统分类

邮件系统主要分为两类的———基于客户端的邮件系统和基于Web浏览器的邮件系统。Office OutLook就是基于客户端的邮件客户端系统, 而像我们经常使用的QQ邮箱、新浪、网易邮箱等都是属于基于Web浏览器的邮件系统, 基于客户端的邮件系统的收发过程, 通过如图1所示来描述。

发送方通过邮件客户端, 将编辑好的邮件向邮件服务 (SMTP服务器, 在发送过程中也叫发送端邮件服务器) 发送, 发送端邮件服务器根据收件人的地址来识别接收端邮件服务器 (POP3服务器) , 然后向POP3服务器发送邮件信息, 接收端邮件服务器将邮件存放在接收者的电子信箱中, 并告知接收者有新邮件, 接收者通过邮件客户端与POP3服务器连接后, 就可以查看新邮件。

然而, 基于Web浏览器的邮件系统与基于客户端的邮件系统不同的地方如下:

(1) 基于Web浏览器邮件系统用户代理 (代理的概念也就是用户不是直接与服务器进行通信, 而是通过代理的方式, 让代理去与服务器通信, 然后用户在从代理中获的服务器的信息, 代理也就是中间人的作用, 相当于生活中中介, 在.net中很多技术都用到了代理, 例如委托的概念其实也就是代理的一个概念的) 是Web浏览器, 基于客户端的邮件系统而是邮件客户端应用程序, 一般是Windows Form程序。

(2) 浏览器发送邮件到SMTP服务器和从POP3服务器中获得邮件的方式都是通过HTTP协议来实现, 与基于客户端的邮件系统不同 (基于客户端的邮件系统发送通过SMTP协议或ESMTP (Extended SMTP) , 获得通过POP3或IMAP协议) 。

2.3 目前主要的电子邮件服务系统

电子邮件服务系统———就是向大家提供邮箱服务的服务系统, 这样的系统当然是由专门的公司进行研发的, 一般叫这样的公司为邮件服务商, 平常使用的网易邮箱, 新浪、Gmail邮箱等都是建立在电子邮件服务系统。现在主要电子邮件服务系统主要有下面几种:

(1) 基于Postfix/Qmail的邮件系统。例如, 雅虎邮箱基于Qmail系统。

(2) 微软Exchange邮件系统。

(3) IBM Lotus Domino邮件系统。

(4) Scalix邮件系统。

(5) Zimbra邮件系统。

(6) MDeamon邮件系统。

3. Net平台对邮件发送功能的支持

在.Net类库中, 在System.Net.Mail命名空间下定义了对邮件处理的类, 这样使邮件的发送更加方便 (这些类也就是对SMTP协议的封装, 使我们更好地区编程, 只需要使用类中的方法和属性等去完成邮件的发送, 避免写复杂的SMTP协议的命令) 。

C#提供了一系列邮件相关的类, 在这里就不一一介绍了, 大家可以参考MSDN去看每个类的使用, 并且在后面程序的实现部分也会有详细的注释去介绍程序中使用到类的使用。需要注意的是:C#提供的类中只有SMTP的字样, 却没有POP3这样的字样, 这说明.Net类库本身中并没有提供对POP3协议的封装类, 但是可以使用Jmail组件来完成从POP3服务器中收取邮件的功能, 具体的使用将在后面的邮件收发器程序中邮件的接收部分介绍。

4 邮件收发器程序的实现

4.1 邮件发送功能

4.1.1 SMTP协议

SMTP协议是用于电子邮件的传输的协议, 电子邮件是通过SMTP服务器进行发送的, SMTP服务器的默认端口为25, 通常发送邮件有两种方式———一种是不使用客户端认证, 即客户端可以使用匿名发送邮件 (这种方式叫做SMTP) ;另一种是客户端必须提供用户名和密码认证 (这种方式叫做ESMTP, Extended SMTP) 目前大部分邮件服务器采用用户名和密码认证的方式。

客户端发送邮件过程为———先通过客户端软件 (本程序中的邮件收发器) 将邮件发送到SMTP服务器, 然后再由SMTP服务器发送到目标SMTP服务器。下面介绍SMTP协议的内容:

SMTP协议总共定义了14个命令, 命令由命令码和气候的参数域组成, 不区别大小写 (通过前面专题的讲述可以得出各个协议的命令组成都差不多的) , 表1就简单介绍下5个常用的命令码:

电子邮件由信封、首部、正文和结束符号4部分组成, 下面就具体介绍下这4个部分的内容:

(1) 信封

信封包括发信人的邮件地址和接收人的邮件地址, 具体对应两条SMTP命令———Mail from:mytest1989@sina.cn (发信人的地址) 和Rcpt to:test@126.com。

(2) 首部

首部中常用的命令有:

1) Subject:<邮件主题>———表示邮件的主题。

2) Date:<时间>———表示发邮件的时间。

3) reply-to:<邮件地址>———表示邮件的回复地址。

4) Content-Type:<邮件类型>———表示邮件包含文本、HTML超文本和附件的类型。

5) X-Priority:<邮件优先级>———表示邮件发送的优先级, 优先级为3表示为普通邮件;如X-Priority:3。

(3) 正文

正文当然指的就是邮件的内容了, 用Data命令指定, 首部以一个空行结束, 下面就是正文部分。

(4) 结束符号

邮件以“."结束,

接收方收到SMTP命令之后, 会给出一个响应码, 每个命令都只有一个响应码, SMTP响应码也是由3位数字组成, 后面附加一些文本信息, 响应信息的格式为:

响应码<空格>文本信息<回车换行>

客户端发出一条命令后, 服务器端返回一个响应, 发送者在发送下一条命令前必须等待服务器的响应, 成功接收到响应码后才继续发送命令。

附:SMTP常用的响应码:

响应码解释响应码解释

211系统状态或系统帮助响应421服务未就绪, 关闭了传输通道

214帮助信息501参数格式错误

220服务就绪502命令不可实现

221服务关闭传输通道535用户验证失败

235用户验证成功553邮箱名不可用, 要求的操作未执行

334等待用户输入验证554操作失败

354开始邮件输入

4.1.2 邮件的发送过程

(1) 客户端与服务器建立连接 (该步中客户端首先发送EHLO local连接命令, 服务器如果返回“220”响应码表示服务器准备就绪了, 客户端再继续发送“Auto login”命令, 请求登录, 服务器收到命令后返回“334”响应码, 表示要输入用户名, 之后客户端发送用户名命令, 等到响应后再发送密码命令, 具体在程序的实现中也会有注释。)

(2) 客户端发送邮件的信封。

(3) 开始发送邮件数据, (包括邮件首部, 正文和结束符号, 注:结束符号要单独占一行, 表示邮件发送结束) 。

(4) 客户端与服务器断开连接。

4.1.3 发送功能的实现代码

相信有了上面的理论解释邮件发送的过程后, 实现邮件发送的功能并不难的, 并且.net类库中SMTPClient类封装了SMTP协议, 使得实现邮件发送功能就不要记住那些具体的命令了, 只需要使用该类中提供的方法来完成邮件的发送 (当然你也可以通过发送命令的方式实现, SMTPClient类的方法也是完成发送命令功能而已的) , 下面是邮件发送功能的核心代码:

4.2 邮件接收功能

4.2.1 POP3协议

前面介绍了邮件的发送, 当然接收者需要登录邮箱来查看收到的邮件了, 此时就必有有一个协议去读取服务器上邮件, POP3就是这样的一个协议。还有两外一种协议也是用来接收邮件的———IMAP协议, 它与POP3协议区别有:

(1) IMAP使用的端口号是143而POP3邮件服务器通过监听110端口来提供POP3服务。

(2) IMAP允许客户端在邮件服务器上建立文件夹来保持邮件, 而不用把邮件下载到本地。而POP3需要把邮件下载到本地。和SMTP协议一样, 客户端要通过POP3协议从POP3服务器上获取邮件, 也需要先与POP3服务器建立TCP连接, 等待服务器向客户端发送确认信息表明连接成功时, 客户端才可以继续发送命令给服务器来获取邮件, 在POP3协议中, 规定的命令也是几十条的, 每条命令由命令和参数两部分组成, 都是以回车换行结束, 并且命令和参数之间由空格分隔, 命令通常也是由3-4个字母组成, 参数最多可以为40个字符的长度, 而服务器的响应信息是由一个状态码和可能附加信息的字符组成, 所有的响应信息也是以回车换行结束的。状态码和其他协议定义的状态码有点不一样, POP3服务器响应的状态码有两种———“+OK” (确定) 和"-ERR" (失败) 。这样客户端可以通过检查响应的状态码所包含的字符来判断服务器是否响应客户端发送的命令, 即响应信息中包含“+OK”表示成功响应, 包含“-ERR”表示服务器未响应。同时在程序的实现中大家可以通过Debug来查看响应消息的组成, 这样可以加深理解。

4.2.2 邮件接收的过程

客户端从服务器接收邮件的过程主要经历3个状态:授权状态、操作状态和更新状态

(1) 授权状态———客户端发送与POP3服务器的TCP连接请求, 服务器接收后发送一个响应确认信息之后, 此时客户端需要发送正确的用户名和密码进行确认, 因为在邮件服务器上有很多用户邮箱, 只有提供正确的用户名和密码才有权限访问自己的邮箱, 就像现实生活中邮箱的钥匙一样的。

发送用户名命令:USER test@s126.com

发送密码命令:PASS****** (这两个命令都在代码中有给出的, 大家可以参考代码来理解邮件的接收过程)

(2) 操作状态———如果客户端提供了正确的用户名和密码, 则授权状态也就通过了, 就相当于打开了在服务器上自己的邮箱, 现在用户就有权限进去下载, 查看和删除邮件等操作, 然后在现实生活中的取邮件和删除邮件都很简单 (只要打开了邮箱门, 用手去拿就可以了) , 然后在网络应用上, 这些操作都需要发送POP3命令给服务器, 服务器接收到命令后再给出响应。操作中常用的命令有:

1) STAT命令———该命令从服务器中获取邮件总数和总字节数, 服务器响应命令返回邮件总数和总字节数

如:

?

客户端发送POP3命令:STAT

服务器响应命令:+OK 2 1340
服务器响应命令。

2) LIST命令———该命令从服务器中获得邮件列表和大小, 服务器响应命令返回列出邮件列表和大小。

如:

?

客户端发送POP3命令:LIST

服务器响应命令:+OK 2 message (1430 octect)

服务器响应命令:1700

服务器响应命令:2730

服务器响应命令:<一个空行>

3) RETR命令———该命令从服务器中获得一个邮件, 格式为RETR<邮件编号>

如:

?

客户端发送POP3命令:RETR 1

服务器响应命令:700 octets

服务器响应命令:<邮件头和内容>

服务器响应命令:<空行>

4) DELETE命令———该命令告诉服务器将邮件标记为删除。 (此时只是逻辑删除)

(3) 更新状态———客户端发送QUIT命令后, 此时就进入更新状态, POP3服务器释放在操作状态中取得的资源, 并将逻辑删除的邮件进行物理删除, 然后关闭与客户端的TCP连接。这样整个邮件处理的过程就结束了。

4.2.3 接收功能的实现代码

有了前面接收邮件过程的介绍, 再参考代码的实现, 相信大家可以更好的理解客户端从POP3服务器中获取邮件的过程, 由于.net类库并没有封装POP3协议的实现类, 要实现邮件的获取可以采用发送命令的方式, 也可以使用Jmail组件, 这个组件其实就是POP3协议的封装类, 既然微软没有做, 其他公司做好后来并简单的实现邮件的接收的一个类库罢了。然后在使用这个组件的过程中出现了好几个问题, 在源码中都做了解释, 大家可以下载源代码后查看。

实现邮件接收的核心代码如下:

4.3 程序运行结果

首先输入邮箱名和密码登录到POP3服务器来获取邮件列表的演示, 如图2所示。

然后在邮件列表中选中一个邮件进行阅读, 然后进行回复邮件的操作演示 (邮件的发送都可以附加附件发送出去) :阅读邮件的界面, 如图3所示。

回复邮件的界面, 如图4所示。

同时点击发送按钮后, 就可以把邮件发送到sina的SMTP服务器上, 再由新浪的SMTP服务器转发到QQ的SMTP服务器, QQ的POP3服务器中QQ的SMTP服务器获取收到的邮件, 当QQ用户输入正确的邮箱名和密码后就可以从QQ的POP3服务器上获取收到的邮件。

点击发送按钮后成功发送邮件的图片, 如图5所示。

5 结语

用C#实现文件共享 篇8

高职教学用的计算机实验室大多是公用的, 不同的时间段使用班级及教师有可能不一样, 承担的实验任务也不同。课间休息有限, 教师教学过程中不可避免地涉及到学作业的存取及文件共享问题。如何让教师在尽可能短的时间内将学生作业收集及清理完毕, 是实验室要考虑解决的问题。另外, 教学中难免要对学生进行测试, 防范学生通过学生机之间的网上邻居共享资源或即时通讯软件作弊, 也是实验室要解决的问题。相似的问题在中小学的信息技术教育教学中也同样存在[1], 且在企事业单位同样具有文件互传与共享的需求[2]。

为解决以上问题, 有的通过第三方软件, 有的通过编程实现[1,2]。很多学校采用多媒体教学软件实现教师文件发送及学生作业提交的方法, 学生作业的收取需要学生完成发送教师才能接收, 在短短的几分钟内往往完成不了任务。

用批处理实现快速共享, 其中用户账户没有设密码, 在学生端用批处理进行网络驱动器映射时, 需将学生机上对应的批处理拖动到“启动”菜单, 启动计算机后进行自动映射[3]。但此方法存在一个缺点:批处理保存在学生机硬盘上, 将批处理放到启动菜单中, 学生容易从启动菜单查到该批处理文件的位置, 并将其打开, 查看批处理的内容, 存在安全隐患。如果将批处理隐藏, 重启计算机则批处理不起作用, 无法与服务器自动连接。按常规方法在windows窗体中设置共享[4,5,6], 重新启动计算机又要求输入密码。我们改进了方案, 使共享更安全;在学生机端映射网络驱动器方法上作了一些调整, 重启系统可自动映射网络驱动器而不提示输入密码。

1解决方案

软件环境:服务器操作系统为Windows Server2003, 文件格式可为NTFS或FAT32, 学生机操作系统为Windows XPProfessional SP3。

(1) 不同的实验室使用不同的网段, 保证不同实验室的教学互不干扰。

(2) 服务器、学生机都安装双系统, 两个系统装在不同的分区上。一个系统平时教学使用, 一个系统测试学生时使用。

(3) 两个系统安装的软件基本一样, 考试用的系统不安装即时通讯软件, 如QQ等。

(4) 平时教学用的系统用批处理实现共享, 服务器上的用户账号不设密码。测试学生使用的系统服务器上的用户账号需设密码, 提高安全性。

下文仅介绍测试学生所用系统的实现过程, 重点介绍改动的部分, 其他部分参看参考文献[3]。

2实现过程

2.1服务器端的操作

下文中提到的服务器名为:server1, 地址为:192.168.4.1。服务器中建56个用户, 账号名分别为user1、user2……user56, 密码统一为【123456】。建两个文件夹, 其中一个名为【试题】, 共享名为原文件夹名、【Everyone】组或用户对其具有读取权限。另一个非共享的文件夹, 名为【考试文件夹】, 再在其中新建56个文件夹, 文件夹名分别为:1、2、3……56。将每个文件夹设为共享, 共享名为原文件夹名, 一个文件夹只分配给唯一对应的用户, 该用户对它具有完全控制的权限。1对应user1、2对应user2……56对应user56。学生机的主机名依次为C1、C2……C56, 映射网络驱动器时, 1对应用C1、2对应C2……56对应C56。

(1) 批量添加有密码的用户

建立与学生机数相同的用户数, 用命令net user完成:

net user [password ] [/ expires :never][ /passwordchg:no] [/add]

参数介绍如下:

username:自定义的用户名

password:自定义的密码。

expires:never:设置帐户永不过期。

passwordchg:no:指定用户不能改变自己的密码。

add:将新建用户添加到用户帐号数据库。

例:net user user1 123456 /expires:never /passwordchg:no /add

该语句建立一个名为user1, 密码为123456的用户, 此账户永不过期且用户不能更改密码。

为方便计算机实验室的管理, 我们为所有用户定义相同的密码。批处理中的语句条数与用户数一致, 只需改username就可以了。

(2) 设置【密码永不过期】

可在【计算机管理】窗口中设置, 但工作量大。我们采用命令进行设置:

将外部命 令NETUSER.EXE复制到文 件夹C :WINDOWSsystem32中。

netuser username /pwnexp:y

参数介绍如下:

username:是用户名

pwnexp:设置密码永不过期

可在第 (1) 步创建的批处理文件尾添加命令行, 减少批处理文件的数量。

在服务器端双击运行批处理文件, 就添加了相应的用户。查看用户属性, 看到“用户不能更改密码”及“密码永不过期”被选中。

(3) 创建文件夹及设置其属性

1在指定的驱动器根目录下建立文件夹“试题”。

2设置文件夹“试题”的属性

右击文件夹“试题”, 从快捷菜单中选择“安全和共享”, 设置其共享属性为“共享此文件”, 共享名可自定, 我们的共享名与文件夹相同。其它属性分别为:“允许最多用户”、“读取”、Everyone。

3建立【考试文件夹】

此文件夹的位置必需要放在不加保护的硬盘分区中。

4批量建立共享文件夹

用md命令创建批处理文件, 命令条数与学生机数一致。

md [drive:]path

[drive:]是驱动器名, path是路径。

例:md e:考试文件夹1

在E:盘“考试文件夹”中创建一个名称是“1”的文件夹。

4设置文件夹共享属性

用命令net share设置共享。

例:Net share 1=E:考试文件夹1 /grant:user1, full

其中, “=”号左边是文件夹的共享名, “=”号右边是文件夹的绝对路径。赋予用户user1访问权限为full。查看文件夹“1”属性中的共享权限, 用户user1对它有完全控制的权限。

(4) 组策略设置

保证组策略中“网络访问:本地账户的共享和安全模式”的安全设置为默认值“经典-本地用户以自己的身份验证”。

2.2客户端 (学生机) 的操作

以超级用户Administrator身份本地登录学生机, 为学生机映射网络驱动器。

在学生机设置两个映射动器, 一个用于学生存放文件, 另一个用于学生获取教师共享文件。服务器上的用户账号设置了密码, 我们尝试了两种方法为学生机映射网络驱动器, 下面分别给予介绍:

2.2.1用批处理实现映射网络驱动器

(1) 映射网络驱动器用于学生存放文件

用命令net use编写映射网络驱动器的命令:

net use or [“password”] [/user:username]

参数说明如下:

:映射网络驱动器名

:服务器IP地址

computer name:服务器的计算机名

sharename:共享名

password:登录账号的密码

username:登录服务器的账号

例:主机名为C1的学生机的批处理文件【1.bat】中命令: net use I:192.168.4.11 "123456" /user:"server1user1"

net use H:192.168.4.1试题 "123456" /user:"server1user1"

I:和H:是在学生机上显示的驱动的名称56台计算机统一, 具有可读写的文件夹映射为I:, 具有只读权限的文件夹映射为H:。192.168.4.1为服务器server1的IP地址, 也可将IP地址替换成服务器的计算机名。1为服务器中共享文件夹的共享名, 123456为密码, server1user1指定以user1用户账户登录到服务器server1。其它学生机上的批处理大同小异, 需要更改的是对应的共享受文件夹名及用户名即可。

(2) 双击运行编写好的批处理文件, 即可创建映射。

(3) 重命名网络驱动器的名称分别为I:和H:。

(4) 将存在硬盘上的批处理文件拖动到“开始”按钮的启动项。

用此方法映射的网络驱动器, 学生机重启后会自动连接, 不用再次输入密码。批处理文件存在硬盘上, 学生通过启动项可以查到批处理的内容, 存在安全隐患。

2.2.2通过编写C#代码映射网络驱动器

主要程序代码:

private bool ConD ir (string Name, string Path)

{

try

{

System.Diagnostics.ProvessS tartI nfopsi=newSystem.Diagnostics.ProcessS tartI nfo () ;

psi.FileN ame=@”cmd.exe”;

psi.Arguments=@”/c net use”+Name+””+Path+””;

psi.WindowS yle=System.Diagnostics.ProcessW indowS tyleH idden;

System.Diagnostics.Process.Start (psi) ;

return true;

}

catch (Exception ey)

{

return false;

}

}

2.2.3学生文件的收取及共享文件夹中内容的清除

(1) 学生文件的收取

学生文件的收取只需将“考试文件夹”复制粘贴到指定的地方即可。

(2) 清理【考试文件夹】中的学生数据

1建立【批量删除文件夹.bat】文件

rd [/s][/q][drive:]path

/s用于删除目录树。除目录本身外, 还将删除指定目录下的所有子文件夹和文件。/q为安静模式, 带/s删除目录树时不要求确认。

2删除共享文件夹

在学生机与服务器断开连接时运行“批量删除文件夹.bat”文件, 即可将学生文件夹删除。

3重新创建共享文件夹

运行批处理重新创建对应的文件夹, 即可将删除掉的文件夹重新创建, 且共享属性会自动恢复。

2.2.4禁止学生机间通过网上邻居访问

在每台学生机上运行“gpedit.msc”, 打开【组策略】窗口。展开【Windows设置】|【安全设置】|【本地策略】|【用户权利指派】, 右击【从网络访问此计算机】, 弹出【从网络访问此计算机属性】|【本地安全设置】|选中【Everyone】|【删除】|【确定】|【是】, 将安全设置中默认的用户组【everyone】删除, 达到禁止学生机之间通过网上邻居访问的目的。然后将组策略及注册表锁定, 防止学生私自修改。

3结束语

经过多年的实践, 用我们的方案实现文件共享, 安全简便。教学过程中让学生将文件存储在指定的网络驱动器上, 学生文件收取只需教师在服务器端复制一个文件夹就行了。中小学及大学的计算机公共实验室, 教师及学生的流动性大。此方法不需增加额外的代价, 简易、经济、实用, 对企事业单位也具有一定的实用价值。

摘要:对计算机公共实验室文件共享方法进行了研究, 实验室学生用机操作系统为Windows XP, 服务器操作系统为Windows 2003。通过批处理及C#编程实现在学生机上使用密码映射网络驱动器, 且重启系统后学生机与服务器自动连接不必再次输入密码。修改组策略禁止学生机之间的网上邻居共享, 提高安全性。学生文件直接存放在网络驱动器中, 教师只需在服务器上简单操作即可将学生作业收集及清理, 提高收集作业的效率。

关键词:文件共享,映射网络驱动器,自动连接

参考文献

[1]陈宇云.我的机房教学文件管理方案[J].信息技术教育.2005 (11) .

[2]陈力.点对点局域网文件共享系统的设计与实现[J].电脑知识与技术.2011 (4) .

[3]韦丽霜, 李雄, 韦涛, 等.用批处理实现简便快捷的机房文件共享存取方案[J].电脑知识与技术.2011 (3) .

[4]神龙工作室.新编Windows XP中文版入门与提高[M].人民邮电出版社.北京, 2007.8, 283-284.

[5]九州书源, 陈裕明, 梁蔚.一学就会魔法书玩转Windows XP[M].清华大学出版社.北京, 2007.4, 172-173.

上一篇:椅子设计下一篇:五步尝试教学法