基于Asp.net2.0的通用网上报名系统的设计和实现

来源:互联网 发布:51软件测试 编辑:程序博客网 时间:2024/04/30 00:14

 1、前言

   为了减轻报名之前的信息采集工作的劳动强度,培训部改变了传统的学生填表的形式,改用收发邮件的方式进行。但由于收到的邮件的数量众多使得劳动强大并没有减轻,于是开发了网上报名系统来收集学生的个人信息。这种方式由于信息直接通过网上传送、后台以批处理接受和下载的方式进行,从而使得培训部的工作人员的负担从根本上得到减轻。然而,新的学年度培训开始的时候,学院要求收集的信息的项目和往年的并不一样,于是网上报名系统得根据需求重新进行修改,从而又加重了研发人员的负担。于是,从设计者和用户的要求来看,研发一款通用的网上报名系统必然具有一定的应用价值和推广意义。

   目前国内同一课题的研究从研究对象来讲,大部分针对具体、特定的任务(如针对考试的网上报名)进行开发设计。以通用作为网上报名系统研究的立足点论文并不多。

  本文从功能设计、数据库设计和系统实现的关键技术等方面对此作了比较深入的研究。总的来说,本系统具有以下几点特色:

  (1)、实现了利用摄像头对报名人进行在线拍照、储存并上传图像到服务器等功能;

  (2)、实现了报名任务设置、任务表自主设计和发布不同报名任务等功能;

  (3)、实现了报名表数据查询、备份、导出、Web打印等功能。

  2、系统设计

   2-1 功能模块设计

  2-1-1 报名人操作

   报名系统按用户来分,分为报名人和后台管理员。从报名人的角度来说,其功能分初次登录和非初次登录。收集信息除了收集报名人的一些基本信息以外,还包含在线人像拍照等功能。初次登录的具体操作如图1所示。

  一旦报名人提交个人信息后,获得报名号和原始密码后,以后每次登录就得以报名号和原始密码登录,登录后,需要修改密码,可点击“修改报名人信息”这一栏目来进行修改。报名还可以查看报名状态,系统设定三种报名状态:通过审核、未通过审核和未审核三种状态。注销报名后,报名人的信息在报名信息数据库中删除。如果报名状态是已经通过审核状态,那么报名人就不能注销本次报名。如图操作如图2所示。

  2-1-2 管理员操作

   后台管理员的具体操作,分为以下几个模块(如图3所示):

  (1)   报名任务管理

     这一步应该做在报名系统的开放之前,管理员首先根据任务的不同和要收集的信息的具体项目的不同,重新生成报名表,生成报名表后,就可以对具体的报名任务进行发布了。发布后,报名人才能看到报名的入口地址。

  (2)   报名人管理

  这一步包含了由管理员来添加报名人信息、修改已经存在的报名人信息和删除报名人、设置报名状态等功能。

  (3)报名表打印

  这一步可以直接从网页中对报名表进行预览并打印。

  (4)数据服务功能

  数据服务主要是对数据库进行查询和备份等功能。

  2-2、数据库设计

   Mysql凭借着快速、多线程、多用户,虽然推出的时间只有不长的数年时间,但是,凭借其开放源代码等特点,从众多的数据库系统脱颖而出。它除了几乎免费以外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询成为各种服务器端网页设计语言争宠的目标。

本系统在报名任务管理这个模块,需要自定义一个数据表。数据表字段须符合Mysql数据类型的标准。

  2-3、设计工具选择

   选择一种好的开发工具对系统开发的速度还是开发的质量以及将来的系统维护和升级都很重要。我们选择ASP.NET作为开发工具,版本是2.0,开发平台是Visual Studio 2005。

  3、关键技术

  3-1 摄像头人像Web捕捉技术

  在Flash8中新建一个(受ActionScript控制)视频组件,拖动到一个新的Flash文件中,并在时间轴第一帧的插入如下动作:

var my_cam:Video;

var my_cam:Camera = Camera.get();

my_cam.setMode(180, 140, 10, true);

my_cam.attachVideo(my_cam);

cambutton.onRelease = function()
//在场景中添加一个按钮,名称设置为cambutton

{

myBitmap = new flash.display.BitmapData(160, 120, true, 0);

myBitmap.draw(my_cam);

var
tempObj=_root.createEmptyMovieClip("photo",100);
tempObj._x=400;
tempObj._y=100;

tempObj.attachBitmap(myBitmap,1,"always",true);

for(i=0;i<160;i++)

{

for(j=0;j<120;j++)

trace(myBitmap.getPixel(i,j));//纪录每个像素的信息 
}

};

  myBitmap.getPixel(i,j)纪录像素信息的,要实现保存图片,用数组保存所有像素信息然后用ASP.NET在后台cs中转化为图片并保存并上传。ASP.NET上传的实现可以编写专门的上传组件来完成.

3-2 .net页面与Mysql的连接与控制技术

  要实现Asp.net页面与Mysql数据库正常连接,事先要安装和配置好mysql服务器,并正确启动mysql服务。.net页面连接MySQL数据库需要通过MySQL Connector对象来连接。

  要实现对该对象的引用,事先需将MySql.Data.dll文件拷贝到系统路径bin目录里,然后在cs代码中将mysql接口引入到命名空间中:usingMySql.Data.MySqlClient;根据连接字符串创建一个mysql连接;接着创建一个MySqlDataAdapter对象并创建一个数据集,利用MySqlDataAdapter对象的fill方法来填充数据集对象。最后将页面DataGrid控件的DataSource属性指向该数据集。同理,实现任务表自主设计的功能实现,主要是在相同技术下,采用不同Sql执行命令字符串而已。发布任务的时候,不同的任务采用不同的任务表来采集数据。

  3-3 Asp.net页面数据导出技术

  后台页面需要对数据库不定期进行备份,其中一种备份方式是将其导出到本地计算机中存放。首先将定义m_Context 对象保存对当前HttpContext 的引用,接着定义 IO. StringWriter对象strWriter和Web.UI.HtmlTextWriter对象m_htmlWriter。

if (datagridData != null) // datagridData是对页面中DataGrid控件的引用

{

//
定义编码类型和附件格式

m_Context.Response.ContentType = "application/vnd.ms-excel";

m_Context.Response.ContentEncoding =System.Text.Encoding.UTF8;

m_Context.Response.Charset = "";

//
导出excel文件

m_strWriter = new System.IO.StringWriter();

m_htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

//
返回客户端执行    

datagridData.RenderControl(m_htmlWriter);


m_Context.Response.Write(m_strWriter.ToString());

m_Context.Response.End();

}

   本代码运行在服务器端,只对当前页数据导出。

  4、结束语

   Asp.Net2.0较之Asp1.0先进性,加上Mysql数据库高速实用的特性,以及Flash对摄像头的巧妙控制,实现了多种技术的强强联合。该系统一改原来Php+Mysql组合的做法,针对Mysql的不同操作实现了不同数据表的报名任务的发布,应用性不言自喻。

 

 

0 0