李婧
[摘要]本文主要論述了基于ASP.NET的網(wǎng)上報(bào)名系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。對(duì)網(wǎng)上報(bào)名系統(tǒng)的開發(fā)環(huán)境、功能結(jié)構(gòu)、系統(tǒng)各功能模塊的設(shè)計(jì)和系統(tǒng)的實(shí)現(xiàn)過程,經(jīng)過實(shí)際運(yùn)行測(cè)試,驗(yàn)證了該思路的正確性,可實(shí)現(xiàn)用戶的在線報(bào)名,以及管理員的后臺(tái)管理,基本達(dá)到了預(yù)期目標(biāo)。
[關(guān)鍵詞]ASP NET 報(bào)名系統(tǒng) 設(shè)計(jì) 實(shí)現(xiàn)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,我國(guó)高校的教育教學(xué)模式逐步發(fā)生著變革,信息化建設(shè)日益成為推動(dòng)高校教育教學(xué)改革的有效抓手。在高校的信息化建設(shè)進(jìn)程中,要使教與學(xué)的各個(gè)環(huán)節(jié)都能達(dá)到均衡發(fā)展,這就要求從軟件和硬件兩個(gè)方面把學(xué)校建成一流的信息管理和教育教學(xué)的平臺(tái)。
考試報(bào)名是高校各類考試前的第一個(gè)環(huán)節(jié),傳統(tǒng)的考試報(bào)名流程相當(dāng)?shù)姆爆?,這就給教學(xué)管理環(huán)節(jié)帶來了沉重的負(fù)擔(dān)。為了降低教學(xué)管理人員的工作量,提高他們的工作效率,并且能夠更加快速、高效地收集海量的考生信息,傳統(tǒng)的考試報(bào)名流程就需要網(wǎng)絡(luò)化計(jì)算機(jī)技術(shù)的支撐,因此,網(wǎng)上報(bào)名系統(tǒng)在各類高校中日益流行了起來。
一、開發(fā)環(huán)境與系統(tǒng)功能結(jié)構(gòu)
(一)ASP.NET的開發(fā)環(huán)境
(1)ASP.NET簡(jiǎn)介
ASP.NET是Microsoft公司推出的新一代建立動(dòng)態(tài)Web應(yīng)用程序的開發(fā)平臺(tái),是一種建立動(dòng)態(tài)Web應(yīng)用程序的新技術(shù),它是.NET框架的一部分,我們可以使用任何.NET兼容的語言(如Visual Basic、C#)來編寫ASP.NET應(yīng)用程序。與Java、PHP和Perl等高級(jí)技術(shù)相比,ASP.NET具有方便性、靈活性、生產(chǎn)效率高、安全性高及面向?qū)ο蟮葍?yōu)點(diǎn),是目前主流的網(wǎng)絡(luò)編程技術(shù)之一。[1]
(2) ASP.NET的運(yùn)行原理
在ASP.NET中,當(dāng)一個(gè)HTTP請(qǐng)求發(fā)送到服務(wù)器并被IIS接收之后,IIS首先通過客戶端請(qǐng)求的頁(yè)面類型為其加載相應(yīng)的.dll文件,然后在處理過程中將這條請(qǐng)求發(fā)送給能夠處理這個(gè)請(qǐng)求的模塊。在ASP.NET中,這個(gè)模塊叫做HttpHandler(HTTP處理程序組件),之所以.aspx文件可以被服務(wù)器處理,就是因?yàn)樵诜?wù)器端有默認(rèn)的HttpHandler專門處理.aspx文件。IIS在將這條請(qǐng)求發(fā)送給能夠處理該請(qǐng)求的模塊之前,還需要經(jīng)過一些HttpModule的處理,這些都是系統(tǒng)默認(rèn)的Modules(用于獲取當(dāng)前應(yīng)用程序的模塊集合),在該HTTP請(qǐng)求傳到HttpHandler之前,要經(jīng)過不同的HttpModule的處理。[2]
(二)系統(tǒng)功能結(jié)構(gòu)
根據(jù)考試報(bào)名流程的特點(diǎn),可以將網(wǎng)上報(bào)名系統(tǒng)分為考生報(bào)名和系統(tǒng)管理員管理兩個(gè)部分,前者用于實(shí)現(xiàn)考生信息的填報(bào)、上傳照片,打印報(bào)名表;系統(tǒng)管理員管理主要用于對(duì)考生信息的查找、修改和刪除。網(wǎng)上報(bào)名系統(tǒng)的系統(tǒng)功能結(jié)構(gòu)圖為:
二、系統(tǒng)主功能模塊的設(shè)計(jì)與實(shí)現(xiàn)
(一)考生報(bào)名模塊
(1)基本信息的錄入
考生報(bào)名基本信息的錄入可以通過以下主要代碼來實(shí)現(xiàn):
protected Boolean addUser(string xm,string xb,string mz,string csny,string jg,string zzmm)
{
Boolean flag = false;
String sqlstr = "insert into userinfo (xm,xb,mz,csny,jg,zzmm)values(@xm,@xb,@mz,@csny,@jg,@zzmm)";
String urlsource = Server.MapPath("App_Data\\tables.mdb");
String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + urlsource + ";User ID=admin";
try
{
OleDbConnection con = new OleDbConnection(constr);
con.Open();
OleDbCommand com = new OleDbCommand(sqlstr, con);
com.Parameters.AddWithValue("@xm", xm);
com.Parameters.AddWithValue("@xb", xb);
com.Parameters.AddWithValue("@mz",mz);
com.Parameters.AddWithValue("@csny", csny);
com.Parameters.AddWithValue("@jg", jg);
com.Parameters.AddWithValue("@zzmm", zzmm);
}
(2)提交照片
在考生報(bào)名模塊中,照片的上傳是比較重要的環(huán)節(jié),這里對(duì)考生上傳照片的格式和大小做了規(guī)定:照片只能是.jpg、.png和.gif三種格式,大小不能超過2M,我們可以通過如下代碼來實(shí)現(xiàn):
if (this.FileUpphoto.HasFile)
{
string imgUrl=this.FileUpphoto.FileName.ToString();
ViewState["imgurl"] = imgUrl;
int lastFix = imgUrl.LastIndexOf(".");
string imgType=imgUrl.Substring(lastFix+1,3).ToLower();
if (imgType != "jpg" && imgType != "png" && imgType != "gif")
{
this.lblmsg.Text = "您只能上傳:JPG;PNG;GIF 格式的圖片";
return;
}
string saveUrl=Server.MapPath("~/UploadImages/");
name = this.txtname.Text;
saveUrl += this.lblbian.Text + "." + imgType;
try
{
this.FileUpphoto.SaveAs(saveUrl);
this.lblmsg.Text = "恭喜您,上傳成功,您已經(jīng)完成了報(bào)名!";
this.images.ImageUrl = "~/UploadImages/" + this.lblbian.Text + "." + imgType;
}
}
else
{
this.lblmsg.Text = "沒有找到文件!請(qǐng)選擇圖片路徑";
}
(3)報(bào)名編號(hào)的獲取
考生在提交報(bào)名信息之后,可以獲得一個(gè)報(bào)名編號(hào),實(shí)現(xiàn)此功能的代碼如下:
protected int getBiaoHao()
{
int nums = 0;
String sqlstr = "select top 1 id from userinfo order by id desc";
String urlsource = Server.MapPath("App_Data\\tables.mdb");
String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + urlsource + ";User ID=admin";
try
{
OleDbConnection con = new OleDbConnection(constr);
con.Open();
OleDbCommand com = new OleDbCommand(sqlstr, con);
OleDbDataReader olr = com.ExecuteReader();
if (olr.Read())
{
nums = int.Parse(olr[0].ToString());
}
olr.Close();
con.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
return nums;
}
(4)打印報(bào)名表
報(bào)名表的打印可以動(dòng)態(tài)向頁(yè)面添加一段script腳本語言:
function test()
{
window.print(this.document.tbPrint);
}
(二)管理員管理模塊
(1)管理員登錄
管理員在登錄界面輸入用戶名和密碼即可進(jìn)入后臺(tái)進(jìn)行管理,登錄界面可通過如下代碼實(shí)現(xiàn):
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
string name = this.txtname.Text;
string pass = this.txtpass.Text;
if (name == "admin" && pass == "admin")
{
this.Session.Add("name", name);
Response.Redirect("~/admin.aspx");
}
else
{
this.txtname.Text = "";
this.txtpass.Text = "";
this.lblmgs.Text = "賬號(hào)或密碼錯(cuò)誤,請(qǐng)重新輸入";
}
}
(2)后臺(tái)管理
管理員進(jìn)入后臺(tái)管理界面,可以對(duì)考生信息進(jìn)行修改和刪除操作,該功能的實(shí)現(xiàn)主要是通過SQL語句對(duì)后臺(tái)的數(shù)據(jù)庫(kù)進(jìn)行操作,主要涉及以下三句SQL語句:
DeleteCommand="DELETE FROM [userinfo] WHERE [id] = ?" InsertCommand="INSERT INTO [userinfo] ([數(shù)據(jù)庫(kù)表中的字段名]VALUES (?)"
SelectCommand="SELECT * FROM [userinfo] ORDER BY[id]DESC"
UpdateCommand="UPDATE [userinfo] SET [數(shù)據(jù)庫(kù)表中的字段名]= @數(shù)據(jù)庫(kù)表中的字段名 WHERE [id] = @id">
三、總結(jié)
近年來,我國(guó)各大高校都紛紛投入數(shù)字化校園的建設(shè)進(jìn)程之中,數(shù)字時(shí)代的到來,給教師和學(xué)生的生活、工作都帶了很多便利。本人所介紹的基于ASP.NET的網(wǎng)上報(bào)名系統(tǒng)的使用大大簡(jiǎn)化了教務(wù)管理人員的工作流程,當(dāng)然它還存在一定的不足和缺陷,今后筆者會(huì)進(jìn)一步完善此系統(tǒng),爭(zhēng)取讓它可以在不需要修改任何代碼的情況下,與數(shù)字化校園中的其它系統(tǒng)進(jìn)行無縫連接。
[參考文獻(xiàn)]
[1]劉友生.ASP.NET基礎(chǔ)教程[M].北京:冶金工業(yè)出版社,2007.
[2]龐婭娟,房大偉,呂雙. ASP.NET從入門到精通[M].北京:清華大學(xué)出版社,2010.
(作者單位:解放軍南京政治學(xué)院信息管理中心 南京)